Club Builder - Foros de discusión Club Builder
Foro de C++Builder en español
 
 FAQFAQ   BuscarBuscar   MiembrosMiembros   Grupos de UsuariosGrupos de Usuarios   RegistrarseRegistrarse 
 PerfilPerfil   Entra para ver tus mensajes privadosEntra para ver tus mensajes privados   EntrarEntrar 

Constantes

 
Publicar nuevo tema   Responder al tema    Foros de discusión -> Consultas
Ver tema anterior :: Ver tema siguiente  
Autor Mensaje
Mensaje    Asunto: Constantes Responder citando

HOLA!
tengo un problema.. estoy creando unas constantes en mi programa que luego quiero usar dentro de una función, pero dentro de la función no tienen el valor que les asigne previamente. Todas las constantes definidas fuera de la función tienen el valor de 0 dentro de esta.

Asi declaré la constante pi:
Código:

//unit1.h
...
public:      // User declarations
        double pi;
...

//unit1.cpp
void __fastcall TForm1::FormCreate(TObject *Sender)
{
  const double pi = 4*atan(1.0);
}
//---------------------------------------------------------------------------


Como hago para poder usar estas constantes dentro de mis funciones?

Ah, tambien note que con las variables que no declaro dentro de la función sucede lo mismo. HELP!
Volver arriba
Ver perfil de usuario Enviar mensaje privado
Mensaje    Asunto: Responder citando

Yo lo hago así:
    En el include del formulario 1 (por ejemplo):
    Código:
    class TForm1 : public TForm
    {
    __published:   // IDE-managed Components
    private:   // User declarations
    public:      // User declarations
         __fastcall TForm1(TComponent* Owner);
         double pi;
    };

    En el propio formulario asignas el valor por ejemplo en el OnCreate:
    Código:
    void __fastcall TForm1::FormCreate(TObject *Sender)
    {
         pi = 3.1415926;
    }

En los formularios que te haga falta usar esa constante pi tienes que poner el include correspondiente (#include Form1.h), y para usarla tienes que referenciarla con
Form1->pi.

Otra forma que tienes pasa por definir esas constantes en el fichero en que está la llamada a WinApi (si el projecto es Project1.bpr, en Project1.cpp). En algunos casos a mi me ha hecho falta arrastrar un valor desde ese módulo (por ejemplo, un parámetro de arranque); lo haría así:
Código:
//------------------------------------------------------------

#include <vcl.h>
#pragma hdrstop

double pi = 3.1415926;     <--- Asignación de la constante

USERES("Project1.res");
USEFORM("Unit1.cpp", Form1);
//------------------------------------------------------------

WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int)
{
     try
     {
           Application->Initialize();
           Application->CreateForm(__classid(TForm1), &Form1);
           Application->Run();
     }
     catch (Exception &exception)
     {
           Application->ShowException(&exception);
     }
     return 0;
}
//------------------------------------------------------------

Con esto defines el valor de pi, o de las constantes que te haga falta. Luego, en los formularios que sea preciso le expecificas la existencia de una definición externa:
Código:
//------------------------------------------------------------

#include <stdio.h>
#include <vcl.h>
#pragma hdrstop

#include "Unit1.h"

extern double pi;     <----- Declaración de constante externa
//------------------------------------------------------------

#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//------------------------------------------------------------

__fastcall TForm1::TForm1(TComponent* Owner)
     : TForm(Owner)
{
}
//------------------------------------------------------------

Cuando te haga falta usar esa constante pi, bastará con que la llames sin más; pro ejemplo:
Código:
double nLongitud = 2 * pi * nRadio;
double nArea = nRadio * pi ^ 2

_________________
Un saludo

Necesitamos tu ayuda: Envía AI al 27595 (Coste 1,20 euros + IVA)
Volver arriba
Ver perfil de usuario Enviar mensaje privado Enviar email
Mensaje    Asunto: Responder citando

Hola Temerario.
La forma más sencilla es la siguiente:

Te defines un archivo tipo *.h, por ejemplo: Constantes.h

y en él colocas las constantes que quieras:

const double PI 3.1415
const double PI2 6.2830
.
.
.

y en los archivos *.cpp donde estén las funciones que usan esas constantes incluyes el header, pero NO defines la constante otra vez dentro de la función:

#include "Constantes.h"

Y ya está. saludos.
_________________
Nunca digas "Es imposible" sin intentarlo antes.
Volver arriba
Ver perfil de usuario Enviar mensaje privado Enviar email
Mostrar mensajes de anteriores:   
Cambiar a:  
No puedes publicar temas nuevos en este foro
No puedes responder a temas en este foro
No puedes editar tus mensajes en este foro
No puedes borrar tus mensajes en este foro
No puedes votar en las encuestas de este foro


Hosting WordPress Indedmedia desde 3,99 €
© 2002–2026 Club Builder · Funciona con phpBB.