Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   API de Windows (https://www.clubdelphi.com/foros/forumdisplay.php?f=7)
-   -   IsFolder(Folder: String): Boolean; (https://www.clubdelphi.com/foros/showthread.php?t=26917)

[Gunman] 07-11-2005 20:02:02

IsFolder(Folder: String): Boolean;
 
Pues eso, me parece que el título lo deja bien claro...
Estoy intentando coger el tamaño de los archivos con la función FileSize, pero claro, si el archivo que le metes en la función es una carpeta entonces la función da error. Por eso me gustaria hacer esta función para hacer algo así:
if IsFolder(ListView.Items[ListView.ItemIndex].Caption) = False then
begin
blablabla;
end
else
ListView.Items[ListView.ImageIndex].SubItems.Add('');

Muchas gracias!

dec 07-11-2005 20:19:34

Hola,

Existe una función "DirectoryExists", que te devolverá "false" en caso de que le pases como parámetro la ruta de un archivo. También cuentas con la función "FileExists", la cual te devolverá "false" si le pasas como parámetro la ruta de una carpeta. Creo que con eso puedes solventar el problema. No sé yo si habrá otra forma mejor, pero, se me ocurre así a bote pronto. ;)

[Gunman] 07-11-2005 20:29:54

Aaaaahmmmmm... Ahora pruebo...

(Probando...)

Pues no... Aquí dejo el error y el código:
Código:

if FileExists(IncludeTrailingPathDelimiter(CDirLCCB.Text)+
                                Item.Caption) = True then
  begin
        AssignFile(f, OpenDialog1.FileName);
        Reset(f);
        try
          Item.SubItems.Add(IntToStr(FileSize(f)));
        finally
          CloseFile(f);
        end;
  end
  else
        Item.SubItems.Add('');

El Error: EInOutError (I/O Error 6)

Héctor Randolph 08-11-2005 09:24:30

Sugerencia
 
Que tal si lo intentas de esta forma:

Código Delphi [-]
function IsFolder(Folder: String): Boolean;
var
  Attributes:Word;
begin
  Attributes:=FileGetAttr(Folder);
  Result:=(Attributes and faDirectory)=faDirectory;
end;

Un saludo.

Lepe 08-11-2005 11:00:27

Señores, no nos compliquemos la vida, usemos:

DirectoryExists (para comprobar que primero existe la carpeta)
FileExists (para comprobar que despues existe el archivo)


Si quieres obtener el tamaño de un archivo, busca por el foro e internet, ya que el tamaño creo que se guarda como un Int64, no cabe en el FileSize para archivos grandes y tienes que consultar 2 campos para ello.

saludos


La franja horaria es GMT +2. Ahora son las 10:06:52.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi