替换字符串列表中的字符串时出现“没有重载版本”错误

时间:2014-02-10 11:25:08

标签: delphi

我正在尝试替换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;

1 个答案:

答案 0 :(得分:1)

  • StringReplace的第一个参数是string类型。你通过了TStringList
  • StringReplace的返回值属于string类型。您已分配到TStringList

您需要对单个字符串而不是整个列表进行操作。例如,如果您想对列表中的每个项目进行操作,您可以编写:

for i := 0 to aCSVFile.Count-1 do
  aCSVFile[i] := StringReplace(aCSVFile[i], ' ', '', [rfReplaceAll]);

至于你的正确代码是什么,我不知道,因为你没有说明你想要达到的目标。