我正在尝试替换TStringList中的char,但是编译器给了我一个'No overloaded version'错误。这是我的代码。
procedure TForm1.bImportCSVClick(Sender: TObject);
var
aCSVFile : TStringList;
aCSVLine : TStringList;
aString : string;
begin
if OpenDialog1.execute then
begin
aCSVFile := TStringList.Create;
aCSVLine := TStringList.Create;
try
aCSVFile.LoadFromFile(OpenDialog1.FileName);
aCSVFile := StringReplace(aCSVFile, ' ', '', [rfReplaceAll]); //Error
aCSVLine.Delimiter := ';';
for aString in aCSVFile do
begin
aCSVLine.DelimitedText := aString;
ClientDataSet1.InsertRecord([aCSVLine[0]]);
end;
finally
aCSVFile.Free;
aCSVLine.Free;
end;
end;
我尝试了以下内容:
for aString in aCSVFile do
begin
aCSVLine.DelimitedText := aString;
aCSVLine[0] := StringReplace(aCSVLine[0], ' ', '', [rfReplaceAll]);
ClientDataSet1.InsertRecord([aCSVLine[0]]);
end;
答案 0 :(得分:1)
StringReplace
的第一个参数是string
类型。你通过了TStringList
。 StringReplace
的返回值属于string
类型。您已分配到TStringList
。 您需要对单个字符串而不是整个列表进行操作。例如,如果您想对列表中的每个项目进行操作,您可以编写:
for i := 0 to aCSVFile.Count-1 do
aCSVFile[i] := StringReplace(aCSVFile[i], ' ', '', [rfReplaceAll]);
至于你的正确代码是什么,我不知道,因为你没有说明你想要达到的目标。