
11.08.2010, 04:07
|
Прохожий
|
|
Регистрация: 11.08.2010
Сообщения: 3
Репутация: 10
|
|
пробую
создал библиотеку
Код:
library Project2;
uses ShareMem,SysUtils, Classes;
procedure ProcStr(AIn : PChar; AOut : PChar);
begin
StrCopy(AIn, AOut);
end;
exports ProcStr;
begin
end.
пробую вызывать
Код:
unit Unit1;
interface
uses
sharemem,Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm1 = class(TForm)
btn1: TButton;
procedure btn1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
ProcStr:procedure (AIn : PChar; AOut : PChar);
LibHandle: THandle;
implementation
{$R *.dfm}
procedure TForm1.btn1Click(Sender: TObject);
var
AIn, AOut : PChar;
begin
@ProcStr := nil;
LibHandle := LoadLibrary('project2.DLL');
{Если все OK}
if LibHandle >= 32 then begin
@ProcStr := GetProcAddress(LibHandle,'ProcStr');
if @ProcStr <> nil then
AIn := 'aaa';
GetMem(AOut,StrLen(AIn)+1);
ProcStr(AIn,AOut);
ShowMessage(AOut);
end;
FreeLibrary(LibHandle);
FreeMem(AOut, StrLen(AIn)+1);
end;
end.
получаю ошибку памяти.
|