![]() |
AW: Suche die TByteBuffer Klasse aus SysUtils ab XE 3 (?)
Zitat:
Beim TMemoryStream oder TBytesStream kann man auch direkt auf den Speicher zugreifen, weswegen man da eigentlich den temp_buffer weglassen könnte.
Delphi-Quellcode:
(aus
DataStream.Size := StreamLength;
StreamPosition := 0; //Received := Client.ReceiveBuf(DataStream.Memory^, StreamLength); // ReceiveBuf wartet nicht bis alles eingetroffen ist, sondern bricht am Ende der Datenpackete ab. while StreamPosition < StreamLength do begin Received := Client.ReceiveBuf(PByte(DataStream.Memory)[StreamPosition], StreamLength - StreamPosition); if Received = SOCKET_ERROR then Break; Inc(StreamPosition, Received); end; ![]() Statt StreamPosition kann man auch DataStream.Position verwenden, aber ihr wollt nicht wissen wie grauenhaft diesbezüglich der der TMemoryStream implementiert ist, aber im Normalfall sollte es oftmals nicht groß auffallen.
Delphi-Quellcode:
DataStream.Size := ...;
DataStream.Position := 0; while DataStream.Position < DataStream.Size do begin Received := Client.ReceiveBuf(PByte(DataStream.Memory)[DataStream.Position], DataStream.Size - DataStream.Position); if Received = SOCKET_ERROR then Break; DataStream.Position := DataStream.Position + Received; end; |
AW: Suche die TByteBuffer Klasse aus SysUtils ab XE 3 (?)
Zitat:
Delphi-Quellcode:
Sprich für die Abfrage der Position wird die Position mit Inc um 0 erhöht (Seek weiß ja nicht, dass das unnötig ist), und dann die Position direkt zurückgeliefert. Wie sollte das sonst passieren, als auf diesem Standardweg für TStream-Nachfahren?
function TStream.GetPosition: Int64;
begin Result := Seek(0, soCurrent); end; function TCustomMemoryStream.Seek(const Offset: Int64; Origin: TSeekOrigin): Int64; begin case Origin of soBeginning: FPosition := Offset; soCurrent: Inc(FPosition, Offset); soEnd: FPosition := FSize + Offset; end; Result := FPosition; end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 21: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