![]() |
![]() |
![]() |
![]() |
![]() |
FTP | ![]() |
![]() |
CCD | ![]() |
![]() |
Buscar | ![]() |
![]() |
Trucos | ![]() |
![]() |
Trabajo | ![]() |
![]() |
Foros | ![]() |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
![]() |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
|||
|
|||
![]() Saludos amigos, tengo un problema con el embarcadero builder c++, en si lo que quiero es mostrar una consola por ejemplo un "Hola mundo" al hacer un click en el Button de un Form, lo he estado intentando y algunas veces me sale error y otras no me sale nada, espero alguien pueda ayudarme .
Gracias de antemano. |
#2
|
||||
|
||||
Hola darkmir y bienvenido a Club Delphi
![]() Como a todos los que se inician te invitamos a que leas nuestra guía de estilo. Por favor, publicá el código de alguno de los intentos que te produce el error y el mensaje de error literalmente. Sin esos datos es muy difícil acertar que está sucediendo. Saludos.
__________________
Daniel Didriksen Guía de estilo - Uso de las etiquetas - La otra guía de estilo .... |
#3
|
|||
|
|||
![]() veras tengo este codigo en c++ builder 6 y como hago para llamar desde un TForm1 con un boton creado dede ahi.. llamar a la consola por ejemplo mira el codigo espero q m entiendas
#include <vcl.h> #pragma hdrstop #include "Unit1.h" //--------------------------------------------------------------------------- #pragma package(smart_init) #pragma resource "*.dfm" TForm1 *Form1; //--------------------------------------------------------------------------- __fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner) { } //--------------------------------------------------------------------------- void __fastcall TForm1::Button1Click(TObject *Sender) { } //--------------------------------------------------------------------------- ahi tengo hecho la forma.. ahora quiero asociar con la ejecucion de este codigo... #include <iostream> #include <fstream> #include <iomanip> #include <cstdlib> #include <cstring> using namespace std; // Funciones auxiliares: int Menu(); long LeeNumero(); // Clase registro. class Registro { public: Registro(char *n=NULL, int d1=0, int d2=0, int d3=0, int d4=0) : valido('S') { if(n) strcpy(nombre, n); else strcpy(nombre, ""); dato[0] = d1; dato[1] = d2; dato[2] = d3; dato[3] = d4; } void Leer(); void Mostrar(); void Listar(long n); const bool Valido() { return valido == 'S'; } const char *Nombre() { return nombre; } private: char valido; // Campo que indica si el registro es válido // S->Válido, N->Inválido char nombre[34]; int dato[4]; }; // Implementaciones de clase Registro: // Permite que el usuario introduzca un registro por pantalla void Registro::Leer() { system("cls"); cout << "Leer registro:" << endl << endl; valido = 'S'; cout << "Nombre: "; cin.getline(nombre, 34); for(int i = 0; i < 4; i++) { cout << "Dato[" << i << "]: "; dato[i] = LeeNumero(); } } // Muestra un registro en pantalla, si no está marcado como borrado void Registro::Mostrar() { system("cls"); if(Valido()) { cout << "Nombre: " << nombre << endl; for(int i = 0; i < 4; i++) cout << "Dato[" << i << "]: " << dato[i] << endl; } cout << "Pulsa una tecla"; cin.get(); } // Muestra un registro por pantalla en forma de listado, // si no está marcado como borrado void Registro::Listar(long n) { int i; if(Valido()) { cout << "[" << setw(6) << n << "] "; cout << setw(34) << nombre; for(i = 0; i < 4; i++) cout << ", " << setw(4) << dato[i]; cout << endl; } } // Clase Datos, almacena y trata los datos. class Datos ![]() public: Datos() : fstream("alea.dat", ios::in | ios: ![]() if(!good()) { open("alea.dat", ios::in | ios: ![]() cout << "fichero creado" << endl; cin.get(); } } ~Datos() { Empaquetar(); } void Guardar(Registro ®); bool Recupera(long n, Registro ®); void Borrar(long n); private: void Empaquetar(); }; // Implementación de la clase Datos. void Datos::Guardar(Registro ®) { // Insertar al final: clear(); seekg(0, ios::end); write(reinterpret_cast<char *> (®), sizeof(Registro)); cout << reg.Nombre() << endl; } bool Datos::Recupera(long n, Registro ®) { clear(); seekg(n*sizeof(Registro), ios::beg); read(reinterpret_cast<char *> (®), sizeof(Registro)); return gcount() > 0; } // Marca el registro como borrado: void Datos::Borrar(long n) { char marca; clear(); marca = 'N'; seekg(n*sizeof(Registro), ios::beg); write(&marca, 1); } // Elimina los registros marcados como borrados void Datos::Empaquetar() { ofstream ftemp("alea.tmp", ios: ![]() Registro reg; clear(); seekg(0, ios::beg); do { read(reinterpret_cast<char *> (®), sizeof(Registro)); cout << reg.Nombre() << endl; if(gcount() > 0 && reg.Valido()) ftemp.write(reinterpret_cast<char *> (®), sizeof(Registro)); } while (gcount() > 0); ftemp.close(); close(); remove("alea.bak"); rename("alea.dat", "alea.bak"); rename("alea.tmp", "alea.dat"); open("alea.dat", ios::in | ios: ![]() } int main() { Registro reg; Datos datos; int opcion; long numero; do { opcion = Menu(); switch(opcion) { case '1': // Añadir registro reg.Leer(); datos.Guardar(reg); break; case '2': // Mostrar registro system("cls"); cout << "Mostrar registro: "; numero = LeeNumero(); if(datos.Recupera(numero, reg)) reg.Mostrar(); break; case '3': // Eliminar registro system("cls"); cout << "Eliminar registro: "; numero = LeeNumero(); datos.Borrar(numero); break; case '4': // Mostrar todo numero = 0; system("cls"); cout << "Nombre Datos" << endl; while(datos.Recupera(numero, reg)) reg.Listar(numero++); cout << "pulsa return"; cin.get(); break; } } while(opcion != '0'); return 0; } // Muestra un menú con las opciones disponibles y captura una opción del usuario int Menu() { char resp[20]; do { system("cls"); cout << "MENU PRINCIPAL" << endl; cout << "--------------" << endl << endl; cout << "1- Insertar registro" << endl; cout << "2- Mostrar registro" << endl; cout << "3- Eliminar registro" << endl; cout << "4- Mostrar todo" << endl; cout << "0- Salir" << endl; cin.getline(resp, 20); } while(resp[0] < '0' && resp[0] > '4'); return resp[0]; } // Lee un número suministrado por el usuario long LeeNumero() { char numero[6]; fgets(numero, 6, stdin); return atoi(numero); } vieron x fa ayuda siii.. es para un proyecto... muchas gracias de antemano |
#4
|
||||
|
||||
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 ![]()
__________________
La otra guía de estilo | Búsquedas avanzadas | Etiquetas para código | Colabora mediante Paypal |
#5
|
||||
|
||||
¿Tiene que ser por consola? ¿No te serviria usar los componentes estandar de builder? Por ejemplo un TEdit para introducir datos en vez de un scanf, gets,..., mostrar la salida usando por ejemplo un TMemo en vez del printf. Si tiene que ser por consola pues creo que seria mejor crearlo en c, o c++ y adaptar el codigo para que envie mensajes a tu aplicacion que contiene el form, la cual estará a la escucha. Es mas complicado que usar los componentes estandar pero se puede hacer.
Última edición por aguml fecha: 19-08-2014 a las 18:53:41. |
#6
|
||||
|
||||
pensandolo mejor, podrias crear tu proyecto en consola, luego te creas en builder un loader debugger el cual depuraria a tu aplicacion de consola y para comunicarte desde el proceso de consola lo mas facil seria usar OutputDebugString y en ese evento del debugger creas un switch para cada opcion y asi gestionas la salida del proceso de consola. Yo estuve trabajando en una clase para crear loaders debuggers facilmente en builder. Tuve mucha ayuda pero va muy bien. Si quieres hago una prueba y la mando para que captes la idea, aunque quizas haya otras formas mejores de hacerlo. A ver que dicen los maestros.
|
#7
|
||||
|
||||
1. Crea tu programa de consola (Mi_Consola.exe) y verifica que funciona correstamente.
2. Crea tu programa VCL con tu formulario y tu botón. El código ce tu botón será algo como esto: Código:
void __fastcall TForm1::Button1Click(TObject *Sender) { system("Mi_Consola.exe"); } Saludos. |
#8
|
||||
|
||||
bueno, si solo quiere lanzar la consola si tener control de lo que se haga en ella desde el form, puessi.
|
![]() |
|
|
![]() |
||||
Tema | Autor | Foro | Respuestas | Último mensaje |
Llamar a un form desde un grid | jafera | Varios | 4 | 17-08-2010 17:23:03 |
llamar al evento click de un boton q se encuentra en un form desde otro form | TURBOIGOR | OOP | 6 | 02-12-2008 14:50:16 |
Usar System() desde C++ Builder y ocultar la consola...? | Negriz | C++ Builder | 3 | 14-11-2008 17:35:33 |
Como llamar form desde otros form y regresar a la linea que se estaba ejecutando | Willy Rodrigo | C++ Builder | 1 | 03-08-2007 19:36:23 |
Llamar una form desde otra form!!! | niogon | Varios | 2 | 30-09-2004 16:09:17 |
![]() |
|