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
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
Comment