Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > Интернет и сети
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

 
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 07.06.2013, 08:58
Ioanwar Ioanwar вне форума
Прохожий
 
Регистрация: 07.06.2013
Сообщения: 9
Версия Delphi: Delphi 7
Репутация: 10
По умолчанию Сокеты, динамические массивы, боль, страдания...

В общем такая проблема...
Есть Сервер и Клиент, которые перебрасываются между собой динамическими массивами. Отправка и принятие у сервера работает отлично, но вот клиент не может нормально принять массив...
Точнее он его принимает, но либо программа сама закрывается, либо при закрытии Клиента выдает ошибку "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 ...".

Помомгите люди добрые

Последний раз редактировалось Admin, 07.06.2013 в 09:32.
Ответить с цитированием
 


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 11:19.


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2025