Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   OOP (https://www.clubdelphi.com/foros/forumdisplay.php?f=5)
-   -   VAR y CONST? (https://www.clubdelphi.com/foros/showthread.php?t=19410)

unko! 14-03-2005 07:48:51

VAR y CONST?
 
olas, por mas ke me explica mi colega sobre estas no le entiendo nada :rolleyes: :p y ya hasta me da werwenza preguntarle de new... asi ke elegi hacerlo en este foro :).

mi pregunta es...

para que sirven?
como se usan?

si saben algo mas... ponganlo!!! :D:D :P

atte: hagan una separacion para VAR y otra para CONST (cuando me expliken) para no confundir las 2 y enredarme mas de lo ke estoi (si es ke se puede) :P thanx salu2!!

Neftali [Germán.Estévez] 14-03-2005 08:59:46

Cita:

Empezado por unko!
para que sirven?
como se usan?

VAR -> Para Variables
CONST -> Para constantes

Son palabras reservadas que se utilizan en Delphi para declarar Variables y constantes (respectivamente).
(resumiendo mucho) Una variables es un elemento que pertite almacenar un valor que puede cambiar durante la ejecuciónde un programa, mientras que una constante almacena un valor que no va a cambiar durante la ejecución del programa.

No se si es a ésto a lo que te refieres...

Ej:

Código Delphi [-]
 const
   SPACIO = 10;    // diferentes tipos de constantes
   CADENA_ERROR = 'Esto es un error';
 var
   x,i:Integer;  // diferentes tipos de variables
   Str:String;

alfredosg19 14-03-2005 09:15:39

Tipos de variables
 
Las variables pueden ser:
- para una sola aplicación, se declara dentro de un procedure de esta manera:
Código:

Procedure boton1.click
 var
 contador, numero: integer; //variables numéricas sin decimales
 division, resta: current; //variables numéricas hasta 4 decimales
 divisionlarga: float; //variables con muchos decimales
 hola: string; //variable de cadena de texto (incluidos numeros)
 sino: Boolean; //variable con dos posibilidades con Verdadero o Falso
 Dias: Date;//variable que guarda fechas
 Hores: Time; /variable que guarda horas
 Begin

Estas son las más normales, después para darles un valor:
Asigna un valor sin más:
Código:

Contador:=1;
Asigna un valor y lo incrementa (muy útil), es un contador.
Código:

if contador>10 then
 Contador:=contador+1;

Le asignamos el valor de un caption, de un edit...
Código:

hola:=label1.Caption;
 hola:=edit.text;

- Una variable privada, que es para un Unit (se puede utilizar la misma en todo el Unit):
Se declara en el private
Código:

Private
 hola: string;

- o en el public si quieres que sea pública (para todo el programa).
Código:

Public
 hola:string

Hay más variables y su uso es yo creo la base de la programación, para aprender no te aconsejo empollártelas ni hace falta tener la lista delante sino practicar y practicar, así que ánimo y adelante.

Lepe 14-03-2005 13:18:04

Creo que Neftali y Alfredo han dejado claro el uso de variables y constantes, así que paso a detallar esas palabras reservadas para el paso de parámetros en procedimientos:

Igual que lo explicado anteriormente, const significa Constante, y var significa Variable.

Código Delphi [-]
procedure CopiaArchivo(const NombreArchivo:string; var DaFallos:Boolean);
begin

end;

El uso de const indica que el Nombre del archivo es constante, es decir, dentro de esa rutina no se puede modificar el NombreArchivo, el compilador te dará un error. Esto es muy util, ya que el programador que llama a la funcion CopiaArchivo, sabe que el nombre del archivo no se va a modificar jamás. Por otra parte, se minimiza errores tontos que pueda cometer el que implementa CopiaArchivo.

Imagina que la función fuese así:
Cita:

Empezado por Jamás hagas esto
Código:

procedure CopiaArchivo(var NombreArchivo:string; var DaFallos:Boolean);
begin

end;

El programador que va a usar la función copiaArchivo se queda un poco mosqueado, diría....." a ver, a ver, yo le paso el nombre del archivo, y la rutina puede modificar el nombre....¿que sentido tiene?" Ahora tendría que ir a ver como está hecha la función y entender por qué modifica el nombre del archivo.

El que ha hecho la función, está complicando la existencia a los demás, ¿no crees?.

Esto no debe hacerse jamás!!!

El uso de var indica que dentro de la función se modifica el valor de DaFallos, es decir, es un parámetro de salida. De hecho, esta llamada produce un error en compilación:
Código Delphi [-]
CopiaArchivo('c:\autoexec.bat', true);
Ya que el segundo parámetro puede modificarse dentro de la función y necesita que sea una variable. Para llamarla de forma correcta hay que crear una variable de tipo Boolean y pasarle dicha variable.
Código Delphi [-]
var Fallo:Boolean;
begin
CopiaArchivo('c:\autoexec.bat', Fallo);
if Fallo then 
  ShowMessage('No se puede copiar el archivo c:\autoexec.bat');

Tema aparte, Delphi optimiza las llamadas a los procedimientos dependiendo de si un parámetro lleva el var o el const y es más complejo de lo que puedas creer,(en la ayuda de delphi viene más información al respecto).

Saludos

unko! 15-03-2005 01:24:36

ok, thanx, me aclararon muchas dudas :)

solo que creo ke no tengo algo concreto... me pueden decir en idioma sencillo como funcionan? y como se pueden usar?

hasta ahora, lo que tengo entendido es que al declarar una var (que puede variar; como en el ejemplo de "contador", se supone ke es de 1, pero puede variar gracias a la orden de "contador+1") y depende de que tipo sean, boolean, string...
No entendi una cosa:

Cita:

contador, numero: integer; //variables numéricas sin decimales
division, resta: current; //variables numéricas hasta 4 decimales
divisionlarga: float; //variables con muchos decimales
hola: string; //variable de cadena de texto (incluidos numeros)
sino: Boolean; //variable con dos posibilidades con Verdadero o Falso
Dias: Date;//variable que guarda fechas
Hores: Time; /variable que guarda horas
por que unos como "contador" y "division" tienen palabras extra como "numero" y "resta"? los demas no la tienen, por que? que kiere decir esto?

y que las constantes no pueden cambiar y sirven para no tener que recordar los numeros o palabras que necesitamos, las const nos sirven para glovalizarlos?

No entendi bien los tipos... me dan un ejemplo de boolean, string, date, time... y los mas usados??

thanx! no se ke haria sin ustedes :):):):):):):):)

Al González 15-03-2005 03:12:22

Mi aportación
 
¡Buen día a todos!

Cita:

Empezado por unko!
...por que unos como "contador" y "division" tienen palabras extra como "numero" y "resta"? los demas no la tienen, por que?...

Al declarar dos o más variables del mismo tipo de dato, puede hacerse por separado:
Código Delphi [-]
Var
  A :Integer;
  B :Integer;
  C :Integer;
O en una lista delimitada por comas
Código Delphi [-]
Var
  A, B, C :Integer;
lo cual resulta más abreviado y legible.

En cuanto a las constantes, imagina que tienes un programa que en varios lugares muestra la cadena de caracteres «unko!», es decir, tienes por ahí unas cinco o diez sentencias de código con la expresión 'unko!'.

Supón entonces que decides cambiar esa cadena por «unko! Reloaded». Eso conllevaría tener que modificar las cinco o diez sentencias que tienen la expresión 'unko!'.

En cambio, si desde un principio declaras la constante:
Código Delphi [-]
Const
  Autor = 'unko!';
y usas ésta en lugar de la expresión literal, en sentencias como:
Código Delphi [-]
  ShowMessage ('Este programa fue creado por ' + Autor +
    ', el programador más rápido del Oeste.');
Cuando decidas cambiar «unko!» por «unko! Reloaded», solamente tendrías que modificar la declaración de la constante:
Código Delphi [-]
Const
  Autor = 'unko! Reloaded';
Con respecto a tu última pregunta sobre los tipos de datos, de momento te puedo decir que cada variable se declara de un tipo específico para que el programa pueda saber cuántos bytes de memoria debe reservarle, qué clase de valores puede guardar, bajo qué formato se guardan dichos valores y qué tratamiento debe darles.

Me despido porque ya comienzan Los Simpson...

¡Un abrazo a todos!

Al González. :)

unko! 15-03-2005 04:58:01

thanx!
 
bro... eres lo maximo!!! antes no le entendia pero ahora... :D:D thanx! eres pro :D creo ke wa llorar XD jajaja thanx!!

voi a testear lo que creo ke es... una constante es para no tener que estar poniendo a cada rato algun nombre o numero... solo bastara con declararla x3 = 'blablabla'; y asi, cuando kiera poner blablabla solo tendre ke porner x3?

y lo de var no lo entendi mui bien :P si hay alguien que me lo pueda explicar con manzanitas como Al Gonzales (:D) adelante :P

este foro es genial :D

Lepe 15-03-2005 18:23:24

venga una de manzanas:
Código Delphi [-]
var Manzanas:integer;
begin
manzanas := 2;
Showmessage('Tengo ' + inttostr(Manzanas));
// sale que tienes 2 manzanas


Manzanas := Manzanas * 25;
Showmessage('Tengo ' + inttostr(Manzanas));
// ahora sale que tienes 50 manzanas

Manzanas := manzanas - 75;
Showmessage('Tengo ' + inttostr(Manzanas));
// ahora sale que tienes -25 manzanas, osea, TE FALTAN 25 manzanas.
Dicho de otra forma, Manzanas va a tener un contenido variable, depende del valor que tenga o de las operaciones que hagas con esa variable, obtendrás un valor u otro.

Como está declarada como
Código Delphi [-]
var Manzanas:integer;
solo puedes realizar operaciones matematicas con ella, es decir:

Código Delphi [-]
Manzanas := 'Tengo ganas de manzanas';
te dará un error y no te deja continuar, ya que a la izquierda del ":="
delphi sabe que tiene que guardar un valor numérico (solo números enteros) y a la derecha del ":=" lo que hay es una tira de caracteres, que corresponde al tipo de datos String.

Por tanto,
si quieres guardar numeros enteros, tienes que utilizar el tipo Integer
si quieres guardar texto , tienes que utilizar el tipo String
si quieres guardar un valor Verdadero o Falso, tienes que usar un tipo Boolean.

Sabiendo esto, ya puedes consultar la ayuda de delphi sobre tipos de datos, y ver todo el repertorio existente.

Un saludote.

unko! 16-03-2005 00:34:04

wow.... bro.. eres un maestro o algo asi!? :eek: no se komo le haces... pero lo haces! :D ya se eso tambien!!! eres genial!!

si no es mucho pedir... me puedes dar un ejemplo con una var usando el Boolean? :)

eres un maestro!!

PD: me puedes decir que es "inttostr"?

alfredosg19 16-03-2005 10:48:14

Variable Boolean.
 
Hola, sobre las variables Boolean, a ver comienzo con un ejemplo que se verá más fácil. Son variables que solo tienen dos posibilidades o son True o False, es decir o Verdadero o Falso. Aquí lo verás más claro:

Cita:

unit Unit1;

interface

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

type
TForm1 = class(TForm)
SpeedButton1: TSpeedButton;
procedure SpeedButton1Click(Sender: TObject);
private
{ Private declarations }
public
sino: Boolean;
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.SpeedButton1Click(Sender: TObject);
begin
if sino=False then
begin
sino:=True;
Showmessage('Falso');
end
else
begin
sino:=False;
Showmessage('Verdadero');
end;
end;

end.
A mí me resultan muy útiles, por ejemplo para reservas de mesas (ocupadas o desocupadas), para usuarios (usuario desconectado, usuario en pausa), tiene infinidad de utilidades y más si empezamos a hablar de funciones(functions)..

Ha el StrtoInt es una función de Delphi para pasar un texto (de número porque si son letras saldrá un error) numérico a números enteros, también se puede hacer al revés InttoStr, por ejemplo para mostrar en pantalla resultados de operaciones matemáticas. Ejemplo:
Cita:

var
a,b: integer
begin
a:=2;
b:=3;
Showmessage(InttoStr(a+b));
end;
si no el pones el InttoStr el programa dice incompatibles tipes.
También tenemos el CurrtoStr para pasar de números con decimales a String y viceversa (StrtoCurr). El FloattoStr para pasar números con más de cuatro decimales a String y viceversa.. y si hay más yo no las uso.
Espero que te haya servido de ayuda mi aportación.

Pta. Estamos haciendo una buena ayuda sobre variables en este hilo.

unko! 17-03-2005 03:22:12

oooh... entonces las var sirven para decirle al programa ke se trataran de X dato... pero despues le pones el dato ke kieres ke almacenen dependiendo de la funcion ke le diste... yeah! lo se!!! :D:D:D:D:D


PD---> teienes razon... es una MUY BUENA aportacion :D

unko! 23-03-2005 02:07:42

intente practicar eso de las VAR y CONST y me falla... algo me falta y no se ke es....

tengo uas preguntas mas...

¿Donde se declaran las VAR?
¿Donde se declaranlas CONST?

como kedaria el codigo si kiero ke cada 5 seg el label cambie de 0 a 1... (incrementando 1 cada que pasen 5 seg del timer)

thanx salu2!

mamcx 23-03-2005 17:27:21

Chico, si lees algo de Ingles visita http://www.delphibasics.co.uk/ es todo muy bien explicado y con ejemplos. En las ayudas tambien esta el manual del lenguaje donde se explica con lujo de detalles todos estas cosas.

unko! 23-03-2005 18:05:17

es lo uniko ke me falta saber


La franja horaria es GMT +2. Ahora son las 02:39:21.

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