Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Otros entornos y lenguajes > C++ Builder
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 26-10-2008
yelian yelian is offline
No confirmado
 
Registrado: nov 2007
Ubicación: Cuba
Posts: 81
Poder: 0
yelian Va por buen camino
Exclamation Ayuda con Programa en C++

Necesito que me ayuden a terminar una aplicación que estoy haciendo en C++, la duda que tengo es que no se como mostrar en un Memo el contenido de un txt,

si me ayudaran se los agrade seria mucho, disculpen la ignorancia es que soy nuevo en esto del mundo de la programación, si hago alguna pregunta tonta me disculpan lo que pasa es que los novatos somos así.

Después pongo mas dudas que tengo sobre la aplicación que estoy haciendo gracias de ante mano.
Responder Con Cita
  #2  
Antiguo 26-10-2008
[coso] coso is offline
Miembro Premium
 
Registrado: may 2008
Ubicación: Girona
Posts: 1.678
Poder: 0
coso Va por buen camino
hola, con
Código:
 Memo1->Lines->LoadFromFile("c:\fichero");
deberia funcionarte. saludos
Responder Con Cita
  #3  
Antiguo 26-10-2008
yelian yelian is offline
No confirmado
 
Registrado: nov 2007
Ubicación: Cuba
Posts: 81
Poder: 0
yelian Va por buen camino
Thumbs up gracias

Gracias me funciono a la perfeccion, pero si no fuera mucha molestia me gustaria que me explicara el code para ver como funciona, asi tengo alguna idea de como funciona.

Muchas gracias por la ayuda ...
Responder Con Cita
  #4  
Antiguo 26-10-2008
[coso] coso is offline
Miembro Premium
 
Registrado: may 2008
Ubicación: Girona
Posts: 1.678
Poder: 0
coso Va por buen camino
no hay mucho secreto. Es un metodo de la clase TStrings el cual carga un fichero de texto. Te recomiendo que le eches un vistazo a la ayuda en linea. saludos.
Responder Con Cita
  #5  
Antiguo 26-10-2008
[coso] coso is offline
Miembro Premium
 
Registrado: may 2008
Ubicación: Girona
Posts: 1.678
Poder: 0
coso Va por buen camino
echandole un vistazo a 'classes.pas', donde se encuentra la definicion de esta clase (en Delphi, en C++ sera equivalente):

Código Delphi [-]
procedure TStrings.LoadFromFile(const FileName: string);
var
  Stream: TStream;
begin
  Stream := TFileStream.Create(FileName, fmOpenRead or fmShareDenyWrite);
  try
    LoadFromStream(Stream);
  finally
    Stream.Free;
  end;
end;
procedure TStrings.LoadFromStream(Stream: TStream);
var
  Size: Integer;
  S: string;
begin
  BeginUpdate;
  try
    Size := Stream.Size - Stream.Position;
    SetString(S, nil, Size);
    Stream.Read(Pointer(S)^, Size);
    SetTextStr(S);
  finally
    EndUpdate;
  end;
end;
Responder Con Cita
  #6  
Antiguo 26-10-2008
yelian yelian is offline
No confirmado
 
Registrado: nov 2007
Ubicación: Cuba
Posts: 81
Poder: 0
yelian Va por buen camino
Exclamation

Disculpa pero no se mucho sobre Delphi me gustaría que las aclaraciones fue eran en el Lenguaje de C++, y acuérdate de que no se tanto de C++, soy un novato en esto de la programación ...

gracias por ayudarme y disculpe la molestia
Responder Con Cita
  #7  
Antiguo 26-10-2008
[coso] coso is offline
Miembro Premium
 
Registrado: may 2008
Ubicación: Girona
Posts: 1.678
Poder: 0
coso Va por buen camino
bueno, en C++ sigue siendo lo mismo: loadfromfile es un metodo implementado en la clase TStrings para cargar lineas de texto. Echale un vistazo a classes.cpp y busca LoadFromFile, y tendras el equivalente de lo que te he puesto. Saludos.
Responder Con Cita
  #8  
Antiguo 27-10-2008
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
Una pequeña aclaración yelian,la clase TString, como todas las clases VCL, están originalmente programadas en delphi, por lo que el código fuente está en delphi. Builder es capaz de compilar delphi.

Símplemenmte quédate, de momento, con la explicación que te da coso.

Saludos.
Responder Con Cita
  #9  
Antiguo 28-10-2008
yelian yelian is offline
No confirmado
 
Registrado: nov 2007
Ubicación: Cuba
Posts: 81
Poder: 0
yelian Va por buen camino
Thumbs up

Gracias por la aclaracion anteriol, lo que me doy cuenta de que tengo que seguir estudiando los tutoriales de C++ que tengo...

Pero bueno tengo otra inquietud ...
La idea es guardar un texto tecleado en un Memo en un archivo (txt)
yo por mi parte lo e echo así, pero bueno si ustedes tienen otro metodo mas facil de hacerlo diganmelo y claro si tengo algun Error me lo aclaran

Code:
string guardar;
guardar=Memo1->Text.c_str();
ofstream fSalida ("c:\salva.txt");
fSalida<<guardar;
fSalida.close();

gracias de antemano por la colaboracion...
Responder Con Cita
  #10  
Antiguo 28-10-2008
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
Código:
bool Escribe(){
  String guardar;
  guardar=Memo1->Text.c_str();
  ofstream fSalida("d:\\salva.txt", ios::trunc);
  if(fSalida.fail()){
     return false;
  }
  fSalida << guardar.c_str();
  fSalida.close();
  return true;
}
Saludos.

Última edición por escafandra fecha: 28-10-2008 a las 21:03:23.
Responder Con Cita
  #11  
Antiguo 30-10-2008
yelian yelian is offline
No confirmado
 
Registrado: nov 2007
Ubicación: Cuba
Posts: 81
Poder: 0
yelian Va por buen camino
Thumbs up

Gracias por el aporte anterior me fue util pero tengo un problemita, cuando guardo lo que e escrito, entre linia y linea me deja una linea en blanco,
Si presiono el boton de guardar varias veses me deja multiples lineas en blanco, y no se que hacer si pudieran darme una mano en eso como es de costumbre se lo agradeceria mucho...
Responder Con Cita
  #12  
Antiguo 30-10-2008
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
¿Puedes poner algo de tu código?

Saludos.
Responder Con Cita
  #13  
Antiguo 30-10-2008
yelian yelian is offline
No confirmado
 
Registrado: nov 2007
Ubicación: Cuba
Posts: 81
Poder: 0
yelian Va por buen camino
Bueno aquí les dejo una parte resumida de mi code, la idea de esta aplicacion que estoy haciendo es de poder visualizar un fichero (txt) y tambien poderlo modificar y guardar sus cambios , esto se puede hacer muy facil desde el explorer pero lo que quiero es que no se vea que fichero es el que se esta mostrando...

- Antes de nada creamos este archivo "D:\Datos.txt".
- En un Form insertamos un Memo y dos Botone uno=(Abrir Fichero) y el otro=(Guardar) ,
- En el primer Boton (Abrir Fichero) va este code-

Button1:
--------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
Memo->Lines->LoadFromFile("D:\Datos.txt");
}

Button2:
--------
void __fastcall TForm1::Button2Click(TObject *Sender)
{
string guardar;
guardar=Memo->Text.c_str();
ofstream fSalida ("D:\Datos.txt");
fSalida<<guardar;
fSalida.close();
}


*** Para que vean el problema que tengo, abran el archivo, escriban cualquier cosa en el y presionen varias veses el boton de Guardar y despues vuelban a abrirlo para que ustedes vean que entre linea y linea deja multiples espacios en blanco, como se puede solucional este problema si alguien sabe diganmelo....

Responder Con Cita
  #14  
Antiguo 31-10-2008
yelian yelian is offline
No confirmado
 
Registrado: nov 2007
Ubicación: Cuba
Posts: 81
Poder: 0
yelian Va por buen camino
Bueno mira probe este code para el Button2 pero me sige haciendo lo mismo, no se que pueda ser

Code:

ofstream fSalida ("D:\Datos.txt");
fSalida<< Memo->Text.c_str();
fSalida.close();
Responder Con Cita
  #15  
Antiguo 31-10-2008
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
Bueno, veo errores en el código. La ruta debes ponerla así:
"D:\\Datos.txt" con "doble barra".

En C, los archivos guardados en modo texto se les añade un retorno de carro y otro de línea \r\n. El TMemo está dividido en líneas, por lo tanto se incluyen \r\n nuevos al leer el archivo con el sistema fstream (que por defecto lee en modo texto)

Puedes utilizar para salvar el Memo:
Código:
void __fastcall TForm1::Button2Click(TObject *Sender)
{
   Memo->Lines->SaveToFile("D:\\Datos.txt");
}
Te funcionará como quieres.

Otra opción de guardar puede ser:
Código:
void __fastcall TForm1::Button2Click(TObject *Sender)
{
  ofstream fSalida ("D:\\Datos.txt", ios::binary);
  fSalida<< Memo->Text.c_str();
  fSalida.close();
}
También te funcionará como quieres.

Saludos.
Responder Con Cita
  #16  
Antiguo 03-11-2008
yelian yelian is offline
No confirmado
 
Registrado: nov 2007
Ubicación: Cuba
Posts: 81
Poder: 0
yelian Va por buen camino
Thumbs up

Muchas Gracias escafandra las solución para lo que estoy haciendo es

Memo1->Lines->SaveToFile("D:\Datos.txt");

después planteo otra duda que tengo,

gracias por la ayuda
Responder Con Cita
  #17  
Antiguo 04-11-2008
yelian yelian is offline
No confirmado
 
Registrado: nov 2007
Ubicación: Cuba
Posts: 81
Poder: 0
yelian Va por buen camino
Exclamation

Buenas para todos los del Foros estoy aquí de nuevo con mis dudas.
El problema que tengo es que no se como voy a hacer para cuando doy Enter se ejecute la acción de un botón,

Aclaracion:
Tengo un Form con un Edit y un Button la idea es de cuando presione Enter fuera como si estuviera dandole clic al Boton.
Responder Con Cita
  #18  
Antiguo 04-11-2008
[coso] coso is offline
Miembro Premium
 
Registrado: may 2008
Ubicación: Girona
Posts: 1.678
Poder: 0
coso Va por buen camino
Hola, antes que nada lo mejor seria que cada nueva pregunta te fuera en un nuevo hilo (esta pregunta solo la veriamos escafandra y yo, por ejemplo). Si pones default a true lo solucionas. Saludos.
Responder Con Cita
  #19  
Antiguo 04-11-2008
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 28
Lepe Va por buen camino
Al ponerlo como default cerrará la ventana al mismo tiempo, si no quieres ese efecto, en el onkeyUp del TEdit, puedes llamar al evento del clic.

Código Delphi [-]
if key = vk_return then
   button1.Click;

Edito: Ejem, ustedes lo traducen a C++ fale?

Saludos
__________________
Si usted entendió mi comentario, contácteme y gustosamente,
se lo volveré a explicar hasta que no lo entienda, Gracias.
Responder Con Cita
  #20  
Antiguo 04-11-2008
[coso] coso is offline
Miembro Premium
 
Registrado: may 2008
Ubicación: Girona
Posts: 1.678
Poder: 0
coso Va por buen camino
esto...no la cierra. Sólo si tiene modalresult <> mrNone y es llamada por showmodal

PD: ya de paso, si quieres el mismo efecto con Escape, puedes poner Cancel a true. saludos.
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
ayuda programa.. cmm07 Varios 13 17-07-2008 21:37:40
Ayuda con un programa kanedor Varios 6 14-05-2008 17:48:53
Conectar archivos de ayuda a un programa GINAUNICA Varios 3 15-04-2008 01:43:35
Ayuda con programa jorgegetafe Varios 4 07-12-2007 12:38:33
Ayuda con programa de C megadanzig C++ Builder 7 19-03-2004 19:26:48


La franja horaria es GMT +2. Ahora son las 00:13:33.


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