Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.07.29;
Скачать: CL | DM;

Вниз

Ошибка при использовании 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;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.02 c
14-95487
vads
2002-06-30 22:10
2002.07.29
Навеяно веткой


1-95399
sergey32
2002-07-16 10:28
2002.07.29
Может дурацкий вопрос


3-95211
Nicolaus
2002-07-05 11:45
2002.07.29
TOracleQuery -> DBGrid


7-95586
Zak
2002-05-14 13:34
2002.07.29
Защита данных на болванке от перезаписи!


1-95411
NewUser
2002-07-16 12:54
2002.07.29
Поток ввода-вывода и массив