Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Ascii-Datei analysieren (https://www.delphipraxis.net/43505-ascii-datei-analysieren.html)

hgiel 5. Apr 2005 06:33


Ascii-Datei analysieren
 
Hallo,

habe schon einige Infos zum Thema Stringzerlegung und Dateiverarbeitung durch das Forum erhalten, aber vielleicht kann ja jemand zu folgender Problematik helfen:

Ich muß Ascii-Dateien "auseinander" nehmen, die in jeder Zeile verschiedene Datensätze enthalten und diese Daten dann - am besten in einer DB - ablegen:

Beginnend mit einer Satzartnummer, z.B. 10+... schließen sich eine satzartspezifische Anzahl von Feldern an, die durch ZWEI!!! verschiedene Delimiter "+" und "-" getrennt sind (nach einem Minus kommt eine negative Zahl) getrennt werden.

Explode und andere Stringzerlege-Proceduren reagieren nur auf EINEN Delimiter?!

Wie kann ich solche Strings am besten / perfomantesten zerlegen und die extrahierten Felder speichern :? ?

Sharky 5. Apr 2005 06:46

Re: Ascii-Datei analysieren
 
Hai hgiel,

ersteinmal : "Herzlich Willkommen in der Delphi-PRAXIS".

So wie ich das sehe reicht es ja nicht das Du mit zwei Delimtern arbeiten kannst. Da der Delimiter ja etwas über die folgende Zahl aussagt (ob positiv oder negativ) musst Du ja auch noch denn Delimiter selbst aus dem String extrahieren.

Hast Du mal einen beispiel String?

hgiel 5. Apr 2005 07:34

Re: Ascii-Datei analysieren
 
null problemo,

10+240305+1020+1+104000100+010406+240305+08040111+ 001+501
60+240305+1021+1+104000100+++3+701+3+++1+2.6+7.8
66+240305+1021+1+104000100++1+1+1+7.8
67+240305+1021+1+104000100++1
70+240305+1021+1+104000100+++1+1
71+1021+3+701+3+++1+2.6+7.8+1
09+180305+1344+40+Sende:B:SK214301.DBZ
09+180305+1344+40+Sende:B:DEFAULTS.INI
60+180305+1437+1+104000100+++3+701+2+++1+2.6+5.2
60+180305+1437+1+104000100++1+3+701-2+++1+2.6-5.2
66+180305+1439+1+104000100++1+1+1+22.8
67+180305+1439+1+104000100++1

vielen Dank

Binärbaum 5. Apr 2005 12:16

Re: Ascii-Datei analysieren
 
Hat es irgendeine besondere Beduetung, wenn mehrere "+"-Zeichen zwischen zwei Zahlen stehen, oder ist das unwichtig?

MfG
Binärbaum

Jasocul 5. Apr 2005 12:22

Re: Ascii-Datei analysieren
 
Auf den ersten Blick würde ich einen Varianten Record nehmen und das zeilenweise verarbeiten. Da du verschiedene Delimiter hast, wirst du wohl die Zeilen manuell parsen müssen.

shmia 5. Apr 2005 12:34

Re: Ascii-Datei analysieren
 
Zitat:

Zitat von hgiel
Ich muß Ascii-Dateien "auseinander" nehmen, die in jeder Zeile verschiedene Datensätze enthalten und diese Daten dann - am besten in einer DB - ablegen:

Beginnend mit einer Satzartnummer, z.B. 10+... schließen sich eine satzartspezifische Anzahl von Feldern an, die durch ZWEI!!! verschiedene Delimiter "+" und "-" getrennt sind (nach einem Minus kommt eine negative Zahl) getrennt werden.

Explode und andere Stringzerlege-Proceduren reagieren nur auf EINEN Delimiter?!

Wer denkt sich denn sowas aus?
Das Minuszeichen gehört ja eigenlich zu den Nutzdaten und wird gleichzeitig als Delimiter missbraucht.
Ich würde jede Zeile nach dem "-" duchsuchen und dann vor dem "-" ein "+" einfügen. (mit Insert())
Dann mit Explore oder Co. zerlegen.

hgiel 5. Apr 2005 12:45

Re: Ascii-Datei analysieren
 
Vielen Dank,

werde deinen Tip mit dem INSERT mal testen!Ist EDXPORE eine performante Lösung oder gibt es noch etwas schnellers - besonders da ich die Datenfelder dann weiterverarbeiten bzw. in einer DB und/oder einem dynamischen Array ablegen will?

Gibt es auch eine Tip für die anschließende Ablage in eine DB (Habe nur DELPHI3 Professional), bzw. in ein dynamisches Array?

PS für Binärbaum: ++ bedeutet Feldinhalt "leer"


Alle Zeitangaben in WEZ +1. Es ist jetzt 12:22 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