![]() |
Ein Element eines Records geht beim Speichen verloren ??
Also ich hätt da mal gern ein Problem: Ich habe ein Record
Delphi-Quellcode:
das ich so speicher:
Rentry = record
caption: string[255]; // Beschreibung auf dem Button pfad : string[255]; // Pfad der Anwendung img : string[255]; // Pfad der Bildes auf dem Button end;
Delphi-Quellcode:
wobei dat als file of Rentry und list als array of Rentry deklariert ist. Die ersten beiden werte werden gespeichert und können auch Fehlerfrei gelesen werden. Nur img wird nicht gespeichert. :gruebel:
write(dat,list[i]);
Hat da jemand eine zündende :firejump: Idee? |
Re: Ein Element eines Records geht beim Speichen verloren ??
so direkt mit den paar angaben nicht. was wird denn in image reingespeichert? das richtige?
|
Re: Ein Element eines Records geht beim Speichen verloren ??
Alle werte sind belegt, ich hab das direkt vor der Zeilt mit dem Speichern überprüft
Delphi-Quellcode:
Da wird genau das angezeigt, was ich in der Datei drinhaben will. Nur nachher wenn ich die Datei wieder lese, sind die ersten beiden Einträge perfekt übernommen, nur der letzte String fehlt. :wall:
showmessage('Pfad: '+list[i].pfad+#10+'Caption: '+list[i].caption...
|
Re: Ein Element eines Records geht beim Speichen verloren ??
Moin Toxman,
hast Du Dir die Datei mal in einem (Hex)Editor angesehen? |
Re: Ein Element eines Records geht beim Speichen verloren ??
Ich nehm dafür den Filealyser. Doch da werden manchmal nur die Pfad-Strings gefunden und die Caption-Strings nicht obwohl sie nachher korrekt ausgelesen werden. Im normalen Editor ist fast alles unlesbar, der hat mich also auch nicht weiter gebracht. :wall:
|
Re: Ein Element eines Records geht beim Speichen verloren ??
Bei typisierten Dateien sollte man immer Packed Record verwenden:
Delphi-Quellcode:
Rentry = packed record
caption: string[255]; // Beschreibung auf dem Button pfad : string[255]; // Pfad der Anwendung img : string[255]; // Pfad der Bildes auf dem Button end; |
Re: Ein Element eines Records geht beim Speichen verloren ??
Ich hab's jetzt auch mal mit einem Packed record versucht; geändert hat es allerdings nicht. Auch wenn ich statt in .txt in .abc oder sonstwas speicher, werden die ersten beiden Strings gespeichert, der letzt geht aber verschütt. :wall:
|
Re: Ein Element eines Records geht beim Speichen verloren ??
Hallo Toxman!
Prüfe doch mal nach, wie groß die Datei auf der Platte ist. Dazu solltest Du natürlich auch wissen, wieviele Einträge da drin sind. Das sollten 768 Bytes pro Eintrag sein - ShortStrings belegen 1 Byte mehr als die Längenangabe. Ein Ansehen der Datei z.B. mit Notepad zeigt oft auch erstaunliche Ergebnisse! Kann es sein, daß Du die Datei mal mit einer anderen Record-Größe erstellt hast und dann noch einen String in den Record gepackt? Vielleicht hat die Lese-Routine ja auch einen anderen Record (ohne den letzten String), passiert leicht, wenn das in verschiedenen Units oder Klassen liegt. Ansonsten sehe ich in dem geposteten Code keinen Fehler. Gruß Dietmar Brüggendiek |
Alle Zeitangaben in WEZ +1. Es ist jetzt 19: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