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:
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;
Die einzelnen Records werden mit der nachfolgenden Procedure auf die HDD gespeichert:
Delphi-Quellcode:
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;
Und mit der nachfolgenden Funktion bei Programmstart geladen:
Delphi-Quellcode:
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;
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).
2 Records geschrieben: http://www.esdaso.de/dp-forum/ds2.jpg
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