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

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

При передаче параметра в DLL вылетает AccessViolation [D7]


alexey_mas ©   (2007-01-15 18:17:00) 

Здравствуйте!
В приложении с помощью 2-х кнопок вызываю DLL

procedure TForm2.Button1Click(Sender: TObject);
var
GetSimpleText1:function(): integer;
LibHandle: THandle;
begin
 @GetSimpleText1 := nil;
 LibHandle := LoadLibrary('shema.dll');
 if LibHandle >= 32 then begin
 @GetSimpleText1:=GetProcAddress(LibHandle,'GetSimpleText1');
 if @GetSimpleText1 <> nil then
 GetSimpleText1();
 end;
 FreeLibrary(LibHandle);

end;



procedure TForm2.Button2Click(Sender: TObject);
var
GetSimpleText2:function(test:integer): integer;
LibHandle: THandle;
begin
 @GetSimpleText2 := nil;
 LibHandle := LoadLibrary('shema.dll');
 if LibHandle >= 32 then begin
 @GetSimpleText2:=GetProcAddress(LibHandle,'GetSimpleText2');
 if @GetSimpleText2 <> nil then
 GetSimpleText2(1);
 end;
 FreeLibrary(LibHandle);
end;


При обработке 2-й кнопки вылетает access violation
в dll функции описал так:


function GetSimpleText2(test:integer): integer; stdcall;
begin
  ShowMessage(IntToStr(test));
  Result := 1;
end;

function GetSimpleText1(): integer; stdcall;
begin
  ShowMessage('hello');
  Result := 1;
end;
exports GetSimpleText2,GetSimpleText1;

Притом Message вот здесь  ShowMessage(IntToStr(test));
после нажатия 2-й кнопки вместо передаваемой 1 кидает 5-ти значное число.

Где туплю? из-за чего AcessViolation вылетает?


alexey_mas   (2007-01-15 18:30:00) [1]

Спасибо уже помогли разобраться в другом окне :)

я вызываю разными кнопками разные функции
первой кнопкой функцию без параметра
второй функцией с параметром

нужно было здесь
procedure TForm2.Button2Click(Sender: TObject);
var
GetSimpleText2:function(test:integer): integer;
stdcall добавить


Johnmen   (2007-01-15 18:25:00) [2]

А где там вызов GetSimpleText1 "после нажатия 2-й кнопки"?


alexey_mas   (2007-01-15 18:19:00) [3]

админу - сорри промазал с разделом форума - если можно то переместить в Общие вопросы


Наверх

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