FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
|
#1
|
|||
|
|||
Problemas al crear una aplicacion
Tengo el código siguiente:
function muestraAAgricola(aHandle:THandle;opcion:integer):boolean;stdCall; var resultado:boolean; begin resultado := true; Application.Handle := aHandle; try try DMBDSiap := TDMBDSiap.Create(Application); // Aquí marca el error FrmAAgricola := TFrmAAgricola.Create(Application); FrmAAgricola.tomaOpcionAnuario(TAnuario(opcion)); DMBDSiap.conectaABDAAgricola(TAnuario(opcion)); FrmAAgricola.ShowModal; except showMessage('Hay errores para abrir el módulo'); end; finally DMBDSiap.Free; FrmAAgricola.Free; end; result := resultado; end; En la línea donde está comentario marca el siguiente error: Debugger Exception Notification Project dprAAgricola.exe raised exception class EOleSysError with message ‘No se ha llamado a CoInitialize. Process stopped. Use Step or Run to continue. Mi pregunta es ¿Qué pasa? Creo las aplicaciones de esta forma y no de la siguiente manera: Application.createForm(TDMBDSiap,DMBDSiap) porque según el libro de Teixeira es mejor el que uso que el que crea delphi por default cuando trabajo con DLL's. |
#2
|
||||
|
||||
CoInitialize es necesaria para cualquier cosa que use COM y normalmente Delphi se encarga de llamarla. Quizá por la forma en que construyes el objeto Delphi no ha llamado a la función. Puedes hacerlo tú mismo:
CoInitialize(nil) Debes incluir la unidad ActiveX. // Saludos |
#3
|
|||
|
|||
Muchas gracias Roman. Sí funcionó así como me dices
|
|
|
|