![]() |
![]() |
| Paypal | FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
|||||||
| Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Buscar | Temas de Hoy | Marcar Foros Como Leídos |
![]() |
|
|
Herramientas | Buscar en Tema | Desplegado |
|
|
|
#1
|
||||
|
||||
|
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. |
|
#2
|
||||
|
||||
|
Hola aeff, te recomiento uses las etiquetas VB para hacer más legible tú código, fíjate que ya tienes 41 mensajes, o sea, que estás bastante crecidito para dejar de usarlas.
Saludos Yusnerqui ![]()
__________________
Lo importante no es llegar primero, sino saber llegar. Para que puedas llegar mejor lee la Guia de Estilo |
|
#3
|
|||
|
|||
|
Si me puedes ayudar...
Hola!!...
Creo que si neceisto ayuda para pasar esa funcion a Builder C++.... no tengo mucha experiencia, pero tengo muchas ganas de aprender! Gracias! |
|
#4
|
||||
|
||||
|
disculpa la demora, es que estaba de viaje... ahora es que venga a sentarme en la PC... y te voy a mandar la función de buscar los archivos implementada en C,
void SearchFiles(AnsiString Path, TStringList &vList, bool iFolders, bool all) { AnsiString p, fn; int attr; TSearchRec fs; if (Trim(ExtractFileName(Path)) == "*.*") fn = "*.*"; else fn = Trim(ExtractFileName(Path)); p = ExtractFilePath(Path); /*Buscamos los ficheros*/ attr = faArchive; if (FindFirst(p + fn, attr, fs) == 0) vList.Add(p + fs.Name); while (FindNext(fs) == 0) vList.Add(p + fs.Name); /*Buscamos las carpetas, si se ha especificado*/ if (iFolders) { attr = faDirectory; if (FindFirst(p + "\*..", attr, fs) == 0) { if (!all) vList.Add(p + fs.Name); if ((fs.Name != ".") && (fs.Name != "..") && (all)) SearchFiles(p + fs.Name, vList, iFolders, all); } while (FindNext(fs) == 0) { if (!all) vList.Add(p + fs.Name); if ((fs.Name != ".") && (fs.Name != "..") && (all)) SearchFiles(p + fs.Name + "\\" + fn, vList, iFolders, all); } } FindClose(fs); } ahora, un ejemplo de llamada en un evento cualquiera: TStringList *vLista = new TStringList(); SearchFiles("C:\\UsrMan\\*.*", *vLista, true, false); Memo1->Text = vLista->Text; espero que te sirva de algo aunque sea un poco demorada mi respuesta, salu2!!! |
|
#5
|
|||
|
|||
|
Gracias!!!! agradezco tus buenas intenciones!
|
![]() |
| Herramientas | Buscar en Tema |
| Desplegado | |
|
|
Temas Similares
|
||||
| Tema | Autor | Foro | Respuestas | Último mensaje |
| Listar archivos de directorio a travez de FTP | ilichhernandez | Internet | 6 | 22-09-2006 01:03:14 |
| Listar una carpeta | [Gunman] | API de Windows | 4 | 03-01-2006 16:25:43 |
| adjuntar el archivo que esta dentro una carpeta | kinteam1 | Internet | 1 | 11-10-2005 22:32:01 |
| Listar archivos d 1a URL y descargarlos | Descendents | Internet | 0 | 06-11-2003 17:29:41 |
| Listar ficheros dentro de un arbol | olaya | API de Windows | 2 | 11-08-2003 19:44:15 |
|