Programación General > C++ Builder
Error de aceso
ismaibz:
Hola,
Estudio ingenieria informatica y estamos empezando a programar en C++ con el C++ Builder 5 y me da un error un poco raro al compilar
He creado una unidad llamada UTorneo.cpp con su UTorneo.h
He declarado el metodo:
int torneo_numero_equipos (TTorneo t) "TTorneo es un registro"
{
return t.num_equipos;
}
en teoria me tiene que devolver una variable entera con el numero de equipos. Hasta ahi todo bien.
Cuando hago lo siguiente: int num_equipos=torneo_numero_equipos(t); >>Codigo proporcionado por un profesor de la universidad<< o cuando quiero llamar a este metodo desde otra parte me da el siguiente error:
Project Torneo.exe raised exceptcion class EAccessViolation with message 'Access violation address 0040352B in module 'Torneo.exe'.Read of address 0000000'.Process stopped.
¿A que puede ser debido este error?
Gracias
m0skit0:
Como no dés más detalles o más código, es imposible que lo sepamos. Semos programadores, no adivinos.
ismaibz:
void __fastcall TFormBorrarEquipo::FormCreate(TObject *Sender)
{
int num_equipos=torneo_numero_equipos(t); //Todo este codigo es proporcionado por el profesor
AnsiString nombre_equipo;
for (int i=0; i<num_equipos; i++)
{
torneo_nombre_equipo(t,i,nombre_equipo);
ComboBoxEquipo->Items->Values=nombre_equipo;
}
} //
Este es el metodo y en la cabecera de la unidad esta puesto: #include "UTorneo.h" donde esta declarado el registro TTorneo que s la siguiente:
struct TTorneo {
int num_equipos;
AnsiString equipos_nombres[MAX_EQUIPOS];
TPartido partidos[MAX_EQUIPOS][MAX_EQUIPOS];
TResumenEquipo clasificacion[MAX_EQUIPOS];
int equipos_posiciones[MAX_EQUIPOS];
};
el metododo int torneo_numero_equipos(TTorneo t) en teoria te devuelve num_equipos y la cuestion es que me da errores pero si me limito a darle a aceptar el programa acaba arrancando y obtiene bien el numero de equipos.
Este codigo esta en una unidad llamada UFORMBorrarEquipo.cpp
En otra unidad llamada UFORMClasificacion.cpp no me da ningun error
m0skit0:
¿Puedes poner la implementación de torneo_nombre_equipo y torneo_numero_equipos? ¿Podrías depurar y ver dónde te da dicho error en ejecución (en qué línea)?
PD: dile a tu profe de mi parte que cuando se usa C++ se usan clases, no structs <_<
EDITO: he añadido un par de preguntas más ;)
ismaibz:
bool torneo_nombre_equipo(TTorneo t,int id_equipo, AnsiString &nombre_equipo)
{
if (id_equipo <= t.num_equipos && id_equipo >=0) {
nombre_equipo = t.equipos_nombres[id_equipo];
return true;} else{ return false;}
}
esta es la implementacion y me acabo de dar cuenta de que hay un error en el trozo de antes :oops:
pero no creo que el problema sea ese ni mucho menos, sino en esto:
esto esta en UFORMBorrarEquipo.h
private: // User declarations
TTorneo &t;
public: // User declarations
__fastcall TFormBorrarEquipo(TComponent* Owner, TTorneo &x);
y esto en UFORMBorrarEquipo.cpp
__fastcall TFormBorrarEquipo::TFormBorrarEquipo(TComponent* Owner, TTorneo &x)
: TForm(Owner), t(x)
{
}
¿puede tener alguna relacion?
Navegación
[#] Página Siguiente
Ir a la versión completa