Schatz

Junior Member | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору День добрый. Передаю данные через Indy(TCP) компаненты. Передаю из WIN приложения в Dll Вот структура передаваемых данных TDate=Record NumberString:Byte; Text:String[255]; KolVo:Integer; Summ:Comp; end; TCommBlock = record Command:string[100]; MyUserName:string[100]; ReceiverName: string[100]; Msg:String[255]; Table:Array[0..99] of TDate; Otdel:Byte; Summa:Comp; end; При передачи этой записи происходит следующее: При первой передаче все приходит безупречно, при второй передаче данные как будто смещаются на неопределенное количество байт в право, т.е. Command,MyUserName,ReceiverName,Msg - приходят пустыми, а массив Table[0],Table[1]содержит байты которые должны были быть в Command,MyUserName,ReceiverName,Msg, все остальные ячейки Table забиты мусором. Как я выяснил, здесь как минимум две проблемы: 1) массив Table типа TDate в котором есть Summa:Comp; 2) Summa:Comp; Если убрать таблицу и убрать Summa тогда данные передаются без искажения. Так же заметил что если код библтотеки перенести на обычное win приложение то передача данных происходит нормально. Отсюда вывод что в момент динамического создания клиента в библиотеке я где то что то не так делаю, вот код в котором я создаю клиента Client:=TIdTCPClient.Create(Nil); Client.ASCIIFilter:=False; Client.Port:=2001; Client.MaxLineLength:=16384; Client.MaxLineAction:=maException; Client.RecvBufferSize:=32768; Client.RecvBufferSize:=32768; Client.OnConnected:=ClientConnected; Client.OnDisconnected:=ClientDisconnected; Может здесь что то не так... Просьба подсказать что я делаю не так. Зарание огромное спасибо. | Всего записей: 55 | Зарегистр. 31-05-2005 | Отправлено: 10:39 04-04-2006 | Исправлено: Schatz, 10:40 04-04-2006 |
|