SoloCodigo

Programación General => C/C++ => C++ Builder => Mensaje iniciado por: mizzard en Viernes 19 de Septiembre de 2008, 16:23

Título: utilizar una funcion desde diferentes formularios
Publicado 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!
Título: Re: utilizar una funcion desde diferentes formularios
Publicado por: 11_8_88 en Domingo 21 de Septiembre de 2008, 19:34
el q debes incluir es el .h, MiLibreria.h
Título: Re: utilizar una funcion desde diferentes formularios
Publicado por: mizzard en Domingo 21 de Septiembre de 2008, 23:02
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
Título: Re: utilizar una funcion desde diferentes formularios
Publicado por: m0skit0 en Jueves 25 de Septiembre de 2008, 13:00
¿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.