Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi CSV parsen (https://www.delphipraxis.net/102622-csv-parsen.html)

kujin1000 1. Nov 2007 06:09


CSV parsen
 
Hi,

ich hoffe ich bin hier richtig. :stupid:

Ich bekomme übers Internet eine CSV, die ich in ein Array speichern will.

Delphi-Quellcode:
var
  Str: String;
  I, J, K, Pos: Integer;
begin
  Str := HTTP.Get('http://clix.superclix.de/export/partner/exportstats.php?id=' + frmLogin.edtUsername.Text + '&pw=' + frmLogin.edtPasswort.Text + '&mo=10&ja=2007&ta=29');
  Str := StringReplace(Str, 'Datum;Nummer;Status;SubID;Partnerprogramm;Provision;Provinfo;Zeit;Ppnr;Währung', '', [rfReplaceAll]);
  Str := StringReplace(Str, #$A, '', [rfReplaceAll]);
  Pos := 0;
  Repeat
    Inc(Pos);
    For J := 1 to 10 do
      begin
        K := 0;
        Repeat
          Inc(K);
          if Copy(Str, 1, K) = ';' then
            begin
              Verdienst[Pos, J] := Copy(Str, 1, K-1);
              Str := StringReplace(Str, Copy(Str, 1, K), '', []);
            end;
        Until Copy(Str, 1, K) = ';';
      end;
  Until Str = '';
end;
Wer sich mal den Aufbau der CSV anschauen will -> http://clix.superclix.de/export/part...&pw=supertest2

Irgendwie hängt sich mein Programm immer auf und mit Step by Step durchgegehen komm ich auch nicht weiter. Gibt es einfachere Möglichkeiten eine CSV zu parsen? :lol:

marabu 1. Nov 2007 06:57

Re: CSV parsen
 
Moin,

auf jeden Fall gibt es einfachere Methoden. Die Klasse TStringList beinhaltet bereits einen Parser für CSV-Dateien (DelimitedText, StrictDelimiter). Wichtig wäre noch deine Delphi-Version, da es da kleinere Unterschiede in der Funktionalität gibt. Auf jeden Fall solltest du auf alle deine StringReplace-Operationen verzichten.

Grüße vom marabu

mkinzler 1. Nov 2007 07:34

Re: CSV parsen
 
Oder verwende eine CSVDataSet

dkoehler 1. Nov 2007 16:58

Re: CSV parsen
 
Könnte es sein, daß die beiden letzten Parameter im Copy-Befehl jeweils vertauscht werden müssen?

Außerdem ist

Until Copy(Str, 1, K) = ';'

fehleranfällig, weil es die Schleife ins Nirvana schickt, wenn Str nicht mit einem Semikolon abschließt.

kujin1000 1. Nov 2007 17:45

Re: CSV parsen
 
CSVDataSet und StringList klingen interessant. Ich werde mal suchen.

Ich benutze Delphi 7 und Delphi 2007 beim Freund, wobei ich das Projekt mit Delphi 2007 geschrieben hab.


Alle Zeitangaben in WEZ +1. Es ist jetzt 00:31 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz