![]() |
Aha Momente
Vor einer kurzen Weile hatte ich mir selber was Ähnliches gebaut.
Und gerade, auf der Suche nach was Anderem, über was gestolpert und dachte mir *na toll, jetzt* ![]() ![]() [edit] ![]() ![]() |
AW: Aha Momente
Gibts inzwischen eigentlich einen generischen TStream<T>?
|
AW: Aha Momente
Wie sollte ein generischer TStream<T> funktionieren?
|
AW: Aha Momente
Das erinnert mich an das alte "file of" Konstrukt. Mit beliebigen generischen Typen würde das allerdings nicht funktionieren.
Die Idee verstehe ich durchaus, aber ich sehe keine Möglichkeit einer Umsetzung. Im Grunde wäre die Anforderung quasi ein ORM auf Streambasis... |
AW: Aha Momente
Die einzige Möglichkeit die ich sehe ist sowas:
Delphi-Quellcode:
Aber das hilft auch nicht soo viel.
IStreamable = interface
procedure LoadFromStream(Stream: TStream); procedure SaveToStream(Stream: TStream); end; TStream<T: IStreamable> = class(TCustomMemoryStream) // ... end; |
AW: Aha Momente
Binäre Daten sind eh bissl blöd.
Wenn, dann vielleicht ein ORM um TReader/TWriter (zwar auch binär, aber inkl. Formatierungdaten und optional auch als Text-Version) Aber dann vielleicht eher in Richtung BSON (binäres JSON) oder CompressedXML, wobei man TReader (das was die DFMs im Delphi nutzen) auch als typsicherere Variante des JSON/BSON ansehen könnte. |
AW: Aha Momente
Wofür ist ein TPointerStream nützlich?
|
AW: Aha Momente
Damit du mit den Methoden eines Streams, und Allem was Streams unterstützt, im Speicher von irgendwas Anderem rumwurschteln kannst.
Also du bekommst z.B. von einer API einen Buffer (x Bytes) und kannst direkt mit diesem Speicher (ohne umzukopieren) das dennoch als Stream verarbeiten. Du kannst damit auch in einem anderen TMemoryStream/TBytesStream (in dessen Speicher oder "sicher" nur einem Teil davon) mit einem weiteren Stream arbeiten usw. Das macht es Einfacher Dinge zu verschachteln und spart Arbeit/Speicher ... z.B. wenn in einem großen Stream mehrere Bilde drin stecken, dann auf den gewünschten Teil den PointerStream drauf und das dann an LoadFromStream von irgendwas, ohne vorher umzukopieren. |
AW: Aha Momente
Sowas hab ich 2010 programmiert und hier hochgeladen (TVirtualStream):
![]() Ist sogar in der JWSCL gelandet :) ![]() |
AW: Aha Momente
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 20:59 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