Als Puffer kann man ein Array of Byte oder auch einen normalen (
Ansi-)string verwenden:
Delphi-Quellcode:
var
buf : TArray of Byte;
readcount : integer;
begin
SetLength(buf, 1000);
readcount := TransferBuffer.Read(buf[0], 1000);
Die Schreibweise buf[0] sieht zwar gewöhnungsbedürftig aus, ist aber so.
Der Compiler setzt im Prinzip den Adressoperator vornean, um daraus einen Zeiger zu gewinnen:
.Read(@buf[0], 1000);
Hier noch das Beispiel mit einem String:
Delphi-Quellcode:
var
buf : string;
readcount : integer;
begin
SetLength(buf, 1000);
readcount := TransferBuffer.Read(buf[1], 1000);
// ... ein kleiner Trick...
SetLength(buf, readcount); // String auf die tatsächliche Grösse verkürzen
// jetzt kann mit dem String buf bequem weitergearbeitet werden
Hier muss buf[1] geschrieben werden, weil Strings in Delphi mit dem Index 1 beginnen.
Und jetzt noch mit Zeiger:
Delphi-Quellcode:
var
buf : Pointer;
readcount : integer;
begin
Getmem(buf, 1000);
readcount := TransferBuffer.Read(PChar(buf)^, 1000);
...
FreeMem(buf);
Hier muss der Zeiger nach PChar gecastet werden, weil man einen neutralen Zeiger nicht dereferenzieren kann.