Español

Cómo: Pausar código de Avenue mientras se ejecuta system.execute()

Resumen

Nota:
La información de este artículo solo se aplica a las versiones 3.x de ArcView GIS. Las instrucciones descritas se aplican para el lenguaje de programación de Avenue, específico de la aplicación ArcView GIS.

La información proporcionada son las instrucciones para pausar una aplicación de Avenue mientras system.execute() ejecuta otro proceso.

Procedimiento

  1. Inicie un editor de texto, por ejemplo, el Bloc de notas o WordPad.
  2. Copie el siguiente código en el editor de texto:
@ECHO OFF 
REM Example.bat
echo ------------------------------------------------- 
echo Esta parte del programa debe: 
echo 1. Ejecutar la aplicación o los comandos que desee.
echo 2. Crear el archivo de marcador cuando termine el n.º 1.
echo ------------------------------------------------- 
PAUSA 
REM Aplicación o comandos de Incser para ejecutar aquí:
ECHO TERMINADO > C:\temp\FINISHED.TXT 
Nota:
La aplicación o los comandos se ejecutarán mientras la aplicación de Avenue que llama está en pausa.
  1. Guarde el archivo como c:\temp\example.bat y salga del editor de texto.
  2. Abra una nueva ventana de script en ArcView.
    1. Active la ventana Proyecto.
    2. Haga clic en el icono de scripts.
    3. Haga clic en Nuevo.
  3. Copie este código en la ventana nueva:
'-- Test_Flag
'-- Esperar a que se complete un proceso externo iniciado con
'-- System.Execute() antes de continuar. 
'
'-- Llamadas: Example.bat 

'-- Comprobar que existe el archivo de marcador.
'-- Cuando se encuentra, eliminar el script que usa av.DelayedRun().
_count = 0
theFlagFile = "c:\temp\finished.txt".AsFileName 
msgbox.info("Iniciando test-for-flag-file" ++ _count.asstring,"") 
if (File.Exists(theFlagFile)) then 
 msgbox.info("Se encontró el archivo de marcador. Avanzando...","") 
' av.run("MyScript_Part2","") 
else 
 _count = _count + 1 
 msgbox.info("No se encontró el archivo. Iniciando bucle de nuevo" ++ _count.asstring,"") 
 av.DelayedRun("test_flag",nil,5) 
end 
  1. Asigne al script el nombre Test_Flag.
    1. Seleccione Propiedades en el menú Script.
    2. Escriba un nuevo nombre en el campo Nombre.
    3. Haga clic en Aceptar.
  2. Seleccione Compilar desde el menú Script.
  3. Abra una segunda ventana de script.
  4. Copie este código en la segunda ventana de script:
'-- MyScript_Part1
'-- Esta sección debe estar en la parte superior del script.
'-- Comprobar que existe el archivo de marcador y eliminarlo si es necesario. 
theFlagFile = "c:\temp\finished.txt".AsFileName 
msgbox.Info(File.Exists(theFlagFile).AsString,"¿El archivo de marcador está ahí?") 
if (File.Exists(theFlagFile)) then 
File.Delete(theFlagFile) 
end 

'-- Inicie aquí su código
For each i in 0..5
  myAnswer = MsgBox.YesNo( "¿Continuar?", "ArcView", TRUE )
  If (myanswer = false) then
  '-- Crear el archivo de marcador y ejecutar el proceso
    System.Execute("c:\temp\example.bat") 
    break
  end
end

'-- Enviar la solicitud Delayed.Run() para crear un bucle y esperar a que
'-- aparezca el archivo de marcador. Si aparece, finalizar,
'-- de lo contrario, ejecutar av.delayed de nuevo desde el script llamado.
av.DelayedRun("test_flag",nil,5)
  1. Asigne a este script el nombre MyScript_Part1.
Nota:
Es necesario dividir la aplicación de Avenue en dos scripts. No existe ningún método para pausar un único script de Avenue y continuar más tarde en la mitad del script. 
  1. Seleccione Compilar desde el menú Script.
  2. Abra una tercera ventana de script.
  3. Copie este código en la ventana nueva.
'-- MyScript_Part2
MsgBox.info("Proceso finalizado","")
'-- Continuar el código aquí. 
  1. Asigne a este script el nombre MyScript_Part2.
  2. Abra MyScript_Part1 y seleccione Ejecutar desde el menú Script.

MyScript_Part1 elimina un archivo de marcador que podría provenir de una ejecución anterior. A continuación, se ejecuta el código de la aplicación. Cuando llegue al punto en que tenga que pausar la aplicación, es decir, cuando responda No al mensaje de Continuar, el script Flag_Test se ejecuta, así como el archivo Example.bat. Flag_Test crea un bucle cada 5 segundos para probar el archivo de marcador. Cuando detecta el archivo de marcador, el script ejecuta el resto de la aplicación al ejecutar MyScript_Part2.