Вниз
Скачать: CL | DM;

Проблемма при отправке буфера   Найти похожие ветки 

 
Piero   (2005-09-15 17:25) [0]

Настроил SocketServer и SocketClient друг на друга, строчки отсылаю нормально, но при отправке массива байт, получаю не то, что посылал, подскажите, где я торможу

//Прием
procedure TForm1.ServerSocket1ClientRead(Sender: TObject; Socket: TCustomWinSocket);
var s: String;
   buf : array of byte;
   i : integer;
  t1 : file of byte;
begin
try
  setlength(buf,Socket.ReceiveLength);
  socket.ReceiveBuf(buf,length(buf));
 for i := 1 to length(buf)  do write(t1,buf[i]);
 closefile(t1);
except
//
end;
end;

//Отправка
procedure TForm1.Button1Click(Sender: TObject);
var b : array of byte;
    i : integer;
begin
assignfile(t2,FilenameEdit2.Text);
reset(t2);
i:=0;
while not eof(t2) do
 begin
  setlength(b,length(b)+1);
  read(t2,b[i]);
  i:=i+1;
 end;  //while

clientSocket1.Socket.SendBuf(b,length(b));
end;

спасибо


 
Piero   (2005-09-15 17:34) [1]

да и забыл сказать, по объему отправляемые данные и то, что получаю одинакового размера,  акогда смотрю файл, то разные


 
Reindeer Moss Eater ©   (2005-09-15 20:26) [2]

var b : array of byte;

переменная-динамический  массив это всегда ссылка.

В то время как :
SendBuf(var Buf; Count : integer);

То есть параметром ожидается адрес участка памяти, а не значение указателя на него.


 
Reindeer Moss Eater ©   (2005-09-15 20:32) [3]

И при приеме, кстати, тоже самое.


 
Piero   (2005-09-15 22:05) [4]

Понял, а как правильно, если я заранее не знаю размер отправляемых данных?


 
Reindeer Moss Eater ©   (2005-09-15 23:07) [5]

Размер данных к твоей ошибке отношения не имеет.
Вместо имени переменной в SendBuf надо указывывать адрес первого элемена  массива. И при приеме тоже самое.


 
Piero   (2005-09-17 13:51) [6]

Спасибо



Страницы: 1 вся ветка

Скачать: CL | DM;



Память: 0.46 MB
Время: 0.025 c
4-1130396689
DancerMan
2005-10-27 11:04
2005.12.25
TWebBrowser запретить выделение


14-1133306290
Piter
2005-11-30 02:18
2005.12.25
знатокам MPlayer


5-1117800518
Priest
2005-06-03 16:08
2005.12.25
Не работает оператор is для класса в Dream Designer


14-1133352714
ANB
2005-11-30 15:11
2005.12.25
Нужен сишник.


14-1133295820
Shopot
2005-11-29 23:23
2005.12.25
Где достать компоненты для работы с Com портом?




   Наверх