Foros Club Delphi

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

eliash 09-01-2006 19:40:34

:= ^
 
Me remito al anterior post, donde preguntaba

Cita:

:= No debería Delphi entonces utilizar dos simbolos?

^ O la antigua sintaxis?
Supongo que todo el mundo lo tomó como una pregunta retórica...
Pero querría saber: Si utilizamos el [operador/asignador/lo-que-sea] := para 1) Darle un valor a una variable, 2)Darle un valor(puntero) a una variable utilizando el nombre del objeto, y no del puntero...
¿no estamos siendo incongruentes?

maeyanes 09-01-2006 19:53:09

Lo único que te puedo decir es que le des otra leidita a la Guía de Estilo de los foros.

Por aquello del título de tu mensaje... ;)


Saludos...

roman 09-01-2006 20:15:28

Y más allá del título y la guía de estilo, al menos yo no tengo ni las más remota idea de lo que estás hablando.

// Saludos

delphi.com.ar 09-01-2006 20:35:01

Cita:

Empezado por roman
Y más allá del título y la guía de estilo, al menos yo no tengo ni las más remota idea de lo que estás hablando.

Es que es demasiado filosófica :D

Creo que quiere decir lo siguiente, si tenemos:
Código Delphi [-]
A := B;
Y estamos diciendo que el valor de la variable B se va a asignar al valor de la variable A. Si no es ilógico que:
Código Delphi [-]
A := ^B
Signifique que asigneremos el puntero e la variable B a el valor de la varible A.

Digamos, que se utilice el mismo operador para
Código Delphi [-]
Valor := Valor
que para
Código Delphi [-]
Valor := Puntero

Código Delphi [-]
var
  I: Integer;
  P: PInteger;
begin
  I := P^;

¿Estoy en lo cierto?... de ser así no hay incogruencias!.. simplemente porque al hacer P^ ya haces referencia al valor y no al puntero!

eliash 09-01-2006 20:46:28

Cada vez estoy más confundido; Vamos a ver,

Font1:=^Font; -->Siendo los 2 Tfont; Font1 contiene al Puntero de Font
a:=b; -->siendo los 2 integer: a contiene el valor de b
Font1:=Font; -->//Por que se utiliza ":=" si Font1 no contiene a Font, sino a su puntero?

En Cuanto al título, mil perdones.

fer21unmsm 09-01-2006 23:27:58

Cita:

Empezado por eliash
Cada vez estoy más confundido; Vamos a ver,

Font1:=^Font; -->Siendo los 2 Tfont; Font1 contiene al Puntero de Font
a:=b; -->siendo los 2 integer: a contiene el valor de b
Font1:=Font; -->//Por que se utiliza ":=" si Font1 no contiene a Font, sino a su puntero?

En Cuanto al título, mil perdones.

Hola eliash, bueno contestando a tu pregunta

Código Delphi [-]
Font1:=^Font; //esto va a dar error
^ adelante de un tipo de datos o clase, indica que la variable va a ser un puntero de ese tipo. En ese caso Font no es un tipo o clase es un objeto

lo que puedes hacer es:

Código Delphi [-]
Font1: ^TFont; //donde TFont es una clase

Código Delphi [-]
Font1:=Font;  //es válido porque Font1 va a apuntar al contenido de Font, ya que los dos son objetos del mismo tipo.

Saludos.

eliash 10-01-2006 10:05:15

AY!! Bueno, olvida donde queda el ^ Fallo mío.
Todo este Hilo viene de un comentario anterior de jachguate:
Cita:

Lo que en el viejo pascal era:
Código Delphi [-]
objeto^.miembro := valor;
en delphi se reduce a:
Código Delphi [-]
objeto.miembro := valor;
pero la asignación directa, sigue asignando el puntero y no otra cosa.
Me responde:
Cita:

Esto podes tomarlo como una simplificación al lenguaje, que hace que los neofitos se asusten menos, y quienes estan un poco mas experimentados, tendrán con la aclaración para no olvidarlo. A mi, en lo personal, me es, hasta cierto punto, indiferente.
Pero como puedo aceptar esta sintaxis si formalmente hablando es inexacta? que estamos hablando de un lenguaje de programación carai. Como puede el llamado operador de asignación funcionar de 2 maneras si solo es 1 operador? En lógica o en matemáticas estas cosas tienen que evitarse; en programación no?
En fin, no tengo acciones en Borland, así que en cierta manera este hilo no tiene sentido. Bueno, gracias por las molestias.
De todas formas, si alguien quiere mostrarme su punto de vista, adelante.

jachguate 11-01-2006 02:51:17

Cita:

Empezado por eliash
Como puede el llamado operador de asignación funcionar de 2 maneras si solo es 1 operador?

En realidad el operador de asignación funciona de manera consistente dependiendo de ciertas condiciones... es como si estuviera sobrecargado, pues:

a := b;

Copia el valor de la variable b en a.

Por tanto, si a y b son punteros, a apuntará a la misma dirección de memoria donde apunta b al terminar (puesto que el "valor" de un puntero es la dirección de memoria a donde apunta).

En cambio, si a y b son enteros, a tendrá el mismo valor de b.

Cuando el operador de asignación se comporta de manera diferente, es cuando el lado izquierdo no es una variable, sino una propiedad, pero es algo que a mi me parece bien :)

Saludos.

;)

eliash 11-01-2006 10:54:24

si, entiendo lo que dices; quizá me he rayado un poco.
:) Pero aviso de que tengo la cabeza cuadriculada; en cuanto aprenda un poco más de Delphi volveré al tema de nuevo.


La franja horaria es GMT +2. Ahora son las 11:23:35.

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