Autor Beitrag
Da_Knuddelbaer
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 485



BeitragVerfasst: Fr 02.04.04 09:33 
Hi,

Ich habe da ein Record, der wiederum einen dynamischen Record enthält, der wiederum ein dynamisches Array enthält. Der erste Count besitzt die Anzahl der Items, der Count in dem dynamischen Record "Items" besitzt die Größe / Anzahl der Settings.

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
  MyApps: Record
            Count, Index: Integer;
            Items: Array of Record
                              Status: Byte;
                              Count: Word;
                              AppName, Desc: String[40];
                              Settings: Array of String[20];
                            end;
          end;


Um es zu vereinfachen, wollte ich die Länge der Strings beschränken. Aber dennoch schaffe ich nicht, diesen Record in einem Stream zu speichern. Vllt ist ein Stream auch nicht die richtige Lösung?

Und naja, selbst wenn ich das speichern vllt irgendwann mal hätte, wie kann ich es wieder laden?

Ich hoffe, hier kann mir jemand helfen und weiss ob und wie das speichern dieses Records geht :)

Greetz,
Knuddelbaer


Zuletzt bearbeitet von Da_Knuddelbaer am Fr 02.04.04 12:27, insgesamt 1-mal bearbeitet
Motzi
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2931

XP Prof, Vista Business
D6, D2k5-D2k7 je Prof
BeitragVerfasst: Fr 02.04.04 11:14 
Wie hast du ihn denn versucht zu speichern?
Vielleicht ein kleiner Hinweis am Rande: ein dynamischer Array ist nur ein Pointer der intern dereferenziert wird. Dh ein SizeOf(MyApps) ergibt maximal 12 - nämlich 8 Bytes für die beiden Integer und 4 Bytes für den Pointer auf den dyn Array. Und mehr wird auch nicht in den Stream geschrieben wenn du dich nicht selbst um die speicherung des Arrays kümmerst..!

_________________
gringo pussy cats - eef i see you i will pull your tail out by eets roots!
Da_Knuddelbaer Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 485



BeitragVerfasst: Fr 02.04.04 11:25 
Stimmt, er speichert genau 12 Bytes, berechnet mit dem SizeOf-Befehl.

Nun, ich habe genau das versucht, was du geschrieben hast, was natürlich nicht funktionieren kann. :oops:

Also kann ich nicht per FileStream diesen Record speichern, sondern muss Stück für Stück alles selbst reinschreiben und beim Laden parsen?
Sven
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 314


D6 Ent, K3 Pro (patched)
BeitragVerfasst: Fr 02.04.04 11:28 
Du mußt wohl in einer Schleife die ganzen Item-Records Element für Element in den Stream schreiben.
Hierbei kannst Du wieder dyn. Strings verwenden. Schreibe einfach als erstes die Länge des Strings und dann Zeichen für Zeichen des Strings, bzw. schau mal hier

_________________
MDK 9.1, Kernel 2.4.21, KDE 3.1 Kylix 3 Pro (patched), nutze aber auch Windows
Motzi
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2931

XP Prof, Vista Business
D6, D2k5-D2k7 je Prof
BeitragVerfasst: Fr 02.04.04 11:39 
Da_Knuddelbaer hat folgendes geschrieben:
Also kann ich nicht per FileStream diesen Record speichern, sondern muss Stück für Stück alles selbst reinschreiben und beim Laden parsen?

Genau.. einfach am Anfang die Länge des dyn. Arrays speichern und dann jedes Element einzeln reinschreiben und beim Laden musst du die Datei natürlich auch wieder entsprechend zerlegen.. also Anzahl der Elemente des Arrays auslesen, Länge des Arrays setzen, jedes Element einzeln einlesen...

_________________
gringo pussy cats - eef i see you i will pull your tail out by eets roots!
Da_Knuddelbaer Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 485



BeitragVerfasst: Fr 02.04.04 12:26 
Okay kewl, vielen Dank :)