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

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

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

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

Сообщение vitaly_l » 10.08.2017 16:17:17

gvido писал(а):С 1.4.4 ни один вариант не дает корректного результата

Код: Выделить всё
var
s,k:WideString ;
с,cc:PChar;
begin
k:='';
cc := nil;
s := "F:\";
c := addr(s[0]);// S[1];
err_code:=InitKey(c,cc); // err_code:=InitKey(@c,@cc);

// или вот так?
err_code:=InitKey(PChar(s),PChar(k));
Аватара пользователя
vitaly_l
долгожитель
 
Сообщения: 3333
Зарегистрирован: 31.01.2012 16:41:41

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

Сообщение serbod » 10.08.2017 16:31:42

gvido, действительно, ерунда получается. Я бы на вашем месте написал об этом в багтрекер. Только нужен простой компилируемый пример.

А зачем вам именно array of char, почему бы не использовать String? Он же должен в PChar без проблем конвертироваться. Или AnsiString и PAnsiString.
Аватара пользователя
serbod
постоялец
 
Сообщения: 449
Зарегистрирован: 16.09.2016 11:03:02
Откуда: Минск

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

Сообщение SSerge » 10.08.2017 17:16:33

я бы при такой безнадёге получил ассемблерный листинг последнего работающего варианта и первого неработающего и попытался сравнить с целью увидеть разницу. :?
SSerge
энтузиаст
 
Сообщения: 971
Зарегистрирован: 12.01.2012 05:34:14
Откуда: Барнаул

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

Сообщение gvido » 10.08.2017 17:25:14

serbod писал(а):gvido, действительно, ерунда получается. Я бы на вашем месте написал об этом в багтрекер. Только нужен простой компилируемый пример.

А зачем вам именно array of char, почему бы не использовать String? Он же должен в PChar без проблем конвертироваться. Или AnsiString и PAnsiString.

Это уже крик души просто.
Начиналось то с простого присвоения строки с приведением к pchar - err_code:=InitKey(Pchar('F:'),'');
И ведь работало же без проблем!!!!
Переменную - массив символов сделал уже потом, в надежде, что там то точно ничего не должно преобразовываться.
И ладно бы в строки были нестандартные символы...
Возможно есть какой-то сдвиг по адресу при передаче pchar. Знать бы точно как обрабатывается(проверяется) внутри функции передаваемый key_dev!?!?
Предполагаю, что тупо подставляется в путь для чтения этого самого GK.DB3.

Добавлено спустя 1 минуту 47 секунд:
SSerge писал(а):я бы при такой безнадёге получил ассемблерный листинг последнего работающего варианта и первого неработающего и попытался сравнить с целью увидеть разницу. :?

А, это вариант!!!
gvido
постоялец
 
Сообщения: 188
Зарегистрирован: 28.03.2012 11:35:31

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

Сообщение sts » 10.08.2017 17:27:19

да враппер с темже интерфейсом функции запилили бы уже и посмотрели что передается.
sts
постоялец
 
Сообщения: 406
Зарегистрирован: 04.04.2008 12:15:44
Откуда: Тольятти

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

Сообщение vitaly_l » 10.08.2017 18:08:53

gvido писал(а):И ладно бы в строки были нестандартные символы

Вот хрен его знает как оно там начиная с версии 3:0 перекодирует.
Можно ещё так извернуться, несмотря на 100%-ю латиницу в строке.
Код: Выделить всё

s,k:string;
begin
  k := '';
  s := 'F:\';
  err_code:=InitKey(PChar(UTF8ToWinCP(s)),PChar(UTF8ToWinCP(s)));

А вообще, у меня в других функциях PChar при обращении к внешней библиотеке 100% работает.
Соответственно - это 100% не в PChar дело.

Если ассемблерный листинг не поможет, то:
проверьте программу на утечку памяти (если проверка постоянно не включена).

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

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

Сообщение gvido » 10.08.2017 18:24:47

Чет у меня уже мозг взорвался....
Кто может сравнить ехе
1_4_2_nVBC.exe - работает https://yadi.sk/d/3IhQapHu3Lt4kK
1_4_4_nVBC.exe - не работает https://yadi.sk/d/oLnG0aCX3Lt4u4
код проще не придумаешь:
Код: Выделить всё
procedure TForm1.BLoadKeyClick(Sender: TObject);
var
  err_code: integer;
begin
err_code:=InitKey(Pchar('F:\'),Pchar(''));
label1.Caption:=GetVerbaErrorStr(err_code);
end;

Если надо могу проект скинуть - там нет ничего секретного.
gvido
постоялец
 
Сообщения: 188
Зарегистрирован: 28.03.2012 11:35:31

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

Сообщение vitaly_l » 10.08.2017 18:32:48

gvido писал(а):err_code:=InitKey(Pchar('F:\'),Pchar(''));

Pchar('F:\') <== вот так точно работать не будет.
Аватара пользователя
vitaly_l
долгожитель
 
Сообщения: 3333
Зарегистрирован: 31.01.2012 16:41:41

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

Сообщение gvido » 10.08.2017 18:35:47

vitaly_l писал(а):Если ассемблерный листинг не поможет, то:
проверьте программу на утечку памяти (если проверка постоянно не включена).

Вот что поймал с проверками:
https://yadi.sk/i/4KrqbwCF3Lt65t

Добавлено спустя 51 секунду:
vitaly_l писал(а):Pchar('F:\') <== вот так точно работать не будет.

В 1.4.2 работает на УРА!!!
И этот код проверил за эти дни с версии 1.0.14 по 1.4.2 включительно работает!!!
Начиная с 1.4.4 не работает никак вообще. При сборке нет ни ошибок не предупреждений.
Последний раз редактировалось gvido 10.08.2017 18:39:04, всего редактировалось 1 раз.
gvido
постоялец
 
Сообщения: 188
Зарегистрирован: 28.03.2012 11:35:31

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

Сообщение serbod » 10.08.2017 18:37:36

vitaly_l писал(а):Pchar('F:\') <== вот так точно работать не будет.

Это почему? Для констант приведение к PChar не обязательно, но должно ведь работать.
Аватара пользователя
serbod
постоялец
 
Сообщения: 449
Зарегистрирован: 16.09.2016 11:03:02
Откуда: Минск

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

Сообщение vitaly_l » 10.08.2017 18:42:07

serbod писал(а):Это почему? Для констант приведение к PChar не обязательно, но должно ведь работать.

А куда адрес-то? В память выделенную программе? Туда, вообще-то адрес давать и брать - низяаа ...
gvido писал(а):Вот что поймал с проверками:
https://yadi.sk/i/4KrqbwCF3Lt65t

Кидайте код с тестовым проектом, дальше уже не мой уровень, нужен кто-то из "взрослых" программистов.

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

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

Сообщение gvido » 10.08.2017 18:50:44

sts писал(а):да враппер с темже интерфейсом функции запилили бы уже и посмотрели что передается.

То есть таки dll свою с выводом входящих параметров на том же С?
gvido
постоялец
 
Сообщения: 188
Зарегистрирован: 28.03.2012 11:35:31

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

Сообщение serbod » 10.08.2017 18:52:35

vitaly_l писал(а):А куда адрес-то? В память выделенную программе? Туда, вообще-то адрес давать и брать - низяаа ...

Внешняя DLL работает в одном адресном пространстве с основным приложением. Константы в DLL передавать вообще не проблема. Могут быть проблемы с передачей в DLL короткоживущих строк, но это как-то решается компилятором. Вся WinAPI так работает.
Аватара пользователя
serbod
постоялец
 
Сообщения: 449
Зарегистрирован: 16.09.2016 11:03:02
Откуда: Минск

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

Сообщение gvido » 10.08.2017 18:54:35

vitaly_l писал(а):Кидайте код с тестовым проектом, дальше уже не мой уровень, нужен кто-то из "взрослых" программистов.

Вот проект:
https://yadi.sk/d/KfAMfm453Lt7yF


Упс.. там в коде куча мусора закомментировано. Ну это чтоб не забыть что уже и как пробовал.....
gvido
постоялец
 
Сообщения: 188
Зарегистрирован: 28.03.2012 11:35:31

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

Сообщение Лекс Айрин » 10.08.2017 19:58:16

vitaly_l писал(а):А куда адрес-то? В память выделенную программе? Туда, вообще-то адрес давать и брать - низяаа ...

выделяется в куче адрес, а потом по нему выкладывается строка. Вполне легитимное присваивание.
Аватара пользователя
Лекс Айрин
долгожитель
 
Сообщения: 5723
Зарегистрирован: 19.02.2013 16:54:51
Откуда: Волгоград

Пред.След.

Вернуться в Lazarus

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

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

Рейтинг@Mail.ru