Einzelnen Beitrag anzeigen

Benutzerbild von Amalkotey
Amalkotey

Registriert seit: 9. Feb 2004
Ort: Oberhausen
36 Beiträge
 
Delphi 2007 Enterprise
 
#1

Speicherung von typirisierten Dateien

  Alt 3. Mär 2005, 13:22
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
esdaS© - ESPRIT DATA SOFTWARE
[esdaS© := Software mit Charisma und Esprit]
  Mit Zitat antworten Zitat