PDA

Ver la Versión Completa : saber nombre de archivo en OpenDialog


lmpadron
06-12-2011, 22:56:42
Hola amigos

Anteriormente pregunte como modificar el tamaño de una imagen en Pixeles y el Bites (http://www.clubdelphi.com/foros/showthread.php?t=76895) 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


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í (http://www.clubdelphi.com/foros/showthread.php?p=420655&posted=1#post420655)


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
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

jpg->SaveToFile("CONVERTIDA-" + IntToStr(Button1->Tag) + "-" + ExtractFileName(OpenDialog1->FileName) + ".jpg");

Pero me incluye la antigua extensión dentro del nombre, trate con

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í (http://www.clubdelphi.com/foros/showthread.php?p=420659#post420659)

ecfisa
06-12-2011, 23:52:07
Hola.

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

#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.