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. |
hola, con
Código:
Memo1->Lines->LoadFromFile("c:\fichero"); |
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 ... |
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.
|
echandole un vistazo a 'classes.pas', donde se encuentra la definicion de esta clase (en Delphi, en C++ sera equivalente):
|
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 |
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.
|
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. |
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... |
Código:
bool Escribe(){ |
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... |
¿Puedes poner algo de tu código?;)
Saludos. |
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.... |
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(); |
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) Otra opción de guardar puede ser: Código:
void __fastcall TForm1::Button2Click(TObject *Sender) Saludos.;) |
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 |
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. |
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.
|
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.
Edito: Ejem, ustedes lo traducen a C++ fale? :o Saludos |
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. |
Buenos disculpen pero no entendí nada del códe anterior,
si me pudieran explicar un poco mejor me seria útil. Buenos miren lo que quiero hacer es lo siguiente... Tengo un Edit (Edit1) donde se debe de poner un nombre y un botón (Aceptar) para que cuando le demos me guarde el nombre que teclearon, ya lo de guardar lo ise pero lo que quiero es que cuando tecleen el nombre no sea preciso dar en el botón solo presionamos ENTRER y ya esta... Muchas gracias por la Ayuda |
Si. La propiedad 'default' de los TButtons hace que si se pulsa enter en cualquier momento dentro del formulario, se ejecute el 'click' del boton. Algo parecido con la propiedad 'cancel', solo que lo activa la tecla 'escape'. Si lo que quieres es cerrar la ventana, si esta se ha llamado con ShowModal, entonces solo tienes que poner la propiedad ModalResult del Button a algo diferente de mrNone.
|
Muchas gracias por la ayuda coso,
Me funciono a la Perfeccion lo de el boton (Aceptar) y la tecla Enter, pero no entiendo lo del Escape, eso pudiera utilizarlo cuando esta el programa en ejecucion si presiono Escape me cierra el programa, si pudiera ser eso me gustaria que me pusieras un Ejemplo de como utilizarlo... gracias |
por ejemplo, si quieres q un codigo se te ejecute al pulsar escape, entonces pones su propiedad 'cancel' a true. Es util por ejemplo para cerrar ventanas de dialogo con un simple escape sin tener que usar el raton. Mira la ayuda F1, encontraras mas informacion. saludos.
|
Muchas gracias el codico ya me esta funcionando a la perfección gracias a ustedes...
Si encuentro otras duda que tenga mientras perfecciono el programa la planteo... muchas gracias... |
Hola a todos de nuevo, ahora tengo otra duda lo que pasa es que no se como encriptar un texto, lo e visto en otros temas pero no lo entiendo muy bien, lo que yo quiero hacer es cifrar una contraseña que teclea el usuario,
Ejemplo: - Tengo un Edit y un Button - Para inicial mi aplicacion es necesario introducir un password en el Edit - Cuando le doy al botton me decifre el password guardado en un txt y compare el resultado con el que el usuario tecleo si es igual entra al programa sino muestra un Mesage de Error... * Yo ya tengo ello lo de la comparacion pero no se como cifrar y decifrar el texto si me pudieran ayudar se lo agradeseria mucho... |
Hola de nuevo. Esta pregunta debe ir en un hilo nuevo. Si miras en la seccion trucos o usas el buscador del foro encontraras varios ejemplos. saludos.
|
Gracias los buscare
|
Trate de buscar mi duda en el Buscador pero no tengo acceso a la paguina que va despues que tu pones buscar...
bueno tratare de poner mi duda en otro Hilo para ver si la puedo solucional que ustedes me dicen . |
Hola yelian, como dice coso los métodos para encriptar son numerosos y los puedes encontrar en este foro y en la web. Si lo que deseas es un método simple, puedes usar un algoritmo xor que es simétrico.
Te dejo aquí una muestra de una rutina simple pero eficaz de encriptación XOR de 64 bits que permite encriptaciones parciales aditivas, es decir encriptar, por ejemplo, un fichero grande a medida eque se escribe por partes en el disco.... Saludos. |
Gracias por la ayuda,
aaa y lo que dije que no tenia acceso al buscador no es sierto es el explorador mio que tenia problema, pero ya lo solucione, pienso buscar bastante sobre este tema que me gusta... |
escafandra si no te es molestia de explicarme un poco sobre el ejemplo que me pusiste, lo que pasa es que tengo algunas duda sobre ese metodo de encriptacion XOR que me pusiste antreriol....
gracias de antemano. |
Bueno, no es dificil de usar.
1º Define un buffer, puede ser con un contenide texto o binario. 2º Define una clave. 3º Encríptalo. Código:
char Buffer[] = "Este texto se va a encriptar." Siendo HFile el manejador de un fichero abierto y int WritePos lo ya escrito en el fichero Código:
HFile = open(FileName.c_str(), O_CREAT | O_WRONLY | O_BINARY); El buffer pasado como puntero se encriptam, por lo que si lo que se quiere en encriptar una copia y retener el original, deberá hacerse la misma antes de llamar a la función, y pasarle el puntero adecuado. Experimenta. Saludos. |
Ahora te explico un poco el algoritmo que he usado:
La encriptación Xor es fácil de implementar y es simétrica. La misma función y la misma clave sirven para encriptar y desencriptar. Se basa en hacer una operación binaria XOR entre un dato y una clave. Piensa en este ejemplo binario: Dato = 10001000 Clave = 01000100 10001000 XOR 01000100 = 11001100; Dato Encriptado 11001100 XOR 01000100 = 10001000; Dato Desencriptado si ampliamos el nº de bits tendremos una operación XOR mas amplia... Esta rutina lo amplia a 8*8 = 64 bits. Código:
void Experimenta. Saludos. |
Gracias por la pasiencia y la explicacion seguro que experimentare, despues les cuento como me fue
* si no les vuelvo a escribir es que se me exploto el celebro... (Broma) Muchas Gracias por la ayuda.... |
La franja horaria es GMT +2. Ahora son las 06:05:38. |
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