FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
|||
|
|||
Capturar Errores y/o avisos
Estoy haciendo una aplicacion en la cual copio varios archivos a decenas de equipos de la red, esto lo tengo q hacer seguido. Cuando una maquina esta apagado o no existe la carpeta me manda un error o aviso, lo q quiero es q esos errores me los capture en un edit o listbox en lugar de mostrarlos. Gracias.
__________________
Sergio Esquivel Arredondo T.S.U. Informatica |
#2
|
|||
|
|||
Código:
try copiaArchivo except on E: Exception do memo1.lines.add(E.Message); end; |
#3
|
|||
|
|||
Lo que yo usu es la funcion ShFileopstruct para copiar directorios, subdirectorios y archivos, aqui pongo el codigo para darme a entender un poco mas.
function CopiaTodo(Origen,Destino : String) : LongInt; var F : TShFileOpStruct; sOrigen, sDestino : String; begin Result := 0; sOrigen := Origen + #0; sDestino := Destino + #0; with F do begin Wnd := Application.Handle; wFunc := FO_COPY; pFrom := @sOrigen[1]; pTo := @sDestino[1]; fFlags := FOF_ALLOWUNDO OR FOF_NOCONFIRMATION end; Result := ShFileOperation(F); //aqui me manda el error, aviso o comienza la copia, aqui necesito que si manda error no lo muestre, mas sin embargo el progreso de la copia si, ya puse el try except como me indicaste pero nunca toma el except, la variable result como han de saber devuelve 0 o 1 solamente. Gracias
__________________
Sergio Esquivel Arredondo T.S.U. Informatica |
#4
|
|||
|
|||
mmmmmm, creo que esto es de mal arreglo ya que el error lo envía el propio Windows sin dejar que lo puedas controlar tu.
Lo que se me ocurre que puedes hacer es comprobar la existencia de la carpeta o que la máquina está encendida antes de lanzar la copia. O bien cambiar el proceso de copia y currartelo tu mismo con FindFirst y FindNext (en mi web tienes una demo) Espero que te sirvan las ideas |
#5
|
|||
|
|||
De hecho eso exactamente pasa, windows manda el mensaje y no me deja capturarlo, voy a intentar con tu demo. GRACIAS POR CONTESTAR
__________________
Sergio Esquivel Arredondo T.S.U. Informatica |
#6
|
||||
|
||||
Prueba añadir la bandera FOF_NOERRORUI al campo fFlags. No sé qué versión de Delphi o IE requiera, yo lo probé en Delphi7 e IE 5.5 y funciona como quieres. Esta bandera no aparece en la ayuda de Windows incluida con Delphi pero sí viene documentada en el SDK de Windows:
Cita:
|
|
|
|