Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Internet (https://www.clubdelphi.com/foros/forumdisplay.php?f=3)
-   -   Problemas al crear la lista con IdFtp (https://www.clubdelphi.com/foros/showthread.php?t=12801)

VolaRe 28-07-2004 13:05:50

Problemas al crear la lista con IdFtp
 
Hola,
Ya estoy otra vez a la carga. Estoy desarroyando un cliente ftp y tengo el siguiente problema. Cuando me tiene que crear la lista de directorios y archivos del servidor, me lanza un error -> FORMATO DE LISTA DESCONOCIDO

La vedad qeu no tengo ni puta idea de porque, y ya me estoy tirando de los pelos, asi que os paso el codigo haber si me podeis ayudar.

Código:

var
  i: Integer;
begin
  Memo1.Lines.Add('Generando lista de Archivos y Directorios . . .');
  ListBox1.Items.Clear;
  ListBox1.Items.Add( '..' );
  ListBox2.Items.Clear;
  IdFtpCliente.List(IdFtpCliente.ListResult, '',False);
  If IdFtpCliente.DirectoryListing.ListFormat = (flfDos) Then //el error me lo marca aqui
  begin
    for i := 0 to IdFtpCliente.DirectoryListing.Count - 1 do
    if IdFtpCliente.DirectoryListing.Items[i].ItemType = (ditDirectory) then
      ListBox1.Items.Add( IdFtpCliente.DirectoryListing.Items[i].Text )
    else
      ListBox2.Items.Add( IdFtpCliente.DirectoryListing.Items[i].Text );
    Memo1.Lines.Add('Lista Terminada . . .');
  end;
end;

Os agradeceria tambien que me aclaraseis la duda de porque me da error y tambien que me indiqueis el camino para que no me lance el error.

Muchas gracias de antemano.

DarkByte 30-07-2004 14:59:06

A mi también me daba ese error el ejemplo de las indy que te viene.... yo tampoco lo pude solucionar

salvica 15-08-2004 21:37:05

No sé si te seguirá valiendo :) pero lo he solucionado tal que así
Código Delphi [-]
var
    LS : TStringList;
    CAD: string;
begin
    LS := TStringList.Create;
    try
       IdFTP.List(LS, '', true);
       for n:=0 to LS.Count-1 do begin
         CAD := LS.Strings[n];
          case( CAD[1] ) of
            '-':begin //-----> es un fichero
               end;
            'd':begin //-----> es un directorio
               end;
         else begin //-----> es un enlace
               end;
         end; // del case
      end; // del for
   finally
      LS.Free;
   end;
end;
Espero que aún te sirva
Saludos

VolaRe 15-08-2004 22:35:50

Gracias por preocuparte, o sea lo resolvi ayudandome en la demo de las indy, ese codigo lo deje por imposible.
Otra pregunta, ¿en el primer caracter del nombre del archivo o directorio te indica que es?.

De todas formas me guardare el codigo y lo provare haber que tal y te comento algo.

salvica 15-08-2004 23:49:09

Corresponde a la nomenclatura tipo "unix", o sea cuando lees los directorios/ficheros, ta salen líneas del tipo
drwxrwxrwx y más cosas, bueno pues el primer caracter pede ser:
- = fichero
d = directorio
l = enlace simbólico a otro fichero/directorio/aplicación
luego vienen tres grupos de letras rwx que indican lo que pueden hacer:
el dueño del archivo/directorio (primer grupo)
el grupo al que pertenece el archivo/directorio (segundo grupo)
el resto de usuarios que acceden al archivo/directorio (tercer grupo)
además, cada una de las rwx significan
r = permitida la lectura
w = permitida la escritura
x = permitida la ejecución
si en lugar de cada una de estas letras, lleva un "-" significa más o menos "prohibido" (lectura/escritura/ejecución)
como verás un "rollo" pero la seguridad unix se basa en eso :cool:
Saludos

VolaRe 16-08-2004 12:49:02

Cita:

como verás un "rollo" pero la seguridad unix se basa en eso
No se porque dices eso, sera un rollo para quien no este interesado en el tema, como todo en esta vida. De todas formas gracias por explicarmelo tan excuetamente, esto me lo guardo y gracias.


La franja horaria es GMT +2. Ahora son las 12:13:51.

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