Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Ein Element eines Records geht beim Speichen verloren ?? (https://www.delphipraxis.net/27070-ein-element-eines-records-geht-beim-speichen-verloren.html)

Nikolas 3. Aug 2004 22:24


Ein Element eines Records geht beim Speichen verloren ??
 
Also ich hätt da mal gern ein Problem: Ich habe ein Record
Delphi-Quellcode:
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;
das ich so speicher:
Delphi-Quellcode:
write(dat,list[i]);
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:
Hat da jemand eine zündende :firejump: Idee?

nailor 3. Aug 2004 22:26

Re: Ein Element eines Records geht beim Speichen verloren ??
 
so direkt mit den paar angaben nicht. was wird denn in image reingespeichert? das richtige?

Nikolas 3. Aug 2004 22:33

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:
showmessage('Pfad: '+list[i].pfad+#10+'Caption: '+list[i].caption...
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:

Christian Seehase 3. Aug 2004 22:37

Re: Ein Element eines Records geht beim Speichen verloren ??
 
Moin Toxman,

hast Du Dir die Datei mal in einem (Hex)Editor angesehen?

Nikolas 3. Aug 2004 22:47

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:

Phantom1 4. Aug 2004 06:51

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;

Nikolas 4. Aug 2004 21:34

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:

Brüggendiek 4. Aug 2004 21:53

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