使用Delphi在列表中转换\ n

时间:2014-11-28 02:50:23

标签: delphi

您好我正在尝试将字符串转换为要使用的列表中的sLineBreak,但以下代码给出了错误:

var
   SLista: TStringList;
   Arrangement: array of String;
   Index: Integer;
   text: string;

     SLista: = TStringList.Create;
     Text: = 'hi' + sLineBreak + 'world' + sLineBreak + 'yeah' + sLineBreak
       + 'Yeah';

     SLista.Delimiter: = sLineBreak;
     SLista.DelimitedText: = text;

     SetLength (Arrangement SLista.Count);
     for index: = 0 to Pred (SLista.Count) do
       Writeln (SLista [index]);

错误:

[DCC错误] test.dpr(120):E2010不兼容的类型:'Char'和'AnsiString'

我能做到这一点吗?

2 个答案:

答案 0 :(得分:2)

sLineBreak const定义为字符串#13#10。 TStringList.Delimiter是一个char,因此您无法为其分配sLineBreak。而不是分配给SLista.DelimitedText使用

SLista.Text := text;

如果您特别想使用DelimitedText,可以使用#13或#10作为分隔符来分割文本。但请注意,Text属性始终使用sLineBreak进行换行,即使您通过DelimitedText将内容分配为#13或#10作为分隔符。

作为旁注,如果使用Delimiter和DelimitedText属性,请确保考虑文本与StrictDelimiter属性中空格字符的效果以及文本与QuoteChar属性中的引号字符。

答案 1 :(得分:2)

代码是不必要的复杂,因为分配给Text会导致输入字符串在换行符上被拆分。所以你可以用这个替换你的代码:

SLista := TStringList.Create;
try
  SLista.Text: = 'hi' + sLineBreak + 'world' + sLineBreak + 'yeah' + sLineBreak
    + 'Yeah';
  for str in SLista do
    Writeln(str);
finally
  SList.Free;
end;