Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Помогите с загрузкой функции из 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


Наверх

Титульная страница Поиск, карта сайта Написать письмо