Форум программистов, компьютерный форум, киберфорум
Наши страницы
Delphi
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.50/6: Рейтинг темы: голосов - 6, средняя оценка - 4.50
serebr2
0 / 0 / 0
Регистрация: 02.11.2013
Сообщений: 5
#1

Как использовать в Delphi dll из .Net

02.11.2013, 22:16. Просмотров 1010. Ответов 8
Метки нет (Все метки)

Всем здравствуйте.

Задача: разработать библиотечное приложение (работа с библиотечным сервером и субд oracle).
Для работы с библиотечным сервером используется протокол Z3950.
API - http://zoom.z3950.org/api/zoom-1.4.html
DLL под разные языки (кроме delphi): http://zoom.z3950.org/bind/index.html

На C# код, который работает:

C#
1
2
3
4
5
6
7
8
9
// ...
IConnection connection = IConnectionFactory.Create("127.0.0.1", 210);
connection.DatabaseName = "books";
connection.Username = "";
connection.Password = "";
Encoding encSource = Encoding.UTF8;
Encoding encTarget = Encoding.GetEncoding(1251);
IResultSet results = connection.Search(query);
// ...
Возможно ли использовать в Delphi dll, из других языков?
Может быть подскажите доступный пример или сможете реализовать это подключение? (работу оплачу).
Читаю, пробую разные варианты подключения dll из .Net, но пока получаю только фатальные ошибки.
Или проще забыть про этот вариант и разрабатывать приложение на другом языке?
Спасибо всем откликнувшимся.

PS: прошу сильно не пинать, за формулировки.

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
02.11.2013, 22:16
Ответы с готовыми решениями:

Как в Delphi использовать исходники на C/C++?
Есть набор исходников на C/C++. Как можно их использовать в Delphi? Может...

Как уменьшить размер исполняемого файла, созданного в Delphi 7 (как использовать KOL)
Здравствуйте! Подскажите, пожалуйста, как уменьшить размер исполняемого файла,...

Как подключить dll библиотеку к проекту Delphi 7?
Передаю гет на https как описано в этой статье - http://devdelphi.ru/?p=1192 но...

Что использовать - Delphi XE6 или Delphi 7?
Delphi EX6 или Delphi 7? Какая разница(интерфейс не трогать)? Где больше...

Delphi dll
Написал на Delphi dll с функцией для переворачивания изображения лежащего в не...

8
dondublon
2125 / 1044 / 210
Регистрация: 17.03.2012
Сообщений: 6,350
Записей в блоге: 5
05.11.2013, 10:42 #2
Самому лень смотреть разбираться, но советую внимательно посмотреть биндинг для C#.
C++ не вариант (я посмотрел), потому что там h-файлы.
Итак, вопрос 1 - что такое IConnectionFactory и откуда он берётся.
Возможные варианты - COM-интерфейс, это было бы лучше всего, delphi хавает com без проблем.
Чисто дотнетовский интерфейс, это хуже. Подцепить из delphi можно, но придётся повозиться, и тогда встанет вопрос - а стоит ли овчинка выделки.
Совет - если пишете приложение с нуля, т.е. нет накопленного массива кода, действительно выбрать другой язык, что-нибудь из мейнстрима.
0
serebr2
0 / 0 / 0
Регистрация: 02.11.2013
Сообщений: 5
05.11.2013, 11:55  [ТС] #3
Накопленного кода нет, выбор языка и среды разработки обусловлен своим опытом.
А опыт в работе с delphi есть, а в C# несравнимо меньше. исходя из этого думал, что разработать в дельфи будет быстрее, но надо подключить специфическую функцию получения данных.

В C# (демо пример есть в VS 2005) подключается 2 dll файла, в них есть все классы по работе с библиотечным сервером (протокол Z3950), и в частности IConnectionFactory.
0
dondublon
2125 / 1044 / 210
Регистрация: 17.03.2012
Сообщений: 6,350
Записей в блоге: 5
05.11.2013, 12:24 #4
Цитата Сообщение от serebr2 Посмотреть сообщение
В C# (демо пример есть в VS 2005) подключается 2 dll файла, в них есть все классы по работе с библиотечным сервером (протокол Z3950), и в частности IConnectionFactory.
Ну, тогда смотрите, разбирайтесь.
Могу предположить, что это не COM, хотя окончательно сказать не могу.
Можно написать свою COM-обёртку над этими классами и так подцепить из delphi. Но лучше делать это на с++, т.к. ради одной обёртки завязываться на дотнет нехорошо.

Ну и по выбору языка, советую всё-таки C# тогда.
Подключение вашей либы - это только первая проблема, с которой вы столкнулись из-за выбора Delphi.
0
serebr2
0 / 0 / 0
Регистрация: 02.11.2013
Сообщений: 5
05.11.2013, 22:20  [ТС] #5
понял, спасибо!
0
Mawrat
12823 / 5731 / 1700
Регистрация: 19.09.2009
Сообщений: 8,807
06.11.2013, 09:52 #6
Реализацию для VBasic можно взять. Там, доступ, как раз, через COM реализован.
Из документации:
Visual Basic
1
2
3
4
5
6
7
  Set zoom = WScript.CreateObject("VBZOOMC.ZoomFactory")
  Set zconn = zoom.CreateZoomConnection("z3950.loc.gov", 7090)
  zconn.SetOption "databaseName","Voyager"
  zconn.SetOption "preferredRecordSyntax", "USmarc"
  Set zquery = zoom.CreateZoomQuery("@attr 1=7 0253333490")
  Set zrs = zconn.Search(zquery)
  WScript.Echo zrs.GetRecord(0).RenderRecord
На Delphi будет так:
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
uses
  ComObj;
...
var
  //В Delphi 6 и более ранних версиях - OleVariant.
  zoom, zconn, zquery, zrs : Variant;
begin
  zoom := CreateOleObject('VBZOOMC.ZoomFactory');
  zconn := zoom.CreateZoomConnection('z3950.loc.gov', 7090);
  zconn.SetOption('databaseName','Voyager');
  zconn.SetOption('preferredRecordSyntax', 'USmarc');
  zquery := zoom.CreateZoomQuery('@attr 1=7 0253333490');
  zrs := zconn.Search(zquery);
  ShowMessage(zrs.GetRecord(0).RenderRecord);
end;
Добавлено через 37 секунд
И DLL, которая в Си (C, C++) используется - может быть её тоже можно применить.
1
serebr2
0 / 0 / 0
Регистрация: 02.11.2013
Сообщений: 5
06.11.2013, 10:59  [ТС] #7
Работает! Спасибо большое!
0
dondublon
2125 / 1044 / 210
Регистрация: 17.03.2012
Сообщений: 6,350
Записей в блоге: 5
07.11.2013, 09:16 #8
Пока вы не совершили очень дорогую ошибку, накидаю вам сцылок из холиваров (в обратном хронологическом порядке):
Почему Delphi считают умершим?!
Pascal vs C++
Delphi vs All
Delphi умер?

Я там активно высказываюсь, может, это поможет вам принять правильное решение.
0
serebr2
0 / 0 / 0
Регистрация: 02.11.2013
Сообщений: 5
07.11.2013, 13:23  [ТС] #9
С удовольствием бы попробовал реализовать в Visual Studio.
Поставил себе Express 2013.
Структуру классов не знаю, читать только начал... Привычных компонентов из Delphi не увидел... Итого за день работы сделал очень мало.

В дельфи за день сделал нужный интерфейс, прикрутил поиск в библиотечной базе. Осталось извлечь данные с SQL сервера, и записать в таблицу Oracle (вот такой вот зоопарк).
Сделаю этот этап (заказчик просит к новому году), тогда снова можно вернуться к Visual Studio.
Мне как новичку очень не хватает визуальности. Попробовал еще SharpDevelop - тоже не увидел как быстро и визуально построить интерфейс.
0
07.11.2013, 13:23
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
07.11.2013, 13:23

dll в Delphi
Доброго времени суток! Возникла необходимость в написании библиотеки (в ней...

DLL (плагин) на Delphi
Есть заголовочный файл для создания длл на C (.h файл). Хочу переложить...

Delphi DLL ПОМОГИТЕ!
Нужно написать DLL: 1) Расстояние между двумя точками с координатами (x1, y1,...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru