Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

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

Grupo de Teaming del ClubDelphi

 
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 03-09-2004
Avatar de salvica
salvica salvica is offline
Miembro
 
Registrado: mar 2004
Ubicación: Albacete (España) ... En un lugar de la Mancha ...
Posts: 304
Poder: 21
salvica Va por buen camino
Problema con EAccessViolation en Disco Duro

Ante todo disculpad si la pregunta no corresponde a este foro pero me parecia que era el más apropiado

El problema es el siguiente:
Estoy pasando una aplicación en Delphi-3 a Delphi-7, utilizando objetos Indy y preparando la aplicación para que corra en Windows y Linux, por lo que he declarado una constante global "OS_Separador" de la siguiente forma
Código Delphi [-]
  {$ifdef LINUX}
  const  OS_Separador = '/';
  {$else}
  const  OS_Separador = '\';
  {$endif}
  
  var
  {
    variables globales del proceso
  }
    Win_Main     : TWin_Main;
    DIR_MAIN     : string; //-----> el directorio de trabajo (C:\DATOS)
En una unidad aparte, leo los ficheros que contiene un TListBox y si no existen en el directorio de descarga los bajo con un TIdFtpClient
Código Delphi [-]
    DIR_DOS = DIR_MAIN + OS_Separador + 'TEXTOS';
    while ListBox_HOST.Items.Count>0 do begin
        { evitar el cuelgue del sistema }
          Application.ProcessMessages;
        { cambiar blancos, puntos y comas del nombre de fichero por "_" }
          tmpFichero := limpiarNombreDeFichero( ListBox_HOST.Items[0] );
          StatusBar.Panels[1].Text := ' ---> Tratando ---> '+tmpFichero;
          tmpFileFull              := DIR_DOS+OS_Separador+tmpFichero+'.TXT';
          //tmpFileFull              := DIR_DOS+'\'+tmpFichero+'.TXT';
          if not FileExists( tmpFileFull ) then begin
          { descargar el fichero del servidor }
            IdFTPClient.Get(ListBox_HOST.Items[0], tmpFileFull, true, false);
          { evitar el cuelgue del sistema }
             Application.ProcessMessages;
          end;
        { eliminar el fichero tratado }
          ListBox_HOST.Items.Delete( 0 );
    end;
El problema radica en que cuando utilizo la constante OS_Separador como parte del nombre del fichero, el sistema me dá el siguiente mensaje de error:
class EAccessViolation with message 'Access violation at address 00000003'. Read of address 00000003
y no me deja continuar, sin embargo si no utilizo la constante la descarga se realiza con normalidad ¿?

He probado a incluir un try except end; y no me salta excepción alguna, por lo que opté a incluir el segundo Application.ProcessMessages

Creo que solo queda decir que uso wXP Prof. y que si ejecuto la aplicación fuera del IDE no da ningún problema ¿? pero, claro, necesito correrla en el IDE para depurarla



Última edición por salvica fecha: 03-09-2004 a las 21:18:37.
Responder Con Cita
 



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 20:23:09.


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