StringGrid.SaveToCSVFile Möglichkeiten

Rund um die LCL und andere Komponenten
Antworten
nyjo
Beiträge: 3
Registriert: Mo 10. Nov 2008, 15:04

StringGrid.SaveToCSVFile Möglichkeiten

Beitrag von nyjo »

Hallo,

ich nutze zum Speicher der CSV-Dateien die Funktion SaveToCSVFile!

Code: Alles auswählen

 
StringGridP.SaveToCSVFile('test.csv',';' ,False)
 
Inhalt test.csv

Code: Alles auswählen

 
W;07:15;MO;;;" ";" ";1;"perl m:\home\tools\checkErrorVerzeichnisse.pl";"Check Error-Verzeichnisse";SYSTEM
 
Ist soweit alles i.O.

Ich benötige die CSV-Datei aber ohne Gänsefüßchen!
Beispiel:
CSV-Datei wird so benötigt:

Code: Alles auswählen

 
W;07:15;MO;;; ; ;1;perl m:\home\tools\checkErrorVerzeichnisse.pl;Check Error-Verzeichnisse;SYSTEM
 
Gibt es hierfür eine enfache Lösung?

mfg
Nyenhuis

Benutzeravatar
theo
Beiträge: 10867
Registriert: Mo 11. Sep 2006, 19:01

Re: StringGrid.SaveToCSVFile Möglichkeiten

Beitrag von theo »

Darauf achten, dass die Strings keine Leerschläge oder Delimiter enthalten, oder aus der fertigen Datei oder dem Stream die Quotes wieder entfernen, z.B. mit StringReplace.

Socke
Lazarusforum e. V.
Beiträge: 3177
Registriert: Di 22. Jul 2008, 19:27
OS, Lazarus, FPC: Lazarus: SVN; FPC: svn; Win 10/Linux/Raspbian/openSUSE
CPU-Target: 32bit x86 armhf
Wohnort: Köln
Kontaktdaten:

Re: StringGrid.SaveToCSVFile Möglichkeiten

Beitrag von Socke »

theo hat geschrieben:Darauf achten, dass die Strings keine Leerschläge oder Delimiter enthalten, oder aus der fertigen Datei oder dem Stream die Quotes wieder entfernen, z.B. mit StringReplace.
Man könnte auch den Delimiter auf #0 setzen und hoffen, dass das nichts kaput macht.
MfG Socke
Ein Gedicht braucht keinen Reim//Ich pack’ hier trotzdem einen rein

nyjo
Beiträge: 3
Registriert: Mo 10. Nov 2008, 15:04

Re: StringGrid.SaveToCSVFile Möglichkeiten

Beitrag von nyjo »

Hallo,

danke für die Hinweise!

Problem ist, das in den einzelnen Feldern auch <"> vorkommen können (die aber nicht stören).
Beispiel:

Code: Alles auswählen

W;07:15;MO;;;" ";" ";1;"perl m:\home\tools\checkErrorVerzeichnisse.pl --verz="m:\test\log\" ";"Check Error-Verzeichnisse";SYSTEM


Habs so gelöst:

Code: Alles auswählen

 
procedure BereinigeCSVDatei( csvDatei: string; trenner: Char );
var
  i,j: integer;
  tempString: String;
  sOldDatei, sNewDatei, tempList: TStringList;
 
begin
  sOldDatei := TStringList.Create;
  sNewDatei := TStringList.Create;
  tempList  := TStringList.Create;
  sOldDatei.LoadFromFile(csvDatei);
  i := 0;
  while i < sOldDatei.Count do
  begin
    tempList.Clear;
    SplitText( trenner, sOldDatei[i], tempList);
    j := 0; tempString := '';
    while j < tempList.count do
    begin
      // Entferner Gänsefuesschen vorne und hinten!
      tempList[j] := ReplaceRegExpr('(^")', tempList[j], '', false);
      tempList[j] := ReplaceRegExpr('("$)', tempList[j], '', false);
      tempString  := tempString+tempList[j]+trenner;
      inc(j);
    end;
    sNewDatei.Add(tempString);
    inc(i);
  end;
  if sNewDatei.Count > 0 then
     sNewDatei.SaveToFile(csvDatei);
end; 
 
alles wird gut

Socke
Lazarusforum e. V.
Beiträge: 3177
Registriert: Di 22. Jul 2008, 19:27
OS, Lazarus, FPC: Lazarus: SVN; FPC: svn; Win 10/Linux/Raspbian/openSUSE
CPU-Target: 32bit x86 armhf
Wohnort: Köln
Kontaktdaten:

Re: StringGrid.SaveToCSVFile Möglichkeiten

Beitrag von Socke »

nyjo hat geschrieben:alles wird gut
Erst, wenn du die Objekte wieder frei gibst :)
MfG Socke
Ein Gedicht braucht keinen Reim//Ich pack’ hier trotzdem einen rein

Antworten