Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #16  
Старый 05.03.2013, 14:32
Аватар для M.A.D.M.A.N.
M.A.D.M.A.N. M.A.D.M.A.N. вне форума
Sir Richard Abramson
 
Регистрация: 05.04.2008
Сообщения: 5,505
Версия Delphi: XE10
Репутация: выкл
По умолчанию

AnsiUpperCase('дн') - зачем? можно ж сразу uppercase константой задать.
Да и если дельфи ХЕ и выше, то там надо не Pos, а AnsiPos использовать.
__________________
— Как тебя понимать?
— Понимать меня не обязательно. Обязательно меня любить и кормить вовремя.


На Delphi, увы, больше не программирую.
Рекомендуемая литература по программированию
Ответить с цитированием
  #17  
Старый 05.03.2013, 14:32
Аватар для Aristarh Dark
Aristarh Dark Aristarh Dark вне форума
Модератор
 
Регистрация: 07.10.2005
Адрес: Москва
Сообщения: 2,907
Версия Delphi: Delphi XE
Репутация: выкл
По умолчанию

Народ, объясните кто-нить код, а то мне некогда.
__________________
Некоторые программисты настолько ленивы, что сразу пишут рабочий код.

Если вас наказали ни за что - радуйтесь: вы ни в чем не виноваты.
Ответить с цитированием
  #18  
Старый 05.03.2013, 14:33
Аватар для Aristarh Dark
Aristarh Dark Aristarh Dark вне форума
Модератор
 
Регистрация: 07.10.2005
Адрес: Москва
Сообщения: 2,907
Версия Delphi: Delphi XE
Репутация: выкл
По умолчанию

Цитата:
Сообщение от M.A.D.M.A.N.
AnsiUpperCase('дн') - зачем? можно ж сразу uppercase константой задать.
Для красоты, ибо скорость тут не важна. Да и привычка, т.к. я очень редко константы использую по жизни
__________________
Некоторые программисты настолько ленивы, что сразу пишут рабочий код.

Если вас наказали ни за что - радуйтесь: вы ни в чем не виноваты.
Ответить с цитированием
  #19  
Старый 05.03.2013, 14:38
Аватар для M.A.D.M.A.N.
M.A.D.M.A.N. M.A.D.M.A.N. вне форума
Sir Richard Abramson
 
Регистрация: 05.04.2008
Сообщения: 5,505
Версия Delphi: XE10
Репутация: выкл
По умолчанию

Абисняю
Код:
uses
  DateUtils;
 
function GetDecimal(Value:string):Integer; // ф-я перевода кастомной строки в число
var
  sResult:string;
  i: Integer;
begin
  sResult:='';

  for i := 1 to Length(Value) do
    if CharInSet(Value[i],['0'..'9']) then // отсортировываем только цифры
      sResult:=sResult+Value[i]; // выцепили из всей котовасии только числа

  Result:=StrToIntDef(sResult,0); // переводим число в строку
end;
 
procedure TForm1.ComboBox1Change(Sender: TObject);
 // обработчик изменения комбобокса
begin
  if Pos(AnsiUpperCase('дн'), AnsiUpperCase((Sender as TComboBox).Text))>0 then // если в комбококче выбрана строчка, в которой есть слово "дн"
    DateTimePicker1.Date:=IncDay(DateTimePicker1.Date,-1*GetDecimal((Sender as TComboBox).Text)); // инкрементим день

  if Pos(AnsiUpperCase('ме'), AnsiUpperCase((Sender as TComboBox).Text))>0 then // аналогично
    DateTimePicker1.Date:=IncMonth(DateTimePicker1.Date,-1*GetDecimal((Sender as TComboBox).Text)); // инкрементим месяц

  if (Pos(AnsiUpperCase('го'), AnsiUpperCase((Sender as TComboBox).Text))>0 ) or 
     (Pos(AnsiUpperCase('ле'), AnsiUpperCase((Sender as TComboBox).Text))>0 ) then
    DateTimePicker1.Date:=IncYear(DateTimePicker1.Date,-1*GetDecimal((Sender as TComboBox).Text)); // инкрементим год
end;
З.Ы. немного переформатировал код для удобства чтения

Код:
uses
  DateUtils;
 
function GetDecimal(Value:string):Integer; // ф-я перевода кастомной строки в число
var
  sResult:string;
  i: Integer;
begin
  sResult:='';

  for i := 1 to Length(Value) do
    if CharInSet(Value[i],['0'..'9']) then // отсортировываем только цифры
      sResult:=sResult+Value[i]; // выцепили из всей котовасии только числа

  Result:=StrToIntDef(sResult,0); // переводим число в строку
end;
 
procedure TForm1.ComboBox1Change(Sender: TObject);
 // обработчик изменения комбобокса
var
  cbStr: string;
begin
  cbStr := AnsiUpperCase((Sender as TComboBox).Text);

  if Pos('ДН', cbStr)>0 then // если в комбококче выбрана строчка, в которой есть слово "дн"
    DateTimePicker1.Date:=IncDay(DateTimePicker1.Date,-1*GetDecimal(cbStr) // инкрементим день
  else
  if Pos('МЕ', cbStr)>0 then // аналогично
    DateTimePicker1.Date:=IncMonth(DateTimePicker1.Date,-1*GetDecimal(cbStr) // инкрементим месяц
  else
  if (Pos('ГО', cbStr)>0 ) or (Pos('ЛЕ', cbStr)>0 ) then
    DateTimePicker1.Date:=IncYear(DateTimePicker1.Date,-1*GetDecimal(cbStr) // инкрементим год
end;
__________________
— Как тебя понимать?
— Понимать меня не обязательно. Обязательно меня любить и кормить вовремя.


На Delphi, увы, больше не программирую.
Рекомендуемая литература по программированию

Последний раз редактировалось M.A.D.M.A.N., 05.03.2013 в 14:42.
Ответить с цитированием
  #20  
Старый 05.03.2013, 15:15
Аватар для agent_mariya
agent_mariya agent_mariya вне форума
Прохожий
 
Регистрация: 05.03.2013
Сообщения: 25
Репутация: 10
По умолчанию

Цитата:
Сообщение от M.A.D.M.A.N.
Абисняю
Спасибо большое!
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 09:19.


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2025