簡體   English   中英

替換字符串列表中的字符串時出現“無重載版本”錯誤

[英]'No overloaded version' error when replacing string in a stringlist

我正在嘗試替換TStringList中的char,但是編譯器給我一個'沒有重載版本'錯誤。 這是我的代碼。

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;
  • StringReplace的第一個參數的類型為string 您通過TStringList
  • StringReplace的返回值是string類型。 您分配給TStringList

您需要對單個字符串而不是整個列表進行操作。 例如,如果要對列表中的每個項目進行操作,則應編寫:

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

至於什么是正確的代碼,我不知道,因為您沒有指定要實現的目標。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM