![]() |
Re: MemoryStream in Filestream sichern - Datenschrott !?
Nachtrag ...
Zitat:
|
Re: MemoryStream in Filestream sichern - Datenschrott !?
Das mit den Streams ist allgemeiner verwendbar. Man kann so ein normales Memo auch in ein Blobfeld einer Datenbank schreiben in dem man es in den Blobstream des Feldes schreibt. Wenn man das Prinzip hat, braucht man weniger anderes lernen,...
Grüße // Martin |
Re: MemoryStream in Filestream sichern - Datenschrott !?
Zusammenfassend:
1. Streamposition vorher zurücksetzen, da Schreib- und Lesezugriffe den Positionszeiger versetzen. 2. CopyFrom() benutzen, da es sich um ein Objekt handelt und nicht um direkte Daten. Aber warum nutzt hier keiner (wie schon hier gepostet) als zweiten Parameter die 0? Schliesslich soll alles kopiert werden. 3. Akzeptiert aqDockingManager1.SaveToStream() wirklich nur einen MemoryStream oder doch vllt. einfach nur TStream? Weil warum nicht gleich den TFileStream angeben? Wenn 3. nicht zutrifft:
Delphi-Quellcode:
Wenn 3. zutrifft:
procedure TForm10.dxBarButton7Click(Sender: TObject);
Var fs: TFileStream; ms: TMemoryStream; Begin ms := TMemoryStream.Create; try aqDockingManager1.SaveToStream(ms); fs := TFileStream.Create('ZTest.txt', fmCreate); try fs.CopyFrom(ms, 0); finally fs.Free; end; finally ms.Free; end; End;
Delphi-Quellcode:
procedure TForm10.dxBarButton7Click(Sender: TObject);
Var fs: TFileStream; Begin fs := TFileStream.Create('ZTest.txt', fmCreate); try aqDockingManager1.SaveToStream(fs); finally fs.Free; end; End; |
Re: MemoryStream in Filestream sichern - Datenschrott !?
Moin !
Hätte da noch ne Frage ... Mein Stream hat nun 2 Elemente. Am Anfang ein Integerwert der die Grösse des folgendes Objekts enthält. Nur wie lese ich jetzt diesen Integerwert wieder aus?
Delphi-Quellcode:
... liefert mir ja 4 weil es 4 Byte sind.
Groesse := fs.ReadBuffer(Groesse, SizeOf(Groesse));
Nur wie komme ich nun wieder an die Zahl ? |
Re: MemoryStream in Filestream sichern - Datenschrott !?
@Thomas:
Nuna ich will ja eben nicht nur die Docking Sache in den Stream packen sondern auch noch den BarManager von DevExpress. Das kann man evtl. auch hintereinander einfach wegschreiben, aber beim Lesen könnte es dann stressig werden, oder? Wobei ich ja beim Laden auch noch Stress habe :roll: (siehe Post vor diesem) ... |
Re: MemoryStream in Filestream sichern - Datenschrott !?
Zitat:
Zitat:
Du müsstest dir ein Format ausdenken um dann später beim einlesen wieder die gespeicherten Teile auseinander zu halten und laden zu können. |
Re: MemoryStream in Filestream sichern - Datenschrott !?
Moin !
Zitat:
Zitat:
Wenn ich nach der Hilfe gehe .. Zitat:
fs.ReadBuffer(Groesse, SizeOf(Integer)); Aber das tut es leider nicht. Groesse hat bei mir einen Wert von 5523860. Vor und nach dem Aufruf von ReadBuffer :gruebel: |
Re: MemoryStream in Filestream sichern - Datenschrott !?
Zitat:
Zitat:
Zitat:
|
Re: MemoryStream in Filestream sichern - Datenschrott !?
Moin !
Au Backe .... :wall: Ich habe beim Speichern zwar den Wert weggespeichert, aber nicht die wirklich Grösse (wie gross der Stream ist) diesem Wert zugewiesen. Also hat er irgend einen Pseudowert weggeschrieben :angel2: Nu habe ich auch einen richtigen Wert beim Auslesen :cheers: So nun mal sehen ob ich denn auch meinen Stream wieder bekomme :tongue: |
Re: MemoryStream in Filestream sichern - Datenschrott !?
Ein prinzipieller Weg wäre einen Header
vorwegzuschreiben. Nehmen wir an Du hast foldende Struktur: 1. Longint: = Version des Streams 2. Longint: = N. Anzahl der Datensätze 3. Longint - N. Longint : = Startpostionen der Datensätze Von (N+1 Longintlänge) bis Ende Daten Wäre eine Möglichkeit, anderes geht aber auch. Grüße // Martin |
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:49 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz