| Ver tema anterior :: Ver tema siguiente |
| Autor |
Mensaje |
josemanu Invitado
|
Publicado: Jue 08 Jul, 2004 11:49 pm Asunto: Archivos de un directorio |
|
|
Estoy empezando con el builder y tengo una duda para un programilla de prueba que estoy haciendo. La cosa es que quiero renombrar TODOS los archivos de un directorio seleccionado con un DirectoryBoxList, pero no sé cómo ir seleccionando cada archivo del directorio que he seleccionado. He pensado utilizar un FileBoxList e ir moviendome a través de él, pero no sé cómo ir seleccionando cada fichero que aparece en él. Alguien me podría ayudar???
MUCHAS GRACIAS DE ANTEMANO |
|
| Volver arriba |
|
 |
Tugui Master


Registrado: 09 Nov 2002Mensajes: 663
|
Publicado: Vie 09 Jul, 2004 8:49 am Asunto: |
|
|
Yo tengo un renombrador hecho, permite renombrar de varias maneras: con números, con fecha, con un nombre, añadir texto al nombre existente e incluso sincronizar los nombres con una lista determinada. Creo que ponerte el código aquí sería muy pesado así que si te parece bién te puedo mandar el proyecto por e-mail, ¿qué me dices? _________________ ¡ADELANTE CON ESTE SUPER FORO! |
|
| Volver arriba |
|
 |
Tugui Master


Registrado: 09 Nov 2002Mensajes: 663
|
Publicado: Vie 09 Jul, 2004 9:23 am Asunto: |
|
|
Bueno ... si quieres ir calentando motores lo que hice básicamente fue copiar el archivo original con un nuevo nombre, ya que no encontré ninguna función que renombre el archivo directamente, y una vez copiado el archivo se borra el original:
void __fastcall TForm1::Button1Click(TObject *Sender)
{
int archivos = FileListBox1->Items->Count;
if (archivos>0){
FileListBox1->ItemIndex = 0;
for (int i=0;i<archivos;i++){
AnsiString origen = FileListBox1->FileName;
AnsiString destino = DirectoryListBox1->Directory+"\\"+Edit1->Text+"__"+IntToStr(i+1)+ExtractFileExt(FileListBox1->FileName);
if (CopyFile(origen.c_str(),destino.c_str(),true)==0){
ShowMessage("Fallo al intentar renombrar "+FileListBox1->Items->Strings[i]);
}
else {
DeleteFile(FileListBox1->FileName);
}
if (i<archivos-1){
FileListBox1->ItemIndex = FileListBox1->ItemIndex+1;
}
}
}
}
//Espero te sirva. _________________ ¡ADELANTE CON ESTE SUPER FORO! |
|
| Volver arriba |
|
 |
Josemanu Invitado
|
Publicado: Vie 09 Jul, 2004 11:56 am Asunto: |
|
|
Sé que existe una función que se llama rename que sirve para renombrar archivos, pero a mí me está dando fallos al utilizarla, no sé muy bien por qué. La verdad, te agradecería que me enviaras el proyecto por e-mail, porque así de paso veo como se hacen algunas cosillas. Mi e-mail es javijose10@hotmail.com
gracias |
|
| Volver arriba |
|
 |
Tugui Master


Registrado: 09 Nov 2002Mensajes: 663
|
Publicado: Vie 09 Jul, 2004 9:59 pm Asunto: |
|
|
Vaya hombre! , pues tienes razón, resulta que hay una función que me habría ahorrado bastantes líneas de código, acabo de buscarla en la ayuda del builder y he hecho un par de pruebas y de momento todo ha ido a la perfección. No sé qué fallos te habrá dado a tí pero de momento a mi con el renombrado de un sólo archivo así en plan sencillo me ha ido muy bien:
#include <stdio.h> /*INCLUIR ESTA CABECERA*/
void __fastcall TForm1::Button1Click(TObject *Sender)
{
AnsiString nombre_antiguo = FileListBox1->FileName;
AnsiString nombre_nuevo = DirectoryListBox1->Directory+"\\archivo_nuevo"+ExtractFileExt(nombre_antiguo);
if (rename(nombre_antiguo.c_str(),nombre_nuevo.c_str())==0){
ShowMessage("Archivo renombrado con éxito.");
}
else {
ShowMessage("Fallo al intentar renombrar el archivo.");
}
}
/*P.D.: ya te envié por e-mail el proyecto que te comenté antes.*/ _________________ ¡ADELANTE CON ESTE SUPER FORO! |
|
| Volver arriba |
|
 |
_Leo Site Admin

Registrado: 11 Ago 2002Mensajes: 1875Ubicación: Lanzarote - Islas Canarias (España)
|
Publicado: Vie 09 Jul, 2004 10:28 pm Asunto: |
|
|
También tenéis la función "RenameFile" de la VCL y "MoveFile" del API que a pesar del nombre no solo sirve para mover archivos, sino además para renombrarlos:
bool __fastcall RenameFile(const AnsiString OldName, const AnsiString NewName);
BOOL MoveFile(LPCTSTR lpExistingFileName, LPCTSTR lpNewFileName);
Por si os sirve de algo: (https://cppbuilder.es/viewtopic.php?t=8344) |
|
| Volver arriba |
|
 |
Tugui Master


Registrado: 09 Nov 2002Mensajes: 663
|
Publicado: Sab 10 Jul, 2004 8:37 am Asunto: |
|
|
Gracias por la información _Leo, seguro que nos será muy útil.  _________________ ¡ADELANTE CON ESTE SUPER FORO! |
|
| Volver arriba |
|
 |
|