• Viernes 8 de Noviembre de 2024, 21:50

Autor Tema:  correxion de codigo  (Leído 1581 veces)

ijceba

  • Nuevo Miembro
  • *
  • Mensajes: 9
    • Ver Perfil
correxion de codigo
« en: Lunes 2 de Marzo de 2009, 18:12 »
0
Saludos inicio apenas con c++ builder, por razones dela escuela, necesito ayuda para cambiar el funcionamiento de un codigo, el codigo es el siguiente

void __fastcall TForm1::btnGuardarImagenClick(TObject *Sender)
{
    TSaveDialog *dlgSalvar = new TSaveDialog(this);
    TJPEGImage *jpg = new TJPEGImage;

    try
    {
        dlgSalvar->Filter = "JPEG|*.jpg";
        dlgSalvar->DefaultExt = "jpg";
        if (dlgSalvar->Execute())
        {
            jpg->Assign(image->Picture->Bitmap);
           jpg->SaveToFile(dlgSalvar->);

        }
    }
    __finally
    {
        delete dlgSalvar;
        delete jpg;
    }
}


y bueno lo que hace es que al presiona el button me da la opcion de seleccionar donde y con que nombre quiero guardar la imagen en jpg, lo que quiero es que ya no me lo pregunte, que lo guarde automaticamente con un nombre secuencialp por ejemplo ima001.jpg el que sigue ima002.jpg, ima003.jpg y asi las que sean en una carpeta ya predeterminada por decir algo c:/imagenes.


Gracias por su timpo y ojala puedan ayudarme

Unsire

  • Nuevo Miembro
  • *
  • Mensajes: 17
    • Ver Perfil
Re: correxion de codigo
« Respuesta #1 en: Lunes 2 de Marzo de 2009, 20:39 »
0
Pues eso es muy sencillo, solo tienes que hacerlo de la siguiente forma:
Image1->Picture->SaveToFile("carpeta/"+nombre_imagen+".jpg");
Donde nombre_imagen es una variable alfanúmerica
Compruebas si ya existe esa imagen, si existe entonces le puedes cambiar el nombre tomando el mismo y sumándole 1 (o la cantidad que quieras) y listo.
Suerte!. :rolleyes:

ijceba

  • Nuevo Miembro
  • *
  • Mensajes: 9
    • Ver Perfil
Re: correxion de codigo
« Respuesta #2 en: Martes 3 de Marzo de 2009, 04:55 »
0
Gracias ya lo pude resolver la modificacion que le hice fue la siguiente:
le aregue un for y una variable entera que converti a string el codigo quedo asi.

void __fastcall TForm1::btnGuardarImagenClick(TObject *Sender)
{

    TJPEGImage *jpg = new TJPEGImage;
    int i=0;

    try
    {
    for (i=0;i<5;i++)

            jpg->Assign(image->Picture->Bitmap);
            jpg->SaveToFile("C:\imagen\prueba" + IntToStr(i) + ".jpg" );
        }

    __finally
    {

        delete jpg;
    }
}

y lo que hace ahora es guardar automatica y secuencialmente prueba1.jpg, prueba2.jpg ... pruebai.jpg ( EN ESTE CASO prueba5.jps) en la carpeta imagen.

OTRA CONSULTA MAS.

AHORA QUICIERA QUE AL MOMENTO DE DAR EN EL BUTTON ME GUARDE UN SOLO ARCHIVO CON EL NOMBRE PRUEBA1.JPG PERO SOLO UNO Y CUANDO LE DE OTRA VES CLICK EN EL BUTTON ME GUARDE OTRO ARCHIVO DISTINTO PERO DE NOMBRE SECUENCIAL OSEA PRUEBA2.JPG Y ASI CADA QUE LE DE CLICK EN BUTTON

GRACIAS

m0skit0

  • Miembro de PLATA
  • *****
  • Mensajes: 2337
  • Nacionalidad: ma
    • Ver Perfil
    • http://fr33kk0mpu73r.blogspot.com/
Re: correxion de codigo
« Respuesta #3 en: Martes 3 de Marzo de 2009, 11:59 »
0
Usa static dentro del método invocado al dar click o una variable global que vaya contando 1,2,3, etc... para el nombre del jgp.

Salud

ijceba

  • Nuevo Miembro
  • *
  • Mensajes: 9
    • Ver Perfil
Re: correxion de codigo
« Respuesta #4 en: Martes 3 de Marzo de 2009, 15:25 »
0
Saludos soy muy nuevo en esto ojala me puedas ampliar un poquito tu explicacion por que la vdd es que aun no entiendo bien builder, gracias por la ayuda

m0skit0

  • Miembro de PLATA
  • *****
  • Mensajes: 2337
  • Nacionalidad: ma
    • Ver Perfil
    • http://fr33kk0mpu73r.blogspot.com/
Re: correxion de codigo
« Respuesta #5 en: Miércoles 4 de Marzo de 2009, 01:08 »
0
Si declaras una variable como static dentro de una función/método, su valor se mantendrá aunque salgas de la función/método y vuelvas a llamarlo más tarde. Por ejemplo:

Código: C
  1. static int intNumJPG;
  2.  
En cuanto a la variable global pues es simplemente una variable declarada en ámbito global (por ejemplo a nivel de WinMain()) y por tanto todas las clases/funciones tienen acceso a su valor.

Tanto en un caso como en otro, esto te permite solucionar tu problema al ir contando con la variable el número de veces que has escrito el JPG. Eso sí, al reiniciar el programa el conteo comenzará por el valor que hayas definido como inicial a menos que guardes la información en un fichero.

Espero haberme explicado mejor. Salud.