Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   C++ Builder (https://www.clubdelphi.com/foros/forumdisplay.php?f=13)
-   -   saber nombre de archivo en OpenDialog (https://www.clubdelphi.com/foros/showthread.php?t=76941)

lmpadron 06-12-2011 22:56:42

saber nombre de archivo en OpenDialog
 
Hola amigos

Anteriormente pregunte como modificar el tamaño de una imagen en Pixeles y el Bites el amigo _cero_ posteó un código que funcionó perfecto pero ahora necesito su ayuda una ves mas.

En la aplicación uso un OpenDialog y necesito saber el nombre de la imagen que se abre para poder guardarla con el mismo nombre agregándole delante un pequeño identificador que indique que fue convertida y luego necesito abrir la carpeta donde se guardo esa imagen.

Por el momento solo he logrado obtener la extensión asumiendo que siempre va a ser de 3 caracteres (cosa que no está del todo bien)

Les dejo el código para que lo miren

Código:

int b;
String a;

//obtener la extension del fichero seleccionado
    b = OpenDialog1->FileName.Length() - 3;
    a = OpenDialog1->FileName.Delete(1,b);
    a = a.LowerCase();

    jpg->SaveToFile("CONVERTIDA-" + IntToStr(Button1->Tag)+ "." + a);

    Button1->Tag = Button1->Tag + 1;

Como se puede ver elimino todo del OpenDialog1->FileName.Length() excepto los últimos 3 caracteres para obtener la extensión. posteriormente la guardo en la misma ubicación. Por el momento le pongo como nombre CONVERTIDA-1, CONVERTIDA-2,(...) CONVERTIDA-n y asi tantas como se conviertan.

Y por supuesto ni idea de como abrir la carpeta donde están para mostrárselas al usuario después de convertirlas.

Si desean ver el código completo está aquí


Gracias de antemano por su ayuda

roman 06-12-2011 22:58:59

Hay una función ExtractFileName que creo es lo que buscas.

// Saludos

thecidmx 06-12-2011 23:19:54

tambien
 
para saber el nombre de archivo si, y para el directorio se puede usar ExtractFileDir();

lmpadron 06-12-2011 23:21:16

Hola y gracias por la ayuda

Me ha quedado algo asi

Código:

jpg->SaveToFile("CONVERTIDA-" + IntToStr(Button1->Tag) + "-" + ExtractFileName(OpenDialog1->FileName) + ".jpg");
Pero me incluye la antigua extensión dentro del nombre, trate con

Código:

jpg->SaveToFile("CONVERTIDA-" + IntToStr(Button1->Tag) + "-" + ExtractFileName(OpenDialog1->FileName.Length() - 3) + ".jpg");
pero me queda asi CONVERTIDA-0-46.jpg y la imagen se llama test.JPG lo que quiciera de ser posible es eliminar la extensión anterior para que no me que el nombre con dos extensiones

lmpadron 06-12-2011 23:30:56

Por favor disculpen sin querer realice dos preguntas en este post, ya he abierto uno nuevo para la segunda pregunta, gracias de todas formas a thecidmx por su respuesta, el nuevo post está aquí

ecfisa 06-12-2011 23:52:07

Hola.

Creo que quedaría más sencillo usando las funciones que te han sugerido:
Código:

#include<StrUtils.hpp>
void __fastcall TForm1::Button1Click(TObject *Sender)
{
String Nom, Ext;

 if(OpenDialog1->Execute()) {
  Nom = ExtractFileName(OpenDialog1->FileName);
  Ext = ExtractFileExt(Nom);
  Nom = LeftStr(Nom, Nom.Length()-Ext.Length());
  Nom = "CONVERTIDA-" + IntToStr(Button1->Tag) + "-" + Nom + ".JPG";
 }

 ShowMessage(Nom); // aquí lo que desees hacer con 'Nom'
}

Saludos.


La franja horaria es GMT +2. Ahora son las 17:31:06.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi