![]() |
|
|
#1
|
|||
|
|||
![]() Добрый день!
У меня есть задача. Hанее почти не работал с PChar. Помогите разобраться. В длл есть функция: GetCfgData(var Info:TPosInfo): Byte(возвращает код ошибки) при запуске в коде программы эта функция должна получить данные из длл в TPosIno. Где TPosInfo = record Open: Byte SerNo: PChar (указатель на буфер серийного номера, min размер 12+1 байт) Вопрос: рак реализовать работу этой функции. Не совсем понимаю как работать с Pchar. Кто может объяснить как описать это в коде программы. И как далее работать с полем SerNo. В теории это должен быть серийный номер устройства. |
#2
|
|||
|
|||
![]() Не понятно, что тебе надо. Написать эту функцию или вызвать ее.
Если вызывать, то, видимо, что-то типа такого: Код:
var PI : TPosInfo; begin PI.Open := 0; GetMem(PI.SerNo,12+1); // Получаем адрес функции и т.п. If GetCfgData(PI) = 0 // 0 = success Then Result := StrPas(PI.SerNo) // Типа вернули результат Else Raise Exception.Create('Error'); FreeMem(PI.SerNo,12+1); |
#3
|
|||
|
|||
![]() Цитата:
Интересовало будет ли правильным описывать все вот так. А так же как далее работать с SerNo. Я так понял через StrPas И как реализовать min размер 12+1 байт. Размер может быть и больше 12+1. Код:
TYPE TPosInfo = record Open: Byte; SerNo: PChar; end; GetCfgData : function(var Info: TPosInfo): Byte; stdcall; ... Var ConfigData: TPosInfo; ... begin GetMem ... Answer:= GetCfgData(ConfigData); FreeMem ... ... end. |