Показать сообщение отдельно

  #6  
Старый 30.10.2009, 15:01
Chrome~
Постоянный
Регистрация: 13.12.2008
Сообщений: 354
С нами: 9162683

Репутация: 175
По умолчанию

Код:
function SendText(Sock: TSocket; S: String): Integer;
var
  MainBuff: Array[0..1023] of Char;
  iSize: Integer;
begin
  Result:=0;
  While (Length(S)>0) do
                        begin
                          iSize:=Length(S);
                          if (iSize>SizeOf(MainBuff)) then iSize:=SizeOf(MainBuff);
                          FillChar(MainBuff, SizeOf(MainBuff), 0);
                          CopyMemory(@MainBuff, PChar(S), iSize);
                          Delete(S, 1, iSize);
                          Result:=Result+Send(Sock, MainBuff, iSize, 0);
                        end;
end;
Код:
function ReceiveText(Sock: TSocket; var S: String): Integer;
var
  MainBuff: Array[0..1023] of Char;
  iSize: Integer;
begin
  Result:=0;
  While True do
               begin
                 FillChar(MainBuff, SizeOf(MainBuff), 0);
                 iSize:=Recv(Sock, MainBuff, SizeOf(MainBuff), 0);
                 if (iSize<1) then Break;
                 S:=S+String(MainBuff);
                 Result:=Result+iSize;
               end;
end;
Оба твои коды правильные. Они не слишком хороши в реализации. Также, долго могут выполняться следующие процедуры: FillChar(); CopyMemory();
 
Ответить с цитированием