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 

Archivos de un directorio

 
Publicar nuevo tema   Responder al tema    Foros de discusión -> Consultas
Ver tema anterior :: Ver tema siguiente  
Autor Mensaje
Mensaje    Asunto: Archivos de un directorio Responder citando

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
Mensaje    Asunto: Responder citando

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
Ver perfil de usuario Enviar mensaje privado
Mensaje    Asunto: Responder citando

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
Ver perfil de usuario Enviar mensaje privado
Mensaje    Asunto: Responder citando

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
Mensaje    Asunto: Responder citando

Vaya hombre! Embarassed , 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
Ver perfil de usuario Enviar mensaje privado
Mensaje    Asunto: Responder citando

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
Ver perfil de usuario Enviar mensaje privado
Mensaje    Asunto: Responder citando

Gracias por la información _Leo, seguro que nos será muy útil. Very Happy
_________________
¡ADELANTE CON ESTE SUPER FORO!
Volver arriba
Ver perfil de usuario Enviar mensaje privado
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.