![]() |
|
|
#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. |