powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Dll 5 версии и Dll12 версии
3 сообщений из 3, страница 1 из 1
Dll 5 версии и Dll12 версии
    #39623654
Guest1231
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день.
Есть 2 Dll первая написана на 5ке, вторая на 12.
Из первой вызываю вторую.
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
function D12DllIntParam(var i:integer):Boolean; StdCall; external 'D12Dll.dll' name 'D12DllIntParam';
{$R *.RES}

function DllSendMail(var MailTo, Body:String):Boolean;
var
i:Integer;
Begin
  showMessage('hi!, Im DllSendMail P='+MailTo+', P='+Body);
  try
  i:=1566;
  Result:=D12DllIntParam(i);
  except
    ShowMessage('D12DllIntParam False!');
    Result:=False;
    Exit;
  end;
  ShowMessage('D12DllIntParam True!');
End;
Exports DllSendMail name 'DllSendMail';



Принимаю вот тут
Код: pascal
1.
2.
3.
4.
5.
6.
7.
function D12DllIntParam(var i:integer):Boolean; stdcall;
begin
  ShowMessage('Hello, Im D12DllIntParam');
  ShowMessage(IntToStr(i));
  Result:=True;
end;
exports D12DllIntParam name 'D12DllIntParam';



Все норм, 1566 показывает.

Но когда делаю вот так, чет ничего не получается и все валится.
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
function D12DllSendMail(var MailTo, Body:String):Boolean; StdCall; external 'D12Dll.dll' name 'D12DllSendMail';
{$R *.RES}
function DllSendMail(var MailTo, Body:String):Boolean;
Begin
  showMessage('hi!, Im Oper P='+MailTo+', P='+Body);
  try
  Result:=D12DllSendMail(MailTo, Body);
  except
    ShowMessage('D12DllSendMail False!');
    Result:=False;
    Exit;
  end;
  ShowMessage('D12DllSendMail True!');
End;

Exports DllSendMail name 'DllSendMail';


Прием тут
Код: pascal
1.
2.
3.
4.
5.
6.
function D12DllSendMail(var MailTo, Body:String):Boolean; stdcall;
begin
  ShowMessage('Hello! Im D12DllSendMail');
  ShowMessage('P1='+MailTo+ ', P2='+Body);
  Result:=True;
end;



Последняя команда которая выполняется
Код: pascal
1.
  ShowMessage('Hello! Im D12DllSendMail');



Если использовать Dll одной версии, то такой беды нет, вот это отрабатывает нормально скомпиленное под 5.
Код: pascal
1.
2.
3.
4.
5.
6.
function D5DllSendMail(var MailTo, Body:String):Boolean; StdCall;
Begin
  ShowMessage('Hello Im D5DllSendMail');
  ShowMessage('Param1='+MailTo+'Param2='+Body);
  Result:=True;
End;



Как мне в Dll 12 версии, из 5-ой передать строковые параметры? Может объектом как-то? Подскажите плз!
...
Рейтинг: 0 / 0
Dll 5 версии и Dll12 версии
    #39623666
ziv-2014
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Guest1231, Для передачи строк между DLL нужно использовать WideString
...
Рейтинг: 0 / 0
Dll 5 версии и Dll12 версии
    #39623669
Guest1231
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ziv-2014, Е-мое.. Спасибо! Все залетало, пойду пиво пить. Хороших выходных!
...
Рейтинг: 0 / 0
3 сообщений из 3, страница 1 из 1
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Dll 5 версии и Dll12 версии
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]