Имам Tstringlist, съдържащ списък с ключове, използвани в таблица на база данни. Бих искал прост начин за генериране на един низ, съдържащ всички ключове, като всеки е разделен със запетая и ограден в единични кавички. Това е така, за да може да се използва в SQL оператор „IN“, напр. WHERE FieldX IN („One“, „Two“, „Three“).
Опитах да използвам quotechar, но той се игнорира при четене на commatext. например следния код
procedure junk;
var
SL : Tstringlist;
s : string;
begin
SL := Tstringlist.Create;
SL.Delimiter :=','; //comma delimiter
SL.QuoteChar := ''''; //single quote around strings
SL.Add('One');
SL.Add('Two');
SL.Add('Three');
try
s := SL.commatext;
showmessage(s);
finally
SL.Free;
end; //finally
end; //junk
показва съобщението One,Two,Three - без никакви кавички.
Знам, че мога да го направя по дългия път, както в
procedure junk;
var
SL : Tstringlist;
s : string;
i : integer;
begin
SL := Tstringlist.Create;
SL.Delimiter :=','; //comma delimiter
SL.Add('One');
SL.Add('Two');
SL.Add('Three');
try
s := '';
for I := 0 to SL.Count - 1 do
begin
s := s + ',' + '''' + SL[i] + '''';
end;
delete(s,1,1);
showmessage(s);
finally
SL.Free;
end;//finally
end;
но има ли по-прост начин за използване на свойствата на самия Tstringlist?