Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Alte *.Dat-Dateien auslesen (https://www.delphipraxis.net/203117-alte-%2A-dat-dateien-auslesen.html)

Luckner 15. Jan 2020 13:47

Datenbank: Firefox • Version: 2.5 • Zugriff über: IBDataset

Alte *.Dat-Dateien auslesen
 
Hallo,

ich soll eine alte Kalkulationssoftware mit Tabellen (oder Datenbank) mit den Endungen
DATEN.DAT
DATEN.DIA
DATEN.IX

umschreiben. Leider ist der Programmierer dieser Software schon seit langer Zeit nicht mehr aufzutreiben und ich nicht weiß, welche Datenbank dahinter steckt. Über ADOConnection habe ich es versucht und habe auch ein Anmeldefenster bekommen. Aber jetzt fehlen mir die entsprechenden Anmeldedaten. Kennt Jemand diese Datenbank und wie man auf sie zugreifen kann?

Danke, Luckner

sakura 15. Jan 2020 13:50

AW: Daten.dat daten.dia daten.ix
 
Müsste DBase sein, DAT ist typisch für Daten, IX für Index. DIA ... war auch was, oder?

...:cat:...

haentschman 15. Jan 2020 13:52

AW: Daten.dat daten.dia daten.ix
 
Bitteschön...:P
https://www.delphipraxis.net/171941-...isam-sein.html

Luckie 15. Jan 2020 14:09

AW: Daten.dat daten.dia daten.ix
 
Bitte gib deinem Beitrag einen aussagekräftigen Titel. Nur drei Dateinamen sind das nicht. Danke.

Luckner 15. Jan 2020 14:41

AW: Alte *.Dat-Dateien auslesen
 
Sorry für den Dateinamen. Kann ich den nachträglich ändern?

haentschman: 'turbo power' ist mir nicht bekannt, aber sieht jedoch schon so aus.

Mit welche Komponenten könnte ich darauf zugreifen? Gibt es dafür eine Standartanmelde Namen und Passwort?

Gruß, Luckner

Luckie 15. Jan 2020 14:47

AW: Daten.dat daten.dia daten.ix
 
Klick auf "Erweitert".

Andreas13 15. Jan 2020 15:35

AW: Daten.dat daten.dia daten.ix
 
Zitat:

Zitat von Luckner (Beitrag 1455209)
DATEN.DAT
DATEN.DIA
DATEN.IX

Hallo,
obige Dateierweiterungen gehören zur Datenbank B-Tree-Isam/B-Tree-Shell der ENZ-EDV-Beratung Bad Homburg aus den Jahren ca. 1988 - 1997. Nachfolger ist Turbo Power Software gewesen. Den gibt' auch nicht mehr.

Hast Du noch ein altes ein Programm, das die Daten lesen / anzeigen kann?
Wie viele *.Dat gibt es?
Bei einer oder wenigen *.Dat könnte man mit einem mehr oder minder großem Aufwand die Datenstruktur ermitteln. Die *.Dat ist als Record organisiert und könnte sequentiell eingelesen und danach in andere Formate konvertiert werden. Bei mehreren verknüpften *.DAT ist der Aufwand deutlich höher. Die Datenstruktur ist in den Files nicht gespeichert, es gibt keinen Header.
Gruß, Andreas

Uwe Raabe 15. Jan 2020 16:06

AW: Daten.dat daten.dia daten.ix
 
An die Sourcen vom BTree-Filer kommt man aber ran: https://sourceforge.net/projects/tpbtreefiler/

Andreas13 15. Jan 2020 16:12

AW: Daten.dat daten.dia daten.ix
 
Zitat:

Zitat von Uwe Raabe (Beitrag 1455227)
An die Sourcen vom BTree-Filer kommt man aber ran: https://sourceforge.net/projects/tpbtreefiler/

Diese lassen sich jedoch nicht mal mit Delphi 5 kompilieren, geschweige denn mit den heutigen Versionen. Weil die Datenstruktur NICHT in den Dateien gespeichert ist, muß man experimentieren, um diese herauszufinden. Es ist eine sequentielle Aneinanderreihung identischer Records:
Das 1. Feld eines Records ist immer eine LongInt.
Verknüpfungen zu anderen verknüpften *.DAT's sind ebenfalls LongInt.
Strings sind noch ShortStrings mit Längenbyte und maximal String[255]
Den Rest dazwischen muß man experimentell herausfinden. Problematisch wird es, wenn der Programmierer variante Records verwendet hat...
Gruß, Andreas

haentschman 16. Jan 2020 05:23

AW: Daten.dat daten.dia daten.ix
 
Hallöle...8-)
Zitat:

Weil die Datenstruktur NICHT in den Dateien gespeichert ist, muß man experimentieren, um diese herauszufinden.
...er hat doch den Quelltext...zum umschreiben. :gruebel:
Zitat:

ich soll eine alte Kalkulationssoftware mit Tabellen (oder Datenbank) mit den Endungen ... umschreiben.
...im QT sollte die Zuordnung eigentlich stehen. :P

Andreas13 16. Jan 2020 08:44

AW: Daten.dat daten.dia daten.ix
 
Wenn der Quellcode vorhanden ist, würde ich davon nur die Record-Definitionen verwenden und die *.DAT's sequentiell einlesen und in einer Textdatei zur Weiterverarbeitung als Klartext zwischenspeichern.

Wenn das 1. Feld eines Records 32-Bit-LongInt(0) ist, ist der Record gültig.

Probleme kann (wird) es mit den "alten" Strings geben, die man wegen evtl. Umlaute etc. wahrscheinlich manuell anpassen muß, weil die noch nicht Unicode-Format haben.

Gruß, Andreas

Luckner 16. Jan 2020 10:49

AW: Alte *.Dat-Dateien auslesen
 
Der Quellcode ist nicht vorhanden. Es sind auch mehrere DAT-Dateien vorhanden (ca. 30). Ich wollte nur auf die Dat-Dateien per Delphi zugreifen und die Datenauslesen und in Firebird, evtl mit Korrekturen, speichern. Ich habe es schon mit BDE - und ADO-Komponente auf diese Dateien zuzugreifen. Delphi sagt mir erst dass die Verbindung funktioniert und dann soll ich mich anmelden. Auch diese Daten habe ich nicht.

Gruß, Luckner

Luckie 16. Jan 2020 11:01

AW: Alte *.Dat-Dateien auslesen
 
Was siehst du denn, wenn du so eine Datei mit einem (Hex)editor öffnest? Nicht unbedingt mit dem Windows internen, aber vielleicht mit Notepad+.

Luckner 16. Jan 2020 11:09

AW: Alte *.Dat-Dateien auslesen
 
Eigentlich nur so etwas:
Zitat:

ÝZ  ÝZ  27482 ELISON IMMOBIELIEN GMBH Kunde     69999
l—@ lA˜@ nd ohne Beschädigungen verlassen !!! k 25358 REISSIG-MARION     AD: Hr. Münchow Handwerker Rechnung lt. VOB§16 sofort o. Abzug zahlbar 69999 
ïmÛ4 nÛ4 sen !!! ¢ 10002 SIEWOGE Kunde     veränderter Stundenlohn 69999  HV +E$ ýt,< nd ohne Beschädigungen verlassen !!! t 10003 BERLINOVO Kunde     ACHTUNG immer schrift. Angebot für Rep + Neu und Auftragswert beachten, sonst gibt es Ärger mit der HV - Info 30.06.2016, HM Hr. Metting hat keine Befugnisse ! Lt. Fr. Kremser Zahlbar innerhalb 4 Wochen 69999  HV96/12 ROM, +E$ aFI ú  r schrift. Angebot für Rep + Neu und Auftragswert beachten, sonst gibt es Ärger mit der HV - Info 30.06.2016, HM Hr. Metting hat keine Befugnisse ! Lt. Fr. Kremser Zahlbar innerhalb 4 Wochen 69999  HV96/12 ROM, +E$ aFI 7 10004 GEWIWO Kunde     andere Preise, 1997: 59,25 DM/Std.#zAD: Hr. Münchow Zahlbar innerhalb 4 Wochen 69999  HV96/00/03/04/05/09 ROM,JA +E$ xV,< ab 1.03.98 - DM 61,00 -Demontge DM 29,00 bis 3,00 m Breite ú 10005 FREIE-SCHOLLE Kunde     Baurose, Mieter: Noebel, Moränenweg 24, Tegel - Feske, Allmendeweg. 116, Berlin Tegel, Hensen, Erholungsweg 48 Dämmung erhalten, Schaum mitnehmen! Zahlbar innerhalb 4 Wochen 69999  FA96/10/11 ROM/WD +E$ srRC ab 01.03.98 DM 61,00#zDemontage bis 3,0 m Breite-DM 29,00 ú  Feske, Allmendeweg. 116, Berlin Tegel, Hensen, Erholungsweg 48 Dämmung erhalten, Schaum mitnehmen! Zahlbar innerhalb 4 Wochen 69999  FA96/10/11 ROM/WD +E$ srRC ab 01.03.98 DM 61,00#zDemontage bis 3,0 m Breite-DM 29,00 ^ 10011 GESOBAU Kunde     Mahl 69999  HV94/95/96/11 ROM/JA/FEM +E$ mh«F Neitzke: TechnischerEinkauf, Frau Hentschel: Geld, Rahmenauftrag, Frau Reimann: Gebäudeinstandhalt Ú 28397 RTW GMBH     Münchow 69999
hb°> ¡b°> nd ohne Beschädigungen verlassen !!! ^ 11929 FLORIAN-ANDREAS     AD: Hr. Pöachel Handwerker Rechnung lt. VOB§16 sofort o. Abzug zahlbar 69999 
PR04 Insektenschutz Ôf*0 ]E×0 nd ohne Beschädigungen verlassen !!! µ 21808 LORENZ-RUDI     69999
PR 01 MU º@A* niŸ+ sen !!! a 18497 BADINIJKI-OLIVER     69999
3a[% jiŸ+ sen !!! _ 18359 EBMEYER-DAGMAR     69999
"U/% jiŸ+ sen !!! ] 31482 DERCOUST Kunde     M. Striewe 69999
.ƒ+J iƒ+J nd ohne Beschädigungen verlassen !!! f 28341 OTTO-GERT     Münchow 69999
ã[…> \…> nd ohne Beschädigungen verlassen !!! _ 28340 TERASA-HEINZ Kunde     AD: Herr Münchow 69999
FA 11 AAJA †„> 1d;D nd ohne Beschädigungen verlassen !!! z 27719 KROHN     69999
HV ,V,< <`,< nd ohne Beschädigungen verlassen !!! V 26694 BARTOSZEWSKI-NORBERT Kunde     AD: Herr Pöschel/ Baurose 69999
PR 08/09 JA T{ƒ8 $vÞ> sen !!! ‹ 26546 LANGER-HELGA     AD: Hr. Pöschel 69999

Codehunter 16. Jan 2020 11:17

AW: Alte *.Dat-Dateien auslesen
 
Oh oh. Nimm doch bitte Namen und Anschriften hier raus. Auch wenn es alte Daten sind. DSGVO lässt schön grüßen.

Jasocul 16. Jan 2020 11:30

AW: Alte *.Dat-Dateien auslesen
 
Ich habe solche Dateien vor etwa 20 Jahren mal auseinander genommen.

Schwierig wird es bei varianten Records (hatte ja schon jemand geschrieben).
Außerdem muss berücksichtigt werden, ob die Records "packed" definiert wurden.

Ansonsten:
- Sttrings sind ShortStrings. Daher steht im Byte davor die Länge.
- Integer müssten jetzt ShortInt sein
- Bei Real weiß ich im Moment nicht, was bei neuerem Delphi genutzt werden muss

Real und Integer stehen natürlich nicht als Klartext in der Datei.

Bei großen Records ist das ziemlich viel Gefummel und kann bei 30 Dateien eine Menge Arbeit bedeuten.

Luckner 16. Jan 2020 11:45

AW: Alte *.Dat-Dateien auslesen
 
Ich danke Euch für die Hinweise. Dann müssen die Anwender dann ihre Daten per Mausklick kopieren. dann geht es eben nicht anders.

Gruß, Luckner

Luckie 16. Jan 2020 12:15

AW: Alte *.Dat-Dateien auslesen
 
Na ja, man könnte schnell ein Tool programmieren, was ihnen die Arbeit erleichtert. Etwas mühsam ist nur den Feldtyp und die Feldlänge rauszufinden. Da wird man um Probieren nicht herum kommen. Aber wenn man das hat, kann man die Daten, zum leichten Kopieren, etwas aufbereiten in einem Memo schreiben oder jeden Datensatz in eine Textdatei speichern. Das wird nicht 100% funktionieren, wäre aber bestimmt eine Erleichterung.

Luckner 16. Jan 2020 12:30

AW: Alte *.Dat-Dateien auslesen
 
Lieber nicht. Das würde die Anwender an dieser Stelle überfordern. Dann müssen die Leute einige Monate parallel mit dem neuen Programm arbeiten.

Danke, Luckner

Andreas13 16. Jan 2020 13:38

AW: Alte *.Dat-Dateien auslesen
 
Zitat:

Zitat von Luckner (Beitrag 1455328)
...Das würde die Anwender an dieser Stelle überfordern. Dann müssen die Leute einige Monate parallel mit dem neuen Programm arbeiten.

Das heißt, daß ein funktionierendes Programm vorhanden ist. In dieser ISAM-Datenbank war es damals (1990+) üblich, einen Menüpunkt zur Anzeige der Datenbankgröße & Statistik zu haben. Dort könntest Du die Datensatzlänge Len in Bytes und die Anzahl der Datensätze anzeigen lassen. Damit hättest Du bereits etwas Information über die Datensatzstruktur
Delphi-Quellcode:
TYPE
  RecType1 = RECORD
    Dele        : LongInt;
    AutoRelation1: LongInt; // = Link zu einer anderen .DAT
    Reserve     : Array[1..Len-8] OF Byte;
  END;
Und damit liest Du einen Datensatz ein und versuchst aus dem Feld "Reserve" bekannt erscheinende Teile abzutrennen.

Damals war Real 6 Bytes lang. Aber es gab auch schon Extended mit 10 Bytes Länge. Die Integer waren 16-Bit-Integer.

Es ist sicherlich eine Fummelarbeit, aber man könnte es probieren. Am einfachsten wäre es, mit einer "Stammdatenbank" zu beginnen, die von sich aus keine Verknüpfungen zu anderen *.DAT’s hat.
Nomenklatur: Stammdatenbank = Kind = Detail
Eine Stammdatenbank hat kein Feld "AutoRelation".
Gruß, Andreas
PS:
Aufgrund Deines Speicherauszugs scheint mir die Recordlänge obiger .DAT 215 Bytes zu sein...

Luckie 16. Jan 2020 15:10

AW: Alte *.Dat-Dateien auslesen
 
Es soll ja nur beim Rauskopieren der Datensätze helfen. Damit arbeiten sollen sie nicht.


Alle Zeitangaben in WEZ +1. Es ist jetzt 22:59 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