您好我正在尝试将字符串转换为要使用的列表中的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'
我能做到这一点吗?
答案 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;