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

Delphi Sources



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

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 04.10.2013, 15:55
Smallboy Smallboy вне форума
Прохожий
 
Регистрация: 16.07.2013
Сообщения: 18
Версия Delphi: Delphi XE4
Репутация: 10
По умолчанию Работа с Pchar

Добрый день!
У меня есть задача. Hанее почти не работал с PChar.
Помогите разобраться. В длл есть функция:

GetCfgData(var Info:TPosInfo): Byte(возвращает код ошибки)

при запуске в коде программы эта функция должна получить данные из длл
в TPosIno.
Где TPosInfo = record
Open: Byte
SerNo: PChar (указатель на буфер серийного номера, min размер 12+1 байт)

Вопрос: рак реализовать работу этой функции. Не совсем понимаю как работать с Pchar. Кто может объяснить как описать это в коде программы. И как далее работать с полем SerNo. В теории это должен быть серийный номер устройства.
Ответить с цитированием
  #2  
Старый 04.10.2013, 16:33
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,036
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

Не понятно, что тебе надо. Написать эту функцию или вызвать ее.
Если вызывать, то, видимо, что-то типа такого:
Код:
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  
Старый 04.10.2013, 16:48
Smallboy Smallboy вне форума
Прохожий
 
Регистрация: 16.07.2013
Сообщения: 18
Версия Delphi: Delphi XE4
Репутация: 10
По умолчанию

Цитата:
Сообщение от lmikle
Не понятно, что тебе надо. Написать эту функцию или вызвать ее.
Если вызывать, то, видимо, что-то типа такого:
Код:
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);


Интересовало будет ли правильным описывать все вот так.
А так же как далее работать с 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.
Ответить с цитированием
Ответ


Delphi Sources

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

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

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

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


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


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

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

ВКонтакте   Facebook   Twitter