Para ir descartando cosas.
En el código, al menos en ese trozo, no veo la creación de
FileList (imagino que está en otro sitio).
En cuanto al
TransferType, prueba a añadir la unit:
idFTPCommon
Por ejemplo, este código funciona (al menos no falla en el punto que tú comentas):
Código Delphi
[-]procedure TForm1.Button1Click(Sender: TObject);
var
FTP:TIdFTP;
ok:boolean;
FileList:TStrings;
i:integer;
sArchivo:string;
begin
FTP := TIdFTP.Create( nil );
FTP.Username := 'demo';
FTP.Password := 'password';
FTP.Host := 'test.rebex.net';
FTp.Port := 21;
FTP.Passive := True;
FTP.TransferType := ftBinary;
sArchivo := 'esteArchivo.pdf';
FileList := TStringList.Create;
FTP.Connect;
try
if ftp.Connected then begin
ok := False;
FTP.ChangeDir('pub');
FTP.ChangeDir('example');
FTP.List(FileList, edtExtension.Text,True);
ShowMessage(Format('He encontrado <%d> ficheros', [FileList.Count]));
for I := 0 to FileList.Count - 1 do begin
if SameText(FileList.Strings[i], sArchivo) then begin
ok := True;
Break; end;
end;
end;
finally
FileList.Free;
end;
if ok then begin
ShowMessage('Archivo ya existe.');
end else begin
end;
FTP.Disconnect;
end;
Está compilado en Delphi7 y contra un servidor de prueba de los muchos que hay.
He comentado algunas líneas para la prueba y porque el servidor al ser de pruebas tiene restricciones (como la de no poder subir ficheros), pero para la prueba es suficiente.
Si lo ejecutas te debería dar algún resultado.
Si pruebas con extension "*.*" verás que es capaz de encontrar 16 ficheros, mientras que si pruebas con "*.pdf" obtendrás 0. Pero en ningún caso falla.