Ver Mensaje Individual
  #3  
Antiguo 25-11-2006
Avatar de aeff
aeff aeff is offline
Miembro
 
Registrado: oct 2006
Ubicación: Cuba, Guantánamo
Posts: 348
Reputación: 18
aeff Va camino a la fama
Wink algo parecido!!!

es posible que para buscar los archivos de una carpeta y los archivos de las subcarpetas, la siguiente función que te muestro te sea de gran utilidad, lo que la he desarrollado en Delphi, si tienes algún problema para traducirla a C te puedo ayudar...

procedure SearchFiles(Path: string; vList: TStringList; all: boolean);
var
p, fn: string;
fs: TSearchRec;
attr: Integer;
begin
if trim(ExtractFileName(path)) = '' then fn := '*.*' else fn := trim(ExtractFileName(path));
p := ExtractFilePath(path);
{Buscamos los ficheros}
attr := faArchive;
if FindFirst(p + fn ,attr, fs) = 0 then
vList.Add( p + fs.Name);
while FindNext(fs) =0 do
vList.Add( p + fs.Name);
{Buscamos las carpetas}
attr := faDirectory;
if FindFirst(p + '\*..' ,attr, fs) = 0 then
if (fs.Name <> '.') and (fs.Name <> '..') and (all) then
SearchFiles(p + fs.Name + '\*.*', vlist, all);
while FindNext(fs) =0 do
if (fs.Name <> '.') and (fs.Name <> '..') and (all) then
SearchFiles(p + fs.Name + '\*.*', vList, all);
end;


un ejemplo de llamada a la función
...
var
x: TStringList;
begin
x := TStringList.Create;
SearchFiles('C:\*.*', x, CheckBox1.Checked);
Memo1.Lines.Clear;
Memo1.Lines.Add(x.Text);
end;
...
/////////////////////-----

para obtener algunos datos de los ficheros, desarrollé la siguiente, digo, si te hace falta:

type TFDEspec = record
Fecha, Hora: string;
end;
type TFileDates = record
dCreation: TFDEspec;
dLastAccessTime: TFDEspec;
dLastWrite: TFDEspec;
end;
function GetFileDates(pFN: TFileName): TFileDates;
var
vFoundData: _WIN32_FIND_DATA;
c_SysTime, at_SysTime, lw_SysTime: TSystemTime;
begin
{Buscando el archivo y obteniendo sus datos}
FindFirstFile(pChar(pFN), vFoundData);
{Convirtiendo los datos a datos del sistem}
FileTimeToSystemTime(vFoundData.ftCreationTime, c_SysTime);
FileTimeToSystemTime(vFoundData.ftLastAccessTime, at_SysTime);
FileTimeToSystemTime(vFoundData.ftLastWriteTime, lw_SysTime);
{Elaborando los resultados}
{Creaci
ón}
Result.dCreation.Fecha := IntToStr(c_SysTime.wDay) + '/' + IntToStr(c_SysTime.wMonth) + '/' + IntToStr(c_SysTime.wYear);
Result.dCreation.Hora := IntToStr(c_SysTime.wHour) + ':' + IntToStr(c_SysTime.wMinute) + ':' +IntToStr(c_SysTime.wSecond) + ':' +IntToStr(c_SysTime.wMilliseconds);
{Último acceso}
Result.dLastAccessTime.Fecha := IntToStr(at_SysTime.wDay) + '/' + IntToStr(at_SysTime.wMonth) + '/' + IntToStr(at_SysTime.wYear);
Result.dLastAccessTime.Hora := IntToStr(at_SysTime.wHour) + ':' + IntToStr(at_SysTime.wMinute) + ':' +IntToStr(at_SysTime.wSecond) + ':' +IntToStr(at_SysTime.wMilliseconds);
{Última escritura}
Result.dLastWrite.Fecha := IntToStr(lw_SysTime.wDay) + '/' + IntToStr(lw_SysTime.wMonth) + '/' + IntToStr(lw_SysTime.wYear);
Result.dLastWrite.Hora := IntToStr(lw_SysTime.wHour) + ':' + IntToStr(lw_SysTime.wMinute) + ':' +IntToStr(lw_SysTime.wSecond) + ':' +IntToStr(lw_SysTime.wMilliseconds);
end;

espero que de algo te sirva!!! salu2.
Responder Con Cita