标签:into utf8 ram hang word within designed art overload
mormot2 TRawByteStringStream
mormot.core.base.pas
/// TStream using a RawByteString as internal storage
// - default TStringStream uses WideChars since Delphi 2009, so it is
// not compatible with previous versions, and it does make sense to
// work with RawByteString/RawUTF8 in our UTF-8 oriented framework
// - just like TStringStream, is designed for appending data, not modifying
// in-place, as requested e.g. by TTextWriter or TBufferWriter classes
TRawByteStringStream = class(TStream)
protected
fPosition: integer;
fDataString: RawByteString;
{$ifdef FPC}
function GetPosition: Int64; override;
{$endif FPC}
function GetSize: Int64; override;
procedure SetSize(NewSize: Longint); override;
public
/// initialize a void storage
constructor Create; overload;
/// initialize the storage, optionally with some RawByteString content
constructor Create(const aString: RawByteString); overload;
/// read some bytes from the internal storage
// - returns the number of bytes filled into Buffer (<=Count)
function Read(var Buffer; Count: Longint): Longint; override;
/// change the current Read/Write position, within current stored range
function Seek(const Offset: Int64; Origin: TSeekOrigin): Int64; override;
/// change the current Read/Write position, within current stored range
function Seek(Offset: Longint; Origin: Word): Longint; override;
/// append some data to the buffer
// - will resize the buffer, i.e. will replace the end of the string from
// the current position with the supplied data
function Write(const Buffer; Count: Longint): Longint; override;
/// retrieve the stored content from a given position, as UTF-8 text
procedure GetAsText(StartPos, Len: PtrInt; var Text: RawUTF8);
/// direct low-level access to the internal RawByteString storage
property DataString: RawByteString
read fDataString write fDataString;
end;
标签:into utf8 ram hang word within designed art overload
原文地址:https://www.cnblogs.com/hnxxcxg/p/14055758.html