Delphi-PRAXiS
Seite 1 von 5  1 23     Letzte »    

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Klatsch und Tratsch (https://www.delphipraxis.net/34-klatsch-und-tratsch/)
-   -   Aha Momente (https://www.delphipraxis.net/211519-aha-momente.html)

himitsu 27. Sep 2022 23:15

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*

Delphi-Referenz durchsuchenTPointerStream
https://quality.embarcadero.com/browse/RSP-21307


[edit]
opps
https://docwiki.embarcadero.com/Libr...TPointerStream

Dennis07 28. Sep 2022 13:57

AW: Aha Momente
 
Gibts inzwischen eigentlich einen generischen TStream<T>?

Neutral General 28. Sep 2022 14:28

AW: Aha Momente
 
Wie sollte ein generischer TStream<T> funktionieren?

jaenicke 28. Sep 2022 14:43

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...

Neutral General 28. Sep 2022 14:49

AW: Aha Momente
 
Die einzige Möglichkeit die ich sehe ist sowas:
Delphi-Quellcode:
IStreamable = interface
  procedure LoadFromStream(Stream: TStream);
  procedure SaveToStream(Stream: TStream);
end;

TStream<T: IStreamable> = class(TCustomMemoryStream)
  // ...
end;
Aber das hilft auch nicht soo viel.

himitsu 28. Sep 2022 14:51

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.

Benmik 29. Sep 2022 10:48

AW: Aha Momente
 
Wofür ist ein TPointerStream nützlich?

himitsu 29. Sep 2022 11:20

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.

Neutral General 29. Sep 2022 11:51

AW: Aha Momente
 
Sowas hab ich 2010 programmiert und hier hochgeladen (TVirtualStream):
https://www.delphipraxis.net/113289-mapped-streams.html

Ist sogar in der JWSCL gelandet :)
https://sourceforge.net/p/jedi-apili...sclStreams.pas

Dennis07 29. Sep 2022 12:18

AW: Aha Momente
 
Zitat:

Zitat von jaenicke (Beitrag 1512613)
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...

Naja sowas gibt es ja u.a. in Sprachen wie Java. Wäre sicher auch in Delphi irgendwie möglich, oder nicht?


Alle Zeitangaben in WEZ +1. Es ist jetzt 00:03 Uhr.
Seite 1 von 5  1 23     Letzte »    

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz