Cze,
Mam problem - Nie wiem jak zamienić zmienna record na Stream a oto kod:

const
  HEAD_TEXT = $000A;
  HEAD_FILE = $000F;

type
  PMessage = ^TMessage;
  TMessage = record
    Header: Cardinal;
    Date: String;
    end;

{ Do odbierania }
procedure Input(AThread: TIdPeerThread; out S: String);
var
  PMsg: PMessage;
  Buffer: TMemoryStream;
begin
  Log.AddEntry('Odbieranie stream-a!');

  New(PMsg);
  Buffer := TMemoryStream.Create;

  try
    AThread.Connection.ReadStream(Buffer,SizeOf(TMessage));
    Buffer.Position := 0;
    Buffer.Read(PMsg,Buffer.Size);
  except on E:Exception do
    Log.TakeEAction(E.Message);
  end;
  
  Buffer.Free;
  FreeAndNil(Buffer);
  Dispose(PMsg);
end;

{ Do wysylania }
procedure SendMessage(S: String);
var
  PMsg: PMessage;
  Stream: TMemoryStream;
begin
  New(PMsg);
  Stream := TMemoryStream.Create;

  PMsg.Header := HEAD_TEXT;
  PMsg.Date := S;

  try
    if not ClientSocket.Connected then ClientSocket.Connect else exit;
    Stream.Position := 0;
    Stream.Write(PMsg,SizeOf(TMessage));
    PMsg := PMessage(PMsg);

    ClientSocket.OpenWriteBuffer;
    ClientSocket.WriteStream(Stream);
    ClientSocket.CloseWriteBuffer;

    ClientSocket.Disconnect;
  except on E:Exception do
    Log.TakeEAction(E.Message);
  end;

  Dispose(PMsg);
end;

Jak przesle to przez socketa to powstaje mi cos takiego, PMsg.Header jest liczba 8 cyfrową (czyli calość streama), i zmienną zaleznie od tekstu jaki wpisze.