SoloCodigo
Programación General => C/C++ => C++ Builder => Mensaje iniciado por: mizzard en Viernes 19 de Septiembre de 2008, 16:23
-
Hola, tengo creada una libreria con diferentes funciones para ser utilizada desde diferentes formularios, el caso es que cuando añado una función que depende de un objeto instanciado en uno de los formularios (como un boton) la cosa no funciona.
Este es el archivo "MiLibreria.cpp" el cual incluyo en todos los formularios
Tengo 2 formularios que quieren acceder a esta funcion, el MainForm (En donde se encuentra el elemento ComboBox que quiero utilizar) y el otro es el InfoSatBox.
void ListaSat()
{
int sat=0;
for(int i=0;i<MainForm->Memo->Lines->Count-1;i++)
{
if(sat<(MainForm->Memo->Lines->Count))
{
MainForm->ListarSatelites->Items->Add(MainForm->Memo->Lines->Strings[sat]);//ahi pasa por cada linea...
MainForm->ListarSatelites->Items->Add(MainForm->Memo->Lines->Strings[sat]);//ahi pasa por cada linea...
sat=sat+4;
}
MainForm->ListarSatelites->ItemIndex=0;
}
}
que deberia hacerla, publica?, como?
un saludo y espero vuestra respuesta!
-
el q debes incluir es el .h, MiLibreria.h
-
Al final ese MiLibreria.cpp la utilizo para realizar operaciones matemáticas con variables.
El caso es que esa función la tengo en el formulario principal y la he declarado de la siguiente forma (Archivo Principal.cpp):
double __fastcall TMainForm::DatosSatelite(char datos[])
{
AnsiString tmp="";
char *decimal = "0.";
char info[]="";
double infoPedida=0;
if (strcmp(datos,"epocaAño")==0)
{
tmp= MainForm->Memo->Lines->Strings[SelSatelite()+1].SubString(19,2);
strcpy(info,tmp.c_str());
}
if (strcmp(datos,"epoca")==0)
{
tmp= MainForm->Memo->Lines->Strings[SelSatelite()+1].SubString(21,12);
strcpy(info,tmp.c_str());
}
if (strcmp(datos,"inclinacion(grados)")==0)
{
tmp= MainForm->Memo->Lines->Strings[SelSatelite()+2].SubString(9,8);
strcpy(info,tmp.c_str());
}
if (strcmp(datos,"ascensionRecta(grados)")==0)
{
tmp= MainForm->Memo->Lines->Strings[SelSatelite()+2].SubString(18,8);
strcpy(info,tmp.c_str());
}
if (strcmp(datos,"excentricidad")==0)
{
tmp= MainForm->Memo->Lines->Strings[SelSatelite()+2].SubString(27,7);
strcpy(info,decimal);
strcat(info,tmp.c_str());
}
if (strcmp(datos,"perigeo(grados)")==0)
{
tmp= MainForm->Memo->Lines->Strings[SelSatelite()+2].SubString(35,8);
strcpy(info,tmp.c_str());
}
if (strcmp(datos,"anomaliaMedia(grados)")==0)
{
tmp= MainForm->Memo->Lines->Strings[SelSatelite()+2].SubString(44,8);
strcpy(info,tmp.c_str());
}
if (strcmp(datos,"movimientoMedio")==0)
{
tmp= MainForm->Memo->Lines->Strings[SelSatelite()+2].SubString(53,11);
strcpy(info,tmp.c_str());
}
infoPedida=atof(info);
return(infoPedida);
}
y en el Principal.h he agregado la siguiente linea:
double __fastcall DatosSatelite(char datos[]);
y en el formulario en donde quiero acceder a esa funcion he agregado:
#include "Principal.h"
el caso es que me funciona cuando le paso a la funcion ciertos parametros, pero para otros no me funciona, alguna idea????
plisssss ayuda que no se que hacer!!!, muchas gracias
-
¿Has declarado el método como "public" en la clase TMainForm? Si pones tu declaración de la clase TMainForm te explico cómo hacerlo público.