A Vuelta Con El Control De Procesos


Objetivo: A Vuelta Con El Control De Procesos
Creo que, efectivamente, el calor me ha derretido la sesera y estoy más ciego que un gato de yeso.
He leído con detalle lo que he podido sobre el control de procesos y no hay manera de conseguir desviar la salida estándar...
Aquí tenéis un extracto de código de El Generador de Copias de Seguridad de MySQL que acabo de subir a este foro.
PRIVATE Proc AS Process

PRIVATE SUB Process_Read() 'este evento ocurre cuando el comando genera una salida, se supone
DIM cad AS String
LINE INPUT #Proc, cad
texto.text = cad & "\n" & texto.Text
END

PRIVATE SUB Process_Error(cad AS String) 'este evento ocurre cuando el comando genera un error, se supone
texto.text = cad & "\n" & texto.Text
END

PUBLIC PROCEDURE restaurar(Camino AS String, Copia AS String, OPTIONAL texto AS Object)

DIM anums AS NEW Integer[]
DIM anums2 AS NEW Integer[]
DIM n AS Integer
DIM pasadas AS Integer
DIM carpeta AS String
DIM elpath, scad AS String

comun.Colate = If(comun.Colate, comun.Colate, " /*!40100 DEFAULT CHARACTER SET utf8 COLLATE utf8_spanish_ci */")

Copia = Camino &/ Copia
carpeta = Left(Copia, RInStr(copia, ".") - 1)
TRY MKDIR carpeta
texto.Text = ("Procesando copia \n")
WAIT 0.1
conDestino.conectar
texto.Text = ("Descomprimiendo copia \n") & texto.text
WAIT 0.1
elpath = Mid(Copia, 2, RInStr(Copia, "/") - 1)
IF Right(camino, 1) <> "/" THEN camino &= "/"
' SHELL "pax -rzvf " & Copia & " -s," & elpath & "," & camino & "," WAIT 'Esto funciona, y deja un rastro en la consola de gambas
Proc = SHELL "pax -rzvf " & Copia & " -s," & elpath & "," & camino & "," FOR READ 'Esto también funciona, pero no deja rastro en ningún sitio...
WHILE Proc.State = process.Running
WAIT 0.1 'Esto es un intento de ver en tiempo de ejecución que pasa... pero no veo na, claro
WEND

...
...
...

END

¿Alguien puede orientarme de por qué la llamada a SHELL (o EXEC, que las dos cosas he probado) no levanta el evento Process_Read?

última edición por shordi el Viernes, 30 Julio 2010, 12:20; editado 1 vez
Perfil MP  
Objetivo: Re: A Vuelta Con El Control De Procesos
Quizás debas utilizar el nombre de instancia para el manejador de los eventos de ese proceso:

DIM proc as Process

PUBLIC SUB proc_Read()
'...
END


No estoy muy seguro porque no lo he probado, pero lo que sí es seguro es que el manejador debe declararse como Público para funcione.


Saludos

Perfil MP  
Objetivo: Re: A Vuelta Con El Control De Procesos
Lo probaré Jesús. Gracias.

Perfil MP  

Página 1 de 1


  
No puede crear mensajes
No puede responder temas
No puede editar sus mensajes
No puede borrar sus mensajes
No puede votar en encuestas
No puede adjuntar archivos
Puede descargar archivos
No puede publicar eventos en el calendario

   

Está utilizando la versión (Lo-Fi). Para ver la versión completa del foro, haga clic aquí.

Powered by Icy Phoenix based on phpBB
Design by DiDiDaDo

Página generada en:: 0.282s (PHP: -68% SQL: 168%)
Consultas SQL: 24 - Debug off - GZIP Activado