1

stringListに30種類の文字列を追加したいと思います。AList.Items.Add30回追加したくない。また、文字列を配列に保持してループを実行したくありません。AList.Add追加する文字列が区切り文字で区切られているシングル(ループではない)を記述できるのではないかと考えていました。例えば 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文字列を割り当て、一時を宛先のメソッドに渡してから、一時を解放します。DelimitedTextAddStrings()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してテキストを追加できますが、Delimitercharを使用します。テキストを分割してから、プロパティ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 に答える