Как говориться Хелп, Алларм!!!
Приспичело, вернуться к дописке программки по библиотеки вербы, спотыкнулся о различия в базовых типах или автоматическом преобразовании оных, наверное.
Код который без проблем собирался и работал при fpc 2.6.2 компилится, но не работает ни 2,6,4, ни 3,0,0, ни 3,0,2.
Перерыл весь код и дошел до самой простой функции загрузки ключей в драйвер:
- Код: Выделить всё
function InitKey (key_dev:Pchar; key_ID:Pchar):WORD;
stdcall; external cDLLFn name 'InitKey';
Пол дня бодался, не мог понять что не так. Пока не утвердился в подозрении, что в функцию передается все, что угодно, но не строка однобайтовых символов.
Простой пример использования функции:
- Код: Выделить всё
var
err_code: integer;
begin
err_code:=InitKey(Pchar('A:\'),'');
ShowMessage(inttostr(err_code));
end;
Если ключ загружен то вернет 0. Мне же постоянно возвращало 34 - ошибка чтения GK, то есть библиотека не может прочесть главный ключ, который расположен в корне носителя.
Ткните носом - где собака порылась в версиях выше 2.6.2?!?!?! Лучше если в 3.0.2.
Жду, очередной трепки и подзатыльников.