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

Delphi Sources



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

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 12.01.2014, 22:29
mw_Kronos mw_Kronos вне форума
Прохожий
 
Регистрация: 12.01.2014
Сообщения: 12
Версия Delphi: RadStudio XE5
Репутация: 10
По умолчанию Ошибка при получении данных или глюк?

Вот такая ошибка:
First chance exception at $03AE85C4. Exception class $C000001D with message 'system exception (code 0xc000001d) at 0x03ae85c4'. Process Price.exe (11080)

Возникает при завершении процедуры ParseRequest()
Вот код:

Код:
  type PNetProtocol = ^TNetProtocol;
  TNetProtocol = record
    command:integer;
    data:array [0..15] of integer;
    text:string[255];
  end;

...

  const CMD_TEST = 6;

...

    TCPClient: TTcpClient;
...

Procedure TForm1.ParseRequest();
var ReciveProtocol:TNetProtocol;
    i:integer;
    Buf: PByteArray;
begin

        i := TCPClient.ReceiveBuf(Buf,SizeOf(ReciveProtocol));
        System.Move(Buf,ReciveProtocol,SizeOf(ReciveProtocol));

        case ReciveProtocol.command of
          CMD_TEST:
            begin
              ShowMessage(ReciveProtocol.text);
            end;
        end;
 
end;

procedure TForm1.ToolButton7Click(Sender: TObject);
var Protocol: TNetProtocol;
begin
      if TCPClient.Connect then
        begin
          Protocol.command := CMD_PRICE_LIST;
          TCPClient.SendBuf(Protocol,SizeOf(Protocol));
          ParseRequest();
          TCPClient.Disconnect;
        end
      else
        ShowNoConnectMessage();
end;
Админ: Пользуемся тегами по оформлению кода!

Пробовал оставить в процедуре только эту строку:
i := TCPClient.ReceiveBuf(Buf,SizeOf(ReciveProtocol));
эффект тот же.
Уже мозг закипает. Не пойму в чем дело. Может глянете незамутненным глазом?

Последний раз редактировалось Admin, 12.01.2014 в 22:35.
Ответить с цитированием
  #2  
Старый 13.01.2014, 00:30
mw_Kronos mw_Kronos вне форума
Прохожий
 
Регистрация: 12.01.2014
Сообщения: 12
Версия Delphi: RadStudio XE5
Репутация: 10
По умолчанию

Походу глюк среды был.
Возник другой вопрос: как для TTCPClient узнать размер поступившего по сети буфера?
Ответить с цитированием
  #3  
Старый 13.01.2014, 00:56
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,057
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

Походу, глюк остался.
Кто будет память в Buf выделять?

Ответ на второй вопрос - BytesReceived
Дока здесь: http://docwiki.embarcadero.com/Libra...ent_Properties
Ответить с цитированием
Ответ


Delphi Sources

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

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

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

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


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


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

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

ВКонтакте   Facebook   Twitter