Autor |
Beitrag |
Bergmann89
      
Beiträge: 1742
Erhaltene Danke: 72
Win7 x64, Ubuntu 11.10
Delphi 7 Personal, Lazarus/FPC 2.2.4, C, C++, C# (Visual Studio 2010), PHP, Java (Netbeans, Eclipse)
|
Verfasst: Sa 08.05.10 15:14
Hey,
ich versuch grad ein record in einen Stream zu speichen und zu laden, aber er läd falsche Werte. Hier ma der relevante Code: 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46: 47: 48: 49: 50:
| TFormDataRec = packed record Form: packed record TexSize: TPoint; TexPos: packed record Active, Inactive: TPoint; end; Border: packed record Top, Left, Bottom, Right: Integer; end; end; Button: packed record Pos, Size: packed record Close, Minimize, MaxRest: TPoint; end; TexPos: packed record Close, Minimize, Maximize, Restore: packed record Active, Inactive: TPoint; end; end; end;
procedure LoadFormData; begin Stream.Position := ReadTable(0); Stream.Read(FormData, SizeOf(TFormDataRec)); end;
procedure SaveFormData; begin WriteTable(0, Stream.Size); Stream.Position := Stream.Size; Stream.Write(FormData, SizeOf(TFormDataRec)); end; | Ein paar Werte werden richtig geladen, ein paar nicht. Kann sich das jmd erklären?
€: Hab mir die Daten im Stream grad ma angeguckt, speichern funktioniert, da stehen die Daten in der Reihenfolge, wie sie auch im Record stehen. Also muss beim laden was schief gehen...
MfG & Thx Bergmann.
_________________ Ich weiß nicht viel, lern aber dafür umso schneller^^
|
|
ALF
      
Beiträge: 1085
Erhaltene Danke: 53
WinXP, Win7, Win10
Delphi 7 Enterprise, XE
|
Verfasst: Sa 08.05.10 16:34
Hi, kann es sein das der Wert in Table nicht stimmt?
Oder vielleicht Sonderzeichen gespeichert werden?
Gruss Alf
_________________ Wenn jeder alles kann oder wüsste und keiner hätt' ne Frage mehr, omg, währe dieses Forum leer!
|
|
Bergmann89 
      
Beiträge: 1742
Erhaltene Danke: 72
Win7 x64, Ubuntu 11.10
Delphi 7 Personal, Lazarus/FPC 2.2.4, C, C++, C# (Visual Studio 2010), PHP, Java (Netbeans, Eclipse)
|
Verfasst: Sa 08.05.10 16:42
Hey,
der Wert in der Tabelle stimmt. Die Position des Streams ist vorm Laden/Speichern 26 und danach 178. Würde er nicht stimmen würden ja die 1. Werte des Records auch nicht richtig sein, sind sie aber. Und das verwirt mich ja so, das der Anfang stimmt un das Ende nicht.
Was meinst du mit Sonderzeichen? Sind doch alles Zahlen?!
MfG Bergmann
_________________ Ich weiß nicht viel, lern aber dafür umso schneller^^
|
|
ALF
      
Beiträge: 1085
Erhaltene Danke: 53
WinXP, Win7, Win10
Delphi 7 Enterprise, XE
|
Verfasst: Sa 08.05.10 16:58
Mein Gedankengang ist vielleicht blöd, ich weiss.
Mit Sonderzeichen mein ich sowas wie Lf, CR, Tab usw. Nichtsichbare Zeichen. Somit würde vom Prinzip her, beim Einlesen sich alles nach hinten verschieben und Du damit immer ins leere lesen.
mhh... ich gehe mal davon aus, das ich da falsch liege.
Gruss Alf
_________________ Wenn jeder alles kann oder wüsste und keiner hätt' ne Frage mehr, omg, währe dieses Forum leer!
|
|
Bergmann89 
      
Beiträge: 1742
Erhaltene Danke: 72
Win7 x64, Ubuntu 11.10
Delphi 7 Personal, Lazarus/FPC 2.2.4, C, C++, C# (Visual Studio 2010), PHP, Java (Netbeans, Eclipse)
|
Verfasst: Sa 08.05.10 17:06
Hey,
also Sonderzeichen sind keine drin. Ich hab mir auch alles nochma mit'm HexEditor angesehen, also sie Daten sehn soweit gut aus. Ich versuchs ma stück für stuck einzulesen, ma gucken was da raus kommt...
€: habs gefunden! das Record wurde richtig geladen. Ich lad die Record-Daten dann aber in ein Edits, und da hab ich mich vertippt. Un im OnChange-Event der Edits wird dann das Record wieder geschrieben, deshalb sah es so aus, als ob es von anfang an nich richtig geladen wurd ^^
MfG Bergmann
_________________ Ich weiß nicht viel, lern aber dafür umso schneller^^
|
|
|