| Ver tema anterior :: Ver tema siguiente |
| Autor |
Mensaje |
ifrit Master


Registrado: 12 Jun 2007Mensajes: 509Ubicación: La Habana, Cuba
|
Publicado: Lun 16 Feb, 2009 6:54 pm Asunto: dudas con funciones |
|
|
hola foro
amigos mi experiencia con funciones es muy poca , por loq eu planteo las siguientes dudas esperando que alguien me pueda ayudar
1-solo he declarado funciones en el cpp, nunca en el .h
segun tengo entendido al declararlas en el .h debe ser en el public y en el .cpp debajo de la construccion del form es decir debajo de
__fastcall TForm2::TForm2(TComponent* Owner)
: TForm(Owner)
{
}
voy por buen camino?
Ahora me pregunto cual es la diferencia en declararla en el .h y en el .cpp?
cual es mejor?
2-Al declarar una fucnion en el .h como la llamo en el .cpp? Seria con myfuncio(parametros);?
3-Si tengo una funcion en el .h del form1 como la llamo en el .cpp del form2?
bueno un poco pregunton pero me surge duda porque he declarado la misma funcion como en 8 form y necesito ahorrar codigo no creen?
gracias _________________ Todos somos ignorantes, lo que no todos ignoramos lo mismo... |
|
| Volver arriba |
|
 |
mns Lt

Registrado: 15 Oct 2008Mensajes: 95
|
Publicado: Lun 16 Feb, 2009 10:38 pm Asunto: |
|
|
bueno , mi poca experiencia es la siguiente :
si declaro las funciones en el .h las declaro en private si quiero que sean solo locales para ese form , si la quiera global la declaro en en public y la implemento en el cpp
ejemplo :
class TForm1 : public TForm
{
__published: // IDE-managed Components
private: // User declarations
void funcionSoloParaEsteForm();
public: // User declarations
void funcionParaTodaLaAplicacion();
__fastcall TForm1(TComponent* Owner);
};
y las implemento en el cpp asi
#include <vcl.h>
#pragma hdrstop
#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
void TForm1::funcionCualquiera{
aqui el codigo
}
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}
para llamarla si lo haces del mismo form la llamas tal cual
funcionCualquiera();
o this->funcionCualquiera();
si la llamas de un Form2 por ejemplo , incluyes el Form2 en el Form1 y llamas Form1->funcionCualquiera();
aunque tambien puedes crear funciones en una unidad nueva vacia a la que se llame de cualquier parte de la aplicacion
vas a archivo -> nuevo -->unit
esto te crea una unidad con un .h y un .cpp sin form
en el .h declaras la funcion y el el cpp la implementas y despues incluyes
la unidad en el form de donde quieras llamar a esa funcion y listos
espero haberte ayudado |
|
| Volver arriba |
|
 |
ifrit Master


Registrado: 12 Jun 2007Mensajes: 509Ubicación: La Habana, Cuba
|
Publicado: Lun 16 Feb, 2009 11:05 pm Asunto: |
|
|
mns gracias por responder , ya puse en practica lo que me respondes , y funciona 100% nuevamente t elo agradezco _________________ Todos somos ignorantes, lo que no todos ignoramos lo mismo... |
|
| Volver arriba |
|
 |
escafandra Master

Registrado: 29 Nov 2007Mensajes: 625Ubicación: Madrid - España
|
Publicado: Mar 17 Feb, 2009 8:39 am Asunto: |
|
|
Me gustaría aclarar alguna cosa:
Las funciones pueden declararse en el cpp o en el .h
Si se declaran en el cpp, sólo se conocerán sólo en ese archivo y la declaración debe estar por encima de cualquier punto del programa que las utilice.
Si se declaran en el .h, serán conocidas por todo .cpp que incluya esa .h esto responde a: | ifrit escribió: |
3-Si tengo una funcion en el .h del form1 como la llamo en el .cpp del form2?
|
Las declaraciones no tienen porqué estar en una clase. Si son miembros de una clase, pueden ser public, private o protected. En las vcl, pueden ser, ademas, published.
Saludos. |
|
| Volver arriba |
|
 |
|