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
Win_Main : TWin_Main;
DIR_MAIN : string;
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
Application.ProcessMessages;
tmpFichero := limpiarNombreDeFichero( ListBox_HOST.Items[0] );
StatusBar.Panels[1].Text := ' ---> Tratando ---> '+tmpFichero;
tmpFileFull := DIR_DOS+OS_Separador+tmpFichero+'.TXT';
if not FileExists( tmpFileFull ) then begin
IdFTPClient.Get(ListBox_HOST.Items[0], tmpFileFull, true, false);
Application.ProcessMessages;
end;
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