Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 26-05-2005
S.M.S. S.M.S. is offline
Miembro
 
Registrado: jun 2003
Ubicación: España
Posts: 56
Poder: 21
S.M.S. Va por buen camino
Para tratar el mensaje de error, antes de cargar el archivo en en el StringList, utiliza la función FileExists() que devuelve false si el archivo no existe. Luego, dentro del recorrido que haces por las lineas, para averiguar la posición de la cabecera a eliminar utiliza la función pos() y para extraer la frase sin cabecera tienes la función copy().

Espero que con esto puedas montar el código según tus necesidades concretas.

Saludos
Responder Con Cita
  #2  
Antiguo 26-05-2005
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.107
Poder: 34
dec Tiene un aura espectaculardec Tiene un aura espectacular
Hola,

Para el caso de la primera cuestión que planteas, con el permiso de S.O.S. otra opción puede ser algo así:

Código Delphi [-]
 procedure TForm1.Button1Click(Sender: TObject);
 var
   t: TStrings;
 begin
   t := TStringList.Create;
   try
     try
       t.LoadFromFile('C:\archivo.txt');
       // (más instrucciones...)
     except
       on E: EFOpenError do ShowMessage(E.Message);
       on E: Exception do ShowMessage(E.Message);
     end;
   finally
     t.Free;
   end;
 end;
__________________
David Esperalta
www.decsoftutils.com
Responder Con Cita
  #3  
Antiguo 26-05-2005
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Para debate:

Ya alguna vez se debatió acerca de esto y reafirmo mi opinión:

Las excepciones deben usarse para controlar errores que no podemos detectar a tiempo, no para cualquier cosa que un simple condicional previo nos evitaría.

Incluso la misma ayuda de Delphi dice:

Cita:
Empezado por Ayuda de delphi
Conditional statements are often the best way to test for errors. For example, suppose you want to make sure that a file exists before trying to open it. You could do it this way:


Código Delphi [-]
try
  AssignFile(F, FileName);
  Reset(F);  // raises an EInOutError exception if file is not found
except
  on Exception do ...
end;

But you could also avoid the overhead of exception handling by using


Código Delphi [-]
if FileExists(FileName) then  // returns False if file is not found; raises no exception
begin
  AssignFile(F, FileName);
  Reset(F);
end;
// Saludos
Responder Con Cita
  #4  
Antiguo 26-05-2005
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.107
Poder: 34
dec Tiene un aura espectaculardec Tiene un aura espectacular
Hola,

roman, estoy de acuerdo contigo, y, en este caso concreto más todavía si cabe: la ayuda de Delphi me reafirma en lo dicho, pues sus razones tendrá para decir lo que dices que dice (¿tal vez sea más eficiente utilizar la instrucción condicional que no tratar de capturar las posibles excepciones?).

Quizás mi intención al plantear aquí el uso de excepciones partía de lo que se decía más arriba:

Cita:
Al abrirlo con List.Loadfromfile me gustaria poner algun mensaje de error si el archivo no está en la ruta indicada...pero esta instruccion no retorna nada, verdad?
Quería indicar que, efectivamente, podría hacerse algo para comprobar si las instrucciones referidas se llevaban a cabo o no lo hacían y porqué.

En cualquier caso, como digo, estoy de acuerdo contigo: lo leí en cierto libro sobre Delphi de cuyo nombre no consigo acordarme, o tal vez era algún tutorial o artículo o algo así: no se debe abusar del uso de las excepciones y ante la duda es mejor no utilizarlas, venía a decir el texto a que me refiero.

Estoy leyendo ahora La cara oculta de Delphi 4 del amigo Ian Marteens (que es un cachondo mental, que me place leer) y aún no llegué al capítulo en que se trata sobre las excepciones. Probablemente no pueda sino reafirmarme en lo dicho, esto es, darte la razón roman, pero, no como a loco, entiéndase bien.
__________________
David Esperalta
www.decsoftutils.com
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro


La franja horaria es GMT +2. Ahora son las 15:51:47.


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
Copyright 1996-2007 Club Delphi