delphi数组字符串stringlist转换

xia*_*hua 16 arrays delphi tstringlist

在delphi中有一种简单的方法可以将字符串数组转换为tstringlist吗?

Dav*_*nan 14

创建字符串列表后,您只需调用即可AddStrings().

或者对于不支持AddStrings()接受数组的重载的旧版Delphi ,您可以自己动手.

function StringListFromStrings(const Strings: array of string): TStringList;
var
  i: Integer;
begin
  Result := TStringList.Create;
  for i := low(Strings) to high(Strings) do
    Result.Add(Strings[i]);
end;
Run Code Online (Sandbox Code Playgroud)

使用开放数组参数可为调用者提供最大的灵活性.

  • 请注意,这仅适用于D2009及更高版本(可用泛型).D2007中的相同类型代码(支持动态数组构造函数语法)失败,"E2010不兼容类型:'TStrings'和'TStringArray'",其中`type TStringArray = string`数组,用作`SA:= TStringArray.创建('One','Two',Three');`和TStringList.AddStrings被称为`SL.AddStrings(SA);` (6认同)

Ken*_*ite 9

对于Delphi的预通用版本,您可以使用以下内容:

type
  TStringArray = array of string;

procedure StringListFromStrings(const StringArray: TStringArray; 
  const SL: TStringList);
var
  // Versions of Delphi supporting for..in loops
  s: string;

  // Pre for..in version
  // i: Integer;
begin
  // TStringList should be created and passed in, so it's clear
  // where it should be free'd.
  Assert(Assigned(SL));

  // Delphi versions with for..in support
  for s in StringArray do
    SL.Add(s);

  // Pre for..in versions
  // for i := Low(StringArray) to High(StringArray) do
  //   SL.Add(StringArray[i]);
end;
Run Code Online (Sandbox Code Playgroud)

  • +1为crusty-old-delphi-versions-love. (2认同)