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 01-07-2008
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Propiedades y registros

Código Delphi [-]
type
  TMiObjeto = class
  private
    FPosition: TPoint;

  public
    property X: Integer read FPosition.X;
    property Y: Integer read FPosition.Y;
  end;

Nada. No hay duda. Es sólo que hasta hace unos minutos no sabía que se podía hacer algo así. Gracias por su atención

// Saludos
Responder Con Cita
  #2  
Antiguo 01-07-2008
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,

Tiene su punto.
__________________
David Esperalta
www.decsoftutils.com
Responder Con Cita
  #3  
Antiguo 02-07-2008
Avatar de Delphius
[Delphius] Delphius is offline
Miembro Premium
 
Registrado: jul 2004
Ubicación: Salta, Argentina
Posts: 5.582
Poder: 25
Delphius Va camino a la fama
A primera vista me dije "eso no compila". Fue sorpresa cuando si lo hizo

Hoy no me acuesto sin aprender algo nuevo.

Saludos,
__________________
Delphius
[Guia de estilo][Buscar]
Responder Con Cita
  #4  
Antiguo 02-07-2008
esocrates esocrates is offline
Miembro
 
Registrado: may 2003
Ubicación: Argentina
Posts: 210
Poder: 22
esocrates Va por buen camino
Cita:
Empezado por roman Ver Mensaje
Código Delphi [-]
type
  TMiObjeto = class
  private
    FPosition: TPoint;

  public
    property X: Integer read FPosition.X;
    property Y: Integer read FPosition.Y;
  end;

Nada. No hay duda. Es sólo que hasta hace unos minutos no sabía que se podía hacer algo así. Gracias por su atención

// Saludos
Uds. que saben mucho más que yo. ¿Pueden explicarme de qué se trata esto?
Muchas gracias por adelantado
Un saludo
Responder Con Cita
  #5  
Antiguo 02-07-2008
Avatar de Al González
[Al González] Al González is offline
In .pas since 1991
 
Registrado: may 2003
Posts: 5.604
Poder: 30
Al González Es un diamante en brutoAl González Es un diamante en brutoAl González Es un diamante en brutoAl González Es un diamante en bruto
¡Hola!

Para mí también fue un descubrimiento reciente, creo haberlo visto hace tiempo en la unidad Grids.pas.

Cita:
Empezado por esocrates Ver Mensaje
...¿Pueden explicarme de qué se trata esto?...
En el ejemplo dado por Román, se define un clase de nombre TMiObjeto en la cual se declaran dos propiedades —X y Y—. Esto quiere decir que, teniendo una variable objeto O instanciada de tipo TMiObjeto, podríamos escribir en el código O.X u O.Y para leer esas propiedades del objeto.

Lo interesante es que el especificador de acceso Read (el cual sirve para indicarle al compilador de dónde o cómo el programa va a obtener el valor de la propiedad a la hora de ejecutarse una expresión como las mencionadas), en este caso no indica meramente el nombre de un campo o de un método función, que es lo más común.

Es raro toparse con una declaración de propiedad donde uno de sus especificadores de acceso (Read o Write) se refiere a un elemento particular de uno de sus campos y no al campo en su totalidad. No obstante es válido, según se ha visto.

Si utilizamos la opción Find in Files del entorno de Delphi y, con la opción Regular expressions marcada, buscamos la cadena

Property .* Read .*\..*;

en los archivos fuentes de la VCL, encontraremos algunos ejemplos.

Este hilo me hizo reflexionar un poco más sobre el tema, llevándome a pensar que el compilador admite cualquier referencia "estática" de valor estructurado, mientras el punto de partida sea un campo propio de la clase y los tipos de datos sean iguales, pero sin importar la profundidad de dicha referencia. Por lo tanto el siguiente código debe también compilar sin problemas:

Código Delphi [-]
Type
  TR = Record
    A, B :Integer;
  End;
 
  T1 = Class
    Protected  // o Private
      FRs :Array [1..2] Of TR;
    Public
      Property A1 :Integer Read FRs [1].A;
      Property A2 :Integer Read FRs [2].A;
  End;

Interesante tema, Román.

Un abrazo específico.

Al González.
Responder Con Cita
  #6  
Antiguo 02-07-2008
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.293
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Código:
property X: Integer read FPosition.X;
Eso se ve bonito.
Gracias.
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
  #7  
Antiguo 02-07-2008
esocrates esocrates is offline
Miembro
 
Registrado: may 2003
Ubicación: Argentina
Posts: 210
Poder: 22
esocrates Va por buen camino
Muchas gracias a todos por esta novedad insospechada para mí y por tan claras explicaciones. Una vez más queda demostrada la importancia de este Foro para los que somos aficionados a la programación con Delphi.
Un saludo y hasta pronto
Responder Con Cita
  #8  
Antiguo 02-07-2008
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Cita:
Empezado por Al González Ver Mensaje
Para mí también fue un descubrimiento reciente, creo haberlo visto hace tiempo en la unidad Grids.pas.
Pues de hecho justamente ahí lo vi. Estaba buscando otra cosa en TCustomGrid y me topé con eso. Con la VCL a veces pasa como cuando consultas un diccionario; comienzas buscando una palabra, ves otra que te llama la atención y terminas recorriendo varías palabras sin relación alguna.


Cita:
Empezado por Al González Ver Mensaje
Si utilizamos la opción Find in Files del entorno de Delphi y, con la opción Regular expressions marcada, buscamos la cadena

Property .* Read .*\..*;

en los archivos fuentes de la VCL, encontraremos algunos ejemplos.
Pues ¿creerás que tampoco me había percatado de la opción de expresiones regulares en la búsqueda? Y eso me hace preguntarme, ¿por qué entonces delphi no ha puesto (al menos hasta la versión 7) un motor de expresiones regulares disponibles al programador? ¿Existe ya en Delphi 2007?

Cita:
Empezado por Al González Ver Mensaje
Por lo tanto el siguiente código debe también compilar sin problemas:
Pensé algo similar pero no lo probé, ¿lo hiciste tú?


// Saludos
Responder Con Cita
  #9  
Antiguo 02-07-2008
Avatar de Al González
[Al González] Al González is offline
In .pas since 1991
 
Registrado: may 2003
Posts: 5.604
Poder: 30
Al González Es un diamante en brutoAl González Es un diamante en brutoAl González Es un diamante en brutoAl González Es un diamante en bruto
Cita:
Empezado por roman Ver Mensaje
...Con la VCL a veces pasa como cuando consultas un diccionario; comienzas buscando una palabra, ves otra que te llama la atención y terminas recorriendo varias palabras sin relación alguna...
Así es, creo que eso pasa con cualquier banco de datos sobre un tema que nos interesa de manera importante.


Cita:
Empezado por roman Ver Mensaje
...¿creerás que tampoco me había percatado de la opción de expresiones regulares en la búsqueda?...
Te creo, pero me cuesta...


Cita:
Empezado por roman Ver Mensaje
...¿por qué entonces delphi no ha puesto (al menos hasta la versión 7) un motor de expresiones regulares disponibles al programador?...
Buscando reg[a-z]*exp en Delphi 7 encontré que hay algo de eso en la unidad ToolsAPI.pas. Al parecer existen unas interfaces mediante las cuales una aplicación puede interactuar con el IDE y aprovechar mucha de su funcionalidad. Es como seguramente están construidos los famosos accesorios llamados "wizards" o "expertos". Aunque entiendo que lo ideal sería contar con una biblioteca nativa de clases o funciones para manejo de expresiones regulares. ¿Si existe en el IDE por qué no como clase independiente del él? Buena reflexión.


Cita:
Empezado por roman Ver Mensaje
...Pensé algo similar pero no lo probé, ¿lo hiciste tú?...
Sí, y vaya que se cumple la teoría. El código compila.


Un abrazo expresado con regularidad.

Al González.
Responder Con Cita
  #10  
Antiguo 02-07-2008
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Cita:
Empezado por Al González Ver Mensaje
Buscando reg[a-z]*exp en Delphi 7 encontré que hay algo de eso en la unidad ToolsAPI.pas. Al parecer existen unas interfaces mediante las cuales una aplicación puede interactuar con el IDE y aprovechar mucha de su funcionalidad. Es como seguramente están construidos los famosos accesorios llamados "wizards" o "expertos".
A eso me refiero. El motor lo tienen pero no lo hacen accesible. Porque podría usarse -quizá- para expertos o wizard, pero no para aplicaciones finales.

// Saludos
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
Arreglo de Registros, con arreglos de Registros(Dinamico) PiornoCKA&G Varios 4 05-01-2007 08:53:30
Acceso a las propiedades de un objeto desde el editor de propiedades Hugo OOP 0 24-11-2006 12:58:22
por que duplicidad de registros con clientdataset sin ingresar registros ...mysql Arturo MySQL 3 05-09-2006 18:39:37
Componentes/propiedades Xavierator Varios 3 01-12-2003 20:05:53
Propiedades ADO Zopi Conexión con bases de datos 4 10-10-2003 15:41:57


La franja horaria es GMT +2. Ahora son las 05:35:22.


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