![]() |
#1 |
Участник
|
Есть dll, в ней функция с шестью строковыми параметрами.
пишу джоб Код: static void TestFunction(Args _args) { DLL MyDLL = new DLL("SomeDll.dll"); DLLFunction MyFunction = new DLLFunction(MyDLL, "SomeFunction"); ; MyFunction.arg(ExtTypes::String, ExtTypes::String, ExtTypes::String, ExtTypes::String, ExtTypes::String, ExtTypes::String); MyFunction.call("text1","text2","text3","text4","text5","text6"); } Функция DLL точно сожержит шесть строковых параметров. При вызове из проекта написанного в дельфи Код: var Form1: TForm1; procedure MyFunc(Param1,Param2, Param3,Param4, Param5,Param6:string ); external 'SomeDll.dll' name 'SomeFunction'; implementation {$R *.dfm} procedure TForm1.Button1Click(Sender: TObject); begin MyFunc('text1','text2','text3','text4','text5','text6'); end; Что я сделал не правильно и как исправить? |
|
![]() |
#2 |
Участник
|
С количеством параметров вроде разобрался, добавил MyFunction.returns(ExtTypes::void);
возникла друга проблема, теперь пишет что при вызове функции возникла исключительная ситуация. Выяснил что ошибка возникает при передачи строковых параметров. Как правильно передавать строковые параметры? DLL написана в дельфи, параметры функции объявлены как string. |
|
![]() |
#3 |
Участник
|
В Delphi принимайте параметы как PChar. Кроме того, в описании функции должно присутствовать stdcall
procedure SomeFunction(параметры : PChar); stdcall;
__________________
Axapta v.3.0 sp5 kr2 |
|
![]() |
#4 |
Участник
|
Спасибо, про stdcall забыл
![]() |
|