Lazarus 1.6.4 и библиотеки ВербаOW

Вопросы программирования и использования среды Lazarus.

Модератор: Модераторы

Re: Lazarus 1.6.4 и библиотеки ВербаOW

Сообщение gvido » 09.08.2017 13:08:38

vitaly_l писал(а):WideChar ?
PWideChar ?
+
drv := @drive_text;
id := @id_key;
?

Предлагаете использовать PWideChar вместо PChar?
Если использовать WideChar и PWideChar, то получаем ошибку 7 - "Ошибка параметра обращения к функции."
то есть функция получила хрень
Ошибка 34 появляется тогда (проверено на рабочем варианте ) когда функция по переданному Key_dev не может прочесть файл GK.DB3

Меня сильно смущает неопределенность места возникновения проблемы и варианты ее локализации. Точно ясно, что есть изменения в IDE и версии FPC.

Добавлено спустя 5 минут 3 секунды:
SSerge писал(а):@drive_text[0]

Это я тоже пробовал. результат тот же 34.
Сейчас попробую заполнить массив посимвольно.
gvido
постоялец
 
Сообщения: 188
Зарегистрирован: 28.03.2012 11:35:31

Re: Lazarus 1.6.4 и библиотеки ВербаOW

Сообщение vitaly_l » 09.08.2017 13:17:54

gvido писал(а):Предлагаете использовать PWideChar вместо PChar?

С PWideChar - не пробовал. Я по аналогии предложил, суть в том что с версии 3:0, чтобы оно(авто-перекодирование) работало - нужно использовать WideString и UnicodeString, т.к. оно там само "чего-то куда-то" и в итоге волшебно выдаёт нужную кодировку. И я подумал, что с WideChar она может преобразовать также. Рекомендую поэкспериментировать в этом направлении.

У Вас явно, проблема с кодировкой, которая стала "автоматической" с версии 3:0. И ещё есть вариант, что исправили какой-то Баг и при этом занесли новый (который отключил работавшую у вас функцию), это народ как-то смотрит в листинге исправленных багов.

.
Аватара пользователя
vitaly_l
долгожитель
 
Сообщения: 3333
Зарегистрирован: 31.01.2012 16:41:41

Re: Lazarus 1.6.4 и библиотеки ВербаOW

Сообщение gvido » 09.08.2017 13:33:31

vitaly_l писал(а):И ещё есть вариант, что исправили какой-то Баг и при этом занесли новый (который отключил работавшую у вас функцию), это народ как-то смотрит в листинге исправленных багов.

Похоже, что последнее - самое верное объяснение... :)
Я уже все предложенные варианты попробовал, большая часть выдает ошибку 34, есть варианты ошибки 7.

Интересно, могит в 1.8 это таки заработает? Когда релиз то?
gvido
постоялец
 
Сообщения: 188
Зарегистрирован: 28.03.2012 11:35:31

Re: Lazarus 1.6.4 и библиотеки ВербаOW

Сообщение serbod » 09.08.2017 14:13:52

Может проблема в загрузке и инициализации библиотеки еще до вызова InitKey()?
Аватара пользователя
serbod
постоялец
 
Сообщения: 449
Зарегистрирован: 16.09.2016 11:03:02
Откуда: Минск

Re: Lazarus 1.6.4 и библиотеки ВербаOW

Сообщение gvido » 09.08.2017 15:49:32

serbod писал(а):Может проблема в загрузке и инициализации библиотеки еще до вызова InitKey()?

Думал об этом. Но опять же на чистом С все Ок. На лазарусе 1.0.14-1.2.0 с FPC 2.6.2 тоже все ок. На 1.4.х и 1.6.х уже все - фига (это FPC 2.6.4, 3.0.0 и 3.0.2)
gvido
постоялец
 
Сообщения: 188
Зарегистрирован: 28.03.2012 11:35:31

Re: Lazarus 1.6.4 и библиотеки ВербаOW

Сообщение Sergei I. Gorelkin » 09.08.2017 17:17:17

На чистом C не загружается FPC RTL, которая пытается подменить собой весь мир (несколько утрируя, но все же). А библиотека относится к разряду криптографических, по идее она должна проверять вменяемость окружающей среды.
Возможно, поломка при переходе с 2.6.2 на 2.6.4 связана с TLS callbacks, которые появились примерно в это время (могу ошибаться). Со строками - вряд ли связано, там значительных изменений при переходе с 2.6.2 на 2.6.4 не было.
Аватара пользователя
Sergei I. Gorelkin
энтузиаст
 
Сообщения: 1395
Зарегистрирован: 24.07.2005 14:40:41
Откуда: Зеленоград

Re: Lazarus 1.6.4 и библиотеки ВербаOW

Сообщение gvido » 09.08.2017 18:13:39

Так... 1.2.2 FPC 2.6.4 собралось и работет Все ОК.
Ставлю следующую версию...
Продолжаю наблюдение, так сказать...
gvido
постоялец
 
Сообщения: 188
Зарегистрирован: 28.03.2012 11:35:31

Re: Lazarus 1.6.4 и библиотеки ВербаOW

Сообщение olegy123 » 09.08.2017 23:09:53

Sergei I. Gorelkin писал(а):TLS callbacks

Разве, TLS напрямую как то зависит на кодогенерацию?
olegy123
долгожитель
 
Сообщения: 1643
Зарегистрирован: 25.02.2016 12:10:20

Re: Lazarus 1.6.4 и библиотеки ВербаOW

Сообщение Sergei I. Gorelkin » 10.08.2017 00:40:53

TLS callbacks на кодогенрацию не влияют, но они изменяют последовательность выполнения частей кода при инициализации процесса.
Аватара пользователя
Sergei I. Gorelkin
энтузиаст
 
Сообщения: 1395
Зарегистрирован: 24.07.2005 14:40:41
Откуда: Зеленоград

Re: Lazarus 1.6.4 и библиотеки ВербаOW

Сообщение gvido » 10.08.2017 10:29:04

в 1.2.6 FPC 2.6.4
Все из предложенный вариантов работают и выдают корректный результат, то есть 0 и ключи в драйвер подгружаются.
Перехожу в 1.4.х
1.4.0 FPC 2.6.4, 1.4.2 FPC 2.6.4 - полет номальный
Но начиная с 1.4.4 FPC 2.6.4 начинается проблема-[img]https://yadi.sk/i/DiWR_Fyd3LsMGd[/img]
Всегда берется хрен пойми какой адрес у переменной drv (pchar($00000022) <Address 0x22 out of bounds>)
всегда такая хрень, и разницы нет как инициализируется переменная!!!!!!

Вот...
Есть Идеи?
Последний раз редактировалось gvido 10.08.2017 12:58:48, всего редактировалось 1 раз.
gvido
постоялец
 
Сообщения: 188
Зарегистрирован: 28.03.2012 11:35:31

Re: Lazarus 1.6.4 и библиотеки ВербаOW

Сообщение pupsik » 10.08.2017 12:28:42

Возможно и не к месту. Но: маленький тест показывает что строка бывает разная. И в вики это есть.

п.с.
С какого боку иде должна следить за разрабом, если он пихает что то, надеясь получить то что хочет. При этом не учитывая особенности среды.

Добавлено спустя 27 минут 53 секунды:
возможно это как то касаемо вашего вопроса.
У вас нет необходимых прав для просмотра вложений в этом сообщении.
pupsik
энтузиаст
 
Сообщения: 1154
Зарегистрирован: 20.08.2014 16:20:13

Re: Lazarus 1.6.4 и библиотеки ВербаOW

Сообщение serbod » 10.08.2017 14:23:09

pupsik, независимо от типа и содержания строки, при приведении ее к PChar берется адрес ее первого символа. А тут получается 0x22, что очень близко к nil. Интересно, откуда он взялся?

Добавлено спустя 3 минуты 1 секунду:
Еще я заметил, что длина строки 'F:\' 4 знака. Понятно, что там еще #0 в конце, но он не включается в длину. Похожее поведение у ShortString, где в нулевой позиции находится байт длины.
Аватара пользователя
serbod
постоялец
 
Сообщения: 449
Зарегистрирован: 16.09.2016 11:03:02
Откуда: Минск

Re: Lazarus 1.6.4 и библиотеки ВербаOW

Сообщение gvido » 10.08.2017 15:08:16

serbod писал(а):pupsik, независимо от типа и содержания строки, при приведении ее к PChar берется адрес ее первого символа. А тут получается 0x22, что очень близко к nil. Интересно, откуда он взялся?

Добавлено спустя 3 минуты 1 секунду:
Еще я заметил, что длина строки 'F:\' 4 знака. Понятно, что там еще #0 в конце, но он не включается в длину. Похожее поведение у ShortString, где в нулевой позиции находится байт длины.

В версиях до 1.4.4 для переменных pchar в окне просмотра nil и возвращался, но адрес первого элемента и значение полной строки из символов выводилось верно.
С 1.4.4 и выше вот такая хрень. Хотя, в том же окне ввожу строку присваивания и результат выдает правильный!!!
Этот жжж.. не спроста. Видать точно прикрутили "магическое" преобразование типов. Но тут то оно на кой хрен нужно?!?!?
gvido
постоялец
 
Сообщения: 188
Зарегистрирован: 28.03.2012 11:35:31

Re: Lazarus 1.6.4 и библиотеки ВербаOW

Сообщение serbod » 10.08.2017 15:20:14

Если переменная drive_text имеет тип не string, а что-то другое (array[4] of Char, например), то для преобразование в PChar надо брать адрес первого элемента, то есть @drive_text[0]

Для всех видов string для преобразования в PChar или Pointer достаточно простого присвоения или кастования PChar(drive_text).

Чтобы передать содержимое строки как нетипизированный параметр (для Move(), например), нужно использовать PChar(drive_text)^

Добавлено спустя 40 секунд:
Для общего развития: http://wiki.freepascal.org/Character_and_string_types

Добавлено спустя 5 минут 44 секунды:
Есть еще вариант преобразовывать строку в указатель как @my_string[1], но это чревато для пустых строк и вообще не нравится компилятору. Так делать не надо.
Аватара пользователя
serbod
постоялец
 
Сообщения: 449
Зарегистрирован: 16.09.2016 11:03:02
Откуда: Минск

Re: Lazarus 1.6.4 и библиотеки ВербаOW

Сообщение gvido » 10.08.2017 15:40:02

Я пробовал @drive_text[0] этот вариант, в том числе с посимвольным заполнением массива
Код: Выделить всё
drive_text: array[0..3] of char; id_key: array[0..1] of char;

Код: Выделить всё
    drive_text[0]:=#70;
    drive_text[1]:=#58;
    drive_text[2]:=#92;
    drive_text[3]:=#0;
    id_key:=#0;
   err_code:=InitKey(@drive_text[0],@id_key[0]);

С 1.4.4 ни один вариант не дает корректного результата.
Бесит то, что совершенно не понятно, что происходит.
Добавлено спустя 40 секунд:
Для общего развития: http://wiki.freepascal.org/Character_and_string_types

Это я несколько раз прочел, до создания поста.

Добавлено спустя 3 минуты 1 секунду:
Еще я заметил, что длина строки 'F:\' 4 знака. Понятно, что там еще #0 в конце, но он не включается в длину. Похожее поведение у ShortString, где в нулевой позиции находится байт длины.

Если бы это было так то в drive_text[0] было бы не 70 'F'
gvido
постоялец
 
Сообщения: 188
Зарегистрирован: 28.03.2012 11:35:31

Пред.След.

Вернуться в Lazarus

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 12

Рейтинг@Mail.ru