PDA

Ver la Versión Completa : IsFolder(Folder: String): Boolean;


[Gunman]
07-11-2005, 20:02:02
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:
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
Que tal si lo intentas de esta forma:


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