Форум: "Основная";
Текущий архив: 2002.07.29;
Скачать: [xml.tar.bz2];
ВнизОшибка при использовании DLL !!! беда :) Найти похожие ветки
← →
strel (2002-07-16 20:09) [0]при использованиии этого юнита и DLL"ки выдается ошибка
"invalid pointer operationm" (при выходе из программы)
подскажите !!! уже 3 дня мучаюсь
//////////////////////////////////////////////////////////////
// текст DLL
//////////////////////////////////////////////////////////////
unit Unit2;
interface
uses ShareMem, Dialogs;
type
rec_type = record
x, y : PChar;
z : byte;
end;
procedure ShowName( var rec : rec_type ); stdcall;
implementation
procedure ShowName( var rec : rec_type ); stdcall;
begin
rec.x:="xxx";
rec.y:="yyy";
rec.z:=20;
//ShowMessage(s);
{
s:="change";
ShowMessage(s);
}
end;
end.
//////////////////////////////////////////////////////////////
// текст юнита, который испорльзует DLL
//////////////////////////////////////////////////////////////
unit dll_load_form_u;
interface
uses
ShareMem, Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Buttons;
type
Tdll_load_form = class(TForm)
GroupBox1: TGroupBox;
SpeedButton1: TSpeedButton;
procedure SpeedButton1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
rec_type = record
x, y : PChar;
z : byte;
end;
TMyProc = Procedure(p1,p2 : word);
var
dll_load_form: Tdll_load_form;
__Handle : THandle;
__showName : procedure( var rec : rec_type ); stdcall;
implementation
procedure LoadDll();
var
s : string;
s1 : string;
_rec : rec_type;
begin
s:="abcdef";
__Handle:=LoadLibrary("DLL\dll_test.dll");
if (__Handle<32) then
begin
ShowMessage("Не могу загрузить Dll !");
exit;
end;
try
__ShowName:=getProcAddress(__handle,"_ShowName");
__ShowName(_rec);
ShowMessage(_rec.x);
finally
__ShowName:=nil;
FreeLibrary(__Handle);
__Handle:=0;
end
end;
{$R *.dfm}
procedure Tdll_load_form.SpeedButton1Click(Sender: TObject);
begin
LoadDll();
end;
end.
← →
Serg Gurin (2002-07-16 23:23) [1]У меня таже проблема - если что узнаешь подкинишь решение?
Заранее спасибо.
← →
NailS (2002-07-17 10:31) [2]Попробуй ка не
rec.x:="xxx";
а
move("xxxasrgasdrg",rec.x,length("xxxasrgasdrg"));
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2002.07.29;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.006 c