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 06-12-2016
Avatar de aguml
aguml aguml is offline
Miembro
 
Registrado: may 2013
Posts: 885
Poder: 11
aguml Va por buen camino
Problemas con C++Builder 6

Hola amigos estoy teniendo problemas con una prueba que estoy haciendo con clases en C++Builder 6 y no acabo de ver el problema. Este es todo el codigo que llevo:
Main.cpp:
Código PHP:
#include <iostream>
#include <fstream>
#include "clase.h"

using namespace std;
//---------------------------------------------------------------------------

int main(int argccharargv[])
{
    
DATOS datos;
    
DatosPersonales claseDatos;

    
cout << "Introduce el ID: ";
    
cin >> datos.id;

    
cout << "Introduce el nombre: ";
    
cin >> datos.nombre;

    
cout << "Introduce los apellidos: ";
    
cin >> datos.apellidos;

    
cout << "Introduce la edad: ";
    
cin >> datos.edad;

    
claseDatos.SetData(&datos);

    
memset(&datos,0,sizeof(DATOS));

    
claseDatos.GetData(&datos);
    return 
0;
}
//--------------------------------------------------------------------------- 
clase.cpp:
Código PHP:
#include "clase.h"
#include <cstring>
//---------------------------------------------------------------------------

DatosPersonales::~DatosPersonales(){

}
//---------------------------------------------------------------------------

DatosPersonales::DatosPersonales(){

}
//---------------------------------------------------------------------------

//Metodos para obtener informacion
int DatosPersonales::GetId(){
    return 
Datos.id;
}
//---------------------------------------------------------------------------

void DatosPersonales::GetName(char *name){
    
strncpy(name,Datos.nombre,SIZEMAXNAME);
}
//---------------------------------------------------------------------------

void DatosPersonales::GetSpells(char *spells){
    
strncpy(spells,Datos.apellidos,SIZEMAXSPELLS);
}
//---------------------------------------------------------------------------

int DatosPersonales::GetAge(){
    return 
Datos.edad;
}
//---------------------------------------------------------------------------

void DatosPersonales::GetData(DATOS *data){
    
memcpy(data,Datos,sizeof(DATOS));
}
//---------------------------------------------------------------------------

//Metodos para enviar informacion
void DatosPersonales::SetId(int id){
    
Datos.id=id;
}
//---------------------------------------------------------------------------

void DatosPersonales::SetName(char *name){
    
strncpy(Datos.nombre,name,SIZEMAXNAME);
}
//---------------------------------------------------------------------------

void DatosPersonales::SetSpells(char *spells){
    
strncpy(Datos.apellidos,spells,SIZEMAXSPELLS);
}
//---------------------------------------------------------------------------

void DatosPersonales::SetAge(int age){
    
Datos.edad=age;
}
//---------------------------------------------------------------------------

void DatosPersonales::SetData(DATOS *data){
    
memcpy(Datos,data,sizeof(DATOS));
}
//--------------------------------------------------------------------------- 
clase.h:
Código PHP:
#ifndef claseH
#define claseH
#define SIZEMAXNAME 20
#define SIZEMAXSPELLS 30

typedef struct{
    
int id;
    
char nombre[SIZEMAXNAME];
    
char apellidos[SIZEMAXSPELLS];
    
int edad;
}
DATOS;

class 
DatosPersonales{
    private:
        
DATOS Datos;
    public:
        ~
DatosPersonales();
        
DatosPersonales();

        
//Metodos para obtener informacion
        
int GetId();
        
void GetName(char *name);
        
void GetSpells(char *spells);
        
int GetAge();
        
void GetData(DATOS *data);

        
//Metodos para enviar informacion
        
void SetId(int id);
        
void SetName(char *name);
        
void SetSpells(char *spells);
        
void SetAge(int age);
        
void SetData(DATOS *data);
}
//---------------------------------------------------------------------------
#endif 
Y aqui los errores que me salen:
Cita:
[C++ Warning] main.cpp(5): W8058 Cannot create pre-compiled header: header incomplete
[C++ Error] main.cpp(5): E2040 Declaration terminated incorrectly
[C++ Error] main.cpp(13): E2451 Undefined symbol 'cout'
[C++ Error] main.cpp(14): E2451 Undefined symbol 'cin'
Al dar el primer error se me queda en la linea del "using namespace std" y si la comento se me queda en la siguiente.
¿Alguien sabria decirme que puede estar pasando?
Responder Con Cita
  #2  
Antiguo 06-12-2016
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.

No probé si el código funciona correctamente o hace lo que debiera, pero para que compile sin error aplica las correcciones marcadas con: <<==.


Clase.h :
Código PHP:
#ifndef claseH
#define claseH
#define SIZEMAXNAME 20
#define SIZEMAXSPELLS 30

typedef struct {
    
int id;
    
char nombre[SIZEMAXNAME];
    
char apellidos[SIZEMAXSPELLS];
    
int edad;
DATOS;

class 
DatosPersonales {
private:
  
DATOS Datos;
public:
  
DatosPersonales();
  ~
DatosPersonales();
  
//Metodos para obtener informacion
  
int GetId();
  
void GetName(char *name);
  
void GetSpells(char *spells);
  
int GetAge();
  
void GetData(DATOS *data);

  
//Metodos para enviar informacion
  
void SetId(int id);
  
void SetName(char *name);
  
void SetSpells(char *spells);
  
void SetAge(int age);
  
void SetData(DATOS *data);
};    
// <<== 

#endif 
Clase.cpp:
Código PHP:
#include "clase.h"
#include <string.h> // <<==

DatosPersonales::~DatosPersonales(){
}

DatosPersonales::DatosPersonales(){
}

//Metodos para obtener informacion
int DatosPersonales::GetId(){
  return 
Datos.id;
}

void DatosPersonales::GetName(char *name){
  
strncpy(nameDatos.nombreSIZEMAXNAME);
}

void DatosPersonales::GetSpells(char *spells){
  
strncpy(spellsDatos.apellidosSIZEMAXSPELLS);
}

int DatosPersonales::GetAge(){
  return 
Datos.edad;
}

void DatosPersonales::GetData(DATOS *data){
  
memcpy(data, &Datossizeof(DATOS));  // <<==    
}

//Metodos para enviar informacion
void DatosPersonales::SetId(int id){
  
Datos.id id;
}

void DatosPersonales::SetName(char *name){
  
strncpy(Datos.nombrenameSIZEMAXNAME);
}

void DatosPersonales::SetSpells(char *spells){
  
strncpy(Datos.apellidosspellsSIZEMAXSPELLS);
}

void DatosPersonales::SetAge(int age){
  
Datos.edad age;
}

void DatosPersonales::SetData(DATOS *data){
  
memcpy( &Datosdatasizeof(DATOS));  // <<==

Te adjunto el código corregido.

Saludos
Archivos Adjuntos
Tipo de Archivo: zip aguml.zip (91,4 KB, 1 visitas)
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #3  
Antiguo 06-12-2016
Avatar de aguml
aguml aguml is offline
Miembro
 
Registrado: may 2013
Posts: 885
Poder: 11
aguml Va por buen camino
Ok en cuanto pueda lo pruebo pero son los típicos fallos tontos que te vuelves loco y no ves jajaja.
Responder Con Cita
  #4  
Antiguo 06-12-2016
Avatar de aguml
aguml aguml is offline
Miembro
 
Registrado: may 2013
Posts: 885
Poder: 11
aguml Va por buen camino
Ya de paso hago otra consulta sobre lo que voy a añadir al código. La idea es usar fstream para leer y escribir en archivos de forma secuencial usando la estructura DATOS y eso lo hago sin problema en C pero nunca lo hice en C++ con ofstream y ifstream. Se como abrirlo de forma binaria usando ios::binary pero para leer y escribir, que yo sepa, los métodos read y write esperan char* y no se si es lo que tengo que usar ni como hacerlo. ¿Podéis explicarme esa parte solo?
Responder Con Cita
  #5  
Antiguo 06-12-2016
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.

Un ejemplo (muy básico) que escribe y lee la estructura en un archivo:
Código PHP:
#include <iostream>
#include <string.h>
#include <fstream>

using namespace std;

const 
int SIZEMAXNAME   20;
const 
int SIZEMAXSPELLS 30;
const 
charFILENAME    "struct.dat";

struct Datos {
  
int id;
  
char nombre[SIZEMAXNAME];
  
char apellidos[SIZEMAXSPELLS];
  
int edad;
};

void saveStructDatos dt );
void readStructDatosdt );

int main()
{
  
// unos datos en dt
  
Datos dt = { 1"Pedro""Diloretto"28 };

  
// guardar en archivo
  
saveStructdt );

  
// limpiar struct
  
memset(&dt0sizeofdt ) );

  
// leer de archivo
  
readStructdt );

  
// mostrar
  
cout << dt.id << " " << dt.nombre << " " << dt.apellidos << " " << dt.edad;

  
cin.get();
  return 
0;
}

void saveStruct (Datos dt )
{
  
ofstream f_outFILENAMEios::binary );
  
f_out.writereinterpret_cast<char*>( &dt ), sizeofdt ) );
  
f_out.close();
}

void readStruct (Datosdt )
{
  
ifstream f_inFILENAMEios::binary );
  
f_in.readreinterpret_cast<char*>( &dt ), sizeofdt ) );
  
f_in.close();

Saludos
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #6  
Antiguo 06-12-2016
Avatar de aguml
aguml aguml is offline
Miembro
 
Registrado: may 2013
Posts: 885
Poder: 11
aguml Va por buen camino
¿Y que diferencia hay entre estos dos prototipos?
Código PHP:
void readStruct (Datosdt );
void readStruct (Datosdt ); 
¿Con ambos podría conseguir lo mismo?
Si es así ¿por que usar uno en lugar de otro?
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
Problemas al instalar Indy en Builder 6 Angel.Matilla C++ Builder 1 26-11-2015 10:50:09
Problemas con los hilos en Builder aguml C++ Builder 21 31-03-2014 12:34:35
Ayuda!!!Problemas en C++ Builder. Por Favor lisette C++ Builder 2 29-02-2012 06:04:35
problemas al compilar con MyMAC en C++Builder 6 orlymach Conexión con bases de datos 0 03-07-2010 13:08:53
Problemas PageControl en Builder franfl C++ Builder 5 01-10-2008 05:14:47


La franja horaria es GMT +2. Ahora son las 09:37:01.


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