![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
#1
|
|||
|
|||
|
Вот такая ошибка:
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
|
|||
|
|||
|
Походу глюк среды был.
Возник другой вопрос: как для TTCPClient узнать размер поступившего по сети буфера? |
|
#3
|
|||
|
|||
|
Походу, глюк остался.
Кто будет память в Buf выделять? Ответ на второй вопрос - BytesReceived Дока здесь: http://docwiki.embarcadero.com/Libra...ent_Properties |