Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Algorithmen, Datenstrukturen und Klassendesign (https://www.delphipraxis.net/78-algorithmen-datenstrukturen-und-klassendesign/)
-   -   Delphi String via TStream-Property bereitstellen (https://www.delphipraxis.net/153717-string-via-tstream-property-bereitstellen.html)

sundance 13. Aug 2010 14:26

String via TStream-Property bereitstellen
 
Hallo DP-Profis!

Mein Problem/Herausforderung:
In einer Klasse liegen umfangreiche Daten in Form eines Strings; daran läßt sich aus verschiedenen Gründen auch nichts ändern.
Ich möchte dem User eine TStream-Schnittstelle zum Zugriff auf diese Daten bereitstellen, um z.B. die Funktion WriteToFile zur Verfügung zu stellen.
Nun möchte ich dazu natürlich nicht den String zuerst in den Stream kopieren.
TStringStream hält ja seine Daten auch intern als String bereit.

Gäbe es da nicht die Möglichkeit, das TStringStream-Object den Datenbereich des Strings nutzen zu lassen?

mkinzler 13. Aug 2010 14:27

AW: String via TStream-Property bereitstellen
 
Schreibe den String doch in den Stream

Neutral General 13. Aug 2010 14:30

AW: String via TStream-Property bereitstellen
 
Hallo,

Es gibt da einen TVirtualStream in meiner Stream-Unit, die sowas kann.

Alternativ gibts auch noch eine Unit von himitsu, mit einer Klasse die soweit ich weiß quasi das gleiche macht wie TVirtualStream: Virtual Memory Stream

sundance 13. Aug 2010 15:06

AW: String via TStream-Property bereitstellen
 
@mkinzler:
Dann hätte ich die Daten ja zweimal im Speicher (einmal im String und einmal im Stream) und das würde ich ja gerade gerne vermeiden...

@Neutral General:
Ich werde mir den TVirtualStream mal genauer anschauen.
Aber wenn das Datenobjekt (bei mir der AnsiString) vom eigentlichen Streamobjekt getrennt ist (und man über die Read- und Writemethoden des Streams) auf das Datenobjekt zugreifen kann, wäre das perfekt!

Vielen Dank für den Input erstmal...

Neutral General 13. Aug 2010 15:13

AW: String via TStream-Property bereitstellen
 
Zitat:

Zitat von sundance (Beitrag 1041947)
Aber wenn das Datenobjekt (bei mir der AnsiString) vom eigentlichen Streamobjekt getrennt ist (und man über die Read- und Writemethoden des Streams) auf das Datenobjekt zugreifen kann, wäre das perfekt!

Jo, genau dafür ist der TVirtualStream ja da ;-)

Kannst ja ggf. vom TVirtualStream ableiten und dir nen TVirtualStingStream bauen oder so. Müsste sicherlich machbar sein.


Alle Zeitangaben in WEZ +1. Es ist jetzt 10:04 Uhr.

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