Hallo zusammen,
@shmia
Delphi-Quellcode:
function readCharFromUTF16le(src: TStream): TUniChar;
var UTF16Buffer: array[0..1] of byte;
begin
if src.Read(UTF16Buffer, SizeOf(UTF16Buffer)) = SizeOf(UTF16Buffer) then
begin
// ...
end else raise EUnexpectedEndOfStream.Create('class function TUniConverter.readCharFromUTF16BE(dest: TStream): TUniChar;');
end;
So weit ich sehen, werden hier 16 Bit auf einmal eingelesen, aber du hast recht, das schnellste wird wohl nicht sein.
Einen
WideString wollte ich bewusst nicht verwenden, da ich in einem Charakter einen ganzen
Unicode-Buchstaben unterzukriegen will.
@xZise
type TUniCharBuffer = packed array[0..(high(TSize) div SizeOf(TUniChar) -1)] of TUniChar;
Hieran liegt es, oder?
Probiers so:
type TUniCharBuffer = packed array[0..(2147483648 div SizeOf(TUniChar) -1)] of TUniChar;
(2147483648 = 2 GByte)
Für dein
Problem kannst du dir den
TUniString auch sparen, wenn du die Buchstaben selbst irgendwie pufferst ...
MfG,
Bug