AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Speicherung von typirisierten Dateien

Ein Thema von Amalkotey · begonnen am 3. Mär 2005 · letzter Beitrag vom 3. Mär 2005
Antwort Antwort
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, 14: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
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#2

Re: Speicherung von typirisierten Dateien

  Alt 3. Mär 2005, 14:31
Initialisiere vorher die ShortStrings mit #0, dann solle der Speicher auch leer sein. Hier wird es erklärt, was passiert:
http://www.delphi-forum.de/viewtopic...=224919#224919

BTW habe ich auf meiner HJomepage schon so eine Klasse: http://www.luckie-online.de/Delphi/Sonstiges/ -> TypedFiles
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von Amalkotey
Amalkotey

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

Re: Speicherung von typirisierten Dateien

  Alt 3. Mär 2005, 15:33
Zitat von Luckie:
Initialisiere vorher die ShortStrings mit #0, dann solle der Speicher auch leer sein. Hier wird es erklärt, was passiert:
http://www.delphi-forum.de/viewtopic...=224919#224919
Hallo Luckie,

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
esdaS© - ESPRIT DATA SOFTWARE
[esdaS© := Software mit Charisma und Esprit]
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#4

Re: Speicherung von typirisierten Dateien

  Alt 3. Mär 2005, 16:22
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.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:28 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz