Club Builder - Foros de discusión Club Builder
Foro de C++Builder en español
 
 FAQFAQ   BuscarBuscar   MiembrosMiembros   Grupos de UsuariosGrupos de Usuarios   RegistrarseRegistrarse 
 PerfilPerfil   Entra para ver tus mensajes privadosEntra para ver tus mensajes privados   EntrarEntrar 

Buscar el fichero adecuado

 
Publicar nuevo tema   Responder al tema    Foros de discusión -> Consultas
Ver tema anterior :: Ver tema siguiente  
Autor Mensaje
Mensaje    Asunto: Buscar el fichero adecuado Responder citando

El codigo que deseo realizar deberia hacer lo siguiente:

Tengo una carpeta en la cual guardo una serie de archivos, entre ellos hay varios que cumplen el siguiente patron:
- Empiezan con una letra, a la que le diguen tres numeros, ac ontinuacion otra letra y otros tre numeros (Ej. h152k598).
- Todos tendran extenmsion .jpg

Bien, necesito ser capaz de coger el archivo del cual conozco la primera letra, los tres primeros numeros y la otra letra. Y necesito que el codigo escoga el archivo que cumpliendo eso, tenga la combinacion de los tres ultimos numeros mas grande.

Como quiza la explicacion es confusa, dispongo un ejemplo:

-En la carpeta tengo 3 archivos: j156p001, g586y896, j156p002.
-El archivo que me interesa es el que comienza con j156p, eso lo sé, y deseo que el programa me de ese archivo y el que ademas tiene las tres ultimas cifras mayores, en este caso el archivo seria j156p002.

Me gustaria ademas de poder editarlo, guardar en una variable de tipo numerico el numero de las tres ultimas cifras (en el caso propuesto almacenar el numero 2)

Si no se entiende, decirmelo y lo intento aclarar. Gracias
Alguna idea? Shocked
Volver arriba
Ver perfil de usuario Enviar mensaje privado
Mensaje    Asunto: Responder citando

Hola, Angell, a bote pronto se me ocurren dos modos de resolver tu asunto.

El primero es a lo bruto, aprovechando que no puede haber más de 1000 ficheros con ese nombre: "Ruta\j156p???.jpg" podrías intentar abrir el 999, si no existe pruebas con el 998, ... Algo así como

Código:
FILE *fichero;
AnsiString raizFichero = "Ruta\\j156p", extFichero = ".jpg";
short numFichero = 999;
AnsiString nombreFichero = raizFichero + FormatFloat("000", numFichero) + extFichero;
fichero = fopen(nombreFichero.c_str(), "r");
while (!fichero && numFichero) {
   numFichero--;
   nombreFichero = raizFichero + FormatFloat("000", numFichero) + extFichero;
   fichero = fopen(nombreFichero.c_str(), "r");
};
//Ahora compruebas que existe el fichero y lo manipulas como consideres 
//La variable numFichero es el número que quieres tener guardado


El segundo método sería más refinado, pero tendrás que currártelo un poquito tú. Se trata de usar la estructura TSearchRec (hace poco posteé en otro hilo la ayuda del Builder sobre "FindNext, example", puedes buscarlo) que permite recorrer los archivos de un directorio. Filtras los archivos a buscar con la plantilla raizFichero + "???.jpg" y luego analizas cuál de los ficheros tiene mayor "nombre". Al usar siempre tres dígitos el orden da igual que lo busques como números que como cadena de caracteres, siempre coincidirán. En este caso también tendrás que usar funciones como SubStr, StrToInt para encontrar en el nombre del fichero los 3 caracteres claves y convertirlos a entero.

Suerte.
_________________
Ojos ... no son ojos porque los ves, son ojos porque te miran
Volver arriba
Ver perfil de usuario Enviar mensaje privado
Mensaje    Asunto: Responder citando

Has intentado, usar el componente FileListBox y su propieda Mask

Código:
this->FileListBox->Mask = "j156p*.*";


la Propiedad es AnsiString asi que le puedes pasar como parametro, los archivos que requieres.
_________________
Cool
Volver arriba
Ver perfil de usuario Enviar mensaje privado Enviar email MSN Messenger
Mostrar mensajes de anteriores:   
Cambiar a:  
No puedes publicar temas nuevos en este foro
No puedes responder a temas en este foro
No puedes editar tus mensajes en este foro
No puedes borrar tus mensajes en este foro
No puedes votar en las encuestas de este foro


Hosting WordPress Indedmedia desde 3,99 €
© 2002–2026 Club Builder · Funciona con phpBB.