2011-05-04 79 views

回答

9

一旦你創建了字符串列表,你可以簡單地調用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; 

使用開放數組參數可爲調用者提供最大的靈活性。

+2

完美,謝謝! :) – xianghua 2011-05-04 16:52:47

+5

請注意,這隻適用於D2009及以上(凡泛型可用)。 D2007中的相同類型代碼(支持動態數組構造函數語法)會因爲「E2010不兼容類型:'TStrings'和'TStringArray''而失敗,其中'類型TStringArray =字符串數組',並且用作SA:= TStringArray。創建('一','兩',三');'和TStringList.AddStrings被稱爲'SL.AddStrings(SA);' – 2011-05-04 17:42:52

+0

最新的更新適用於所有版本的Delphi,即使那些不擁有動態數組(!) – 2012-12-10 15:10:32

9

對於德爾福的前通用版本,你可以使用這樣的事情:

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; 
+2

對於硬殼舊德爾福版本愛。 – 2011-05-04 17:58:45

+0

@Warren:謝謝。我們中的一些人堅持使用它們是因爲我們有不需要Unicode支持的項目(特別是在內部應用程序中),因此不能證明將它們轉換爲新版本的Delphi的工作是正確的(並且不能證明新版本本身,因爲權力,是不關心Unicode或泛型等)。 – 2011-05-04 18:00:54

+0

我完全理解。 :-) – 2011-05-04 18:06:01