PDA

Ver la Versión Completa : Error con put del componente TIDFTP en Delphi5


Soa Pelaez
18-10-2018, 22:41:54
Buenas tardes compañeros

Me esta sucediento un error con el componente TIDFtp al realizar la acción put en Delphi5.

El código es el siguiente


var
sArchivo: string;
begin
try
FTP.Username := 'XXXXXX';
FTP.Password := 'XXXXXX';
FTP.Host := 'XXXXXX';
FTP.Port := 21;
FTP.Connect;
ShowMessage('Conecto de forma correcta.');
FTP.ChangeDir('/public_html/');
sArchivo:='XXXXXX';
FTP.Put(sArchivo, ExtractFileName( sArchivo ), False );
ShowMessage('Subio.');
FTP.Disconnect;
except
raise Exception.Create( 'No se ha podido conectar con el servidor ' + FTP.Host );
end;


AL realizar la linea FTP.Put me tira el error access violation 0x0040740b read of address 0xa8445ced, url captura del error (https://ibb.co/hyrxff)

https://ibb.co/hyrxff

Si alguien puede ayudarme se lo agradecería.

Casimiro Notevi
19-10-2018, 11:55:33
En principio no parece haber motivo para ese error.

Lo único "anormal" es la ruta tipo *nix del directorio: '/public_html/'
¿Seguro que se produce el error en la línea que mencionas?

Neftali [Germán.Estévez]
19-10-2018, 12:19:35
¿Has ejecutado paso a paso?
¿Sabes en qué línea exacta de da la Violación de acceso?
¿Conectas a FTP o FTPS?

Soa Pelaez
19-10-2018, 16:01:37
Si es en la linea que digo en el Put, le realizo paso a paso y en tal linea tira el error, uso Indy 10.0.52 en delphi5, porque pruebo el codigo en un editor de XE8 y funciona correctamente, pero en delphi 5 me tira el error mencionado anteriormente. Ya desinstale los Indy y los instale nuevamente pero el error continua. Y requiero que me funcione en delphi 5.

Casimiro Notevi
19-10-2018, 19:58:39
¿Es la misma versión de indy?

Soa Pelaez
19-10-2018, 21:05:35
¿Es la misma versión de indy?

Si utilizo la misma version.

Casimiro Notevi
19-10-2018, 21:08:32
Quita el try except para ver qué mensaje de error es el que da realmente.

Soa Pelaez
22-10-2018, 14:41:08
Quita el try except para ver qué mensaje de error es el que da realmente.

El error que tira es el adjuntado en la imagen.

Casimiro Notevi
22-10-2018, 18:17:27
El error que tira es el adjuntado en la imagen.
Entonces hay que insistir en la pregunta: ¿seguro que el error es ahí?

Neftali [Germán.Estévez]
23-10-2018, 08:36:43
Sólo se me ocurre que haya una incompatibilidad entre verisones.
Un "Access Violation" como te está dando es porque se está accediendo a una zona de memoria no permitida. Tu código parece que está correcto (lo que se confirma que en una versión posterior funcione).

Por lo tanto me hace pensar que sean las Indy. Como están muy probadas y un PUT no debería fallar, me inclino a que es problema de incompatibilidad. Delphi 5 es bastante antiguo y no se si compatrble 100% con la indy 10.
No comentas si estás utilizando otras librerías (OpenSSL, per ejemplo). Imagino que no, porque no lo comentas. Si fuera que sí, puede ser otro punto para buscar problemas.

Soa Pelaez
23-10-2018, 15:01:22
;529181']Sólo se me ocurre que haya una incompatibilidad entre verisones.
Un "Access Violation" como te está dando es porque se está accediendo a una zona de memoria no permitida. Tu código parece que está correcto (lo que se confirma que en una versión posterior funcione).

Por lo tanto me hace pensar que sean las Indy. Como están muy probadas y un PUT no debería fallar, me inclino a que es problema de incompatibilidad. Delphi 5 es bastante antiguo y no se si compatrble 100% con la indy 10.
No comentas si estás utilizando otras librerías (OpenSSL, per ejemplo). Imagino que no, porque no lo comentas. Si fuera que sí, puede ser otro punto para buscar problemas.

No solo estoy utilizando las Indy para ello. Igual muchas gracias por las apreciaciones.