cs_stailer
Messages postés507Date d'inscriptionjeudi 28 mars 2002StatutMembreDernière intervention13 mai 2009
-
10 juil. 2003 à 14:36
cs_Doom
Messages postés8Date d'inscriptionjeudi 24 janvier 2002StatutMembreDernière intervention14 août 2003
-
14 août 2003 à 15:52
Salut tout le monde,
Je suis en train de faire un mini client ftp et j'ai un petit souci avec le composant indy tidftp.
dans une boucle je liste chacun des fichiers et répertoires trouvés sur le serveur... Mais avec le idftp.list en mode false
Et j'aimerais savoir s'il est possible, malgré le fait qu'il n'y est donc pas les infos du serveur affichées, de savoir si ce qui est listé est un répertoire ou un fichier.
cs_Doom
Messages postés8Date d'inscriptionjeudi 24 janvier 2002StatutMembreDernière intervention14 août 2003 14 août 2003 à 15:52
Voici trois petites fonctions qui répondront à ta question et une quatrième qui pourra t'être utile également.
La valeur de Entry dans les fonctions est la valeur d'une ligne afficher par le serveur. Voici un exemple si tu affiches dans une listbox.
Exemple : Entry := lstFiles.Items[1];
function IsDir(const Entry: string): boolean;
begin
if FTPServerType = ftpWindows then Result := IsFatDir(Entry) else Result :(Length(Trim(Entry)) > 0) and (LowerCase(Trim(Entry))[1] 'd');
end;
function IsFile(const Entry: string): boolean;
begin
if FTPServerType = ftpWindows then Result := not isFatDir(Entry) else Result :(Length(Trim(Entry)) > 0) and (Trim(Entry)[1] '-');
end;
function IsFatDir(const FatEntry: string): boolean;
var
s: string;
begin
s := Trim(FatEntry);
s := Trim(Copy(s, Pos(' ', s) + 1, Length(s)));
s := Trim(Copy(s, Pos(' ', s) + 1, Length(s)));
s := Trim(Copy(s, 1, Pos(' ', s) - 1)); Result :UpperCase(s) '<DIR>';
end;
function AccessAllowed(const Entry: string): boolean;
begin
if FTPServerType = ftpWindows then Result := true else Result :(Length(Trim(Entry)) > 7) and (LowerCase(Trim(Entry))[8] 'r');
end;