Autor Beitrag
Peti
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 42



BeitragVerfasst: Fr 08.11.02 12:12 
Hallo zusammen!

Beim Umstieg auf Delphi 7 habe ich ein Problem:
einige meiner Programm arbeiten (leider noch) mit typisierten Dateien, deren Datensätze aus Records bestehen.

Ich weiss, dass das blöd ist - aber momentan ist es leider noch so... :-)

Jetzt scheint Delphi 7 einige Datentypen anders zu speichern als andere... z.B. scheint TDateTime 2 Bytes länger zu sein.

Hat vielleicht irgend jemand eine Idee, wie ich solche Dateien trotzdem lesen kann? Die Programme, die dieses Dateien erzeugen, sind nämlich leider nicht mehr alle als Sourcen vorhanden.....

Ich hoffe inständig auf Ideen... :-)

Liebe Grüße,
Peti
Udontknow
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2596

Win7
D2006 WIN32, .NET (C#)
BeitragVerfasst: Fr 08.11.02 13:39 
Hi!

Schau mal in den Projektoptionen im Reiter Compiler nach, dort gibt es einen Eintrag für Record-Ausrichtung. Wenn dieser Eintrag verschieden ist, kommst du mit den Records durcheinander. Du musst die gleiche Record-Ausrichtung wie bei deinen alten Projekten wählen.

Cu, :D
Udontknow
Peti Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 42



BeitragVerfasst: Fr 08.11.02 14:10 
UDontKnow - Du rettest mir das Leben!!!!! :-)

Vielen Dank,
Peti
Ex0rzist
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 550

Win XP Prof.
Mandrake 10.0

D6
BeitragVerfasst: Fr 08.11.02 14:19 
Peti hat folgendes geschrieben:
UDontKnow - Du rettest mir das Leben!!!!! :-)


Was hast du denn für einen Chef? :lol:

_________________
If accidentally read, induce vomitting.
Peti Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 42



BeitragVerfasst: Fr 08.11.02 14:52 
Ich bin mein eigener Chef!

Das ist ja das schlimme... :lol:
Ex0rzist
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 550

Win XP Prof.
Mandrake 10.0

D6
BeitragVerfasst: Fr 08.11.02 18:44 
Dann sei nicht so streng mit dir. Hehe :lol:

_________________
If accidentally read, induce vomitting.
Raphael82
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 67



BeitragVerfasst: Sa 09.11.02 09:20 
Ganz nebenbei.. Typisierte Dateien in denen Records abgelegt sind, sind nicht so schlecht wie du sagst. Sicher, für größere Projekte und große Datenmengen sind sie zwar ungeeignet doch für kleine, schnell erstellte Tools, stellen sie eine gute Alternative zu Binärdateien,Streams oder gar Datenbanken. Ich meine wenn du in Delphi für jedes kleine Programm die Datenbank einbinden würdest, dann würde es kaum noch kleine Programme mit Delphi geben...

Raphael

_________________
Share your knowledge to receive perfection!
Peti Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 42



BeitragVerfasst: Do 12.05.05 12:17 
Hallo zusammen,

auch wenn das Thema etwas älter ist, hier noch ein Nachtrag:

Ich habe sehr lange gebraucht, um alle möglichen alten typisierten Datein in Delphi7-kompatible typisierte Dateien umwandeln zu können.

Da ja vielleicht der eine oder andere ein ähnliches Problem haben könnte, hier nachträgliche einige Tips zum Lösungsweg:


1. Zunächst sollte man sich das alte Record genau ansehen und zu jedem vorkommenden Datentypen nachsehen, wie er im der alten Delphi-Version verwaltet wurde. Also wieviele Bytes verwendet wurden usw.

2. Dann sollte man nachsehen, welcher Datetyp dem in Delphi7 am nächsten kommt, also dieselbe Bytezahl verwendet.

3. Nun taucht das Problem auf, dass bestimmte "gleichgrosse" Datentypen trotzdem beim Speichern in typisierten Dateien unterschiedlich viel Speicher brauchen. Man kann diverse Compilerdirektiven anwenden, um solche Problem zu lösen. Dazu sollte man sich die entsprechenden Dokumentationen man ansehen.

Für mich haben Folgende als sinnvoll erwiesen:
{$REALCOMPATIBILITY ON}
{$N+}
{$E+}
{$A2}

Ich gehe nicht im Detail darauf ein, da je nach Version verschiedene Probleme auftauchen können, die man kaum pauschal behandeln kann.

4. Wenn es damit noch nicht getan ist, kann man sich je eine Datei (mit dem gleichen Datensatz) in der alten und der neuen Delphi-Version erzeugen, und diese mit einem HEX-Editor ansehen und vergleichen. Oftmals kann man daran erkennen, an welchen Stellen sich die Positionen verschoben haben, und dort ansetzen.


Ich hoffe, ich konnte vielleicht dem einen oder anderen verzweifelten User (wie ich auch einer war :wink: ) eine sinnvolle Anregung geben. Bei detaillierteren Problemen oder dem Wunsch nach einem konkreten Beispiel kann mich gerne jeder weiter dazu befragen....

Gruß,
Peti