У меня есть Tstringlist, содержащий список ключей, используемых в таблице базы данных. Мне нужен простой способ создать одну строку, содержащую все ключи, каждый из которых разделен запятой и заключен в одинарные кавычки. Это сделано для того, чтобы его можно было использовать в операторе SQL «IN», например, WHERE FieldX IN («Один», «Два», «Три»).
Я пытался использовать кавычки, но они игнорируются при чтении запятой. например следующий код
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?