FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
|
#1
|
|||
|
|||
Actualizar archivo
Hola, le cuento mi problema... yo tengo el 'p.bat' que me crea el archivo 'ticket.xml.cms' una vez creado, lo tomo y lo pongo en un memo, eso lo hago periodicamente, el tema es que siempre me toma el 'ticket.xml.cms' proximo anterior... es decir que no se actualiza mi 'ticket.xml.cms' antes de que yo lo quiera poner en el memo. Tendria que poner algo entre medio de estas dos lineas que me permita actulizar mi archivo 'ticket.xml.cms'.
winexec('p.bat', SW_HIDE); memo2.lines.LoadFromFile('ticket.xml.cms'); Espero me hayan entendido, de lo contrario con gusto respondere. Gracias desde ya. |
#2
|
||||
|
||||
Creo que tu error puede venir porque accedes al fichero antes de que le de tiempo de generarse, ya que ShellExecute no espera a que se genere el fichero.
Busca en los foros sobre la función: WinExecAndWait32 que ha salido en otras ocasiones. Creo que si en lugar de ShellExecute utilizas esta, dará tiempo a que se genere. Prueba y ya dirás...
__________________
Germán Estévez => Web/Blog Guía de estilo, Guía alternativa Utiliza TAG's en tus mensajes. Contactar con el Clubdelphi P.D: Más tiempo dedicado a la pregunta=Mejores respuestas. |
#3
|
|||
|
|||
A ver... bueno acá esta. encontré una función que tengo desde hace rato ratón.
Te comento que WinExec no se recomienda usarla más. Al menos eso decen los de Microsoft. Sólo quedó por compatibilidad y en su lugar se puede usar CreateProcess o (como hago yo) ShellExecute/ShellExecuteEx. El punto a tener en cuenta a tu problema es la función WaitForSingleObject.
un ejemplo sería: ShellExec('cmd','', SW_NORMAL, true); Si alguien se le ocurre alguna mejora, no duden en avisar así actualizo mi código. Especialmente se puede implementar un TimeOut. Por ejemplo, la función tirar error y/o esperar la intervención del usuario y, por consiguiente, colgarse, esperando indefinidamente. En caso de que se implemente un TimeOut, se puede tomar una acción como terminar el proceso creado o... qué se yo! Recueda de poner el cursor en espera antes y restaurarlo después Paso algunos links de interés http://msdn.microsoft.com/en-us/libr...54(VS.85).aspx http://msdn.microsoft.com/en-us/libr...84(VS.85).aspx http://msdn.microsoft.com/en-us/library/ms682425.aspx http://msdn.microsoft.com/en-us/library/ms687032.aspx Seguro que están en castellano también... |
#4
|
|||
|
|||
hola, muchas gracias por la pronta respuesta... pero he probado con la funcion WinExecAndWait32 y con la ShellExec y en ambas sigue sin actulizarse antes de que yo utilice el archivo. Alguna otra sugerencia... lo necesito si o si
|
#5
|
|||
|
|||
are you sure?
qué hace p.bat? estás seguro que se está ejecutando? porque si ejecutas la función de arriba el control NO es devuelto hasta que lo que mandas a ejecutar no termina.
Haz una prueba y verás: ShellExec('cmd','', SW_NORMAL, true); Application.Terminate; Hasta que no escribes "exit" en la consola de comandos que se levanta, el programa no termina... otra prueba: hice un archivo p.bat conteniendo lo siguiente: echo Hola ClubDelphi! > c:\archivo.prueba Luego en un proyecto nuevo, en el OnFormCreate puse:
Última edición por poyo fecha: 26-01-2009 a las 15:10:19. Razón: un error |
#6
|
||||
|
||||
Otra opción sería intentar renombrar el último antes de generar el nuevo, y luego mandar el BAT.
Tu aplicación podrá esperar hasta que el fichero exista o hasta que se cumpl determinado tiempo de espera. De todas formas, habría que saber porqué lo anterior no está funcionando antes de probar otras cosas.
__________________
Germán Estévez => Web/Blog Guía de estilo, Guía alternativa Utiliza TAG's en tus mensajes. Contactar con el Clubdelphi P.D: Más tiempo dedicado a la pregunta=Mejores respuestas. |
#7
|
|||
|
|||
hola, gracias a todos por sus respuestas. Creo que lo resolvi poniendo Timer entre medio de las dos lineas... porque p.bat se terminaba de ejecutar, pero entre que terminaba y el archivo aparecia en el directorio pasaban unos segundos, y en esos segundo es donde yo lo llamaba con el memo.
|
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
llamar un archivo asi '192.168.1.1:\ruta\archivo.frf' | IVAND | Varios | 5 | 12-04-2008 16:18:54 |
no puedo abrir un archivo con ShellExecute si el archivo es variable | belpab | API de Windows | 2 | 28-11-2007 16:24:22 |
Filosofia/Manejo archivo "cds" Archivo.cds!! | Martín González | Conexión con bases de datos | 1 | 03-05-2007 00:14:23 |
Actualizar Tabla con archivo .txt | bohemioloco | Conexión con bases de datos | 1 | 07-11-2006 15:46:24 |
actualizar | fabriciof | Conexión con bases de datos | 3 | 27-05-2004 14:58:56 |
|