 |
Club Builder Foro de C++Builder en español
|
| Ver tema anterior :: Ver tema siguiente |
| Autor |
Mensaje |
Angell Cdt

Registrado: 08 Feb 2005Mensajes: 18
|
Publicado: Jue 31 Mar, 2005 3:46 pm Asunto: Buscar el fichero adecuado |
|
|
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?  |
|
| Volver arriba |
|
 |
Enrique Master


Registrado: 13 Ago 2002Mensajes: 261Ubicación: La Vila Joiosa (Alacant)
|
Publicado: Jue 31 Mar, 2005 5:02 pm Asunto: |
|
|
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 |
|
 |
Cesar C. Salazar Gonzalez Master


Registrado: 01 Oct 2002Mensajes: 2155Ubicación: San Cristóbal de Las Casas, Chiapas
|
Publicado: Vie 01 Abr, 2005 6:03 pm Asunto: |
|
|
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. _________________
 |
|
| Volver arriba |
|
 |
|
|
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
|
© 2002–2026 Club Builder · Funciona con phpBB.
|