|
05.04.2007, 04:13 | #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; Что я сделал не правильно и как исправить? |
|
05.04.2007, 05:19 | #2 |
Участник
|
С количеством параметров вроде разобрался, добавил MyFunction.returns(ExtTypes::void);
возникла друга проблема, теперь пишет что при вызове функции возникла исключительная ситуация. Выяснил что ошибка возникает при передачи строковых параметров. Как правильно передавать строковые параметры? DLL написана в дельфи, параметры функции объявлены как string. |
|
06.04.2007, 08:27 | #3 |
Участник
|
В Delphi принимайте параметы как PChar. Кроме того, в описании функции должно присутствовать stdcall
procedure SomeFunction(параметры : PChar); stdcall;
__________________
Axapta v.3.0 sp5 kr2 |
|
09.04.2007, 10:37 | #4 |
Участник
|
Спасибо, про stdcall забыл
|
|