| Ver tema anterior :: Ver tema siguiente |
| Autor |
Mensaje |
petit Cdt

Registrado: 19 Nov 2003Mensajes: 5
|
Publicado: Vie 05 Dic, 2003 1:02 am Asunto: Matriz con datos de ficheros de un Directorio (URGENTE) |
|
|
POR FAVOR NECESITO URGENTEMENTE saber como puedo meter en una matriz (array de arrays) los nombres, fechas de modificacion y tamaño de los archivos que existen en una carpeta de mi pc, es decir, tengo la ruta de la carpeta donde estan esos archivos almacenada en una variable y necesito que coja archivo por archivo y me valla almacenando en una matriz las propiedades de esos archivos de la siguiente forma:
nombre_archivo | dia | mes | año | hora | minuto | tamaño
archivo1.doc | 3 | 5 | 2002 | 15 | 35 |26554
archivo2.pdf | 5 | 2 | 2003 | 5 | 48 | 6545544
archivo3.sys | 6 | 9 | 2000 | 23 | 25 | 65
archivo4.dat | 8 | 11 | 1998 | 0 | 6 | 878545
GRACIAS ADELANTADAS POR LA ATENCION A ESTE MENSAJE |
|
| Volver arriba |
|
 |
Angel Master


Registrado: 15 Abr 2003Mensajes: 2311Ubicación: Toledo (España)
|
Publicado: Vie 05 Dic, 2003 9:02 am Asunto: |
|
|
Personalmente los arrays anidados no me han gustado nunca, pero eso es como todo: cada maestrillo tiene su librillo.
Para sacar los que quieres necesitas usar un elemento FileListBox, para recorrer la carpeta, y la función FileGetAttr, para obtener entre otras cosas: fecha y hora de creación o última modificación en formato timestamp, tamaño y nombre. Además creo que te hará falta ayudarte con alguna otra función (FileAge, etc.). Este código no lo he probado, pero puede que te valga:
| Código: | AnsiString cViaAcceso = "C:\\Windows\\";
AnsiString cFile = "";
int nAtrib;
TDateTime dtFile;
FileListBox1->Mask = cViaAcceso + "*.*";
for (int nItem = 0; nItem < FileListBox1->Items->Count; nItem ++)
{
cFile = cViaAcceso + FileListBox1->Items->Strings[nItem];
nAtrib = FileGetAttr(cFile);
dtFile = FileAge(cFile);
nombre_archivo = FileListBox1->Items->Strings[nItem];
tamaño = nAtrib.Size;
} |
Espero que, por lo menos, te sirva de pìsta para lo que te hace falta. _________________ Un saludo
Necesitamos tu ayuda: Envía AI al 27595 (Coste 1,20 euros + IVA) |
|
| Volver arriba |
|
 |
petit Cdt

Registrado: 19 Nov 2003Mensajes: 5
|
Publicado: Vie 05 Dic, 2003 3:57 pm Asunto: |
|
|
muchisimas gracias
me hacia mucha falta algo asi
voy a probarlo enseguida
mi objetivo es hacer un cliente ftp de trabajo en grupo
en cuanto lo acabe lo publicare en esta pagina
REPITO: MUCHISIMAS GRACIAS |
|
| Volver arriba |
|
 |
kalux Master


Registrado: 21 Nov 2003Mensajes: 313Ubicación: Alicante - España
|
Publicado: Sab 06 Dic, 2003 9:28 pm Asunto: |
|
|
Tambien puedes hacerlo de la siguiente manera:
| Código: |
TSearchRec SearchRec;
FindFirst(ExtractFileDir(ParamStr(0))+AnsiString("\\*.*"),faAnyFile, SearchRec);
while (FindNext(SearchRec) == 0)
{
ShowMessage (
SearchRec.Name+AnsiString(" | ")+
SearchRec.Size+AnsiString(" bytes")+AnsiString(" | ")+
FileDateToDateTime(SearchRec.Time));
}
FindClose(SearchRec);
|
Lo que hacemos es primero realizar una busqueda con FindFirts al cual le pasamos lo que queremos buscar (en este caso, cualquier fichero del directorio en el cual se encuentra el ejecutable) tambien le especificamos lo que debe buscar (en este caso cualquier fichero, si quisieramos solo los archivos deberemos cambiar faAnyFile por faArchive). El resultado aparece en la variable SearchRec.
Busca en la ayuda este termino para conocerla mejor.
La fecha la da de modo codificado, para ello utilizamos la funcion FileDateToDateTime. En SearchRec.Time tenemos el valor en modo entero y codificado.
A continuacion continuamos la busqueda, ya que FindFirts solo busca hasta encontrar la primera coincidencia. Luego continuamos la busqueda con FindNext.
Acabamos la busqueda con FindClose.
Bueno espero haberte ayudado. |
|
| Volver arriba |
|
 |
|