Delphi-PRAXiS
Seite 1 von 3  1 23      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Fremdes Datenformat einfach lesen in Delphi (https://www.delphipraxis.net/69489-fremdes-datenformat-einfach-lesen-delphi.html)

Berserker 15. Mai 2006 23:51

Datenbank: APDATA • Version: ... • Zugriff über: muss entwickelt werden

Fremdes Datenformat einfach lesen in Delphi
 
Hallo.

Es geht um folgendes, Ich möchte ein Datenformat von einem Lieferanten in Delphi einlesen um es weiter zu verarbeiten.

Jedoch ist das echt komplex. Eine Dokumentation habe ich auch dafür. Gibt es Beispiele wie man solche Formate in Delphi einlesen kann?

MfG, Ronny

Mackhack 16. Mai 2006 00:19

Re: Fremdes Datenformat einfach lesen in Delphi
 
Hi,

schreib n Parser. Nimm die Daten auseinander und lese sie in deine eigene Datenbank ein. So wuerd ich es machen!

Vlt. hilft dir ja Delphi-Referenz durchsuchenDelimiter das ist das Trennzeichen zwischen jedem Feld das du pro Datensatz in deiner uebergebenen (exportierten) Datei hast!

Hansa 16. Mai 2006 00:38

Re: Fremdes Datenformat einfach lesen in Delphi
 
Hoffentlich glaubst Du nicht, daß es für sowas etwas komplett fertiges gibt. Da ist echte Handarbeit gefragt. Jo Parser. immer solche komischen Wörter Oh je, wenn das nicht als Textdatei vorliegt sondern codiert (integer, real usw.), dann gute Nacht. 8) Ansonsten zeilenweise einlesen und die Zeilen zerpflücken in appetitliche Felder für eigene DB. Und dann eben so :

Delphi-Quellcode:
DS.Insert;
// alle Felder zuweisen :
DS.FieldByName ('NAME').As<integer, Float usw.> := copy (zeile (523,50));
DS.Post;
Alternative : lange nach passender Komponente suchen, die eventuell geht.

P.S.: Was ist Apdata ?

Oxmyx 16. Mai 2006 00:58

Re: Fremdes Datenformat einfach lesen in Delphi
 
Wenn du schon eine Dokumentation über das Format hast, was ist dann genau dein Problem, die Daten einzulesen? Ich nehme mal an, dass es sich um eine binäre Datei handelt, keine Textdatei. Dann steht doch in der Dokumentation genau drin, wie du die Daten zu interpretieren hast.
Also beschreibe mal genauer, was am Einlesen der Daten nicht funktioniert.

jim_raynor 16. Mai 2006 04:49

Re: Fremdes Datenformat einfach lesen in Delphi
 
Zum Beispiel kannst du mit TFileStream wunderbar eine Datei Byteweise einlesen.

r2c2 16. Mai 2006 07:23

Re: Fremdes Datenformat einfach lesen in Delphi
 
Zitat:

Zitat von jim_raynor
Zum Beispiel kannst du mit TFileStream wunderbar eine Datei Byteweise einlesen.

Muss nicht mal Byteweise sein...

Wenn du das Format kennst und es sich um ein konstantes Binärformat handelt, sollte das einfach per record gehen(bisher noch nie gemacht; nur davon gelesen):
Delphi-Quellcode:
TDaten = record // oder packed record --> siehe Dokumentation
  // hier die Daten in der Reihenfolge, in der sie in der Dokumentation stehen
end;

procedure LoadFromFile(AFileName: string);
begin
  // per Stream in record lesen...
end;
Je nachdem, wie kompliziert das Format ist, könnte es sein, dass du
a) Variante records brauchst
b) an den Einstellungen was ändern musst(Byte-Align oder sowas)
c) doch Byteweise lesen musst, weil die Datensätze unterschiedlich lang sind und du auch nicht variante records nehmen kannst
d) doch n Parser schreiben musst, weil es Textdateien sind

mfg

Christian

jim_raynor 16. Mai 2006 07:38

Re: Fremdes Datenformat einfach lesen in Delphi
 
Zitat:

Zitat von r2c2
a) Variante records brauchst

Es gibt die Möglich mit "file of" zu arbeiten. Stichworte sind da Hier im Forum suchenAssign, Hier im Forum suchenRewrite, Hier im Forum suchenWrite. Allerdings funktioniert das nicht mit varianten Records, sondern nur mit festen. Zudem dürfen keine AnsiStrings (Shortstrings ala String[20] sind erlaubt) und keine dynamischen Arrays verwendet werden. Aber wie schon gesagt, hängt es stark vom Dateiformat ab, welche Variante denn nun am optimalsten ist.

Hansa 16. Mai 2006 07:41

Re: Fremdes Datenformat einfach lesen in Delphi
 
Zitat:

Zitat von Oxmyx
..Ich nehme mal an, dass es sich um eine binäre Datei handelt, keine Textdatei. Dann steht doch in der Dokumentation genau drin, wie du die Daten zu interpretieren hast...

Binärdatei für Import/Exportzwecke wäre zumindest sehr ungewöhnlich. Denn was ist ein integer ? 8 bit oder 16 Bit ? Hat Delphi überhaupt einen mit dem Erstellungsprogramm der Daten 1:1 kompatiblen Datentyp ? Wie ist ein Aufzählungstyp in Cobol etc. aufgebaut ? Arrays, Records, Sets ?? Selbst wenn es ein Delphi-Programm wäre, welches die Daten gespeichert hat : ist vielleicht Compilerschalter (*$Xy+*) gesetzt ? Wer bietet mehr ? :mrgreen: Allerdings gibt es auf jeden Fall Mittel und Wege die Daten zu kriegen, eventuell so, wie es mir schon mal passiert war : einziges Speichermedium zum Datenaustausch : 8 Zoll Disketten (kein Witz !), unbekanntes Betriebssystem, keinerlei Daten-Dokumentation. Unser Glück war, daß ein serieller Drucker angeschlossen war. Auch ohne jede Information darüber. Typ noch nie von gehört. :wall: Dieser wurde kurzerhand gegen einen PC ausgetauscht. Dann mußte die Baudrate noch durch bloßes testen herausgefunden werden. Alleine die serielle Datenübertragung dauerte Tage. Allerdings fältt mir doch noch ein Tool ein, was so was ähnliches etwas vereinfacht : "Monarch". --> Google. Sogar wenn eine Textdatei vorliegt, wovon ich nach wie vor ausgehe : Selbst dann dürfte StringReplace gefordert sein. Achtung vor CSV und Umlauten ! Tausender-Trennzeichen oder Decimalseparator.

Mavarik 16. Mai 2006 07:46

Re: Fremdes Datenformat einfach lesen in Delphi
 
Zitat:

Zitat von Berserker
Hallo.

Es geht um folgendes, Ich möchte ein Datenformat von einem Lieferanten in Delphi einlesen um es weiter zu verarbeiten.

Vielleicht postest Du mal ein Stück der Datei...

Frank

Berserker 16. Mai 2006 08:46

Re: Fremdes Datenformat einfach lesen in Delphi
 
Also es handelt sich bei der Datei um ein reines Textfile.

Ich würde es gerne hiermit versuchen.
Jedoch weis ich nicht ob dies auch mit Textdateien möglich ist.

Delphi-Quellcode:
TDaten = record // oder packed record --> siehe Dokumentation
  // hier die Daten in der Reihenfolge, in der sie in der Dokumentation stehen
end;

procedure LoadFromFile(AFileName: string);
begin
  // per Stream in record lesen...
end;
Hier ein kleiner Auszug aus dem File:

Delphi-Quellcode:
00K
01ADR_APO
02UPD
0320060515
0420060501
05ABDATA DATEN-SERVICE
06Adressen
071001
0815
00F
0101
02Key_ADR
031
040
05V
065
07NU1
00F
0102
02Firmenname
030
040
05V
0640
07AN1
MfG, Ronny


Alle Zeitangaben in WEZ +1. Es ist jetzt 15:06 Uhr.
Seite 1 von 3  1 23      

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