Hier ist noch ein Artikel, der das Innenleben von Stream etwas beleuchtet:
http://www.delphipraxis.net/internal...ect.php?t=8211
Und hier ein 1. Entwurf der "Schnüffel" Streamklasse:
Delphi-Quellcode:
interface
uses Classes;
// ungetestet, da direkt so eingetippt
type
TSnifferStream = class(TStream)
private
protected
public
function Read(var Buffer; Count: Longint): Longint; override;
function Write(const Buffer; Count: Longint): Longint; override;
function Seek(Offset: Longint; Origin: Word): Longint; override;
end;
implementation
function TSnifferStream.Write(const Buffer; Count: Longint): Longint;
var
s : string;
begin
SetLength(s, Count);
Move(Buffer, s[1], Count);
// jetzt sind die Daten im String s und du kannst damit machen was du willst.
end;
function TSnifferStream.Read(var Buffer; Count: Longint): Longint; override;
begin
// nichts tun
end;
function TSnifferStream.Seek(Offset: Longint; Origin: Word): Longint; override;
begin
// nichts tun
end;