Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Capturar Errores y/o avisos (https://www.clubdelphi.com/foros/showthread.php?t=7275)

sergio_015 10-02-2004 17:27:36

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.

__cadetill 10-02-2004 17:51:08

Código:

try
  copiaArchivo
except
  on E: Exception do
    memo1.lines.add(E.Message);
end;

Espero te sirva

sergio_015 10-02-2004 20:54:13

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

__cadetill 10-02-2004 21:13:53

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

sergio_015 10-02-2004 21:25:57

De hecho eso exactamente pasa, windows manda el mensaje y no me deja capturarlo, voy a intentar con tu demo. GRACIAS POR CONTESTAR

roman 11-02-2004 06:06:35

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:

Do not display a user interface if an error occurs.
// Saludos


La franja horaria es GMT +2. Ahora son las 03:51:43.

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