В общем такая проблема...
Есть Сервер и Клиент, которые перебрасываются между собой динамическими массивами. Отправка и принятие у сервера работает отлично, но вот клиент не может нормально принять массив...
Точнее он его принимает, но либо программа сама закрывается, либо при закрытии Клиента выдает ошибку "invalid pointer operation".
Для начала я проверил, что может быть я не правильно работаю с массивом, но нет, обращение к данным в этом массиве происходит без ошибок...
Ниже привожу код программы:
Код Клиента при принятии:
Код:
procedure TForm1.CSRead(Sender: TObject; Socket: TCustomWinSocket);
begin
try
ct:=0;
ct:=(CS.Socket.ReceiveLength div 4)div 768;
SetLength(Adm,ct);
CS.Socket.ReceiveBuf(Adm[0],CS.Socket.ReceiveLength);
List.Clear;
for i:=0 to High(Adm) do
List.Items.Add(Adm[i].Name+' '+'('+Adm[i].ip+')'+Adm[i].roll);
finally
SetLength(Adm,0);
end;
end;
Код отправки от сервера:
Код:
SetLength(Mass,j);
for f:=0 to High(Mass) do
Begin
Mass[f].Name:=NameHost[f];
Mass[f].ip:=IP[f];
Mass[f].roll:=Roll[f];
end;
SS.Socket.Connections[i].SendBuf(Mass[0],SizeOf(Mass)*Length(Mass)*768); // i-задается в другом месте
SetLength(Mass,0);
Админ: Учимся корректно оформлять код!
в общем когда приходит массив размерностью 1, то выдает "invalid pointer operation" послы выхода из программы.
а когда приходит массив более 1 строк, то программа вылетает с ошибкой "access violation ...".
Помомгите люди добрые
