Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Datenmüll bei Konvertierung von Dateien TP5.5 -> Delphi 4 (https://www.delphipraxis.net/8586-datenmuell-bei-konvertierung-von-dateien-tp5-5-delphi-4-a.html)

freakTAB 8. Sep 2003 14:23


Datenmüll bei Konvertierung von Dateien TP5.5 -> Delphi 4
 
Und da bin ich wieder mit meinem Konvertierungproblemchen.

Also ...
Ich habe verschiedene Strukturen (Records) die in einem alten DOS Programm in eine Datei gespeichert wurden. Ich schreibe nun an einem Konvertierungsprogramm welches diese Dateien einliest und in neue Strukturen packt. Soweit so gut - das klappt auch alles sofern ich mich auf die Strings beziehe - nur kommt er irgendwie mit den Zahlen stark durcheinander. Mal ein Bsp für solch Records
Alt:
Delphi-Quellcode:
Lief_recA= packed record
            TA_Status  : LongInt;   { Status  0...belegt   }
            L_Nr       : str12;     { interne Lief.-Nummer  }
            L_Name     : str40;
            L_Erf      : boolean;   { Erfassung kg oder l
                                        true...kg             }
            L_Max_T    : real48;      { max. Rohmilchtemp.    }
            L_Art      : Byte;      { Tierart 1..Rinder    }
            L_Tour     : smallint;
            L_Molk     : Byte;
            L_Aktiv    : Char;      { Lief. aktiv o. passiv }
            L_Statistik : Boolean;
            L_Referenz : Boolean;
            L_J_Ist : array [1..12,Qualitaet] of real48;
            L_VJ_Ist : array [1..3,Qualitaet] of real48;
            end;
Neu:
Delphi-Quellcode:
Lief_rec= Record
            L_Nr       : str12;     { interne Lief.-Nummer  }
            L_Name     : str40;
            L_Erf      : Char;   { Erfassung kg oder l
                                        true...kg             }
            L_Max_T    : real48;      { max. Rohmilchtemp.    }
            L_Art      : Char;      { Tierart 1..Rinder    }
            L_Tour     : SmallInt;
            L_Molk     : Byte;
            L_Aktiv    : Char;      { Lief. aktiv o. passiv }
            L_Statistik : Boolean;
            L_Referenz : Boolean;
            L_J_Ist : array [1..12,Qualitaet] of real48;
            L_VJ_Ist : array [1..3,Qualitaet] of real48;
            end;
gibt es irgendwas was ich nicht beachtet habe?

vielen Dank für die Antwort

sakura 8. Sep 2003 14:41

Re: Datenmüll bei Konvertierung von Dateien TP5.5 -> Delp
 
Du hast das "packed" vor dem record entfernt, damit werden die Felder anders angeordnet. Zusätzlich suche in der Delphi-Hilfe mal nach real48, da gibt es, soweit ich weiß, ein Kompatibilitätsproblem.

...:cat:...

freakTAB 9. Sep 2003 07:03

Re: Datenmüll bei Konvertierung von Dateien TP5.5 -> Delp
 
Hmm, jetzt hab ich packed vor allen records geschrieben, ich erhalte nun "bessere" Ergebnisse - trotzdem sind sie noch völliger Quatsch. Leider finde ich zu dem Real48 Problem nix - zumindest nicht in der Hilfe
[Edit] Muss ich vielleicht auch noch die Arrays in den records packed machen?[/Edit]

sakura 9. Sep 2003 08:04

Re: Datenmüll bei Konvertierung von Dateien TP5.5 -> Delp
 
Zitat:

Zitat von freakTAB
Hmm, jetzt hab ich packed vor allen records geschrieben, ich erhalte nun "bessere" Ergebnisse - trotzdem sind sie noch völliger Quatsch.

Ich gehe mal davon aus, daß z.B. type str12 = string[12]; genutzt wurde. Nur um Missverständnissen vorzubeugen :mrgreen:

Zitat:

Zitat von freakTAB
Leider finde ich zu dem Real48 Problem nix - zumindest nicht in der Hilfe

Ich weiß nicht, wann der Real48 geändert wurde. Versuche mal folgenden Schalter in den Code einzufügen. Wenn Delphi meckert, solltest Du Dich nicht darum kümmern müssen, ansonsten einfach drinne lassen. Real48 wurde zu 16Bit Zeiten anders behandelt, als es heute der Fall ist ;-)
Delphi-Quellcode:
{$REALCOMPATIBILITY ON}
Gleiches gilt für das Alignment der Felder innerhalb von Records und Arrays. Dazu einfach das Alignment ausschalten.
Delphi-Quellcode:
{$ALIGN OFF}
Beide Schalter am besten vor jede Record-/Typendefinition setzen, die an alte Daten muss. Anschließend wieder die Schalter zurücksetzen und die Daten im neuen (effizientieren) Format sichern.

Zitat:

Zitat von freakTAB
Muss ich vielleicht auch noch die Arrays in den records packed machen?

Wenn vorher auch packed davor stand, ja. ;-)

...:cat:...

freakTAB 11. Sep 2003 06:57

Re: Datenmüll bei Konvertierung von Dateien TP5.5 -> Delp
 
Ich hab grad gemerkt das die eigentliche Konvertierung funktioniert, nur das spätere "reinschieben" in ein Blobfeld - oder das Auslesen is irgendwie nich ordentlich - hmmmm -shit- (sorry für Kraftausdruck)


Alle Zeitangaben in WEZ +1. Es ist jetzt 16:17 Uhr.

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