
Odesilani pres TClientSocket + TMemoryStream
Ahoj mam toto :
Procedure Tstraka.send_by(kulovy: TMemoryStream; bambus :TClientsocket;name:string);
var size : integer;
begin
sleep(300);
try
kulovy.LoadFromFile(name);
kulovy.Position := 0;
Size:= kulovy.Size;
bambus.Socket.SendBuf(Size,SizeOf(Size));
bambus.Socket.SendStream(kulovy);
except
// raised vynechan
end;
deletefile(name);
end;
procedure Tstraka.Button2Click(Sender: TObject);
var stream_string : TTestRec;
pocet : integer;
nahoda : integer;
begin
randomize;
nahoda := random(9999999)+103927;
try
FillStream( Ms1, 20 );
ShowStreamData( Ms1, Memo1.Lines, 'Ms1' );
except
// raised vynechan
end;
try
Ms1.SaveToFile(inttostr(nahoda)+'.dat');
except
// raised vynechan
end;
try
send_by(ms2,ClientSocket1,inttostr(nahoda)+'.dat');
except
messagedlg(sysErrormessage(GETlasterror),mterror,[mbok],0);
end;
end;
const
propust = '%5s'; // format(propust, [string]);
type
Tkousni = record
name : string[50];
password : string[32]; // sifrovano MD5
date : string[40];
text : string[255];
acct : string[30];
prava : string[30];
end;
PTTkousni = ^Tkousni;
toto se prevadi do streamu a uklada jako random file.
Samostatne to pracuje dobre a pri prvnim spusteni + pripojeni a odeslani vse probehne OK ale po odeslani jiz nelze odeslat podruhe, kde delam chybu? Stream se provede i po pokusu odeslat podruhe ale uz se neodesle na server podruhe vzdy to musim zavrit, zkousel jsem Ms2.free; po tomto se vubec nic neodesle i kdyz je vse uz ukonceno a hozeno za sleep(500);Vrta mi to hlavou od dopoledne.
Google jsem prosel ale reseni na toto neni, nechci to odesilat jako textak receivetext a sendtext, protoze sendtext chci pouzit na normalni chat a prikazove FCE.
MS1 a MS2 jsou vytvoreny zde :
procedure Tstraka.FormCreate(Sender: TObject);
begin
ms1 := Tmemorystream.Create;
ms2 := Tmemorystream.Create;
end;