Hola a todos,
Estoy realizando un programa en el cual hay un campo CONTRASEÑA si el usuario graba los cambios aparecera una ventana (la cual esta incluida en la DLL) donde se solicita confirmar la contraseña, el programa verificara que ambas contraseñas sean iguales, esto lo confirma por medio de una funcion (incluida tambien en la DLL), el intento lo hice por medio de un PROCEDURE (para que apareciera la ventana y no hubo inconveniente) pero al realizarlo con una FUNCTION me genera un error:
Access violation at address 00000000. Read of address 00000000.
Alguien podriame decirme donde tengo el error??, adjunto el codigo fuente:
Código Delphi
[-]
library CLDRes;
uses
SysUtils,
Classes,
bsSkinData,
Forms,
Controls,
uPassOk in 'FORM\uPassOk.pas' ;
{$R *.res}
function ConfirmPass(S: string; H: THandle): Boolean; stdcall;
begin
Application.Handle := H;
with TwPassOk.Create(Application) do
try
ShowModal;
if ModalResult = mrOk then
if S = '' then Result := False
else
if S <> pePass.Text then
Result := False
else
Result := True
else
Result := False;
finally
Free;
end;
end;
exports Mensajes, ConfirmPass;
begin
end.
- Codigo Fuente del programa
Código Delphi
[-]
procedure TwMain.ClickStateChange(Sender: TObject);
var
DllHandle : THandle;
Error : function (I: Integer): String; stdcall;
DlgForm: function (S: string; H: THandle): Boolean; stdcall;
begin
with wDataModule do
if dsUser.State = dsInsert then
if (Sender as TbsSkinButton).Name = 'btAdmPost' then begin
try
DllHandle := LoadLibrary('CLDRes.dll');
@DlgForm := GetProcAddress(DllHandle,'ConfirmPass');
if DlgForm(dbeAdmPass.Text,Application.Handle) = True then
ShowMessage('Si') else ShowMessage('no');
finally
FreeLibrary(DllHandle);
end;
end;
end;
Agradesco de antemano la colaboracion brindada.