Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Llamar desde aplicación DOS una Delphi 6 o 7 (https://www.clubdelphi.com/foros/showthread.php?t=11690)

lavtaro 22-06-2004 18:08:16

Llamar desde aplicación DOS una Delphi 6 o 7
 
:confused: Hola

Tengo el siguiente problema. Necesito llamar desde una aplicación DOS una aplicación Delphi 6, para tomar un archivo de texto generado por la aplicación DOS. Este archivo lo voy a traspasar a una base de datos para efectuar operaciones con estos datos. Como puedo crear una aplicación que sea eficiente al ser llamada repetidas veces. Será posible llamar desde la aplicación DOS solamente una parte de la aplicación en DELPHI (la parte que importa el archivo de texto) para no tener que habrir repetidamente la base de datos.

De antemano muchas gracias.

Gydba 22-06-2004 18:43:45

Le verdad es que siempre vi llamadas de Delphi a DOS pero no la inversa ¿?, sin embargo Delphi permite compilar proyectos en modo consola (no sé si todas las versiones) así que podrías ver por ese lado, es decir constuirte un módulo intermedio entre ambas.

jachguate 22-06-2004 18:49:23

¿En que lenguaje está programada tu aplicación DOS?

lavtaro 23-06-2004 01:52:22

Mi aplicación DOS está hecha en DataEase.

Quiero traspasar un informe a una base de datos. Los pasos de la apicación DOS son los siguiente:

- Generar informe a texto.
- Llamar aplicación en Delphi para que importe el informe.

La aplicación en Delphi debe hacer lo siguiente:

- Abrir la base de datos (debo escoger pero quiero hacerlo con Interbase 6)
- Importar el informe.
- Generar otro informe en Delphi.

Mi duda es si al abrir repetidamente la base de datos puede volverse lento.
Este informe es emitido en forma muy frecuente. Se puede en delphi mantener la base de datos abierta y solamente llamar desde Dos la parte que importa los datos.


De antemano muchas gracias.

roman 23-06-2004 02:22:14

Yo desconozco DataEase (y de hecho también Interbase) así que el primer punto a aclarar aquí sería saber si DataEase tiene algún comando para ejecutar un programa externo. De no ser así pues veo pocas posibilidades de comunicarte desde DataEase a Delphi.

Lo que pensaría así en primera instancia sería dejar abierta la aplicación Delphi y que continuamente esté checando la existencia del fichero que genera DataEase. En cuanto vea que está presente lo importa y lo borra.

En lo que concierne a la baja de rendimiento por estar haciendo esto frecuentemente yo no creo que haya que preocuparse mucho, Interbase es un servidor sólido y quiero pensar que está diseñado para soportar muchos accesos.

// Saludos

jachguate 23-06-2004 03:36:28

Mi pregunta iba por la línea de si la aplicación de DOS tiene acceso al API de windows. Por ejemplo, una aplicación hecha en modo protegido, con turbo pascal 7, podria llamar a una función en una DLL y tener acceso al API de windows.

Si DataEase te da esta facilidad, podes incluso enviar un mensaje a la aplicación en delphi con PostMessage.

Para evitar la complejidad de detectar la aplicación en delphi... podes establecer el hWnd a HWND_BROADCAST, de manera que el mensaje sea enviado a todas las aplicaciones.

Hasta luego.

;)

jachguate 23-06-2004 03:40:26

No creo que unas cuantas conexiones/desconexiones de la base de datos te den problema... aunque ciertamente consumirán tiempo de proceso.

Otra posibilidad, además de lo ya dicho por roman y por mi en mi mensaje anterior, y suponiendo que DataEase no te da acceso al API de windows. para evitar la conexión/desconexión repetida, sería tener una aplicación corriendo siempre en la máquina, que sea la que esté conectada a la base de datos, y una segunda aplicación que se encargue solamente de "señalar" a la primera. Ambas hechas en delphi, la primera GUI y la segunda de consola.

De esta manera, la segunda aplicación alcanzaría un tamaño realmente pequeño (unos cuantos Kb), de manera que se cargaría rápidamente a memoria. Al ser invocada, simplemente enviaría un mensaje a la aplicación GUI para que realice su trabajo.

Hasta luego.

;)


La franja horaria es GMT +2. Ahora son las 18:50:09.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi