Announcement

Collapse
No announcement yet.

Problem beim CSV-Import

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Problem beim CSV-Import

    Beim Import von Datanorm 4-Daten in eine Applikation habe ich folgendes Problem:

    Die Datanorm 4 stellt die Daten mit dem Semikolon ( als Trennzeichen bereit. Kommt in einem Feld selbst ein Semikolon vor, wird der Feldinhalt in Anführungszeichen (") gestellt.

    Mein bisheriger Parser sah so aus:

    <PRE>
    function RSParseCSV(Datensatz: String): TStringList;
    var
    ResultListe: TStringList;
    nCounter: Integer;
    Wert: String;
    begin
    // ***************************************
    // Stringliste anlegen
    // ***************************************
    ResultListe := TStringList.Create;

    // ***************************************
    // Stringliste aufbauen
    // ***************************************
    Wert := '';

    for nCounter := 1 to StrLen(PChar(Datensatz)) do
    begin
    if Datensatz[nCounter] = ';' then
    begin
    ResultListe.Add(Wert);
    Wert := '';
    end
    else
    Wert := Wert + Datensatz[nCounter];
    end;

    ResultListe.Add(Wert);

    // ***************************************
    // Stringliste zurückgeben
    // ***************************************
    Result := ResultListe;
    end;

    </PRE>

    Ich erhalte also eine Stringliste und kann über ResultListe[Feldnummer] auf den jeweiligen Inhalt zugreifen.

    Wie aber kann ich korrekt auf die Anführungszeichen reagieren?

    Die Anwendung von CommaText scheitert daran, dass das Feldtrennzeichen bei Datanorm 4 eben kein Komma, sondern ein Semikolon ist. Oder kann man das ändern?

    TIA für jede Hilfe!!

    Ralph

  • #2
    Du suchst TStrings.Delimiter? Das gibt es ab Delphi 6, wenn ich nicht irre.<p>
    Schöne Grüße, Mario Noac
    Schöne Grüße, Mario

    Comment


    • #3
      Mario,

      danke für Deine Antwort... in meinem Delphi 4 gibt es diese Möglichkeit leider nicht.

      Ralp

      Comment


      • #4
        Wenn Du einen eigenen Delimiter benötigst, dann reiche den doch einfach in Deine Parse-Funktion mit rein...<br>
        Ansonsten kann man CSV viel schneller in TStrings parsen:<br>
        MyStringList.CommaText := Datensatz; <p>
        Luc

        Comment


        • #5
          Lucas,

          wenn CommaText einen anderen Delimiter als das Komma erlauben würde, könnte ich Deinen Vorschlag umsetzen... aber genau das ist ja leider nicht der Fall.

          Ich habe einen CSV-Parser als Delphi-Source gefunden und ihn meinen Bedürfnissen entsprechend umbauen können - das Problem hat sich also erledigt!

          Ralp

          Comment

          Working...
          X