powered by simpleCommunicator - 2.0.18     © 2024 Programmizd 02
Map
Форумы / IBExpert [игнор отключен] [закрыт для гостей] / xIBEScript.dll 64-bit
25 сообщений из 69, страница 2 из 3
xIBEScript.dll 64-bit
    #40036085
oleg_oleinik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
IBExpert, почти все в моих скриптах выполнилось нормально.
Не отработали конструкции
Код: plsql
1.
2.
DESCRIBE FIELD HANGLE TABLE ST_RES
'Измеренный горизонтальный левый угол';


Error occurred while executing following statement (line 13):
-------- STATEMENT ----------
DESCRIBE
-------- ERROR ----------
Empty query.

(Line: 13) : [15.01.2021 13:39:33] Setting description for (something unknown: 900) ... FAILED!
и в другом скрипте аналогичная конструкция
Код: plsql
1.
2.
DESCRIBE FIELD HANGLETYPE TABLE ST_RES
'Тип измеряемого угла (0-левый, 1-правый)';


Error occurred while executing following statement (line 36):
-------- STATEMENT ----------
FIELD HANGLETYPE TABLE ST_RES
'??? ??????????? ???? (0-?????, 1-??????)'
-------- ERROR ----------
Invalid token.
Dynamic SQL Error.
SQL error code = -104.
Token unknown - line 1, column 1.
FIELD.
---------------------------------
SQLCODE: -104
SQLSTATE: 42000
GDSCODE: 335544569

Оба скрипта вызываются через ibec_ExecSQLScript
...
Рейтинг: 0 / 0
xIBEScript.dll 64-bit
    #40036326
IBExpert
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
oleg_oleinik

Не отработали конструкции


Исправил.
...
Рейтинг: 0 / 0
xIBEScript.dll 64-bit
    #40036573
oleg_oleinik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
IBExpert, спасибо.
Думал все заработало. Но нет, остался непонятный глюк.
При вызове следующего скрипта через ibec_ExecSQLScript появляется ошибка
test.sql
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
execute ibeblock as
begin
  if (not exists (select id from mlist)) then 
  begin
    mark_name = ibec_GetGlobalVar('user_name', 'Тестовый маркшейдер');
    insert into mlist (name) values (:mark_name);
    commit;
  end;
end;
Executing script setup.sql
(Line: 1) : [17.01.2021 16:20:55] Executing IBEBlock...
Error occurred while executing following statement (line 1):
-------- STATEMENT ----------
execute ibeblock as
begin
if (not exists (select id from mlist)) then
begin
mark_name = ibec_GetGlobalVar('user_name', '???????? ??????????');
insert into mlist (name) values (:mark_name);
commit;
end;
end
-------- ERROR ----------
Invalid token.
Dynamic SQL Error.
SQL error code = -104.
Token unknown - line 2, column 13.
).
----------------------------------
SQLCODE: -104
SQLSTATE: 42000
GDSCODE: 335544569


Script executed with errors.
Total execution time: 0ms
==================================================

Time spent: 00:00.094
...
Рейтинг: 0 / 0
xIBEScript.dll 64-bit
    #40037171
IBExpert
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
oleg_oleinik

Думал все заработало. Но нет, остался непонятный глюк.
При вызове следующего скрипта через ibec_ExecSQLScript появляется ошибка


Исправил.
...
Рейтинг: 0 / 0
xIBEScript.dll 64-bit
    #40037637
oleg_oleinik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
IBExpert, спасибо !!!
Мои скрипты все отработали без ошибок. Пора выпускать в более широкое Beta-тестирование ).
...
Рейтинг: 0 / 0
xIBEScript.dll 64-bit
    #40088979
oleg_oleinik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Столкнулся еще с одной ошибкой. Если в строке коннекта путь к clientlib будет содержат русские буквы, то получаем ошибку.
авторC:\Program Files (x86)\РУССКИЙ ПУТЬ\Bases\Scripts\journals>"C:\Program Files (x86)\РУССКИЙ ПУТЬ\FBLocal64\xIBEScript.exe" ..\database_update.sql -l"C:\Program Files (x86)\РУССКИЙ ПУТЬ\FBLocal64\fbembed.dll" -G"dbName=journals" -G"ClientLib=C:\Program Files (x86)\РУССКИЙ ПУТЬ\FBLocal64\fbembed.dll" -T -VIBEScript.log
xIBEScript Version (very Alpha) Copyright (c) 2002-2021 IBExpert KG (www.ibexpert.net)

Executing script: C:\Program Files (x86)\РУССКИЙ ПУТЬ\Bases\Scripts\database_update.sql
[05.08.2021 17:35:36] (Line: 1): Executing IBEBlock...

BaseName = journals
FAILED!

Error occured while executing IBEBlock (line 1):
-------- STATEMENT (line 18/18) ----------
conn = ibec_CreateConnection(__ctFirebird, ConnectionString)

-------- ERROR ----------
Client Library is missing or invalid: C:\Program Files (x86)\РУССКИЙ ПУТЬ\FBLocal64\fbembed.dll

Notice, that you have to use 32-bit client library even if you connect to 64-bit version of Firebird/InterBase
because IBExpert is a 32-bit application.
In case you specify a 64-bit version of client library dll instead of 32-bit one you can get this error.


Time spent: 00:00.000
Хотя файл fbembed.dll в папке присутствует и для нормальной работы достаточно переименовать папку, чтобы в пути к fbembed.dll не было русских букв.
database_drop.sqlexecute ibeblock as
begin
clib = '"' || ibec_GetGlobalVar('ClientLib', 'gds32.dll') || '"';
BaseName = ibec_GetGlobalVar('dbName', ibec_ExtractFileName(ibec_GetCurrentDir()));

ibec_Progress('');
ibec_Progress('BaseName = ' || BaseName);

ConnectionString = 'dbname="' || BaseName || '";user=sysdba;password=masterkey;clientlib=' || clib;
ibec_DropDatabase(__ctFirebird, ConnectionString);
end
database_drop.sql сохранен в кодировке windows-1251, вызов производится из командной строки.
...
Рейтинг: 0 / 0
xIBEScript.dll 64-bit
    #40089124
oleg_oleinik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Дополнительно: в следующем фрагменте вставка записи через параметр (оба варианта присвоения в test_var) происходит в неправильной кодировке. Второй insert выполняется нормально.
create.sql
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
SET SQL DIALECT 3;
SET NAMES WIN1251;

create table test ( test varchar (60) );
commit;

execute ibeblock as
begin
/*  test_var = ibec_GetGlobalVar('test_var', 'Тестовая строка'); */
  test_var = 'Тестовая строка';
  insert into test (test) values (:test_var);
  commit;
  insert into test (test) values ('Тестовая строка');
  commit;
end;
Также прикладываю результат вызова этого скрипта из другого через ibec_ExecSQLScript.
...
Рейтинг: 0 / 0
xIBEScript.dll 64-bit
    #40089129
oleg_oleinik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Похоже, что ошибки в двух последних сообщениях связаны друг с другом. Видимо строковые переменные хранятся в кодировке UTF-8 и не преобразуются в кодировку скрипта при передаче в процедуры и функции и при использовании в качестве параметров.
...
Рейтинг: 0 / 0
xIBEScript.dll 64-bit
    #40089610
IBExpert
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
oleg_oleinik
Похоже, что ошибки в двух последних сообщениях связаны друг с другом. Видимо строковые переменные хранятся в кодировке UTF-8 и не преобразуются в кодировку скрипта при передаче в процедуры и функции и при использовании в качестве параметров.


А сам скрипт в какой кодировке? Он в файле лежит или откуда ты его выполнял?
...
Рейтинг: 0 / 0
xIBEScript.dll 64-bit
    #40089727
oleg_oleinik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Все скрипты у меня в кодировке Windows-1251. Все лежат отдельными файлами.
create.sql вызывается из другого скрипта, который тоже сохранен файлом на диске в папке на уровень выше текущей, вызывается через xIBEScript.exe. Архив со структурой скриптов прикладываю. Для теста распаковать в папку "C:\РУССКИЙ ПУТЬ\Bases\Scripts\". FireBird embedded вместе с xIBEScript.exe лежит в папке "C:\РУССКИЙ ПУТЬ\FBLocal64\"
Вызывать из текущей папки test. Образец вызова:
C:\РУССКИЙ ПУТЬ\Bases\Scripts\test>"C:\РУССКИЙ ПУТЬ\FBLocal64\xIBEScript.exe" ..\database_create.sql -l"C:\РУССКИЙ ПУТЬ\FBLocal64\fbembed.dll" -G"dbName=test" -G"ClientLib=C:\РУССКИЙ ПУТЬ\FBLocal64\fbembed.dll" -T -VIBEScript.log
...
Рейтинг: 0 / 0
xIBEScript.dll 64-bit
    #40090182
IBExpert
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
oleg_oleinik,

Исправил, но, возможно, где-то еще вылезет.
...
Рейтинг: 0 / 0
xIBEScript.dll 64-bit
    #40091508
oleg_oleinik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
IBExpert, к сожалению вылезло
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
C:\РУССКИЙ ПУТЬ\Bases\Scripts\test>"C:\РУССКИЙ ПУТЬ\FBLocal64\xIBEScript.exe" ..\database_create.sql -l"C:\РУССКИЙ ПУТЬ\FBLocal64\fbembed.dll" -G"dbName=test.fdb" -G"ClientLib=C:\РУССКИЙ ПУТЬ\FBLocal64\fbembed.dll" -T -VIBEScript.log
xIBEScript Version  (very Alpha) Copyright (c) 2002-2021 IBExpert KG (www.ibexpert.net)

Executing script: C:\РУССКИЙ ПУТЬ\Bases\Scripts\database_create.sql
[18.08.2021 14:18:39] (Line: 1): Executing IBEBlock...

BaseName = test.fdb
 FAILED!

Error occured while executing IBEBlock (line 1):
--------  STATEMENT (line 18/18) ----------
conn = ibec_CreateDatabase(__ctFirebird, ConnectionString)

--------  ERROR ----------
Client Library is missing or invalid: C:\Р Р?РЎРЎР?Р?РT Р?Р?РўР┐\FBLocal64\fbembed.dll

Notice, that you have to use 32-bit client library even if you connect to 64-bit version of Firebird/InterBase
because IBExpert is a 32-bit application.
In case you specify a 64-bit version of client library dll instead of 32-bit one you can get this error.


Time spent: 00:00.000

Вставка записей теперь происходит в правильной кодировке, но путь к ClientLibrary все еще портится.
...
Рейтинг: 0 / 0
xIBEScript.dll 64-bit
    #40092164
IBExpert
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
oleg_oleinik
к сожалению вылезло


Исправил.
...
Рейтинг: 0 / 0
xIBEScript.dll 64-bit
    #40092190
oleg_oleinik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
IBExpert, сработало.
Спасибо !!!
...
Рейтинг: 0 / 0
xIBEScript.dll 64-bit
    #40100529
oleg_oleinik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
IBExpert, при использовании совместно с xIBEScript.exe опции -V выходные данные выводятся в файл в разных кодировках.
Сама первая строка "Executing script...." выводится в файл в кодировке UTF-8, а например сообщение об ошибке от сервера выводится в кодировке windows-1251. При чтении таких файлов возникает неудобство. Если ключ -V не использовать и выводить информацию на экран, то возникает обратная ситуация - первая строка читается нормально, а сообщение об ошибке отображается знаками вопроса. Текст использованного скрипта во вложении.
Вот пример выходных данных
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
Executing script: C:\Program Files (x86)\ГИС ГЕОМИКС\Bases\Scripts\database_drop.sql
[28.09.2021 18:19:31] (Line: 1): Executing IBEBlock...

BaseName = journals
 FAILED!

Error occured while executing IBEBlock (line 1):
--------  STATEMENT (line 10/10) ----------
ibec_DropDatabase(__ctFirebird, ConnectionString)

--------  ERROR ----------
Unsuccessful execution caused by a system error that precludes successful execution of subsequent statements.
I/O error during "CreateFile (open)" operation for file "journals".
Error while trying to open file.
Не удается найти указанный файл. .
-------------------------------------------------------------------------------------------------------------
SQLCODE: -902
SQLSTATE: 08001
GDSCODE: 335544344


Time spent: 00:00.266
================================================================================
...
Рейтинг: 0 / 0
xIBEScript.dll 64-bit
    #40102218
IBExpert
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
oleg_oleinik,

Посмотри в свежей версии.
...
Рейтинг: 0 / 0
xIBEScript.dll 64-bit
    #40114440
oleg_oleinik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
IBExpert, скачал очередное обновление и обнаружил в архиве дополнительно и 32-битную версию тоже. Я так понимаю она скомпилирована на тех же исходниках, что и 64-битная и в дальнейшем развитие IBEScript предполагается на их базе? Имеет смысл тестировать эту версию отдельно?
Попробовал запустить её - сразу получил сообщение об ошибке. При этом дальнейшая работа программы (вывод инструкции по использованию) выполнилась нормально. Если эта или другие библиотеки загружаются динамически, то может стоит их загружать несколько позже, на том этапе, где будет происходить действительная работа с БД ?
...
Рейтинг: 0 / 0
xIBEScript.dll 64-bit
    #40114948
IBExpert
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Нет, тестировать отдельно 32-битную версию смысла нет.
Время будет, посмотрю что там с dll-ками, это в сторонних компонентах.
...
Рейтинг: 0 / 0
xIBEScript.dll 64-bit
    #40134096
oleg_oleinik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
IBExpert,
Подскажите, как можно создать глобальные переменные при использовании xIBEScript.dll ?
В ibesScriptExecuteFile передается только имя файла скрипта, а дополнительные параметры, которые в xIBEScript.exe передавались через глобальные переменные как передать ?
...
Рейтинг: 0 / 0
xIBEScript.dll 64-bit
    #40134116
oleg_oleinik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
IBExpert,
Пытаюсь заменить вызов xIBEScript.exe на соответствующие вызовы xIBEcript.dll. В общем разобрался, в том числе и с глобальными переменными. Споткнулся на операторе reconnect. Из своей программы основной скрипт я вызываю либо через ibesScriptExecuteFile, либо через xIBEScript.exe, который внутри в свою очередь вызывает ibec_ExecSQLScript для другого файла скрипта.
Второй скрипт вылетает на операторе reconnect , если выполнение происходит через ibesScriptExecuteFile. Ну и соответственно дальше уже начинает вылетать основной скрипт, потому что слетел Connection.
Результат вызова через xIBEScript.exeExecuting script: D:\LGGT\Projects\Bases\Scripts\database_update.sql
[15.02.2022 0:27:18] (Line: 1): Executing IBEBlock...

BaseName = D:\LGGT\Projects\Bases\journals.fdb

Executing script update_1_2.sql
(Line: 1) : [15.02.2022 0:27:18] Reconnecting to 'D:\LGGT\Projects\Bases\journals.fdb'... Successful
Script executed successfully.
Total execution time: 94ms
==================================================

Time spent: 00:00.250
Результат вызова через ibesScriptExecuteFileExecuting script: D:\LGGT\Projects\Bases\Scripts\database_update.sql
[15.02.2022 00:08:30] Executing IBEBlock...
BaseName = D:\LGGT\Projects\Bases\journals.fdb

Executing script update_1_2.sql
Error occurred while executing following statement (line 1):
-------- STATEMENT ----------
reconnect
-------- ERROR ----------
Unsuccessful execution caused by a system error that precludes successful execution of subsequent statements.
connection shutdown.
-------------------------------------------------------------------------------------------------------------
SQLCODE: -902
SQLSTATE: 08003
GDSCODE: 335544856

(Line: 1) : [15.02.2022 0:08:31] Reconnecting to 'D:\LGGT\Projects\Bases\journals.fdb'... FAILED!

Script executed with errors.
Total execution time: 218ms
==================================================
There is no active connection.
Cannot perform operation -- DB is not open.
Второй скрипт состоит из одного оператора reconnect
...
Рейтинг: 0 / 0
xIBEScript.dll 64-bit
    #40134125
IBExpert
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
oleg_oleinik,

А как ты через xIBEScript.exe выполняешь скрипты сначала из одного файла, а потом на том же самом коннекте из другого файла??
Это возможно только через оператор INPUT в первом файле, в противном случае по завершении выполнения скрипта из первого файла коннект будет закрыт, и для второго скрипта его нужно создавать заново.

С ibesScriptExecuteFile точно так же должно быть, если коннект создается в самом скрипте. Или ты его извне создаешь через ibesConnectionInit?
...
Рейтинг: 0 / 0
xIBEScript.dll 64-bit
    #40134137
oleg_oleinik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
IBExpert, да все нормально работает. я же написал, что второй скрипт из первого вызывается через ibec_ExecSQLScript. Там и передается созданный Connection. Почищенные исходники во вложении. Через командную строку работает, через dll - вылет.
...
Рейтинг: 0 / 0
xIBEScript.dll 64-bit
    #40134142
oleg_oleinik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
IBExpert, и еще на мой взгляд в файле интерфейса xIBEScriptIntf.pas присутствуют ошибки в определении типа строковых параметров. В том виде, в котором он присутствует в архиве использовать dll не получается - появляются ошибки. Пришлось взять за образец файл IBEScriptIntf.pas и заменить в xIBEScriptIntf.pas все типы PChar на PAnsiChar. Только тогда я смог выполнить скрипт из-под Delphi.
...
Рейтинг: 0 / 0
xIBEScript.dll 64-bit
    #40134425
IBExpert
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
oleg_oleinik
IBExpert, да все нормально работает. я же написал, что второй скрипт из первого вызывается через ibec_ExecSQLScript. Там и передается созданный Connection. Почищенные исходники во вложении. Через командную строку работает, через dll - вылет.


У меня в тестовой демке все ОК. Меня смущает сообщение "connection shutdown." Т.е., попытка коннекта происходит, но сервер почему-то ругается вот такими словами. В dll и exe один и тот же код, так что и выполняться он должен абсолютно одинаково. Значит, дело в каких-то внешних по отношению к твоим скриптам данных.
Ты уверен, что у тебя там одна и та же клиентская либа используется в обоих случаях??
А вот еще: dbname=test.fdb. Ты embedded используешь что-ли?
...
Рейтинг: 0 / 0
xIBEScript.dll 64-bit
    #40134426
IBExpert
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
oleg_oleinik
IBExpert, и еще на мой взгляд в файле интерфейса xIBEScriptIntf.pas присутствуют ошибки в определении типа строковых параметров. В том виде, в котором он присутствует в архиве использовать dll не получается - появляются ошибки. Пришлось взять за образец файл IBEScriptIntf.pas и заменить в xIBEScriptIntf.pas все типы PChar на PAnsiChar. Только тогда я смог выполнить скрипт из-под Delphi.


Ну это в твоей дельфи PChar = PWideChar или что у тебя там. А в моей дельфи и в лазарусе PChar = PAnsiChar.
Но для ясности надо бы там на PAnsiChar заменить, да.
...
Рейтинг: 0 / 0
25 сообщений из 69, страница 2 из 3
Форумы / IBExpert [игнор отключен] [закрыт для гостей] / xIBEScript.dll 64-bit
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали тему (1): Анонимы (1)
Читали форум (2): Анонимы (1), Yandex Bot 6 мин.
Пользователи онлайн (27): Анонимы (24), Yandex Bot 1 мин., Bing Bot 1 мин., Google Bot 9 мин.
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]