Autor Beitrag
Bergmann89
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
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)
BeitragVerfasst: 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:
ausblenden volle Höhe Delphi-Quelltext
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:
  //Kapselt die Daten der Form
  TFormDataRec = packed record
    //Daten der Form
    Form: packed record
      //Größe der Form auf der Textur
      TexSize: TPoint;
      //Position der Form auf der Textur
      TexPos: packed record
        //Position der aktiven Form
        //|     Position der inaktiven Form
        Active, Inactive: TPoint;
      end;
      //Größe der FensterGrenzen
      Border: packed record
        Top, Left, Bottom, Right: Integer;
      end;
    end;
    //Daten der Buttons
    Button: packed record
      //Position der Buttons auf der Form
      //|  Größe der Buttons
      Pos, Size: packed record
        Close, Minimize, MaxRest: TPoint;
      end;
      //Position der Buttons auf der Textur
      TexPos: packed record
        //Schließen Button
        //|    Minimieren Button
        //|    |         Maximieren Button
        //|    |         |         Wiederherstellen Button
        Close, Minimize, Maximize, Restore: packed record
          //Position der aktiven Buttons
          //|     Position der inaktiven Buttons
          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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 1085
Erhaltene Danke: 53

WinXP, Win7, Win10
Delphi 7 Enterprise, XE
BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
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)
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 1085
Erhaltene Danke: 53

WinXP, Win7, Win10
Delphi 7 Enterprise, XE
BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
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)
BeitragVerfasst: 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^^