Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 02-10-2006
SaGuMa SaGuMa is offline
Registrado
 
Registrado: jul 2006
Posts: 6
Poder: 0
SaGuMa Va por buen camino
variables y constantes

Como puedo sustituir el valor de una variable pore el de una constante¿?
Es que llevo unos días dandole vueltas y no consigo na'. Muxas Gracias
Responder Con Cita
  #2  
Antiguo 02-10-2006
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.107
Poder: 34
dec Tiene un aura espectaculardec Tiene un aura espectacular
Hola,

¿De qué lenguaje estamos hablando? ¿Puedes describir un poco más lo que quieres conseguir?
__________________
David Esperalta
www.decsoftutils.com
Responder Con Cita
  #3  
Antiguo 02-10-2006
SaGuMa SaGuMa is offline
Registrado
 
Registrado: jul 2006
Posts: 6
Poder: 0
SaGuMa Va por buen camino
en delphi
Código Delphi [-]
procedure TForm1.Button1Click(Sender: TObject);
const
Hola='Hola, ¿qué tal?';
var
Saludo: string;
begin
Saludo:=Edit1.Text;
  if Saludo='Hola' then
    ShowMessage (Saludo);

end;
y yo lo que quiero es que en vez de salirme en el Mensaje 'Hola' quiero q m salga 'Hola, ¿qué tal?'
Responder Con Cita
  #4  
Antiguo 02-10-2006
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.107
Poder: 34
dec Tiene un aura espectaculardec Tiene un aura espectacular
Hola,

Bueno. Es que has publicado el Hilo en Internet, y, me parece, el tema que tratas no tiene nada que ver. Moveré el Hilo a varios. Revisa la guía de estilo de los Foros, por favor.

Respecto de la cuestión que planteas... no la entiendo,... si quieres mostrar el valor de la constante, ¿porqué no lo haces?

Código Delphi [-]
ShowMessage(Hola);
__________________
David Esperalta
www.decsoftutils.com
Responder Con Cita
  #5  
Antiguo 02-10-2006
SaGuMa SaGuMa is offline
Registrado
 
Registrado: jul 2006
Posts: 6
Poder: 0
SaGuMa Va por buen camino
Ok pa la proxima vez ya lo se

Pero es que dependiendo del valor que tome la variable cambia el mensaje que tiene q mostrar
Responder Con Cita
  #6  
Antiguo 02-10-2006
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.107
Poder: 34
dec Tiene un aura espectaculardec Tiene un aura espectacular
Hola,

No te preocupes. Nadie nace sabiendo. Respecto de lo que planteas... dices que dependiendo del valor de una variable cambia el mensaje a mostrar al usuario, pero, por otro lado, más arriba dices que lo quieres mostrar es el valor de la constante "Hola"... no se entiende muy bien (por lo menos en lo que a mí respecta) lo que quieres conseguir... en mi opinión, claro está.
__________________
David Esperalta
www.decsoftutils.com
Responder Con Cita
  #7  
Antiguo 02-10-2006
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 25
Caral Va por buen camino
Hola
Tal vez asi:
Código Delphi [-]
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TForm1 = class(TForm)
    Button1: TButton;
    Edit1: TEdit;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;
  // Estas variables se podran utilizar en cualquier
  // Parte del form
  Hola: String; // Variable general
  Saludo: string;// Variable general


implementation

{$R *.dfm}

// Este es un procedimiento al que se podra
// LLamar en cualquier parte del from
Procedure Hola1;
Begin
 Hola:= 'Hola, ¿qué tal?';
 end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  Saludo:= Edit1.Text;
  if Saludo ='Hola' then
    Hola1;
    ShowMessage(Hola);
end;
end.
Con esto las Variables Hola y Saludo estaran disponobles en todo el from
Intentalo y dices
Saludos
Responder Con Cita
  #8  
Antiguo 03-10-2006
SaGuMa SaGuMa is offline
Registrado
 
Registrado: jul 2006
Posts: 6
Poder: 0
SaGuMa Va por buen camino
no aver, es que ayer tenia un poco de prisa y no me explique bien (si es que las prisas no son buenas).

Aver, tenemos muchas constantes y una variable y depende del valor de la variable el ShowMessage va a mostrar un mesaje u otro.
Una cosa asi
Código Delphi [-]
procedure TForm1.Button1Click(Sender: TObject);
const
Hola='Hola, ¿qué tal?';
Guillermo='¿Cómo estás, Guillermo?';
Pepe='Uy, ese nombre no me suena';
var
Saludo: string;
begin
Saludo:=Edit1.Text;
  if not (Saludo='') then
    ShowMessage (Saludo);
end;
Responder Con Cita
  #9  
Antiguo 03-10-2006
[maeyanes] maeyanes is offline
Capo de los Capos
 
Registrado: may 2003
Ubicación: Campeche, México
Posts: 2.732
Poder: 23
maeyanes Va por buen camino
Pues no entiendo que quieres...

Por que en tu ejemplo solo preguntas si Saludo no es cadena vacia, entonces muestralo en un ShowMessage, y luego?

Ahora, vamos a suponer, de casualidad no querras algo como esto?:

Código Delphi [-]
procedure TForm1.Button1Click(Sender: TObject);
const
  Hola = 'Hola, ¿qué tal?';
  Guillermo = '¿Cómo estás, Guillermo?';
  Pepe = 'Uy, ese nombre no me suena';

var
  Saludo: string;

begin
  Saludo := Edit1.Text;
  if Saludo <> '' then
    ShowMessage(Saludo)
  else
    ShowMessage(Hola)
end;

Saludos...
Responder Con Cita
  #10  
Antiguo 03-10-2006
SaGuMa SaGuMa is offline
Registrado
 
Registrado: jul 2006
Posts: 6
Poder: 0
SaGuMa Va por buen camino
nop. lo que quiero es que cuando la variable tome el valor 'Hola' m diga 'Hola, ¿qué tal?' cuando tome el valor 'Guillermo' me diga ¿Cómo estas, Guillermo?...
Responder Con Cita
  #11  
Antiguo 03-10-2006
[maeyanes] maeyanes is offline
Capo de los Capos
 
Registrado: may 2003
Ubicación: Campeche, México
Posts: 2.732
Poder: 23
maeyanes Va por buen camino
Ah ya...

Entonces sería algo como:

Código Delphi [-]
procedure TForm1.Button1Click(Sender: TObject);
const
  Hola = 'Hola, ¿qué tal?';
  Guillermo = '¿Cómo estás, Guillermo?';
  Pepe = 'Uy, ese nombre no me suena';

var
  Saludo: string;

begin
  Saludo := Edit1.Text;
  if Saludo = 'Hola' then
    ShowMessage(Hola)
  else
    if Saludo = 'Guillermo' then
      ShowMessage(Guillermo)
    else
      if Saludo = 'Pepe' then
        ShowMessage(Pepe)
      else
        ShowMessage(Saludo)
end;


Saludos...
Responder Con Cita
  #12  
Antiguo 03-10-2006
SaGuMa SaGuMa is offline
Registrado
 
Registrado: jul 2006
Posts: 6
Poder: 0
SaGuMa Va por buen camino
y si tuvieses en vez de 3 constantes unas 30, ¿no habría otra forma mas corta?
Responder Con Cita
  #13  
Antiguo 03-10-2006
Avatar de seoane
[seoane] seoane is offline
Miembro Premium
 
Registrado: feb 2004
Ubicación: A Coruña, España
Posts: 3.717
Poder: 24
seoane Va por buen camino
La respuesta seria usar una serie de if anidados, uno por cada valor posible. Pero eso no quedaría "bonito", así que porque no usar un TStringList:

Código Delphi [-]
// Esta es una variable global
var
  Lista: TStringList;


// Para inicalizar los valores, usalo en el OnCreate por ejemplo
Lista:= TstringList.Create;
Lista.Values['HOLA']:= 'Hola, ¿qué tal?';
Lista.Values['GUILLERMO']:= '¿Cómo estás, Guillermo?';
Lista.Values['PEPE']:= 'Uy, ese nombre no me suena';


// Para usarlo
Saludo:= 'Hola';
ShowMessage(Lista.Values[Uppercase(Saludo)]);

// Para destruir el TStringList, usalo en el evento OnClose por ejemplo
Lista.Free;

También puedes cargar la lista desde un archivo de texto, donde cada linea tiene el siguiente formato: Nombre=Valor
Responder Con Cita
  #14  
Antiguo 03-10-2006
[maeyanes] maeyanes is offline
Capo de los Capos
 
Registrado: may 2003
Ubicación: Campeche, México
Posts: 2.732
Poder: 23
maeyanes Va por buen camino
Lo primero que se me ocurre es un archivo de texto con este formato:

Código:
Hola=Hola, ¿qué tal
Guillermo=¿Cómo estás, Guillermo?
Pepe=Uy, ese nombre no me suena
Luego desde tu aplicación haces algo como:

Código Delphi [-]
procedure TForm1.Button1Click(Sender: TObject);
var
  Consts: TStringList;

begin
  Consts := TStringList.Create;
  try
    Consts.LoadFromFile('consts.txt');
    if Consts.Values[Edit1.Text] <> '' then
      ShowMessage(Consts.Values[Edit1.Text])
  finally
    Consts.Free
  end
end;

Ahora la explicación...

La clase TStringList tiene una propiedad llamada Values, la cual al insertar una o más líneas con el formato Nombre=Valor, se puede usar para obtener un valor mediante su nombre.

Así pues, puedes crear un archivo de texto con tantos pares de "constantes" y sus valores quieras, y luego desde tu aplicación lo cargas a un TStringList y devuelves su valor mediante la propiedad Values, tal como lo muestro en el ejemplo de arriba.

Esto es lo primero que se me ocurrió, tal vez exista una forma de hacer más rápido la comparación que necesitas y que sea usando constantes, pero por ahora no se me ocurre nada...



Saludos...

P.D. [Actualización] Veo que seoane dio la misma respuesta que acabo de dar, lo que me indica que no ando del todo equivocado...

Última edición por maeyanes fecha: 03-10-2006 a las 16:20:32.
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Def. de constantes - Casting Mariana OOP 3 21-10-2005 19:24:23
variables variables (manual php) salvica PHP 0 25-09-2005 16:44:52
Constantes de Delphi en Run Time Carlos Claveria OOP 3 23-10-2003 17:55:12
constantes globales acrophet Varios 3 18-09-2003 13:51:45


La franja horaria es GMT +2. Ahora son las 06:01:30.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi