1

我想将 30 个不同的字符串添加到 stringList 中。我不想加AList.Items.Add30次。我也不想将字符串保存在数组中并运行循环。我在想也许我可以写一个AList.Add(而不是在循环中)要添加的字符串由 Delimiter 分隔。例如 AList.Add('Data1' + <Delim> + 'Data2' ...)

怎么做 ?请注意,我只是好奇是否可以这样做。如果没有,那也没关系,因为有更好的方法来实现这一点。(将字符串保存在数组中并使用循环添加数据是我的想法)

提前致谢

4

4 回答 4

11

您可以编写一个执行此操作的过程:

procedure SLAddStrings(SL: TStrings; S: array of string);
var
  i: Integer;
begin
  SL.BeginUpdate;
  for i := low(S) to high(S) do
    SL.Add(S[i]);
  SL.EndUpdate;
end;

试试看:

var
  SL: TStringList;
begin
  SL := TStringList.Create;
  SLAddStrings(SL, ['car', 'cat', 'dog']);
于 2012-04-25T14:06:42.743 回答
7

创建一个临时对象TStringList,将字符串分配给它的DelimitedText属性,将临时对象传递给AddStrings()目标的方法TStringList,然后释放临时对象。

var
  Temp: TStringList;
begin
  Temp := TStringList.Create;
  try
    Temp.Delimiter := <Delim>;
    // if using a Delphi version that has StrictDelimiter available:
    // Temp.StrictDelimiter := True;
    Temp.DelimitedText := 'Data1' + <Delim> + 'Data2' ...;
    AList.AddStrings(Temp);
  finally
    Temp.Free;
  end;
end;
于 2012-04-26T01:02:34.913 回答
6

只使用DelimitedText属性。例如,如果您的分隔符设置为,(TStringList 中的默认值),那么您可以编写以下代码:

AList.DelimitedText := 'Data1,Data2';
于 2012-04-25T14:13:37.717 回答
1

您可以使用TStringList.DelimitedText属性添加文本,它使用您的Delimiter字符。TStringList将拆分您的文本,然后您可以使用strings属性分别访问每个字符串;

program Project3;
{$APPTYPE CONSOLE}
uses classes;

const DATA = 'one,two,three';

var sl : TStringList;
    s : string;
begin
    sl := TStringList.Create();
    try
        sl.Delimiter := ',';
        sl.DelimitedText := DATA;
        for s in sl do begin
            writeln(s);
        end;
        readln;
    finally
        sl.Free();
    end;
end.

结果是

one
two
three
于 2012-04-25T14:16:31.837 回答