Přidat otázku mezi oblíbenéZasílat nové odpovědi e-mailem 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;
Jsou zobrazeny jen nové odpovědi. Zobrazit všechny
Předmět Autor Datum
Stale to nak nechce odeslat 2 varku aniz bych zavrel clienta, dal jsem tam MS2.position:=0; pred nac… poslední
virus 28.04.2009 20:50
virus

Stale to nak nechce odeslat 2 varku aniz bych zavrel clienta, dal jsem tam MS2.position:=0; pred nactenim souboru ale i tak to nejede.Jen jednou se to nacte posle prijme prevede a desifruje a tim to skonci.
Podruhe uz jen na clientu se provede vse ale server uz nic nezpracuje.

try
    Ms2.Position := 0;
    Ms2.LoadFromFile(nahoda);
    pocet:= Ms2.Size;
    ClientSocket1.Socket.SendBuf(pocet,SizeOf(pocet));
    ClientSocket1.Socket.SendStream(Ms2);
 except
 messagedlg(sysErrormessage(GETlasterror),mterror,[mbok],0);
// toto jen zahlasi ze se vse provedlo, tim to dava najevo ze to nefunguje na socketu pri druhem odeslani.
 end;

Zpět do poradny Odpovědět na původní otázku Nahoru