|
Antwort |
Registriert seit: 17. Mai 2008 4 Beiträge |
#1
Hallo,
vielleicht kann mir einer helfen. Ich habe ein altes Programm (Delphi 4) mit Turbo Delphi neu kompiliert. Soweit so gut. Starte ich das Programm bricht es mit einer Fehlermeldung ab. Der unten aufgeführte Initialisierungsrecord wird nicht mehr richtig mit Blockread gelesen. Die Funktion sizeof() ergibt für den unten aufgeführten record in Delphi4 den Wert 5048 und in Turbo Delphi 5043. Auch andere alte Daten die mit blockread gelesen werden verursachen Fehler. Veränderung der Compileroption RECORD-FELDER-AUSRICHTEN mit 0,1,2,4,8 brachten kein Ergebnis.
Delphi-Quellcode:
initStruct = record
VersionTcd : string[30]; (* Version der Schaltplandatei *) MaxSeite : integer; (* Anzahl der Seiten *) AnbindungsFarbe : tcolor; (* Farbe der Anbindungspunkte *) HintergrundFarbe : tcolor; (* Bildschirmhintergrundfarbe *) RectWahlColor : tcolor; (* Farbe des Auswahl Rechtecks *) PfadAnzahl : integer; (* Anzahl der Pfade pro Seite *) KYpos : UU; (* y Lage des Kontaktspiegels *) DruckLinienStaerke : integer;(* Linienstaerke beim Ausdruck *) AnbindungenZeichnen : boolean; (* Anbindungen werden gezeichnet *) EinfuegePunkteZeichnen : boolean; (* Einfügepunkte werden gezeichnet *) JpgSchraffur : boolean; (* bei true wird Jpg als Schraffur gezeichnet *) xyJpg : boolean; (* Jpg in Rechteck eingepasst *) xJpg : boolean; (* Jpg wird auf x-Maße angepasst *) yJpg : boolean; (* Jpg wird auf y-Maße angepasst *) RasterMarkerSize : integer; (* Groesse des Raster in Pixel *) EinfuegePktMarkerSize : integer; (* Größe der Einfügepunkt Marker in Pixel *) EinfuegePktMarkerWidth : integer; (* Liniendicke Marker Einfuegepunkte *) EinfuegePktMarkerColor : tcolor; (* Farbe Marker der EinfuegePunkte *) KontaktSpiegelColor : tcolor; (* Farbe der Kontaktspiegel *) KontaktSpiegelWidth : UU; (* Linienstärke Kontaktspiegel *) VerweisColor : tcolor; (* Farbe der Quer und Rückverweise *) VerweisWidth : UU; (* Linienstärke Verweise *) vlength : UU; (* Länge der Anbindungspunkte *) UText : array[1..20] of string[50]; ReserveStr1 : string[255]; ReserveStr2 : string[255]; ReserveStr3 : string[255]; ReserveStr4 : string[255]; ReserveStr5 : string[255]; ReserveStr6 : string[255]; ReserveStr7 : string[255]; ReserveStr8 : string[255]; ReserveStr9 : string[255]; ReserveStr10 : string[255]; ReserveStr11 : string[100]; ReserveStr12 : string[100]; ReserveStr13 : string[100]; ReserveStr14 : string[100]; ReserveStr15 : string[100]; ReserveStr16 : string[100]; ReserveStr17 : string[100]; ReserveStr18 : string[100]; ReserveStr19 : string[100]; ReserveStr20 : string[100]; ReserveInt1 : integer; ReserveInt2 : integer; ReserveInt3 : integer; ReserveInt4 : integer; ReserveInt5 : integer; ReserveInt6 : integer; ReserveInt7 : integer; ReserveInt8 : integer; ReserveInt9 : integer; ReserveInt10 : integer; ReserveInt11 : integer; ReserveInt12 : integer; ReserveInt13 : integer; ReserveInt14 : integer; ReserveInt15 : integer; ReserveInt16 : integer; ReserveDU1 : DU; ReserveDU2 : DU; ReserveDU3 : DU; ReserveDU4 : DU; ReserveDU5 : DU; ReserveDU6 : DU; ReserveDU7 : DU; ReserveDU8 : DU; ReserveDU9 : DU; ReserveDU10 : DU; ReserveDU11 : DU; ReserveDU12 : DU; ReserveDU13 : DU; ReserveDU14 : DU; ReserveDU15 : DU; ReserveDU16 : DU; ReserveUU1 : UU; ReserveUU2 : UU; ReserveUU3 : UU; ReserveUU4 : UU; ReserveUU5 : UU; ReserveUU6 : UU; ReserveUU7 : UU; ReserveUU8 : UU; ReserveUU9 : UU; ReserveUU10 : UU; ReserveUU11 : UU; ReserveUU12 : UU; ReserveUU13 : UU; ReserveUU14 : UU; ReserveUU15 : UU; ReserveUU16 : UU; ReserveBit1 : Boolean; ReserveBit2 : Boolean; ReserveBit3 : Boolean; ReserveBit4 : Boolean; ReserveBit5 : Boolean; ReserveBit6 : Boolean; ReserveBit7 : Boolean; ReserveBit8 : Boolean; ReserveBit9 : Boolean; ReserveBit10 : Boolean; ReserveBit11 : Boolean; ReserveBit12 : Boolean; ReserveBit13 : Boolean; ReserveBit14 : Boolean; ReserveBit15 : Boolean; ReserveBit16 : Boolean; ReserveColor1 : TColor; ReserveColor2 : TColor; ReserveColor3 : TColor; ReserveColor4 : TColor; ReserveColor5 : TColor; ReserveColor6 : TColor; ReserveColor7 : TColor; ReserveColor8 : TColor; ReserveColor9 : TColor; ReserveColor10 : TColor; ReserveColor11 : TColor; ReserveColor12 : TColor; ReserveColor13 : TColor; ReserveColor14 : TColor; ReserveColor15 : TColor; ReserveColor16 : TColor; end; |
Zitat |
(Moderator)
Registriert seit: 9. Dez 2005 Ort: Heilbronn 39.858 Beiträge Delphi 11 Alexandria |
#2
Verwende mal die Codeformatierung
Wie sind DU, UU deklariert?
Markus Kinzler
|
Zitat |
Registriert seit: 17. Mai 2008 4 Beiträge |
#3
Zitat von mkinzler:
Verwende mal die Codeformatierung
Wie sind DU, UU deklariert? DU = LongInt; |
Zitat |
Registriert seit: 11. Okt 2003 Ort: Elbflorenz 44.033 Beiträge Delphi 12 Athens |
#4
hast du dein D4 noch? (blöde Frage ... wenn du SizeOf schon getestet hast )
notfalls dort die Daten einlesen und neu (in neuem Format) speichern. für Records, welche übertragen oder gespeichert werden sollen, macht es sich auch besser, wenn sie entsprechend formatiert werden. - packed Record - feste Typengrößen (z.B. LongInt statt Integer) denn sonst bekommt man zwanksläufig Probleme, wenn sich etwas an der Kompilierung ändert - 32 Bit <> 64 Bit - andere Speicherausrichtung - usw. insgesammt macht es sich eh gut, den Record mal etwas aufzuräumen:
Delphi-Quellcode:
InitStruct = packed Record
VersionTcd : String[30]; (* Version der Schaltplandatei *) MaxSeite : LongInt; (* Anzahl der Seiten *) AnbindungsFarbe : TColor; (* Farbe der Anbindungspunkte *) HintergrundFarbe : TColor; (* Bildschirmhintergrundfarbe *) RectWahlColor : TColor; (* Farbe des Auswahl Rechtecks *) PfadAnzahl : LongInt; (* Anzahl der Pfade pro Seite *) KYpos : UU; (* y Lage des Kontaktspiegels *) DruckLinienStaerke : LongInt; (* Linienstaerke beim Ausdruck *) AnbindungenZeichnen : Boolean; (* Anbindungen werden gezeichnet *) EinfuegePunkteZeichnen : Boolean; (* Einfügepunkte werden gezeichnet *) JpgSchraffur : Boolean; (* bei true wird Jpg als Schraffur gezeichnet *) xyJpg : Boolean; (* Jpg in Rechteck eingepasst *) xJpg : Boolean; (* Jpg wird auf x-Maße angepasst *) yJpg : Boolean; (* Jpg wird auf y-Maße angepasst *) RasterMarkerSize : LongInt; (* Groesse des Raster in Pixel *) EinfuegePktMarkerSize : LongInt; (* Größe der Einfügepunkt Marker in Pixel *) EinfuegePktMarkerWidth : LongInt; (* Liniendicke Marker Einfuegepunkte *) EinfuegePktMarkerColor : TColor; (* Farbe Marker der EinfuegePunkte *) KontaktSpiegelColor : TColor; (* Farbe der Kontaktspiegel *) KontaktSpiegelWidth : UU; (* Linienstärke Kontaktspiegel *) VerweisColor : TColor; (* Farbe der Quer und Rückverweise *) VerweisWidth : UU; (* Linienstärke Verweise *) vlength : UU; (* Länge der Anbindungspunkte *) UText : packed Array[1..20] of String[50]; ReserveStr : packed Array[1..20] of String[255]; ReserveInt : packed Array[1..16] of LongInt; ReserveDU : packed Array[1..16] of DU; ReserveUU : packed Array[1..16] of UU; ReserveBit : packed Array[1..16] of Boolean; ReserveColor : packed Array[1..16] of TColor; end; PS: da der Record jetzt kleiner ist, hat D4 wohl etwas anders (gepackter ausgerichtet) du kannst aber auch mal versuchen rauszufinden, wie D4 ausgerichtet hat, dann den Record in TD als packed erstellen und entsprechende FüllBytes dort einfügen.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests |
Zitat |
Registriert seit: 17. Mai 2008 4 Beiträge |
#5
Zitat von himitsu:
hast du dein D4 noch? (blöde Frage ... wenn du SizeOf schon getestet hast )
notfalls dort die Daten einlesen und neu (in neuem Format) speichern. für Records, welche übertragen oder gespeichert werden sollen, macht es sich auch besser, wenn sie entsprechend formatiert werden. - packed Record - feste Typengrößen (z.B. LongInt statt Integer) denn sonst bekommt man zwanksläufig Probleme, wenn sich etwas an der Kompilierung ändert - 32 Bit <> 64 Bit - andere Speicherausrichtung - usw. insgesammt macht es sich eh gut, den Record mal etwas aufzuräumen:
Delphi-Quellcode:
InitStruct = packed Record
VersionTcd : String[30]; (* Version der Schaltplandatei *) MaxSeite : LongInt; (* Anzahl der Seiten *) AnbindungsFarbe : TColor; (* Farbe der Anbindungspunkte *) HintergrundFarbe : TColor; (* Bildschirmhintergrundfarbe *) RectWahlColor : TColor; (* Farbe des Auswahl Rechtecks *) PfadAnzahl : LongInt; (* Anzahl der Pfade pro Seite *) KYpos : UU; (* y Lage des Kontaktspiegels *) DruckLinienStaerke : LongInt; (* Linienstaerke beim Ausdruck *) AnbindungenZeichnen : Boolean; (* Anbindungen werden gezeichnet *) EinfuegePunkteZeichnen : Boolean; (* Einfügepunkte werden gezeichnet *) JpgSchraffur : Boolean; (* bei true wird Jpg als Schraffur gezeichnet *) xyJpg : Boolean; (* Jpg in Rechteck eingepasst *) xJpg : Boolean; (* Jpg wird auf x-Maße angepasst *) yJpg : Boolean; (* Jpg wird auf y-Maße angepasst *) RasterMarkerSize : LongInt; (* Groesse des Raster in Pixel *) EinfuegePktMarkerSize : LongInt; (* Größe der Einfügepunkt Marker in Pixel *) EinfuegePktMarkerWidth : LongInt; (* Liniendicke Marker Einfuegepunkte *) EinfuegePktMarkerColor : TColor; (* Farbe Marker der EinfuegePunkte *) KontaktSpiegelColor : TColor; (* Farbe der Kontaktspiegel *) KontaktSpiegelWidth : UU; (* Linienstärke Kontaktspiegel *) VerweisColor : TColor; (* Farbe der Quer und Rückverweise *) VerweisWidth : UU; (* Linienstärke Verweise *) vlength : UU; (* Länge der Anbindungspunkte *) UText : packed Array[1..20] of String[50]; ReserveStr : packed Array[1..20] of String[255]; ReserveInt : packed Array[1..16] of LongInt; ReserveDU : packed Array[1..16] of DU; ReserveUU : packed Array[1..16] of UU; ReserveBit : packed Array[1..16] of Boolean; ReserveColor : packed Array[1..16] of TColor; end; Alle Symbole neu in Turbo Delphi zu erstellen wäre zuviel Arbeit. Dann bleib ich lieber bei Delphi 4. |
Zitat |
grenzgaenger
(Gast)
n/a Beiträge |
#6
wie wäre es, wenn du bei dieser gelegenheit deinen quellcode zukunftsorientiert aufziehst... verwendung von datenbanken und klassen... mit 'n kleinen konvertierungsprogy in D4, wenn du dich nicht mit den packed auseinandersetzen möchtest. denn D4 wird irgendwann nicht mehr auf den neuen maschinen, zumindest nicht zufriedenstellend, laufen. und dann hättest du 'n problem. jetzt sollte das thema mit 1, 2 stunden aufwand erledigt sein
|
Zitat |
Registriert seit: 11. Okt 2003 Ort: Elbflorenz 44.033 Beiträge Delphi 12 Athens |
#7
Du brauchst dir dann doch nur ein kleines Programm zum Konvertieren der Pläne erstellen.
Mit D4 ein Konvertierungsprogramm erstellen und dieses über deine Dateien laufen lassen und in TD fängst du dann gleich mit dem "neuen" Record an. [add] oder wie grenzgaenger schon erwähnte gleich alles in ein anderes Format ... z.B. XML) Von den Daten her ist mein Recordvorschlag ja identisch zu Deinem.
Delphi-Quellcode:
initStruct_alt = record
VersionTcd : string[30]; (* Version der Schaltplandatei *) MaxSeite : integer; (* Anzahl der Seiten *) AnbindungsFarbe : tcolor; (* Farbe der Anbindungspunkte *) HintergrundFarbe : tcolor; (* Bildschirmhintergrundfarbe *) RectWahlColor : tcolor; (* Farbe des Auswahl Rechtecks *) PfadAnzahl : integer; (* Anzahl der Pfade pro Seite *) KYpos : UU; (* y Lage des Kontaktspiegels *) DruckLinienStaerke : integer;(* Linienstaerke beim Ausdruck *) AnbindungenZeichnen : boolean; (* Anbindungen werden gezeichnet *) EinfuegePunkteZeichnen : boolean; (* Einfügepunkte werden gezeichnet *) JpgSchraffur : boolean; (* bei true wird Jpg als Schraffur gezeichnet *) xyJpg : boolean; (* Jpg in Rechteck eingepasst *) xJpg : boolean; (* Jpg wird auf x-Maße angepasst *) yJpg : boolean; (* Jpg wird auf y-Maße angepasst *) RasterMarkerSize : integer; (* Groesse des Raster in Pixel *) EinfuegePktMarkerSize : integer; (* Größe der Einfügepunkt Marker in Pixel *) EinfuegePktMarkerWidth : integer; (* Liniendicke Marker Einfuegepunkte *) EinfuegePktMarkerColor : tcolor; (* Farbe Marker der EinfuegePunkte *) KontaktSpiegelColor : tcolor; (* Farbe der Kontaktspiegel *) KontaktSpiegelWidth : UU; (* Linienstärke Kontaktspiegel *) VerweisColor : tcolor; (* Farbe der Quer und Rückverweise *) VerweisWidth : UU; (* Linienstärke Verweise *) vlength : UU; (* Länge der Anbindungspunkte *) UText : array[1..20] of string[50]; ReserveStr1 : string[255]; ReserveStr2 : string[255]; ReserveStr3 : string[255]; ReserveStr4 : string[255]; ReserveStr5 : string[255]; ReserveStr6 : string[255]; ReserveStr7 : string[255]; ReserveStr8 : string[255]; ReserveStr9 : string[255]; ReserveStr10 : string[255]; ReserveStr11 : string[100]; ReserveStr12 : string[100]; ReserveStr13 : string[100]; ReserveStr14 : string[100]; ReserveStr15 : string[100]; ReserveStr16 : string[100]; ReserveStr17 : string[100]; ReserveStr18 : string[100]; ReserveStr19 : string[100]; ReserveStr20 : string[100]; ReserveInt1 : integer; ReserveInt2 : integer; ReserveInt3 : integer; ReserveInt4 : integer; ReserveInt5 : integer; ReserveInt6 : integer; ReserveInt7 : integer; ReserveInt8 : integer; ReserveInt9 : integer; ReserveInt10 : integer; ReserveInt11 : integer; ReserveInt12 : integer; ReserveInt13 : integer; ReserveInt14 : integer; ReserveInt15 : integer; ReserveInt16 : integer; ReserveDU1 : DU; ReserveDU2 : DU; ReserveDU3 : DU; ReserveDU4 : DU; ReserveDU5 : DU; ReserveDU6 : DU; ReserveDU7 : DU; ReserveDU8 : DU; ReserveDU9 : DU; ReserveDU10 : DU; ReserveDU11 : DU; ReserveDU12 : DU; ReserveDU13 : DU; ReserveDU14 : DU; ReserveDU15 : DU; ReserveDU16 : DU; ReserveUU1 : UU; ReserveUU2 : UU; ReserveUU3 : UU; ReserveUU4 : UU; ReserveUU5 : UU; ReserveUU6 : UU; ReserveUU7 : UU; ReserveUU8 : UU; ReserveUU9 : UU; ReserveUU10 : UU; ReserveUU11 : UU; ReserveUU12 : UU; ReserveUU13 : UU; ReserveUU14 : UU; ReserveUU15 : UU; ReserveUU16 : UU; ReserveBit1 : Boolean; ReserveBit2 : Boolean; ReserveBit3 : Boolean; ReserveBit4 : Boolean; ReserveBit5 : Boolean; ReserveBit6 : Boolean; ReserveBit7 : Boolean; ReserveBit8 : Boolean; ReserveBit9 : Boolean; ReserveBit10 : Boolean; ReserveBit11 : Boolean; ReserveBit12 : Boolean; ReserveBit13 : Boolean; ReserveBit14 : Boolean; ReserveBit15 : Boolean; ReserveBit16 : Boolean; ReserveColor1 : TColor; ReserveColor2 : TColor; ReserveColor3 : TColor; ReserveColor4 : TColor; ReserveColor5 : TColor; ReserveColor6 : TColor; ReserveColor7 : TColor; ReserveColor8 : TColor; ReserveColor9 : TColor; ReserveColor10 : TColor; ReserveColor11 : TColor; ReserveColor12 : TColor; ReserveColor13 : TColor; ReserveColor14 : TColor; ReserveColor15 : TColor; ReserveColor16 : TColor; end; InitStruct = packed Record VersionTcd : String[30]; (* Version der Schaltplandatei *) MaxSeite : LongInt; (* Anzahl der Seiten *) AnbindungsFarbe : TColor; (* Farbe der Anbindungspunkte *) HintergrundFarbe : TColor; (* Bildschirmhintergrundfarbe *) RectWahlColor : TColor; (* Farbe des Auswahl Rechtecks *) PfadAnzahl : LongInt; (* Anzahl der Pfade pro Seite *) KYpos : UU; (* y Lage des Kontaktspiegels *) DruckLinienStaerke : LongInt; (* Linienstaerke beim Ausdruck *) AnbindungenZeichnen : Boolean; (* Anbindungen werden gezeichnet *) EinfuegePunkteZeichnen : Boolean; (* Einfügepunkte werden gezeichnet *) JpgSchraffur : Boolean; (* bei true wird Jpg als Schraffur gezeichnet *) xyJpg : Boolean; (* Jpg in Rechteck eingepasst *) xJpg : Boolean; (* Jpg wird auf x-Maße angepasst *) yJpg : Boolean; (* Jpg wird auf y-Maße angepasst *) RasterMarkerSize : LongInt; (* Groesse des Raster in Pixel *) EinfuegePktMarkerSize : LongInt; (* Größe der Einfügepunkt Marker in Pixel *) EinfuegePktMarkerWidth : LongInt; (* Liniendicke Marker Einfuegepunkte *) EinfuegePktMarkerColor : TColor; (* Farbe Marker der EinfuegePunkte *) KontaktSpiegelColor : TColor; (* Farbe der Kontaktspiegel *) KontaktSpiegelWidth : UU; (* Linienstärke Kontaktspiegel *) VerweisColor : TColor; (* Farbe der Quer und Rückverweise *) VerweisWidth : UU; (* Linienstärke Verweise *) vlength : UU; (* Länge der Anbindungspunkte *) UText : packed Array[1..20] of String[50]; ReserveStr : packed Array[1..20] of String[255]; ReserveInt : packed Array[1..16] of LongInt; ReserveDU : packed Array[1..16] of DU; ReserveUU : packed Array[1..16] of UU; ReserveBit : packed Array[1..16] of Boolean; ReserveColor : packed Array[1..16] of TColor; end;
Delphi-Quellcode:
Var alt: initStruct_alt;
neu: InitStruct; BlockRead(DateiAlt, alt, 1); neu.VersionTcd := alt.VersionTcd; neu.MaxSeite := alt.MaxSeite; neu.AnbindungsFarbe := alt.AnbindungsFarbe; ... neu.ReserveColor[14] := alt.ReserveColor14; neu.ReserveColor[15] := alt.ReserveColor15; neu.ReserveColor[16] := alt.ReserveColor16; BlockWrite(DateiNeu, neu, 1);
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests |
Zitat |
Ansicht |
Linear-Darstellung |
Zur Hybrid-Darstellung wechseln |
Zur Baum-Darstellung wechseln |
ForumregelnEs ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.
BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus. Trackbacks are an
Pingbacks are an
Refbacks are aus
|
|
Nützliche Links |
Heutige Beiträge |
Sitemap |
Suchen |
Code-Library |
Wer ist online |
Alle Foren als gelesen markieren |
Gehe zu... |
LinkBack |
LinkBack URL |
About LinkBacks |