![]() |
Textdatei ohne Trennzeichen verarbeiten
Hallo zusammen,
ich habe folgendes Problem: 1. bin ich erst vor kurzen in die Delphi Welt geworfen worden :) 2. jetzt muss ich ein Programm abändern das in meinen Augen nicht so leicht wird, bzw. hab ich schon viel gegoogled und hab nichts brauchbares gefunden :( In dem Programm hab ich bis heute eine *.dbf Datei eingelesen und verarbeitet, hab auch den Quelltext sehr gut verstanden. Aber nun werden wir ein neues System bekommen und wir werden nur noch einen TextFile bekommen, der in etwa so aussieht: 00099Max Mustermann Holzweg 43 002300 etc ....... Ich muss jetzt quasi den TextFile ohne Trennzeichen verarbeiten. Zur Info: Stringstellen--Bedeutung 1-5 ------------ Kundennummer 6 - 24 --------- Vor und Nachname 25 - 38 -------- Straße 39 - 44 -------- Gehalt Meine Frage ist jetzt, wie kann ich den File am besten bearbeiten ? Um noch genauere Informationen zu geben, das sind etwa 40 verschiedene Daten in einer Zeile und der File wird recht groß sein. Jede Zeile soll gelesen werden und jeder Wert sollte in einer Variable stehen um ihn zu verarbeiten können. Beispiel meiner Vorstellung: TextFile lesen bis EoF -- Variable1 := Kundennummer -- Variable2 := Vor und Nachname -- ect........ -- Abfrabe auf Kundennummern (es dürfen nur Kundennummern zwischen 00001 und 001000) ---- Daten verarbeiten nächste Zeile lesen Hoffe es ist einigermaßen verständlich was ich meine und das mir bitte einer helfen kann. Dankeschön Bali |
Re: Textdatei ohne Trennzeichen verarbeiten
Wenn alle Einträge fixe Längen haben, kannst du sie entweder als Stringliste einlesen und dann mit den Stringfunktionen "Copy" arbeiten.
Oder du machst eine typisierte Datei über "File of MyFileRecord", wo du den Record mit den Längen der Datensätze deklarierst.
Delphi-Quellcode:
Und dann mit den TextFile Operationen AssignFile, Read, CloseFile. Da hab ich aber nicht so praktische Erfahrungen mit.
type
MyFileRecord = record CustNr: String[5]; Name: String[18]; ... end; |
Re: Textdatei ohne Trennzeichen verarbeiten
Hi!
Also zu Fuß oder einfach es gibt sicherlich 100 Ansätze.. Wir wäre es mit einem Record
Delphi-Quellcode:
Grüsse Frank :coder:
{$A1}
TAdresse = Record KNR : array[0..5] of char KundenName : array[0..18] of char; end; var Zeile : String; F : Textfile; Adresse : TAdresse; begin Readln(F,Zeile); Move(Zeile[1],Adresse,sizeof(Adresse)); end; |
Re: Textdatei ohne Trennzeichen verarbeiten
Geht ja superschnell hier :) Dankeschön schon mal.
Also, die Text Datei wird immer gleich bleiben in Sachen Record Länge, sie kann nur von der Anzahl der Records sich ändern. Ok, Ok ... soweit habe ich eure Idee verstanden, find ich auch sehr gut. Nur stell ich mir jetzt die Fragen .... 1. Wo bitte genau muss ich den Record definieren ? zwischen Procedure TextDatei.test und var ? 2. Das mit dem Record erstellen hab ich verstanden, das mit den var ein bisschen, aber das mit den Readln nicht so gut :( muss ich dann einen Zähler noch einbauen ?! MfG Bali |
Re: Textdatei ohne Trennzeichen verarbeiten
Oder über den ODBC-Text-Treiber und einer passenden Schema.ini ->
![]() cu Oliver |
Re: Textdatei ohne Trennzeichen verarbeiten
Hallo Bali,
ich schlage Dir folgendes vor a) einlesen der Textdatei und überprüfung der Satzlänge, rein theoretisch müssten alle Sätze gleich lang sein. b) Definition eines Records und eines Lesebuffers:
Delphi-Quellcode:
Die Definition der Arrays ist recht ungewöhnlich erleichtert Dir aber die Orientierung im Bezug auf die Quelldaten.
Const
maxsatzlang= 44+2; {satzlänge+2 CRLF } Type tDatensatz : record Kundennummer = array [1..5] of char; Name = array [6..24] of char; ... Var Lesezeile : array [1..maxsatzlang]; LeseSatz : tDatensatz; Es spricht natürlich nichts dagegen 0 oder 1 basiert zu arbeiten. b) danach einlesen jeweils eines Satzes(x Byte+2 [CRLF] ) oder mehrerer Sätze(n*(xByte+2)) c) move(Lesezeile[1],Lesesatz,maxsatzlang); Danach stehen Dir alle Felder innerhalb eines Records zur Verfügung. b & c müssen natürlich vom Anfang der Datei bis zum bitteren Ende mehrfach ausgeführt werden. Es spricht natürlich nichts dagegen das alles objektorientiert zu definieren, insbesonders im Hinblick auf spätere Wartung. Ich hoffe das hilft Dir weiter. Gruß K-H (ich tippe einfach zu langsam!) |
Re: Textdatei ohne Trennzeichen verarbeiten
hmmm, glaubt ihr wirklich, dass das einfacher ist, als eine Schema.ini anzulegen und dann mit TADOTable / TADOQuery darauf zuzugreifen?
Einziger Nachteil bei diesem Zugriff: Read-Only! cu Oliver |
Re: Textdatei ohne Trennzeichen verarbeiten
Hallo Oliver,
der ODBC-Treiber ist eine interessante Idee, hast Du da Erfahrungen? Gruß K-H |
Re: Textdatei ohne Trennzeichen verarbeiten
naja wenn ADO fehlt (bei D7 Personal) ist die ODBC-Lösung nicht das wahre.
Gruß K-H |
Re: Textdatei ohne Trennzeichen verarbeiten
@ Sir Rufo
Ich muss die Datei auch nur lesen. Das mit dem Record erstellen finde ich eigentlich recht gut, nur steig ich da nicht ganz durch :( Sorry, bin halt noch kein erfahrener Delphi Programmierer -.- |
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:39 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