Einzelnen Beitrag anzeigen

Jürgen Thomas

Registriert seit: 13. Jul 2006
Ort: Berlin
750 Beiträge
 
#8

Re: alte Datenbankdatei einlesen und weiterverarbeiten

  Alt 19. Nov 2006, 16:28
Hallo,
ich muss mich mit einem ähnlichen DOS-Format (Adad9) befassen. Die Daten-Datei sieht ähnlich aus; außerdem gibt es eine DAD (Datei-Definition), in der die Felddefinitionen enthalten sind: Feldnamen, Reihenfolge, maximale Feldlänge. Gibt es bei Dir auch solche Zusatzdateien?

Nach meiner o.g. Erfahrung kann ein Datensatz auch mehrere Blöcke à 256 Bytes lang sein. Es fragt sich dann, wo bzw. wie die anderen Informationen zu finden sind. Ich schlage deshalb vor, auf "Nummer Sicher" zu gehen und doch mit Feld- und Satztrenner zu arbeiten:
  • Dateianfang ist klar: ein leerer Datensatz, der mit 4x FF beginnt.
  • 4x 00 ist Anfang eines Datensatzes.
  • 1x 00 ist Ende eines Datenfeldes.
Daraus entnehme ich:
  • 1. Adressennummer
  • 2, 3. In den Beispielen folgen zwei Felder ohne Inhalt.
  • 4. Anrede
  • 5. Name
  • 6. Namenszusatz
  • 7. Straße
  • 8. unbekanntes Feld
  • 9. PLZ + Ort
  • 10, 11. zwei unbekannte Felder
  • 12, 13. Telefon, Telefax
In dieser Weise musst Du die Datei möglichst insgesamt ansehen und alle möglichen Felder interpretieren. Dann kannst Du bearbeiten:
  1. Erzeuge eine Struktur (Record, Klasse o.ä.) mit allen tatsächlich möglichen Feldern (ähnlich dem Vorschlag von Hansa). Benutze am besten String (variable Länge gemäß Delphi) für Textfelder, damit Du keine Probleme mit der max. Feldlänge bekommst.
  2. Lies die Datei als Stream ein.
  3. Gehe an Position 256.
  4. Bearbeite danach jeden Datensatz; prüfe den Satzanfang.
  5. Bearbeite danach alle Felder: Merke Dir die Position des Feldanfangs, gehe bis zum nächsten Feldtrenner und kopiere den Feldinhalt usw. - bei Bedarf mit StrToIntDef usw. Berücksichtige dabei, dass ein Feldinhalt nur aus dem Feldtrenner bestehen kann.

Ich bin gerne bereit, Dir bei der weiteren Analyse der Datei zu helfen. Jürgen
#D mit C# für NET, dazu Firebird
früher: Delphi 5 Pro, Delphi 2005 Pro mit C# (also NET 1.1)
Bitte nicht sauer sein, wenn ich mich bei Delphi-Schreibweisen verhaue; ich bin inzwischen an C# gewöhnt.
  Mit Zitat antworten Zitat