Gracias por responderme,
El formulario principal es donde se puede ingresar, modificar o eliminar los usuarios que van a utilizar el programa, si se va a ingresar un nuevo usuario o cambiar la CONTRASEÑA al momento de oprimir el boton POST aparecera una ventana (que esta en la DLL TwPassOk) donde solicita que se ingrese de nuevo la CONTRASEÑA, si esto es igual al campo CONTRASEÑA del formulario principal graba el nuevo usuario o la modificacion de la contraseña, en caso contrario aparece un mensaje donde me informa que las contraseñas no coinciden.
Ahora intento enviar el ModalResult del TwPassOk a una variable Pass de tipo Boolean:
Código Delphi
[-]
library CLDRes;
uses
SysUtils,
Classes,
bsSkinData,
Forms,
Controls,
uPassOk in 'FORM\uPassOk.pas' ;
{$R *.res}
var
Pass : Boolean;
procedure DisplayModalForm(AHandle: THandle; S: String); stdcall;
begin
Application.Handle := AHandle;
with TwPassOk.Create(Application) do
try
ShowModal;
if ModalResult = mrOk then
if S <> pePass.Text then
Pass := False
else
Pass := True
else
Pass := False;
finally
Free;
end;
end;
exports
DisplayModalForm, Pass;
begin
end.
Todo funciona, la ventana me abre en ShowModal, pero no se como leer el valor asignado a esta variable (lo ensayo por ahora en un ShowMessage), me lanza un error (aqui muestro lo escrito en el formulario principal):
Código Delphi
[-]
procedure TwMain.ClickStateChange(Sender: TObject);
var
DllHandle : THandle;
DlgForm: procedure (H : THandle; S: string);stdcall;
Passw: Boolean;
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,'DisplayModalForm');
@Passw := GetProcAddress(DllHandle,'Pass');
DlgForm(Application.Handle, dsUserPASS.AsString);
ShowMessage(BoolToStr(Passw));
finally
FreeLibrary(DllHandle);
end;
end;
Gracias de antemano tu ayuda, si me puedes explicar como utilizar el ShareMem o si se puede solucionar algo en este codigo fuente, me disculpas por tanta molestia pero no soy muy experto en esto.