PDA

Ver la Versión Completa : problemas en sistema de archivos vfat


hvelascos
17-01-2007, 20:30:20
Hola a todos.:D

Escribo para haber si me echan una mano con este procedimiento de delphi que copia directorios completos,


procedure CopyDirectory(Origen, Desti : string);
var
Files : integer;
FOrigen, FDesti,traspasa : string;
ok : boolean;
Search : TSearchRec;
pos:Real;
begin
Files := FindFirst(Origen + '\*.*', faAnyFile, Search);
while Files = 0 do
begin
if (Search.Attr = faArchive) and (Search.Attr<>faDirectory) then
begin
FOrigen := Origen + '\' + Search.Name;
FDesti := Desti + '\' + Search.Name;
ok := CopyFile(PChar(FOrigen),PChar(FDesti),false);
if not ok then
ShowMessage('No se pudo copiar el fichero: '+ Search.Name)
end
else
begin
if (Search.Name <> '.') and (Search.Name <> '..') then
begin
ok := CreateDir(Desti + '\' + Search.Name);
if not ok then
ShowMessage('No se pudo crear el directorio: '+Search.Name)
else
CopyDirectory(Origen+'\'+Search.Name,Desti+'\'+Search.Name);
end;
end;
end;
Files := FindNext(Search);
end;
FindClose(Search);
end;
end;

esta función funciona a la perfección cuando la tengo corriendo desde el disco duro de la pc, pero cuando ésta aplicación la ejecuto desde un cd no funciona:mad:, nada mas lo que hace. es en vez de copiar los archivos los remplaza por un monton de carpetas con el nombre del archivos.

Por ello me preguntaba si faArchive o la caracteristica de los ficheros en sistema de archivos de un cd es diferente a la de un disco duro, o es un error del algoritmo que acabo de poner, bueno si se me paso un ; es porque se me paso al momento de transcribir el texto.

Gracias, espero que me haya explicado bien.

saludos

seoane
17-01-2007, 20:35:36
Yo cambiaría esta instrucción

if (Search.Attr = faArchive) and (Search.Attr<>faDirectory) then

por esta otra

if (Search.Attr and faDirectory) = 0 then

hvelascos
17-01-2007, 21:13:07
gracias por tu respuesta, funcionó bien.
saludos