0 / 0 / 0
Регистрация: 01.07.2011
Сообщений: 12
1

Dll: функция с входными параметрами

05.07.2011, 11:28. Показов 1794. Ответов 2
Метки нет (Все метки)

Простейший пример:
Dll
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
library TestDll;
 
uses
  SysUtils,
  Classes;
 
procedure test(Par1, Par2, Par3, Par4, Par5: string);
var Result: string;
begin
  Result := Par1 + #10 + Par2 + #10 + Par3 + #10 + Par4 + #10 + Par5;
end;
 
{$R *.res}
 
exports
  test name 'test';
 
begin
end.
Вызов в приложении:

Delphi
1
2
3
4
5
6
procedure test(Par1, Par2, Par3, Par4, Par5: string); external 'TestDll.dll' name 'test';
 
procedure TForm1.btn1Click(Sender: TObject);
begin
  test('11','22','33','44','55');
end;
Здесь все корректно.

Теперь заменим процедуру функцией:
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
library TestDll;
 
uses
  SysUtils,
  Classes;
 
function test(Par1, Par2, Par3, Par4, Par5: string): string;
begin
  Result := Par1 + #10 + Par2 + #10 + Par3 + #10 + Par4 + #10 + Par5;
end;
 
{$R *.res}
 
exports
  test name 'test';
 
begin
end.
и соответственно

Delphi
1
2
3
4
5
6
7
8
function test(Par1, Par2, Par3, Par4, Par5: string): string; external 'TestDll.dll' name 'test';
 
procedure TForm1.btn1Click(Sender: TObject);
var str: string;
begin
  str := test('11','22','33','44','55');
  ShowMessage(str);
end;
ShowMessage по кнопке отрабатывает, но сразу вслед за ним "Неверная операция с указателем". Где грабли? В упор не вижу
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
05.07.2011, 11:28
Ответы с готовыми решениями:

функция за 2 входными параметрами
есть такая задачка ...прошу помочь спосибо определить функцию которая за 2 входными параметрами...

Функция с пустыми входными параметрами, результат которой скалярное выражение (create function)
Помогите пожалуйста написать функцию именно с пустыми входными параметрами, не понимаю как это...

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

C# dll функция с output параметрами в Delphi
Здравствуйте, есть следующая функция написана на шарпе и помещена в dll библиотеку: namespace...

2
13084 / 5869 / 1706
Регистрация: 19.09.2009
Сообщений: 8,808
05.07.2011, 11:53 2
A-MaR, прочитай вот эти посты:
Обмен строковыми данными с DLL.
Передача строк в DLL.
0
0 / 0 / 0
Регистрация: 01.07.2011
Сообщений: 12
05.07.2011, 12:04  [ТС] 3
хм... покопался еще - оказывается дело не в параметрах, а в длине строки, формируемой функцией test. Ошибка начинает выдаваться, когда длина строки > 3 символов.
Это все относилось к Delphi7. На 2007 же вообще все работает без ошибок. Какие-то проблемы с dll-ками в семерке?

Добавлено через 5 минут
Цитата Сообщение от Mawrat Посмотреть сообщение
Спасибо, почитаю
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
05.07.2011, 12:04
Помогаю со студенческими работами здесь

Хранимые процедуры с входными параметрами
Здравствуйте! Пишу на C# клиент. Существует несколько ComboBox, из которых пользователь выбирает...

Перезагрузка программы с заданными входными параметрами
Добрый день. В общем есть программа, которая на вход получает имя файла конфигурации. Нужно ее...

Создание процедуры с входными параметрами и курсором
Никак не могу найти ошибку в запросе (SQLQuery11) Создать процедуру с входными параметрами и...

Объясните разницу между входными и выходными параметрами
Здравствуйте, объясните мне пожалуйста разницу между входными и выходными параметрами в хранимых...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru