Ver Mensaje Individual
  #3  
Antiguo 13-05-2008
Avatar de Delphius
[Delphius] Delphius is offline
Miembro Premium
 
Registrado: jul 2004
Ubicación: Salta, Argentina
Posts: 5.582
Reputación: 25
Delphius Va camino a la fama
Cita:
Empezado por Peri Ver Mensaje
Hola a toda la comunidad Delphi que hace posible este estupendo foro.
Antes que nada presentarme a todos. Soy Peri, un novato, pero que muy novato en este mundo. Llevo prácticamente dos semana intentando aprender este lenguaje, bueno en realidad los fines de semana de éstas.
Bienvenido.
Al igual que tu también soy novato pero a diferencia de ti llevo unos pocos años empleando Delphi.

Cita:
Empezado por Peri Ver Mensaje
Vengo del mundo Neobook, un programa RAD creado con delphi, y me han dicho de buena tinta que en este foro hay personas que también dieron el salto como yo. Esta es una de las causas por las cuales escribo. Sé hacer las cosas en Noebook y a veces quiero hacer lo mismo con delphi, comparándo ambos.
Disculpa, no he usado Neobook pero voy a hacer lo posible en ayudarte.

Cita:
Empezado por Peri Ver Mensaje
Neobook (NB) hace un uso excesivo de variables, cosa que en delphi no es necesario tanto, puesto que podemos consultar directamente los valores de las propiedades de algunos componentes.

Los que os habéis pasado de NB a delphi sabeis que se relaciona un TEdit con una variable para controlar dicho Tedit. En delphi podemos hacer lo mismo sin necesidad de variables, consultando la propiedad Text. Queriendo hacer lo mismo me gustaría que me confirmárais que lo que realmente hace NB es lo siguiente, este ejemplo está asociado a un botón para comprobar el comportamiento de la variable x:

[delphi] procedure TForm2.VerificarClick(Sender: TObject);
var
x: String;

begin
x:= Edit4.Text;
Showmessage (x);
end;

[/DEPHI]

Lo que he hecho es asociar la variable x al TEdit. ¿Es correcto, esto es lo que realmente hace Neobook?

Disculpa, ¿Por casualidad quisiste preguntar eso? ¿No habrás querido decir esto?:

Cita:
¿Lo que he hecho es asociar la variable x al TEdit?¿Es correcto? ¿Esto es lo que hace realmente Delphi?
Disculpame, pero me siento confundido porque preguntas por Neobook siendo que supuestamente estas aprendiendo Delpi.

Si estoy entiendo mal, por favor avisame.

Dejame explicar realmente lo que hace esa sentencia.
Formalmente, Edit4 es una instancia de una clase TEdit. Y cuando haces:

Código Delphi [-]
x := Edit4.Text

Le estás indicando a dicho objeto que te regrese el texto. ¿Que hace por dentro el objeto? Invoca a una función privada llamada GetText. Esta función lee una variable privada y hace algunas operaciones con punteros y termina regresando el contenido adaptado a nuestras necesidades. ¿Porqué eso? Porque internamente, en el fondo de la VCL, Text es una propiedad de tipo TCaption mientras que dicha variable es un puntero a caracteres (PChar). Por ello realiza ciertas "conversiones".

Bueno, entonces. ¿En que quedamos? Edit4 invoca dicho método GetText, este obtiene el valor y lo regresa.
En ningún momento, estamos asignando el objeto Edit4 a la variable x. Sino que estamos copiando el contenido de dicha propiedad.

Extrictamente hablando, la palabras asociar indicaría una asociación de punteros. Y aquí, a pesar de que internamente se operó con punteros, en ningún momento se asignó un puntero hacia la propiedad Text ni al objeto Edit4. Sólo lo que conseguimos fue copiar.
Por tanto, el hacer esto:
Código Delphi [-]
Edit4.Free;
Que es liberarlo, destruirlo, no deja inconsistente a x. Léase bien, por favor: nota que dije NO y no NOS.
En este punto, ahora que el objeto ha sido destruido cualquier invocación a él arrojará un error.
Como consejo: No hagas Free a un Botton, un Edit.

Creo que la ayuda, a pesar de estar en inglés, lo explica mejor que yo.
Muy seguramente se me están pasando algunas cosas y también otros compañeros lo explicarán mejor que yo.

Yo sólo quise hacerte esa pequeña observación ya que hablas de asociar. Hay casos en que si, asociamos... en otros no (Este es uno).

No se si me explico y esto es de ayuda para que comprendieras. Repito nuevamente, si he entendido mal tus palabras dimelo.

Saludos y que Delphi te sea de agrado.
__________________
Delphius
[Guia de estilo][Buscar]
Responder Con Cita