![]() |
Stream Problem...
Hallo,
ich stehe gerade auf dem Schlauch. Ich habe eine Klasse geschrieben die ihre Daten (strings) in einen Stream Speichert. Leider kommt dabei nur Müll raus...
Delphi-Quellcode:
Ich speichere diese Daten in einen MemoryStream und dann auf Festplatte. Wenn ich mir das mit einem Hexeditor anschaue steht da aber nur Müll drin.
procedure WriteString(astring:string;astream:TStream);
var c:integer; s:string; begin s := astring; c := sizeof(s); showmessage(s+' '+inttostr(c)); //<-- hier zeigt er das richtige an astream.Write(c,sizeof(c)); astream.Write(s,c); end; procedure TGameData.SaveToStream(AStream:TStream); begin WriteString(name,astream); WriteString(map,astream); WriteString(ip,astream); WriteString(id,astream); astream.Write(typ,sizeof(typ)); end; Woran könnte das liegen? Bei der Zeile "Showmessage" Zeigt er das richtige an. An den Daten kann es also nicht liegen... Ich denke es liegt an der Prozedur "WriteString"... Ich hoffe ihr könnt mir helfen, igel457 |
Re: Stream Problem...
Zitat:
Denk dran: strings und Dynamische Arrays sind im Grunde genommen das selbe. Das bedeutet, das ein String nur ein Zeiger auf den Speicherbereich ist, in dem der String wirklich steht. Also kannst du es nicht so machen wie es bei dir steht, sondern musst den Startindex mitgeben:
Delphi-Quellcode:
procedure WriteString(astring:string;astream:TStream);
var c:integer; s:string; begin s := astring; c := sizeof(s); showmessage(s+' '+inttostr(c)); //<-- hier zeigt er das richtige an astream.Write(c,sizeof(c)); astream.Write(s[1],c); end; |
Re: Stream Problem...
Danke für die super-schnelle Antwort.
Ich hatte es auch vorher schon einmal damit ausprobiert, da hatte ich aber eine Zugriffsveletzung als Ergebniss. Das kam aber daher, dass ein Element 0 Zeichen lang war. SizeOf gibt hier aber 1 zurück. Verwende ich length anstatt SizeOf, dann funktioniert es... Danke! :bouncing4: |
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:01 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