Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

 
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 09.09.2010, 08:50
kirillka21 kirillka21 вне форума
Прохожий
 
Регистрация: 09.09.2010
Сообщения: 1
Репутация: 10
По умолчанию Загрузка процедуры из DLL - ошибка

Всем привет. Проблема в следующем. Есть библиотека Login.dll, которая вызывает открытие формы ввода пароля и юзернэйма. Вообщем вот...
Код:
library LOGIN;
uses
SysUtils,
Classes,
uLogin in 'uLogin.pas' {fLogin},
uLoginData in '..\common\uLoginData.pas';

{$R *.res}
exports
ShowLoginDialog name ' ShowLoginDialog';

begin
end.


Далее...сама ShowLoginDialog

unit uLogin;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls,uLoginData;

type
TfLogin = class(TForm)
Label1: TLabel;
Label2: TLabel;
ebUserName: TEdit;
ebPassword: TEdit;
btnOK: TButton;
btnCancel: TButton;
procedure FormShow(Sender: TObject);
procedure btnOKClick(Sender: TObject);
procedure btnCancelClick(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
LoginData: TLoginData;
end;
procedure ShowLoginDialog(Handle: Thandle; p: pointer);
var
fLogin: TfLogin;

implementation

{$R *.dfm}
procedure ShowLoginDialog(Handle: Thandle; p: pointer);
Begin
Application.Handle:= Handle;
fLogin:=Tflogin.Create(Application) ;
flogin.LoginData:=TLoginData(p);
fLogin.ShowModal;
fLogin.Free;
End;

procedure TfLogin.FormShow(Sender: TObject);
begin
ebPassword.Text:='';
end;

procedure TfLogin.btnOKClick(Sender: TObject);
begin
LoginData.user_id:=ebUserName.Text;
LoginData.password:=ebPassword.Text ;
LoginData.Modalresult:=mrOk;
end;

procedure TfLogin.btnCancelClick(Sender: TObject);
begin
LoginData.Modalresult:=mrCancel;
end;

end.

И непосредственно сам код главного модуля...

procedure TfMain.soed1Click(Sender: TObject);
type TShowLoginDialog=procedure(Handle:T Handle; pointer );
var
hLib: Thandle;
Showlogindialog: TshowloginDialog;
Logindata:Tlogindata;
begin
HLib:=LoadLibrary('Login.DLL');
if hlib<32 then
Begin
Showmessage('отсутствует библиотека login.dll');
exit;
End;
LoginData:=TloginData.create;
Showlogindialog:=TshowloginDialog(G etProcAddress(hLib,'SHOWLOGINDIALOG '));
Showlogindialog(Application.Handle, LoginData);//ВОТ ЗДЕСЬ ОШИБКА!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!
Freelibrary(hLib);

if LoginData.modalresult=mrOk then
Begin
try
with fDM.DataBase1 do
Begin
if Connected then Close;
LoginPrompt:=false;
Params.Values['Password']:=Trim(LoginData.password);
Params.Values['User name']:=Trim(LoginData.user_id);
Open;
End;
Statusbar1.simpletext:='Yes';
except
Statusbar1.simpletext:='No';
End;
End;

end;
Admin: Пользуемся тегами!

Вообщем вылазить ошибка где указал и там написано access violation at address 00000000. Read of address 0000000. Вообщем почему то не вызывается процедура showlogindialog, экспортируемая из DLL.
Что это может быть я не знаю. Будьте добры помогите!!!

Последний раз редактировалось Admin, 09.09.2010 в 09:59.
Ответить с цитированием
 


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 22:11.


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2025