Prinzipiell ist ein Buffer ein Stück Speicher, von dem du die Anfangsposition und die Länge weißt. Ein Buffer kann ein Integer sein, ein String, ein Record, ein statisches oder dynamisches Array - kurz, alles, was Speicher braucht.
Wenn du mehrere Variablen hast, geht das so:
Delphi-Quellcode:
var a, b: Integer;
c: String;
d: TMyRecord;
e: Single;
f: array of Integer;
g: array[0..2] of Single;
s: TStream;
begin
//...
s.Write(a, 4); //oder s.Write(a, sizeof(a)); oder s.Write(a, sizeof(Integer));
s.Write(b, 4);
s.Write(c, length(c)); //Aufpassen bei Multibyte-Char-Strings
s.Write(d, sizeof(d));
s.Write(e, 4); //oder s.Write(e, sizeof(e)); usw.
s.Write(f[0], length(f)*4); //oder s.Write(f[0], length(f)*sizeof(Integer));
s.Write(g[0], length(g)*4); //oder s.Write(g, length(g)*4); oder s.Write(g, length(g)*sizeof(Single));
//...
end;