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.