Форум программистов, компьютерный форум, киберфорум
Delphi: WinAPI
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.50/4: Рейтинг темы: голосов - 4, средняя оценка - 4.50
0 / 0 / 0
Регистрация: 09.06.2015
Сообщений: 13

C# dll функция с output параметрами в Delphi

03.01.2018, 11:40. Показов 864. Ответов 2
Метки c#, dll (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте, есть следующая функция написана на шарпе и помещена в dll библиотеку:
C#
1
2
3
4
5
6
7
namespace GenerateBytesTreaty
{
    public static class GenerateTreaty
    {
        public static int  GetTreatyBi2(int reportId, int copyCount, int treatyId, string reportName, string outPutFormat, int insurance, string pathEndpoint, out byte[] treaty,out string error)
        {/*какой то код . . . */
}}}
Надо подключить эту dll-ку в Delphi 7(извращение какое-то как по мне, но нужно). Пробовал статично подключать, но так програма не запускается, а сразу матерится(очень сильно и много) на адреса и еще что то, короче море ошибок(с самим подключением ок, но с запуском функции начинает ругаться).
Потом переделал на динамическое подключение чтоб прога запускалась и заодно обработчики простенькие дописал чтоб видно было где крашыт. Вот как сейчас выглядит:
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
procedure TMain.N4Click(Sender: TObject);
type
TGetTreatyBi2 = function(reportId:integer; copyCount:integer; treatyId:integer; reportName:string; outPutFormat:string; insurance:integer; pathEndpoint:string; out treaty:TByteDynArray; out error:string ):Integer;// external 'GenerateBytesTreaty';
var 
reportId, copyCount, treatyId, insurance:integer;
reportName, outPutFormat, pathEndpoint:string;
treaty:TByteDynArray;
error:string;
result:integer;
DLLInstance: THandle;
GetTreatyBi2: TGetTreatyBi2;
begin
    DLLInstance := LoadLibrary('GenerateBytesTreaty.dll');
    if DLLInstance = 0 then
        ShowMessage('Error loading Dll!')
    else begin
    @GetTreatyBi2 := GetProcAddress(DLLInstance, 'GenerateBytesTreaty.GenerateTreaty.GetTreatyBi2');
    if @GetTreatyBi2 <> nil then begin
   reportId:=113545;
   copyCount:=1;
   treatyId:=17727040;
   insurance:=6;
   reportName:='NewReportName';
   outPutFormat:='pdf';
   pathEndpoint:='http://10.10.2.68/Services/MyService';
   result:= GetTreatyBi2(reportId, copyCount, treatyId, reportName, outPutFormat, insurance, pathEndpoint, treaty, error);
   if result = 0 then ShowMessage('Cant open Order!');
    end else ShowMessage('Dll procedure error!');
    end
end;
Подскажите пожалуйста где ошибся, думаю что с подключением output параметров, но как правильно сделать не знаю.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
03.01.2018, 11:40
Ответы с готовыми решениями:

Не работает функция DLL с параметрами
Доброго всем времени суток. Без параметров функция работает. Как только начинаю передавать параметры На рисунке видно, что это не DLL,...

Dll: функция с входными параметрами
Простейший пример: Dll library TestDll; uses SysUtils, Classes; procedure test(Par1, Par2, Par3, Par4, Par5:...

Can't load output.dll
Доброго времени. Появилась вот такая надпись - Can't load output.dll - в окнах игр и вот вчера еще и в проигрователях видео. В чем причина...

2
Эксперт .NET
6691 / 4102 / 1607
Регистрация: 09.05.2015
Сообщений: 9,575
03.01.2018, 17:32
Чтобы вызвать C# метод из Delphi, нужно этот метод экспортировать. А встроенных средств для этого в C# нет. Поэтому ищите DLLExport в nuget пакетах.
0
0 / 0 / 0
Регистрация: 09.06.2015
Сообщений: 13
03.01.2018, 18:09  [ТС]
Someone007, спасибо за подсказку, буду искать
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
03.01.2018, 18:09
Помогаю со студенческими работами здесь

DLL с параметрами
Привет. я учусь вызывать функции из DLL у меня такая проблема когда я вызываю из DLL функцию с параметрами то приложение просто напросто...

Что может значить такая ошибка. Ambiguity between 'Output' and 'System::Output'
Если кто может, помогите разобраться с этой ошибкой. Unit1.cpp(85): E2015 Ambiguity between 'Output' and 'System::Output' ...

как сделать в MS VS 2010 express output не в консоль в output windows
сабж заранее спасибо

Запуск файла с параметрами, написанными в DLL
Всем привет! Имеется приложение, которое запускается только с параметром (например: -fist) Надо создать DLL в котором прописано, если...

Как подключить dll, написанную на C, к dll на Delphi
Добрый день! Нужно подключить dll написанную на C к dll на Delphi. Как это можно сделать и можно ли вообще?


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
Установка Qt Creator для C и C++: ставим среду, CMake и MinGW без фреймворка Qt
8Observer8 05.04.2026
Среду разработки Qt Creator можно установить без фреймворка Qt. Есть отдельный репозиторий для этой среды: https:/ / github. com/ qt-creator/ qt-creator, где можно скачать установщик, на вкладке Releases:. . .
AkelPad-скрипты, структуры, и немного лирики..
testuser2 05.04.2026
Такая программа, как AkelPad существует уже давно, и также давно существуют скрипты под нее. Тем не менее, прога живет, периодически что-то не спеша дополняется, улучшается. Что меня в первую очередь. . .
Отображение реквизитов в документе по условию и контроль их заполнения
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеСпецтехники", разработанного в конфигурации КА2. Данный документ берёт данные из другого нетипового документа. . .
Фото всей Земли с борта корабля Orion миссии Artemis II
kumehtar 04.04.2026
Это первое подобное фото сделанное человеком за 50 лет. Снимок называют новым вариантом легендарной фотографии «The Blue Marble» 1972 года, сделанной с борта корабля «Аполлон-17». Новое фото. . .
Вывод диалогового окна перед закрытием, если документ не проведён
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: реализовать программный контроль на предмет проведения документа. . .
Программный контроль заполнения реквизитов табличной части документа
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: 1. Реализовать контроль заполнения реквизита. . .
wmic не является внутренней или внешней командой
Maks 02.04.2026
Решение: DISM / Online / Add-Capability / CapabilityName:WMIC~~~~ Отсюда: https:/ / winitpro. ru/ index. php/ 2025/ 02/ 14/ komanda-wmic-ne-naydena/
Программная установка даты и запрет ее изменения
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: при создании документов установить период списания автоматически. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru