Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Valor por defecto en variable TRect (https://www.clubdelphi.com/foros/showthread.php?t=87591)

atani123 28-01-2015 11:56:43

Valor por defecto en variable TRect
 
Me gustaria saber como puedo poner un valor inicial a una variable del tipo TRect, por ejemplo. Con la boolean se como hacerlo, pero no se si es posible con la TRect.

var _firstcall : boolean = true;
var _workarea : TRect = Rect(0,0,0,0);

La primera linea funciona, la segunda da error.


Gracias a todos.

Casimiro Notevi 28-01-2015 12:10:05

Recuerda poner los tags al código fuente, ejemplo:



Gracias :)

atani123 28-01-2015 12:16:11

Lo tendre en cuenta para futuros mensajes.

Gracias y perdona.

Casimiro Notevi 28-01-2015 12:34:30

Cita:

Empezado por atani123 (Mensaje 488210)
Lo tendre en cuenta para futuros mensajes.
Gracias y perdona.

Gracias a ti, por tu colaboración :)

Neftali [Germán.Estévez] 28-01-2015 13:19:08

Aquí tienes un par de ejemplos de cómo hacerlo.

atani123 28-01-2015 14:57:13

Gracias Neftali, pero me referia a inicializar la variable en su definicion

Mendizabal 28-01-2015 17:33:48

En su declaración no vas a poder inicializarla. Y menos llamando a una función (Rect). Eso no tiene mucha sentido, la verdad.

Inicializala antes de llamarla. Y lo mejor sería que no la declarases como variable global, que me huelo que es lo que quieres hacer.

Neftali [Germán.Estévez] 28-01-2015 17:54:04

Al ser un tipo recordno se si vas a poder.

Añado otra forma más a as antes comentadas.
en la últimas versiones de Delphi, puedes inicializarlo utilizando lo siguiente:

Código Delphi [-]
var
  rec:TRect;
begin
  //...
  rec := Default(TRect);
  ...

Al González 28-01-2015 20:23:50

Cita:

Empezado por Mendizabal (Mensaje 488223)
En su declaración no vas a poder inicializarla.

Creo que es responsable desmentir lo anterior. Sí es posible inicializar una variable record, sólo que es menester expresar el nombre de los campos:
Código Delphi [-]
Var
  R1 :TRect = (Left : 0; Top : 0; Right :0; Bottom : 0);
Incluso puede ser inicializada sólo una parte:
Código Delphi [-]
Var
  R2 :TRect = (Top : 10; Bottom : 100);
En cualquier caso, la mención de los campos debe ser en el mismo orden de su declaración, de lo contrario el compilador reportará un error.

Conviene añadir que, como cualquier otra inicialización de variable en su declaración, ésta no puede ser local. Por otra parte, una inicialización en ceros es innecesaria, ya que todas las variables globales y sus campos están en blanco (0, Nil, '', ...) al comenzar la ejecución. Quizá a esto último se refiere Mendizabal, cuando dice:
Cita:

Empezado por Mendizabal (Mensaje 488223)
Eso no tiene mucha sentido

Finalmente, decir que las variables globales suelen portar muchos estigmas (casi siempre producto de dogmas), pero no tiene nada de malo usarlas cuando existe una razonable justificación.

Un saludo.

Neftali [Germán.Estévez] 28-01-2015 20:53:08

Cita:

Empezado por Al González (Mensaje 488226)
Sí es posible inicializar una variable record, sólo que es menester expresar el nombre de los campos

Grande!! Al.
^\||/^\||/

Al González 28-01-2015 20:59:39

Cita:

Empezado por Neftali (Mensaje 488228)
Grande!! Al.
^\||/^\||/

Je-je, viniendo de un grande y por algo tan sencillo, eso resultó halagador. :)

Agrego: La función Default de las nuevas versiones de Delphi es muy útil y práctica. Hay muchas cosas modernas en el compilador que ya todos deberíamos estar aprovechando. ^\||/

atani123 29-01-2015 12:03:51

Al, gracias tio, justo lo que andaba buscando

Mendizabal 29-01-2015 18:10:46

Cita:

Empezado por Al González (Mensaje 488226)
Creo que es responsable desmentir lo anterior. Sí es posible inicializar una variable record, sólo que es menester expresar el nombre de los campos:
Código Delphi [-]
Var
  R1 :TRect = (Left : 0; Top : 0; Right :0; Bottom : 0);
Incluso puede ser inicializada sólo una parte:
Código Delphi [-]
Var
  R2 :TRect = (Top : 10; Bottom : 100);
En cualquier caso, la mención de los campos debe ser en el mismo orden de su declaración, de lo contrario el compilador reportará un error.

Conviene añadir que, como cualquier otra inicialización de variable en su declaración, ésta no puede ser local. Por otra parte, una inicialización en ceros es innecesaria, ya que todas las variables globales y sus campos están en blanco (0, Nil, '', ...) al comenzar la ejecución. Quizá a esto último se refiere Mendizabal, cuando dice:


Finalmente, decir que las variables globales suelen portar muchos estigmas (casi siempre producto de dogmas), pero no tiene nada de malo usarlas cuando existe una razonable justificación.

Un saludo.

^\||/

No te acostarás sin saber una cosa más :)


La franja horaria es GMT +2. Ahora son las 20:32:26.

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