Entwickler-Ecke
Dateizugriff - TMemoryStream und Strings!?
Sivar - Di 28.01.03 13:41
Titel: TMemoryStream und Strings!?
Hallo,
ich verwende ein TMemoryStream um ihn später über die NMStrm (FastNet) Komponente zu verschicken.
Bilder und Dateien kann ich ganz auch ohne Probleme in den Stream Laden, da die Objekte die Methoden SaveToStream und LoadFromStream mitbringen.
Mein Stream ist dabei so aufgebaut das zunächst ein Header in den Stream geschriben wird, der beinhaltet was im Stream gespeichert ist (Typ und Länge).
Nun möchte ich auch Strings über den Stream verschicken ohne dafür extra TStringStream nutzen zu müssen.
Jetzt zur Frage:
Wie kann ich einen String mit TMemoryStream.WriteBuffer in den Stream schreiben und Ihn später wieder rausholen?
Udontknow - Di 28.01.03 15:52
Hi!
Hier sind zwei nützliche Prozeduren:
Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19:
| procedure SaveStrToStream(const Stream: TStream; const Value: String); //Schreibt einen dynamischen String in einen Stream var Len: Word; begin Len := Length(Value); Stream.WriteBuffer(Len, SizeOf(Len)); if Len > 0 then Stream.WriteBuffer(Pointer(Value)^, Len); end;
procedure LoadStrFromStream(const Stream: TStream; var Str: String); //Liest einen dynamischen String aus einem Stream var Len: Word; begin Stream.ReadBuffer(Len, SizeOf(Len)); SetLength(Str, Len); if Len > 0 then Stream.ReadBuffer(Pointer(Str)^, Len); end; |
Cu, :D
Udontknow
Sivar - Di 28.01.03 16:42
Super, genau auf die Art hab ich's noch nicht probiert.
Werde ich machen sobald ich heute zu Hause bin und mein Frauchen mir erlaubt an meinen PC zu gehen :)
Vielen Dank!!
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!