Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > БД в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 04.04.2016, 10:49   #1
royun
Пользователь
 
Регистрация: 20.05.2011
Сообщений: 67
По умолчанию TStringList

Здравствуйте. Есть код, отлично работает. Но как сделать его по компактнее, красивее?

Код:
var
SL: TStringList;
str: String;
iRow, i: integer;
begin
  SL:= TStringList.Create;
  for iRow := StringGrid2.FixedRows to StringGrid2.RowCount - 1 do
  begin
    if StringGrid2.Cells[1, iRow] <> '' then SL.Add(StringGrid2.Cells[1, iRow]);
  end;
  RemoveDuplicates(SL);
  ShowMessage(SL.Text + 'kol-vo - ' + IntToStr(SL.Count));
  if SL.Count = 1 then
  begin
    str:='set dateformat dmy '
                +'select * from ['+Combobox1.Text+'] '
                +'where date='''+SL.Strings[0]+'''';
    Memo1.Lines.Add(str);
  end;
  if SL.Count = 2 then
  begin
    str:='set dateformat dmy '
                +'select * from ['+Combobox1.Text+'] '
                +'where date='''+SL.Strings[0]+''''+' or '''+ SL.Strings[1]+'''';
    Memo1.Lines.Add(str);
  end;
  if SL.Count = 3 then
  begin
    str:='set dateformat dmy '
                +'select * from ['+Combobox1.Text+'] '
                +'where date='''+SL.Strings[0]+''''+' or '''+ SL.Strings[1]+''''+' or '''+ SL.Strings[2]+'''';
    Memo1.Lines.Add(str);
  end;
  if SL.Count = 4 then
  begin
    str:='set dateformat dmy '
                +'select * from ['+Combobox1.Text+'] '
                +'where date='''+SL.Strings[0]+''''+' or '''+ SL.Strings[1]+''''
                +' or '''+ SL.Strings[2]+''''+' or '''+ SL.Strings[3]+'''';
    Memo1.Lines.Add(str);
  end;
end;
royun вне форума Ответить с цитированием
Старый 04.04.2016, 11:01   #2
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Код:
s:='';
for i:=0 to SL.Count-1 do s:=s+Format('''%s'',',[SL.Strings[i]]);
str:=Fomat('set dateformat dmy select * from [%s] where date IN (%s)',[Combobox1.Text,Copy(s,1,Length(s)-1)]);
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 04.04.2016, 11:07   #3
royun
Пользователь
 
Регистрация: 20.05.2011
Сообщений: 67
По умолчанию

Цитата:
Сообщение от Аватар Посмотреть сообщение
Код:
s:='';
for i:=0 to SL.Count-1 do s:=s+Format('''%s'',',[SL.Strings[i]]);
str:=Fomat('set dateformat dmy select * from [%s] where date IN (%s)',[Combobox1.Text,Copy(s,1,Length(s)-1)]);
Аватар, Превосходно. Спасибо.
royun вне форума Ответить с цитированием
Старый 04.04.2016, 11:10   #4
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

SL.Free не забудь, а то утечки обеспечены
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 04.04.2016, 11:36   #5
royun
Пользователь
 
Регистрация: 20.05.2011
Сообщений: 67
По умолчанию

Цитата:
Сообщение от Аватар Посмотреть сообщение
SL.Free не забудь, а то утечки обеспечены
Спасибо, так и есть.
royun вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

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

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
tstringlist mogo Общие вопросы Delphi 3 12.02.2014 21:52
tstringlist sven4ik Общие вопросы Delphi 3 04.06.2013 14:01
TStringList vasyaRyzhyi Общие вопросы Delphi 0 07.03.2011 11:01
TStringList adr Общие вопросы Delphi 0 05.11.2010 18:29