![]() |
Array in Stream abspeichern
Hallo DPler,
habe eine Frage zu Streams in Bezug auf Arrays. Für ein Projekt möchte ich ein dynamisches Array indem sich Records befinden abspeichern. Nun möchte ich aber anders vorgehen als bisher. Momentan wird das dynamisches Array meiner Funktion übergeben, diese arbeitet mit einer for-Schleife das Array durch. Nun, soweit ich Streams verstanden habe werden die Daten einfach abgespeichert unabhängig vom DateiTyp, stimmt das? Ich dachte deshalb, man könne vielleicht einfach die Länge des Arrays abspeichern, und dann den ganzen Inhalt reinschreiben, irgendwie in der Art
Delphi-Quellcode:
Klappt aber nichts so richtig kann mir jemand ein bitte Schema anfertigen wie man da vorgeht, es geht auch anders, aber ich wills auf diesem Weg versuchen.
fs.WriteBuffer(Laenge, SizeOf(Laenge));
fs.WriteBuffer(DynArr, SizeOf(RecOfArr)*Laenge); Habe schon nach was passendem gesucht aber nichts gefunden, ![]() Mfg, Jeff93 |
Re: Array in Stream abspeichern
Schau mal hier:
![]() Das hat mal sirius erstellt und damit hab ich das auch gelöst bekommen. |
Re: Array in Stream abspeichern
Wenn das Record nur einfache Datentypen und Shortstrings mit fixer Länger enhält, kannst du das so lösen:
Delphi-Quellcode:
"DynArr" ist ja nur ein Zeiger auf das Array, also derefernzierst du den Zeiger, indem Du das erste Element des Arrays an WriteBuffer übergibst.
Laenge := Length (DynArray);
fs.WriteBuffer(Laenge, SizeOf(Laenge)); fs.WriteBuffer(DynArr[Low(DynArr)], SizeOf(RecOfArr)*Laenge); |
Re: Array in Stream abspeichern
Zitat:
@Xeres: Ich schau mir mal den Thread an, danke für den Link |
Re: Array in Stream abspeichern
Ein dynamisches Array ist ja quasi ein zusammenhängende "Kette" von Daten. Du musst also angeben, wo der Anfang dieser Kette und wie lang sie insgesamt ist.
|
Re: Array in Stream abspeichern
Zitat:
|
Re: Array in Stream abspeichern
Ich hab zu dem Thema noch einen weiteren Link. Eine weitere Klasse von sirius, mit der dies auch möglich ist:
![]() Diese habe ich damals aber nicht verwenden können, weil sie nicht von TRemoteable (-> Für Webservices) abgeleitet ist. Sie scheint mir aber einfacher in der Benutzung zu sein. |
Re: Array in Stream abspeichern
@Xeres: Ich glaube für mein Projektchen ist TCustomStore etwas zu übertrieben, aber es ist sicherlich eine interessante Klasse die ich mir bei Beadarf anschaun werde :thumb:
Danke für die Erkärung, das mit dem deferenzieren hat geklappt :-D Mfg, Jeff93 Ps: sorry für die späte Antwort :( |
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:55 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