Re: TWriter/TReader und Stream
Kannst du nicht einen TStringStream verwenden, darin speichern, und dann den String daraus mit deinem tollen TWriter-Objekt reinschreiben ?
|
Re: TWriter/TReader und Stream
Nein
|
Re: TWriter/TReader und Stream
Hier mal ein übertriebenes Beispiel:
Von einer String Variable in ein TMemoryStream und dann den TMemoryStream in TWriter schreiben:
Delphi-Quellcode:
Und nun von TReader in TMemoryStream und dann in die Variable S:
procedure TForm1.Button1Click(Sender: TObject);
var Handle: Integer; HandleStream: THandleStream; MemoryStream: TMemoryStream; Writer: TWriter; S: String; Size: Integer; begin Handle := FileCreate('M:\TEMP\TEST.TXT'); if Handle <> -1 then begin HandleStream := THandleStream.Create(Handle); MemoryStream := TMemoryStream.Create; Writer := TWriter.Create(HandleStream, 4096); try S := 'TestString'; MemoryStream.WriteBuffer(S[1], Length(S)); MemoryStream.Position := 0; Size := MemoryStream.Size; Writer.WriteInteger(Size); Writer.Write(MemoryStream.Memory^, Size); finally Writer.Free; MemoryStream.Free; HandleStream.Free; FileClose(Handle); end; end; end;
Delphi-Quellcode:
procedure TForm1.Button2Click(Sender: TObject);
var Handle: Integer; HandleStream: THandleStream; MemoryStream: TMemoryStream; Reader: TReader; Size: Integer; S: String; begin Handle := FileOpen('M:\TEMP\TEST.TXT', fmOpenRead); if Handle <> -1 then begin HandleStream := THandleStream.Create(Handle); MemoryStream := TMemoryStream.Create; Reader := TReader.Create(HandleStream, 4096); try Size := Reader.ReadInteger; MemoryStream.Size := Size; MemoryStream.Position := 0; Reader.Read(MemoryStream.Memory^, Size); MemoryStream.Position := 0; SetLength(S, Size); MemoryStream.Read(S[1], Size); ShowMessage(S); finally Reader.Free; MemoryStream.Free; HandleStream.Free; FileClose(Handle); end; end; end; |
Re: TWriter/TReader und Stream
Und wo liegt nun der unterschied zwischen deinen und meinen beispiel?
|
Re: TWriter/TReader und Stream
das problem schein nicht an der speicherrotine zu liegen. leider
|
Re: TWriter/TReader und Stream
Zitat:
Zitat:
Zitat:
|
Re: TWriter/TReader und Stream
Delphi-Quellcode:
PS: Was ist ein abstrakter Fehler (für mich sind alle fehler nur ein Bahnhof)
dStrings := TStrings.Create;
MemoryStream := TMemoryStream.Create; MemoryStream.Position := 0; size := Reader.ReadInteger; memorystream.SetSize(size); reader.Read(MemoryStream.Memory^, Size); MemoryStream.Position := 0; dstrings.LoadFromStream(MemoryStream); //hier bekomme ich den fehler. selbst wenn ich per appent dstrings etwas zuweisen will, funktioniert es nicht, abstrakter fehler SetObjectProp(self, PropList^[i].Name, dstrings); |
Re: TWriter/TReader und Stream
Delphi-Quellcode:
nie tstrings.create, dort sind viele Methoden nur als abstract definiert und sind erst in Tstringlist enthalten
Var dstrings:Tstrings;
... dStrings := TStringlist.Create; |
Re: TWriter/TReader und Stream
Dankeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee :bounce1: :corky: :party: :spin: :hi:
Aber eine abschließende Frage: Warum ein TStrings mit einen TStringList.Create? |
Re: TWriter/TReader und Stream
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:01 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