AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi Textdatei ohne Trennzeichen verarbeiten
Thema durchsuchen
Ansicht
Themen-Optionen

Textdatei ohne Trennzeichen verarbeiten

Ein Thema von Bali · begonnen am 10. Feb 2009 · letzter Beitrag vom 10. Feb 2009
Antwort Antwort
Seite 1 von 3  1 23      
Bali

Registriert seit: 10. Feb 2009
23 Beiträge
 
Delphi 2005 Professional
 
#1

Textdatei ohne Trennzeichen verarbeiten

  Alt 10. Feb 2009, 10:12
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
  Mit Zitat antworten Zitat
nuclearping

Registriert seit: 7. Jun 2008
708 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#2

Re: Textdatei ohne Trennzeichen verarbeiten

  Alt 10. Feb 2009, 10:20
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:
type
  MyFileRecord = record
    CustNr: String[5];
    Name: String[18];
    ...
  end;
Und dann mit den TextFile Operationen AssignFile, Read, CloseFile. Da hab ich aber nicht so praktische Erfahrungen mit.
  Mit Zitat antworten Zitat
Benutzerbild von Mavarik
Mavarik

Registriert seit: 9. Feb 2006
Ort: Stolberg (Rhld)
4.126 Beiträge
 
Delphi 10.3 Rio
 
#3

Re: Textdatei ohne Trennzeichen verarbeiten

  Alt 10. Feb 2009, 10:22
Hi!

Also zu Fuß oder einfach es gibt sicherlich 100 Ansätze..

Wir wäre es mit einem Record
Delphi-Quellcode:
{$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;
Grüsse Frank
  Mit Zitat antworten Zitat
Bali

Registriert seit: 10. Feb 2009
23 Beiträge
 
Delphi 2005 Professional
 
#4

Re: Textdatei ohne Trennzeichen verarbeiten

  Alt 10. Feb 2009, 10:32
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
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#5

Re: Textdatei ohne Trennzeichen verarbeiten

  Alt 10. Feb 2009, 10:32
Oder über den ODBC-Text-Treiber und einer passenden Schema.ini -> http://msdn.microsoft.com/en-us/library/ms709353.aspx

cu

Oliver
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#6

Re: Textdatei ohne Trennzeichen verarbeiten

  Alt 10. Feb 2009, 10:33
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:
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;
Die Definition der Arrays ist recht ungewöhnlich erleichtert Dir aber die Orientierung im Bezug auf die Quelldaten.
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!)
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#7

Re: Textdatei ohne Trennzeichen verarbeiten

  Alt 10. Feb 2009, 10:36
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
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#8

Re: Textdatei ohne Trennzeichen verarbeiten

  Alt 10. Feb 2009, 10:37
Hallo Oliver,

der ODBC-Treiber ist eine interessante Idee,
hast Du da Erfahrungen?

Gruß
K-H
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#9

Re: Textdatei ohne Trennzeichen verarbeiten

  Alt 10. Feb 2009, 10:39
naja wenn ADO fehlt (bei D7 Personal) ist die ODBC-Lösung nicht das wahre.

Gruß K-H
  Mit Zitat antworten Zitat
Bali

Registriert seit: 10. Feb 2009
23 Beiträge
 
Delphi 2005 Professional
 
#10

Re: Textdatei ohne Trennzeichen verarbeiten

  Alt 10. Feb 2009, 10:40
@ 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 -.-
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 3  1 23      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:50 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz