FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
||||
|
||||
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 |
#2
|
||||
|
||||
Cita:
Por cierto, recuerda poner los tags al código fuente, ejemplo: Gracias |
#3
|
||||
|
||||
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 |
#4
|
||||
|
||||
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 |
#5
|
||||
|
||||
Cita:
// Saludos |
#6
|
||||
|
||||
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 |
#7
|
||||
|
||||
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:
O más simple, aunque confuso por el nombre de la misma, con la función ChangeFileExt:
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. |
#8
|
||||
|
||||
gracias ecfisa eso solucionó mi problema, muchas gracias. saludos dany
|
#9
|
|||
|
|||
¿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. |
#10
|
||||
|
||||
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 |
#11
|
||||
|
||||
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. |
#12
|
|||
|
|||
¿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. |
#13
|
||||
|
||||
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 .... |
#14
|
||||
|
||||
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, |
#15
|
||||
|
||||
Sin embargo, sí se puede codificar en base64 (por ejemplo) para "convertirla" a texto.
|
#16
|
||||
|
||||
Cita:
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 .... |
#17
|
||||
|
||||
A mi me llama la atención este comentario:
Cita:
Habría que ver que código real está usando para todo lo que expone y que errores se muestran. Saludos. |
#18
|
|||
|
|||
Re-formulación de la pegunta
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.
|
#19
|
||||
|
||||
Hola aldemar.bohorqu.
Una forma bastante sencilla de hacerlo es:
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(); } } 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 |
#20
|
|||
|
|||
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. |
|
|
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 |
|