Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 07-08-2012
Avatar de danyfebrero
danyfebrero danyfebrero is offline
Miembro
NULL
 
Registrado: jul 2012
Posts: 38
Poder: 0
danyfebrero Va por buen camino
consegir el nombre de un archivo abierto con un openpicturedialog

hola
Me hace falta conseguir el nombre de la jpg que abrí con el OpenPictureDialog.
Utilicé este codigo pero no funcionó, no sé si será por el Windows 8 o que no lo hice bien.

procedure TForm1.Button1Click(Sender: TObject);
begin
if not OpenPictureDialog1.Execute then Exit;
Label1.Caption:=OpenPictureDialog1.FileName;
Label2.Caption:=OpenPictureDialog1.Title;
Image1.Picture.LoadFromFile(OpenPictureDialog1.FileName);

end;

Antes el OpenPictureDialog1.Title me daba el nombre del archivo pero ahora se me queda en blanco.
Gracias de antemano
Dany
Responder Con Cita
  #2  
Antiguo 07-08-2012
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.043
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Cita:
Empezado por danyfebrero Ver Mensaje
Label1.Caption:=OpenPictureDialog1.FileName; // <---------------------- ahí, en FileName

Por cierto, recuerda poner los tags al código fuente, ejemplo:



Gracias
Responder Con Cita
  #3  
Antiguo 07-08-2012
Avatar de danyfebrero
danyfebrero danyfebrero is offline
Miembro
NULL
 
Registrado: jul 2012
Posts: 38
Poder: 0
danyfebrero Va por buen camino
gracias otra vez

el resultado que me da Filename es la ruta completa con el nombre del archivo y la extención pero lo que me interesa es solo el nombre del archivo.
FileName me devuelve: c:\imágenes\foto001.jpg pero lo que necesito es que me devuelva solo foto001, que era lo que hacias title, pero no me funciona.
saludos y gracias
Responder Con Cita
  #4  
Antiguo 07-08-2012
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Es como dice Casimiro. FileName te da el nombre del archivo. Title no da, y que yo sepa nunca ha dado, el nombre del arcivo. Title es el texto que aparece en la barra de título de la ventana del cuadro de diálogo.

// Saludos
Responder Con Cita
  #5  
Antiguo 07-08-2012
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Cita:
Empezado por danyfebrero Ver Mensaje
FileName me devuelve: c:\imágenes\foto001.jpg pero lo que necesito es que me devuelva solo foto001, que era lo que hacias title, pero no me funciona.
Entonces usa la función ExtractFileName:

Código Delphi [-]
Label1.Caption:=ExtractFileName(OpenPictureDialog1.FileName);

// Saludos
Responder Con Cita
  #6  
Antiguo 07-08-2012
Avatar de danyfebrero
danyfebrero danyfebrero is offline
Miembro
NULL
 
Registrado: jul 2012
Posts: 38
Poder: 0
danyfebrero Va por buen camino
gracias roman.
si tienes razon en los 2 comentarios.
probe con ExtractFileName y funciono bien me devuelve foto001.jpg, disculpa si sigo preguntando pero como pudiera quitarle la extension, porque lugo cuando convierta el jpg no va tener la misma extension.
gracias nuevamente
Responder Con Cita
  #7  
Antiguo 07-08-2012
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola.

ExtractFileName devuelve el nombre y extensión, ExtractFilePath la ruta y ExtractFileExt la extensión.

Conozco dos modos de obtener lo que buscas, este es uno:
Código Delphi [-]
var
  NomSinExt: string;
begin
  NomSinExt:= Copy(ExtractFileName(NomArch), 1, Pos(ExtractFileExt(NomArch),ExtractFileName(NomArch))-1);
  ...

O más simple, aunque confuso por el nombre de la misma, con la función ChangeFileExt:
Código Delphi [-]
var
  NomSinExt: string;
begin
  NomSinExt:= ChangeFileExt(ExtractFileName(NomArch), '');
  ...

Saludos.

Edito: En los ejemplos NomArch equivale a OpenPictureDialog1.FileName.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....

Última edición por ecfisa fecha: 08-08-2012 a las 00:14:54.
Responder Con Cita
  #8  
Antiguo 08-08-2012
Avatar de danyfebrero
danyfebrero danyfebrero is offline
Miembro
NULL
 
Registrado: jul 2012
Posts: 38
Poder: 0
danyfebrero Va por buen camino
gracias ecfisa eso solucionó mi problema, muchas gracias. saludos dany
Responder Con Cita
  #9  
Antiguo 13-10-2012
aldemar.bohorqu aldemar.bohorqu is offline
Registrado
NULL
 
Registrado: oct 2012
Posts: 4
Poder: 0
aldemar.bohorqu Va por buen camino
Thumbs down ¿Cómo guardar la ruta completa de una imagen en un archivo *.txt? (c++ builder)

He estado intentando y no he podido. Lo estoy haciendo así:


//---------------------------------------------------------------------------
void __fastcall TForm2::I1Click(TObject *Sender)
{
//Al darle click a la imagen (I1)

if(OpenPictureDialog1->Execute())
{
I1->Picture->LoadFromFile(OpenPictureDialog1->FileName);
LE1->Text=OpenPictureDialog1->FileName; //La ruta es mostrada en un LabelEdit
}
}
//---------------------------------------------------------------------------

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

//archivo *.txt generado con un botón

cadena=Form1->LE1->Text + "\n"; //AnsiString cadena; (variable public)


ofstream escribir("Datos/imagen.txt",ios::app); //#include <fstream.h> (clase para leer ofstream)
escribir<<cadena.c_str();
escribir.close();

//---------------------------------------------------------------------------




LO hago así pero no me genera el archivo *.txt. No se que será.
Gracias.
Responder Con Cita
  #10  
Antiguo 13-10-2012
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.043
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Bienvenido a clubdelphi, ¿ya leiste nuestra guía de estilo?, gracias por tu colaboración


Recuerda poner los tags al código fuente, ejemplo:



Gracias
Responder Con Cita
  #11  
Antiguo 14-10-2012
Avatar de escafandra
[escafandra] escafandra is offline
Miembro Premium
 
Registrado: nov 2007
Posts: 2.197
Poder: 20
escafandra Tiene un aura espectacularescafandra Tiene un aura espectacular
El error lo tienes en el nombre de tu archivo. Primero debe existir la carpeta Datos, segundo escribir bien la ruta. Tu has puesto "Datos/imagen.txt", no es correcto, la ruta sería "Datos\imagen.txt". El C/C++ el cáracter '\' es un carácter de control, en el código fuente, con lo que si quieres usarlo (ruta de un archivo) debes ponerlo duplicado ("Datos\\imagen.txt"):

Código:
#include <fstream.h>
void __fastcall TForm1::Button1Click(TObject *Sender)
{
  //archivo *.txt  generado con un botón

   cadena=Form1->LE1->Text + "\n";   //AnsiString cadena; (variable public)
   
   ofstream escribir("Datos\\imagen.txt", ios::app); 
   escribir<<cadena.c_str();
   escribir.close();
}

Saludos.
Responder Con Cita
  #12  
Antiguo 16-10-2012
aldemar.bohorqu aldemar.bohorqu is offline
Registrado
NULL
 
Registrado: oct 2012
Posts: 4
Poder: 0
aldemar.bohorqu Va por buen camino
Thumbs down ¿Por qué no genera el archivo *.txt?

Igual no lo hace. Lo que quiero realmente es:

En la primera forma: pedirle el nombre al usuario (en un LabelEdit), que escoja una opción del RadioGroup (soltero, casado, divorciado o viudo), y que agregue cualquier foto desde la pc. Todo eso almacenarlo en un archivo *.txt para después ser consultado.

En la segunda forma: consultar cualquier nombre que que el usuario quiera, y cuando sea consultado mostrar todos los datos (nombre, estado civil) con su respectiva foto.

Eso es lo que quiero, pero cuando agrego la foto no me genera el archivo *.txt. Si no cargo la foto si lo genera. No se por que será.

Espero su pronta ayuda. Gracias.
Responder Con Cita
  #13  
Antiguo 16-10-2012
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola aldemar.bohorqu.

Creo que debo haber entendido mal... ¿ Estas diciendo que queres guardar el nombre, el estado civil y la foto todo junto en el archivo de texto ?

Saludos.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #14  
Antiguo 16-10-2012
Avatar de Delphius
[Delphius] Delphius is offline
Miembro Premium
 
Registrado: jul 2004
Ubicación: Salta, Argentina
Posts: 5.582
Poder: 25
Delphius Va camino a la fama
Pregunto, ¿Y desde cuando es posible incrustar una imagen en un archivo de texto?
Un .txt no es un .doc que se le puede poner imágenes, tablas, colores, etc.

Saludos,
__________________
Delphius
[Guia de estilo][Buscar]
Responder Con Cita
  #15  
Antiguo 16-10-2012
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.043
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Cita:
Empezado por Delphius Ver Mensaje
Pregunto, ¿Y desde cuando es posible incrustar una imagen en un archivo de texto?
Un .txt no es un .doc que se le puede poner imágenes, tablas, colores, etc.
Saludos,
Sin embargo, sí se puede codificar en base64 (por ejemplo) para "convertirla" a texto.
Responder Con Cita
  #16  
Antiguo 16-10-2012
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Cita:
Empezado por Casimiro Notevi Ver Mensaje
Sin embargo, sí se puede codificar en base64 (por ejemplo) para "convertirla" a texto.
Así pienso también, pero implica una complejidad que podría evitarse tomando los datos como campos de una tabla por ejemplo.

De allí mi pregunta, por que dado el tipo de aplicación que comenta aldemar.bohorqu, no parecía necesario que se guardase en ese formato, pero ya nos dirá él...

Saludos.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #17  
Antiguo 16-10-2012
Avatar de escafandra
[escafandra] escafandra is offline
Miembro Premium
 
Registrado: nov 2007
Posts: 2.197
Poder: 20
escafandra Tiene un aura espectacularescafandra Tiene un aura espectacular
A mi me llama la atención este comentario:
Cita:
Empezado por aldemar.bohorqu Ver Mensaje
...pero cuando agrego la foto no me genera el archivo *.txt. Si no cargo la foto si lo genera...
El que se cree el archivo debería ser independiente de lo que escribamos en él, esté bien o mal... No debería depender de que "cargue" o no, una foto.

Habría que ver que código real está usando para todo lo que expone y que errores se muestran.


Saludos.
Responder Con Cita
  #18  
Antiguo 17-10-2012
aldemar.bohorqu aldemar.bohorqu is offline
Registrado
NULL
 
Registrado: oct 2012
Posts: 4
Poder: 0
aldemar.bohorqu Va por buen camino
Question Re-formulación de la pegunta

Cita:
Empezado por ecfisa Ver Mensaje
Hola aldemar.bohorqu.

Creo que debo haber entendido mal... ¿ Estas diciendo que queres guardar el nombre, el estado civil y la foto todo junto en el archivo de texto ?

Saludos.
ecfisa, disculpa no haber formulado con detalles la pregunta. La foto puede ser guardada en cualquier carpeta donde se encuentre el proyecto con formato .bmp o .jpg, lo importante es que en la segunda forma cuando se vaya a consultar se muestren todos los datos con su respectiva foto.
Responder Con Cita
  #19  
Antiguo 17-10-2012
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola aldemar.bohorqu.

Una forma bastante sencilla de hacerlo es:
  • Al form que tiene el TLabeledEdit y el TRadioGroup, agregale un TPanel y dentro de él un TImage.
  • A la propiedad Caption del TPanel ponele un texto como "Click para cargar foto" y ajusta su tamaño a gusto.
  • Pone la propiedad Streetch del TImage = true y la propiedad Align = alClient para que ocupe toda la superficie del panel.
  • Agrega dos TButton uno para añadir datos y otro para mostrarlos.
Código:
#include <fstream>
#include <string>
#define AGENDA "C:\\AGENDA.TXT"

using namespace std;

AnsiString PhotoName = "";

void __fastcall TForm1::LabeledEdit1Enter(TObject *Sender) {
  PhotoName = "";
  LabeledEdit1->Text = "";
  RadioGroup1->ItemIndex = -1;
  Image1->Picture = NULL;
}

void __fastcall TForm1::Image1Click(TObject *Sender) {
  if (OpenPictureDialog1->Execute()) {
    PhotoName = OpenPictureDialog1->FileName;
    Image1->Picture->LoadFromFile(PhotoName);
  }
}

void __fastcall TForm1::btnGuardarClick(TObject *Sender) {
 ofstream agenda;
 AnsiString s;

 s = LabeledEdit1->Text + "," +
   RadioGroup1->Items->Strings[RadioGroup1->ItemIndex] + "," +
   PhotoName;

 agenda.open(AGENDA, ios::out | ios::app);
 agenda << s.c_str() << endl;
 agenda.close();
}


void __fastcall TForm1::btnMostrarClick(TObject *Sender) {
  string str = LabeledEdit1->Text.c_str();
  if (str.size()) {
    ifstream agenda;
    agenda.open(AGENDA, ios::in);
    string line;
    size_t found = string::npos;

    while (agenda.good() && found == string::npos) {
      getline(agenda, line, '\n');
      found = line.find(str);
    }

    if (found != string::npos) {
      TStrings *TS = new TStringList;
      __try {
        TS->Delimiter = ',';
        TS->DelimitedText = line.c_str();
        RadioGroup1->ItemIndex = RadioGroup1->Items->IndexOf(TS->Strings[1]);
        Image1->Picture->LoadFromFile(TS->Strings[2]);
      }
      __finally {
        delete TS;
      }
    }
    agenda.close();
  }
}
Toma en cuenta que es un código orientativo y no realiza comprobación de tipo alguno, por ejemplo te permite guardar varios nombres iguales

Saludos.

Edito: Por algún motivo el mensaje quedó truncado a las primeras líneas y no me dí cuenta hasta ahora, disculpas.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....

Última edición por ecfisa fecha: 17-10-2012 a las 21:56:54. Razón: reparar mensaje
Responder Con Cita
  #20  
Antiguo 18-10-2012
aldemar.bohorqu aldemar.bohorqu is offline
Registrado
NULL
 
Registrado: oct 2012
Posts: 4
Poder: 0
aldemar.bohorqu Va por buen camino
Smile Agradeciendo, y una nueva pregunta.

ecfisa, muchas gracias. Lo hice muy parecido y si corre.

Ahora me surge una nueva pregunta. Si yo quiero generar el archivo *.txt en la misma carpeta donde se encuentran todos los archivos del programa (.cpp, .bpr, .dfm, etc) que estoy haciendo, ¿solamente se puede hacer colocando todo el enlace o hay otra forma?

En mi caso lo hice así: "C:\\Documents and Settings\\nubia\\Escritorio\\prueba2\\datos\\AGENDA.TXT". Pero me imagino que cuando el programa lo corra en otra computadora no va a servir el enlace.

Gracias.
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Determinar si un archivo de texto esta abierto Ricardo León Varios 0 09-08-2005 16:34:28
consegir delphip pack2.0 davidfp Varios 0 04-04-2005 13:09:44
Que usuario de red tiene abierto un archivo Firibiri Varios 0 02-02-2005 13:04:36
Detectar archivo abierto StartKill API de Windows 2 14-12-2004 16:05:31
Archivo de excell abierto valentine API de Windows 2 03-06-2004 10:10:28


La franja horaria es GMT +2. Ahora son las 18:12:20.


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