![]() |
Speicherung von typirisierten Dateien
Hallo DPler,
ich schreibe zur Zeit ein Programm, welches Anwenderdaten verwalten soll. Die Daten werden in einem Record gespeichert, welche als Klassse aufgebaut wurde.
Delphi-Quellcode:
Die einzelnen Records werden mit der nachfolgenden Procedure auf die HDD gespeichert:
Type
TUser = Record Name : String[48]; Rechte : Byte; Passwort: String[15]; End; TPWClass = Object User: TUser; Constructor Setzen(cName: String; cRechte: Byte; cPasswort: String); Procedure Speichern(FileName: String; UserID: Integer); Procedure UserKill(FileName: String); Function GetUserFile(AppName: String): String; Function Lesen(FileName: String; Position: Integer): Boolean; End; Var UserDB: TPWClass;
Delphi-Quellcode:
Und mit der nachfolgenden Funktion bei Programmstart geladen:
Procedure TPWClass.Speichern;
Var FUserDat: File Of TUser; Begin AssignFile(FUserDat, FileName); {$I-} FileMode := 1; Reset(FUserDat); If IOResult <> 0 Then ReWrite(FUserDat); {$I+} Seek(FUserDat, UserID); Write(FUserDat, User); CloseFile(FUserDat); End;
Delphi-Quellcode:
Soweit funktioniert alles. Aber, wenn man sich die Ausgabedatei über einen Hexmonitor anschaut, fällt auf, das im Record zwei, Reste von Record eins zufinden sind (s. Bild).
Function TPWClass.Lesen;
Var FUserDat: File Of TUser; Begin AssignFile(FUserDat, FileName); {$I-} FileMode := 0; Reset(FUserDat); If IOResult <> 0 Then Begin CloseFile(FUserDat); Result := False; Exit; End; {$I+} Seek(FUserDat, Position); {$I-} Read(FUserDat, User); If IOResult <> 0 Then Result := False Else Result := True; {$I+} CloseFile(FUserDat); End; 2 Records geschrieben: ![]() Warum finde ich die Reste? Kann mir jemand von euch das sagen? Wie kann ich das vermeiden? Für euere Hilfe wäre ich dankbar. Mfg Amalkotey |
Re: Speicherung von typirisierten Dateien
Initialisiere vorher die ShortStrings mit #0, dann solle der Speicher auch leer sein. Hier wird es erklärt, was passiert:
![]() BTW habe ich auf meiner HJomepage schon so eine Klasse: ![]() |
Re: Speicherung von typirisierten Dateien
Zitat:
danke für die schnelle Hilfe. Durch die Initialisierung der ShortStrings mit #0 sind die Überflüssigen Zeichen entfernt worden. Ich verstehe jetzt auch warum die Reste vorhanden waren. Nochmals Danke. Gruss Amalkotey |
Re: Speicherung von typirisierten Dateien
Hat doch jascoul erklärt: Im Speicher steht eben noch Mist, da aber ein String mit #0 abgeschlosen ist, spilet es bei der Ausgabe keine Rolle.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:38 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