Ассоциация ЭБНИТ    ИРБИС-корпорация    Вики-Ирбис    Online/CHM справка Ирбис   
Система ИРБИС в целом :  ИРБИС Irbis
 
Страницы: <<123>>
Страница: 2 из 3
Re: irbis64_client.dll
Пользователь: А. Роман (IP-адрес скрыт)
Дата: 27, April, 2010 13:52

Подскажите, в чем может быть проблема?
ИРБИС64.9.1

пробую использовать функцию IC_reg для регистрации клиента на сервере:

IC_reg('192.168.244.181','6666',IRBIS_CATALOG,'1','1',res,50000)

При этом, после 3 секунд появляется окно ожидания ответа от сервера, на сервере регистрации не происходит. При прерывании связи с сервером возвращается код -1

Настройки сервера по умолчанию (клиент с указанным логином и паролем присутствует, обычные АРМы стартуют нормально).

Re: irbis64_client.dll
Пользователь: А. Роман (IP-адрес скрыт)
Дата: 18, May, 2010 13:07

Не ходите, дети, в Африку гулять...

Все хорошо работает под управлением старой доброй WinXP. (:D
Ни Висту ни 7 заставить работать с библиотекой не удалось.



Редактировано 1 раз. Последний раз 18.05.2010 13:07 пользователем А. Роман.

Re: irbis64_client.dll
Пользователь: KP0H (IP-адрес скрыт)
Дата: 27, May, 2010 13:34

Добрый день,

Подскажите где можно найти наиболее полную документацию по функционалам библиотек ИРБИС?

Re: irbis64_client.dll
Пользователь: Alio (IP-адрес скрыт)
Дата: 27, May, 2010 14:02

Для получения библиотеки irbis64_client.dll и документации на нее обращайтесь на alio@gpntb.ru

Re: irbis64_client.dll
Пользователь: KP0H (IP-адрес скрыт)
Дата: 27, May, 2010 14:25

Вчера написал письмо.
Ответа пока не было.

UPD: Получил ответ спасибо.



Редактировано 1 раз. Последний раз 27.05.2010 14:29 пользователем KP0H.

Re: irbis64_client.dll
Пользователь: Юрок (IP-адрес скрыт)
Дата: 30, October, 2010 08:53

Здравствуйте, не подскажете, где можно скачать библиотеку irbis64_client.dll. Очень надо.



Редактировано 1 раз. Последний раз 05.11.2010 06:56 пользователем Юрок.

Re: irbis64_client.dll
Пользователь: Gena (IP-адрес скрыт)
Дата: 11, February, 2011 15:32

Пытаюсь освоить Irbis_client.dll для работы в Visual Basic. Но не получается что-то...
Вот код программы:

Dim ServerIP As String
Dim ServerPort As String
Dim ARM As String
Dim Login As String
Dim Password As String
Dim Answer As String
Dim Size As Integer
Dim Rec As Long


ServerIP = "127.0.0.1"
ServerPort = "6666"
ARM = "C"
Login = "111"
Password = "111"
Show
Size = 5000

Rec = IC_reg(ServerIP, ServerPort, ARM, Login, Password, Answer, Size)

Print Str(Rec)
Print Answer

После отработки этого куска выводится Rec равное -1 и все. А через пару секунд закрывается и сам компилятор, выругавшись ошибкой:

инструкция по адресу обратилась к памяти по адресу . память не может быть read

Хотя, когда пытался после вызова этой функции вызвать функцию для разрегистрации, она пыталась обратится к серверу и появился бегущий Барс... Тоесть, функция разрегистрации запустилась без ошибок. А почему не получается с функцией регистрации?

Функция регистрации в программе объявлена следующим образом:

Public Declare Function IC_reg Lib "irbis64_client.dll" _
(ByRef aserver_host As String, _
ByRef aserver_port As String, _
ByRef ARM As String, _
ByRef user_name As String, _
ByRef Password As String, _
ByRef Answer As String, _
ByRef abufsize As Integer) As Long

ByRef - знаычит передавать не переменные, а их указатели.

Можете что-нибудь подсказать?

Re: irbis64_client.dll
Пользователь: Михайленко Илья (IP-адрес скрыт)
Дата: 14, February, 2011 13:35

По бейсику мало что могу сказать (я вообще сишник :)), единственное что приходит в голову "с ходу", так это задать вопрос: Вы уверены что String от бейсика хранится в памяти так же как и String от пасквиля?

Re: irbis64_client.dll
Пользователь: Gena (IP-адрес скрыт)
Дата: 14, February, 2011 13:49

ээ... Озадачился... А в чем может быть разница? Я, честно говоря, не знаю...

Re: irbis64_client.dll
Пользователь: Михайленко Илья (IP-адрес скрыт)
Дата: 14, February, 2011 14:03

Строка в C: набор_символов_любой_длины_оканчивающихся_символом_с_кодом_0\0
Строка в паскале: <два байта с длинной строки>Сама_строка_длины_указанной_в_начале_и_без_символа_с_кодом_0_в_конце

Если С передать указатель на паскалевскую строку, то получим строку неизвестных заранее размеров (пока в дампе памяти не встретим символ с кодом 0). Еще веселее писать в такую строку что-либо - скорее всего получим обрушение программы (Access violation).

Про бейсик, к сожалению, ничего сказать в этом плане не могу...

Re: irbis64_client.dll
Пользователь: Gena (IP-адрес скрыт)
Дата: 14, February, 2011 15:28

Хм... Я думал, что раз это ДЛЛ, то она доступна для использования любому языку... Буду, наверное, начинать осваивать Дельфи

Re: irbis64_client.dll
Пользователь: Михайленко Илья (IP-адрес скрыт)
Дата: 14, February, 2011 15:34

А она и доступна. В длл есть механизм передачи стандартных типов. В Вашем примере передается ссылка - стандартный параметр. длл приняла в качестве параметра ссылку на область памяти и нашла по этой ссылке то, что Вы там для нее оставили... Может, в параметрах не ссылку надо передавать а саму строку? Или тип какой-нибудь PChar (или как он в бейсике). Еще раз говорю - это лишь предположение...

Re: irbis64_client.dll
Пользователь: Gena (IP-адрес скрыт)
Дата: 14, February, 2011 15:49

А если указываю передачу не указателя, а самой строки - выдает ошибку -4, А после остановки программы через секунду закрывается сама среда с выводом ошибки Инструкция по адресу ХХХХХХ обратилась к памяти по адресу ХХХХХХХХХ. Память не может быть Рид. И закрывается... Честно говоря, уже просто из интереса хочется подключиться. Со старой Ирбисовской ISIS32.DLL я работал спокойно. У меня есть несколько простеньких программ, которые работали с Ирбис 32, а хотелось бы написать их аналог под Ирбис 64.

Re: irbis64_client.dll
Пользователь: PRM (IP-адрес скрыт)
Дата: 14, February, 2011 18:55

Уважаемые коллеги, спасибо за обсуждение.
Расшифровка ошибок содержится в файле IRBIS64_CLIENT.PAS.
-4 - это ERR_BUFSIZE = -4; {выходной буфер мал}
Интересно, что даже при возвращаемом ERR_BUFSIZE в списке зарегистрированных клиентов Сервера ИРБИС подключение отображается.

Попробовал создать тестовый проект, подключение проходит нормально, исключений не выдаётся.

Описание функции:
Public Declare Function IC_reg Lib "irbis64_client.dll" _
(ByVal aserver_host As String, _
ByVal aserver_port As String, _
ByVal ARM As Char, _
ByVal user_name As String, _
ByVal Password As String, _
ByVal Answer As String, _
ByVal abufsize As Integer) As Integer

инициализация буфера
Dim sBuffer As String
sBuffer = Space$(30000)

и вызов функции регистрации
Rec = IC_reg(ServerIP, ServerPort, ARM, Login, Password, sBuffer, Size)

(Проект для Visual Studio 2005 во вложении.)

Вложения: IRBISApplication.zip (15KB)  
Re: irbis64_client.dll
Пользователь: Михайленко Илья (IP-адрес скрыт)
Дата: 14, February, 2011 18:55

:)



Редактировано 1 раз. Последний раз 14.02.2011 18:56 пользователем Михайленко Илья.

Re: irbis64_client.dll
Пользователь: DemonGloom (IP-адрес скрыт)
Дата: 20, February, 2011 09:33

Здравствуйте, не могли бы вы выслать мне библиотеку irbis64_client.dll ?
На сообщение по адресу alio@gpntb.ru вы не реагировали в течении недели
(мой рабочий адрес library_web собака psu.ru )

Re: irbis64_client.dll
Пользователь: Панев Максим (IP-адрес скрыт)
Дата: 20, February, 2011 09:56

Я вообще думаю, что эту библиотеку нужно либо на открытый FTP выложить, либо просто прикрепить к первому сообщению этой ветки.

Re: irbis64_client.dll
Пользователь: Vladimir Kim (IP-адрес скрыт)
Дата: 24, February, 2011 11:45

Поделитесь, пожалуйста коротким кусочком кода, как подключаться. А то плохо знаю Delphi и у меня ошибки лезут access violation.

Просто пару работающих строк, процедура, которая подключается и считывает какую нибудь запись.

С уважением, Владимир
НБ НИЯУ МИФИ

Re: irbis64_client.dll
Пользователь: Alio (IP-адрес скрыт)
Дата: 24, February, 2011 17:09

Вот пример проекта на Delphi.

Хотя, разумеется, надо понимать, что irbis64_client.dll стандартная DLL, не использующая никакие специфические для Delphi типы, - она может применяться при программировании на любых языках (конечно, кроме тех, которые по определению не работают с DLL)



Редактировано 1 раз. Последний раз 24.02.2011 17:12 пользователем Alio.

Вложения: temp.rar (178.6KB)  
Re: irbis64_client.dll
Пользователь: Alio (IP-адрес скрыт)
Дата: 24, February, 2011 17:58

Вот другой пример на Delphi - который не использует нестандартных компонент

Вложения: temp.rar (144.7KB)  
Re: irbis64_client.dll
Пользователь: Vladimir Kim (IP-адрес скрыт)
Дата: 24, February, 2011 18:41

Спасибо Александр! То, что нужно.

С уважением, Владимир
НБ НИЯУ МИФИ

Re: irbis64_client.dll
Пользователь: KP0H (IP-адрес скрыт)
Дата: 25, February, 2011 07:24

Мы написали свою оболочку для данной библиотеки (irbis64_client.dll) на C#, позволяющую работать с много поточностью и реализующую большой ряд упрощений для работы, делающих работу более стабильной.

За версию dll без всплывающих окон отдельное спасибо Бродовскому. А так вообще да, хотелось бы чтобы обновления библиотеки появлялись в одном месте и были какие-то описания к резилу - что было изменено.

Re: irbis64_client.dll
Пользователь: DemonGloom (IP-адрес скрыт)
Дата: 08, March, 2011 16:52

Вопрос такой : возможна ли работа с данной библиотекой из последних версий Делфи (2009, XE и т.д.)? Ибо на моей машине (XP) с последними версиями Делфи происходит следующее при запуске программы : "после 3 секунд появляется окно ожидания ответа от сервера, на сервере регистрации не происходит. При прерывании связи с сервером возвращается код -1". Тот же самый проект собранный Delphi 7 запустился и отработал успешно..



Редактировано 1 раз. Последний раз 08.03.2011 17:09 пользователем DemonGloom.

Re: irbis64_client.dll
Пользователь: KP0H (IP-адрес скрыт)
Дата: 09, March, 2011 07:28

Ну, вообще логично, что возможно. Если уж из студии возможна работа с unmanaged библиотекой, то CodeGear должна с ней работать. А в чем причина - скорее всего в маршалинге данных при вызове функций из библиотеки. Вообще лучше Бродовского спросить на прямую. Будет быстрее.

Re: irbis64_client.dll
Пользователь: DemonGloom (IP-адрес скрыт)
Дата: 09, March, 2011 15:49

Проблема решилась проще - в Delphi 2009 произошел переход базового PChar из PAnsiChar в PWideChar. Замена PChar на PAnsiChar по всему исходнику решает проблему.

Re: irbis64_client.dll
Пользователь: PRM (IP-адрес скрыт)
Дата: 12, March, 2011 13:51

Александр Иосифович, скажите, пожалуйста, возможна ли доработка DLL, так чтобы наряду с

function IC_adm_getalldeletedlists(Adbn: Pchar; answer: Pchar; abufsize: integer):integer; stdcall;

были отдельные функции для:
- получения списка mfn заблокированных записей;
- получения признака монопольной блокировки;
и т. д.

Re: irbis64_client.dll
Пользователь: S-presso (IP-адрес скрыт)
Дата: 25, October, 2011 16:41

Здравствуйте. Я работаю над созданием системы автоматизации ввода отсканированных данных в Каталогизатор (место работы - г. Саратов, библиотека СГК; нам приходится расписывать оглавления статей в сборниках, музыкальных журналах и др.). Недавно решил для курсового проекта переписать имеющуюся часть на C# и прикрутить к ней оболочку для доступа к БД IRBIS64. Спасибо Александру Иосифовичу за то, что оперативно среагировал на просьбу и отослал мне эту dll. Я уже набросал каркас оболочки, внешне похожей на Каталогизатор. Но возникает ряд вопросов:

1. Из какого файла считывается имя базы данных, открывающейся автоматически в начале работы на стороне клиента? В файле Cirbisc.ini строка DBN=IBIS автоматически изменяется на DBN= сразу после запуска Каталогизатора, а без него из моей программы, будучи запущенной на машине сервера, не происходит регистрация. Считывать irbisc.ini с помощью функции IC_getresourse()? Подскажите формат вызова. Как получить список всех доступных БД на стороне клиента?

2. С чем может быть связано то, что текст отдельных записей не выводится? Например, запись с номером 260 из тестовой базы IBIS выводится как
"x"
(насколько я понимаю, это набор символов "x\0\0"). Код для вывода записи используется следующий:

string text;
IntPtr record;

...
dbAccess.ReadRecord(index + 1, ref record);
text = dbAccess.PCharToString(record);

...
if (selected)
            {                    
                ShowTable();
                richTextBox1.Text = text;
            }

public int ReadRecord(int id, ref IntPtr record) { record = Marshal.AllocHGlobal(32000); int result = IRBIS64_Client.IC_read(dbName, id, 0, out record, 32000); return result; } public string PCharToString(IntPtr rp) { byte[] textBytes = new byte[32000]; Marshal.Copy(rp, textBytes, 0, 32000); byte[] textAnsiArray = Encoding.Convert(Encoding.UTF8, Encoding.GetEncoding(1251), textBytes); string result = Encoding.GetEncoding(1251).GetString(textAnsiArray); StringBuilder finalString = new StringBuilder(); for (int i = 0; i < result.Length && result[i] != '\0'; i++) finalString.Append(result[i]); return finalString.ToString(); }
[DllImport("irbis64_client", EntryPoint = "IC_read", ExactSpelling = true, CharSet = CharSet.Ansi, CallingConvention = CallingConvention.StdCall)] //чтение записи public static extern int IC_read( string Adbn, int Amfn, int Alock, out IntPtr answer, int abufsize);

3. Можно ли средствами irbis64_client.dll получить оформление записи с разметкой в виде каталожной карточки (как в окне Полное описание в правом нижнем углу Каталогизатора)?

Re: irbis64_client.dll
Пользователь: Alio (IP-адрес скрыт)
Дата: 28, October, 2011 14:49

S-presso написал(а):
-------------------------------------------------------
> Здравствуйте. Я работаю над созданием системы
> автоматизации ввода отсканированных данных в
> Каталогизатор (место работы - г. Саратов,
> библиотека СГК; нам приходится расписывать
> оглавления статей в сборниках, музыкальных
> журналах и др.). Недавно решил для курсового
> проекта переписать имеющуюся часть на C# и
> прикрутить к ней оболочку для доступа к БД
> IRBIS64. Спасибо Александру Иосифовичу за то, что
> оперативно среагировал на просьбу и отослал мне
> эту dll. Я уже набросал каркас оболочки, внешне
> похожей на Каталогизатор. Но возникает ряд
> вопросов:
>
> 1. Из какого файла считывается имя базы данных,
> открывающейся автоматически в начале работы на
> стороне клиента? В файле Cirbisc.ini строка
> DBN=IBIS автоматически изменяется на DBN= сразу
> после запуска Каталогизатора, а без него из моей
> программы, будучи запущенной на машине сервера, не
> происходит регистрация. Считывать irbisc.ini с
> помощью функции IC_getresourse()? Подскажите
> формат вызова. Как получить список всех доступных
> БД на стороне клиента?
Не совсем понял вопрос. Общий контекст работы клиента формируется на основе его ЛИЧНОГО профиля (irbisc*.ini на сервере), который возвращается клиенту в ответ на функцию IC_REG. Дополнительно, для формирования (восстановления) DESKTOP'а клиента используется информация из INI-файла на клиенте (cirbisc.ini секция [DESKTOP])

> 2. С чем может быть связано то, что текст
> отдельных записей не выводится? Например, запись с
> номером 260 из тестовой базы IBIS выводится как
> "x"
>
> (насколько я понимаю, это набор символов
> "x\0\0"). Код для вывода записи используется
> следующий:
>
>
> string text;
> IntPtr record;
>
> ...
> dbAccess.ReadRecord(index + 1, ref record);
> text = dbAccess.PCharToString(record);
>
> ...
> if (selected)
> {
> ShowTable();
> richTextBox1.Text = text;
> }
>
>
> public int ReadRecord(int id, ref IntPtr record)
> {
> record = Marshal.AllocHGlobal(32000);
> int result =
> IRBIS64_Client.IC_read(dbName, id, 0, out record,
> 32000);
> return result;
> }
>
> public string PCharToString(IntPtr rp)
> {
> byte[] textBytes = new byte[32000];
> Marshal.Copy(rp, textBytes, 0,
> 32000);
> byte[] textAnsiArray =
> Encoding.Convert(Encoding.UTF8,
> Encoding.GetEncoding(1251), textBytes);
> string result =
> Encoding.GetEncoding(1251).GetString(textAnsiArray
> );
> StringBuilder finalString = new
> StringBuilder();
> for (int i = 0; i < result.Length &&
> result != '\0'; i++)
> finalString.Append(result);
> return finalString.ToString();
> }
>
>
>
>
> //чтение записи
> public static extern int IC_read(
> string Adbn,
> int Amfn, int Alock,
> out IntPtr answer, int abufsize);
К сожалению, нет времени разбираться в Ваших кодах. Думаю ошибка связана с выделением памяти для возвращаемой записи (выделяет память нужного типа (Pchar) ВЫЗЫВАЮЩАЯ функция)

>
> 3. Можно ли средствами irbis64_client.dll получить
> оформление записи с разметкой в виде каталожной
> карточки (как в окне Полное описание в правом
> нижнем углу Каталогизатора)?
Да, для этого есть команды форматирования...

Re: irbis64_client.dll
Пользователь: S-presso (IP-адрес скрыт)
Дата: 25, February, 2012 18:34

Снова здравствуйте. Приостановил пока свой предыдущий проект, добившись уверенного срабатывания моей системы поиска в тексте пунктов оглавления по регулярным выражениям (переписанной на C#) и сохранения их в записи ЭК. Заинтересована ли Ваша организация в приобретении подобной программы (возможно, оформленной в виде отдельного АРМа или включенной в новую версию Каталогизатора)? Есть еще пара идей по автоматизации работы оператора, которые я оставлю себе на диплом (например, чтобы программа сама определяла, по каким полям записи следует разносить отсканированные с помощью C-Pen или обычного сканера строки из БО в начале книги - этот модуль следует выделить в отдельный АРМ, работающий под .NET, поскольку в этой среде можно подключить C-Pen SDK). При обработке текста оглавления и БО в целях автоматизации всех стадий процесса и исключения необходимости применения связки FineReader + Word придется для их распознавания (во всех случаях за исключением применения C-Pen) вызывать функции какой-нибудь библиотеки OCR. Библиотека, основанная на системе с открытыми кодами Tesseract при распознавании оглавления сборника статей показала себя не с лучшей стороны, что практически исключает возможность ее коммерческого применения в этом качестве. Самая доступная по цене библиотека с поддержкой русского языка - Nicomsoft OCR - справилась намного увереннее, показав результат, близкий к FineReader, но ее использование в программе, предполагающей коммерческое распространение, обойдется в 1400 долларов (за 400 можно приобрести версию для внутреннего использования в своей организации, но я сомневаюсь, что для нашей библиотеки выделят на мою инициативу и такую сумму - разве что покупать самому на свою нищенскую зарплату оператора...) Читал об опыте использования ГПНТБ FineReader Engine, нельзя ли попросить Вас предоставить мне копию этой библиотеки для выполнения дипломного проекта (естественно, любое возможное коммерческое использование я буду согласовывать с Вашей организацией) или обратиться к Abbyy для предоставления какой-нибудь лицензии на использование их продукта в образовательных целях?

Сейчас я работаю над курсовой работой по ИРБИС - создаю веб-оболочку для доступа к ЭК с возможностью заказа книг и регистрации новых читателей. Интерфейс больше напоминает Каталогизатор, чем Читатель. Правильно ли я понимаю, что без приобретения Web-сервера IRBIS 64 реальное применение такой программы затруднительно (у меня постоянно пропадает соединение с сервером, чего не наблюдалось в десктопном клиенте, к тому же кто-то должен постоянно физически присутствовать на стороне сервера и реагировать на возможные ошибки)? Правда, наша организация уже заказала OPAC - можно ли будет заставить работать через Web-шлюз приложение ASP.NET? Сейчас разбираюсь с функциями поиска. В связи с этим последний вопрос - как сделать, чтобы в результате поиска при щелчке на найденные записи ЭК в окне описания записей выделялись красным все найденные термины? Надо применить какую-то функцию к строке форматирования, взятой из файла kk_pth_O (в моем случае), с параметрами в виде слов запроса, и затем передать эту строку функции IC_search?

Re: irbis64_client.dll
Пользователь: psproject (IP-адрес скрыт)
Дата: 07, June, 2012 18:31

Добрый день.
Уважаемый Alio, писал Вам вчера письмо с просьбой выслать библиотеку irbis64_client.dll, дело в том что сейчас начинаем работу с Ирбисом. Может кто нибудь из форумчан у кого есть данная либа может кинуть ее на почту pravedniksoft@yandex.ru, заранее благодарен.

Страницы: <<123>>
Страница: 2 из 3


Извините, только зарегистрированные пользователи могут писать в этом форуме.
This forum powered by Phorum.