![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Помогите с загрузкой функции из DLL [D6, WinXP]
_Garry © (2004-07-30 10:57:00)libraryMydll;
uses
Windows,SysUtils,
Classes;
function AddSpace(S:String;FullDl:Integer;
Fill:String):String; stdcall;
var
i:Integer;
begin
Result:='';
for i:=0 to (FullDl-Length(S)) do
S:=S+Fill;
Result:=S;
end;
exports
AddSpace;
begin
end.
unit Unit1;
.......
implementation
function AddSpace(S:String;FullDl:Integer;
Fill:String):String;stdcall;external 'mydll.dll';
{$R *.dfm}
procedure TForm1.Button2Click(Sender: TObject);
begin
Label1.Caption:=AddSpace(Edit1.Text,20,' +');
end;
Вот в таком виде ругается 'Invalid pointer operation', но если продолжить выполнение, функция отрабатывается. Динамическая загрузка тоже выдаёт ошибку.
Заранее благодарю.
_Garry (2004-07-30 14:01:00) [1]Спасибо большое, джентельмены, помогло.
Удачи всем!
Sancho (2004-07-30 11:02:00) [2]Если ты передаешь строки в библиотеку, то надо использовать либо тип PChar, либо подключать модуль ShareMem (он должен быть первым в списке uses как библиотеки, так и приложения ее вызывающего). Проблема в том, что у библиотеки и приложения разные менеджеры памяти.
TUser (2004-07-30 11:01:00) [3]uses ShareMem
Reindeer Moss Eater (2004-07-30 11:00:00) [4]Прочитай внимательно комментарий, автоматически вставляемый IDE в файл проекта DLL