Leider ist der Aufbau der Datendatei eindeutig ,
Wieso "leider"? Ein eindeutiger Aufbau einer Datendatei ist doch kein Manko, im Gegenteil.
Und es ist richtig, daß die DataToolbox durch BTree-Isam abgelöst wurde, diese dann als "Filer" übernommen und inzwischen der Quellcode freigegeben wurde. Der Quellcode muß aber angepaßt werden, da er nur bis Delphi 2007 unterstützt. Nur ist das eh egal, da ja wohl eine Konvertierung zu einem neuen Programm vorgenommen werden soll, also aus den reinen Datendateien Die Datensätze ausgelesen und einem neuem Programm (konvertiert) zur Verfügung gestellt werden sollen. Die Indexdateien kann man dabei getrost vergessen, weil deren Struktur zu ermitteln ohne Quellcode und den darin beschriebenen Indexparametern so gut wie unmöglich ist.
Ich würde erstmal einen 32bit PC sicherstellen, damit auch später noch von vorh. Daten eine Aktenlage (auf Papier) hergestellt werden kann (ab 64bit gibt es keine DOS-VM mehr). Dann zum Jahreswechsel mit Jahresabschluß die Aktenlage herstellen.
Bei dem Wust an Dateien (s. rar) viel Zeit nehmen oder die weitergeführten Stamm-Daten, wie z.B. Kunden/Mandanten/Lager/Waren-Parameter einfach von Ausdrucken oder dem alten Programm selbst in das neue Programm eintippseln.
@einseins, wenn du die Datendateien wirklich auslesen und konvertieren willst, beachte auch, daß nicht alle Datensätze einer Datei gleich aufgebaut sein müssen - nur ihre Gesamtlänge [byte] ist wohl gleich, aber auch nicht komplett benutzt.
Die Datendateien bestehen aus einem Header (erster Satz, Rec 0), in dem vier Parameter, drei Longint und ein Word stehen. Diese geben
a) FirstFree:longint (RecNr des ersten gelöschten Recs)
b) NumFree:longint (Anzahl der gelöschten Recs)
c) UsedRecs:longint (Anzahl Recs ohne Rec0 und ohne gelöschte/ungültige Recs
d) Reclen:word
an. Daraus interessiert beim Auslesen der Daten ansich nur RecLen, wiel diese der Record-Größe zum deklarieren der Datei oder dem Lesepuffer entsprechen muß.
Wie oben schon gesagt (Furtbichler) besteht jeder Datensatz aus einem Longint (4 Byte) und den nachfolgenden Daten. Der Longint zählt mit zum RecLen und zum zu deklarierenden Record/Puffer. Ein Datensatz ist nur gültig, wenn diese ersten vier Byte alle Null sind - ansonsten gilt er als gelöscht und der Longint ist ein Zeiger auf den nächsten, gelöschten Datensatz. Aber das sollte auch in dem vorher schon verlinkten Handbuch stehen (?).
Die spezielle Struktur eines Datensatzes ermittelt man am besten, in dem man mit dam Anwenungsprogramm Daten anlegt; möglichst einedeutig wiedererkennbar und dann in den Datendateien nach diesen Daten sucht (z.B. mit einer Hilfsroutine oder einem HexEditor). Und dann daraus die jeweiligen Records ermittelt.
FF (Fiel Freude), ich hoffe, Du wirst gut bezahlt.