Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > OOP
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 07-06-2004
jplj jplj is offline
Miembro
 
Registrado: oct 2003
Posts: 189
Poder: 21
jplj Va por buen camino
Modeado de tipos o variable.

Estoy usando unos componente ActiveX, a los que debo hacer frecuentemente un moldeado para acceder a propiedades o métodos de alguna de las interfaces que implementan.

¿Cómo es más eficiente hacerlo?

Código Delphi [-]
(Componente As InterfaceX).PropiedadX:= 0; (Componente As InterfaceX).PropiedadY:= 1; (Componente As InterfaceX).Ejecuta;


Código Delphi [-]
var CompIn: InterfaceX; begin
CompIn:= (Componente As InterfaceX); CompoIn.PropiedadX:= 0; CompoIn.PropiedadY:= 1; CompoIn.Ejecuta;


Saludos
JuanPe.
Responder Con Cita
  #2  
Antiguo 07-06-2004
Avatar de __marcsc
__marcsc __marcsc is offline
Miembro
 
Registrado: may 2003
Ubicación: Girona
Posts: 577
Poder: 22
__marcsc Va por buen camino
Hola,

en teoría es más eficiente el segundo método, dado que cada vez que invocas el operador as se ejecuta un código determinado en tiempo de ejecución. Lo que pasa que luego faltaría ver qué ha hecho el compilador en el momento de generar el exe.

Yo lo haría del segundo método y así aseguras el tiro, o sinó también puedes hacer algo del tipo

Código Delphi [-]
with Componente as InterfaceX do
begin
  PropiedadX:= 0;
  PropiedadY:= 1;
  Ejecuta;
end;

Que supongo que sería igual de eficiente que el segundo método que propones.

Saludos!

Última edición por __marcsc fecha: 07-06-2004 a las 22:20:57.
Responder Con Cita
  #3  
Antiguo 08-06-2004
jplj jplj is offline
Miembro
 
Registrado: oct 2003
Posts: 189
Poder: 21
jplj Va por buen camino
En primer lugar gracias por la respuesta.

Y ahora ya que lo mencionas una pregunta respecto al empleo de la estructura:

Código Delphi [-]
with ... do 
begin

end;

Nunca me ha gustado usarla pues creo que genera un código poco legible, pero en su día creo haber leido que proporciona un código más optimo para el compilador, creando un ejecutable mejor.

¿Es correcto?, o simplemente se trata de una estructura que facilita la escritura repetitiva de código.


Saludos.
Juan P.
Responder Con Cita
  #4  
Antiguo 08-06-2004
__cadetill __cadetill is offline
Miembro
 
Registrado: may 2003
Posts: 3.387
Poder: 25
__cadetill Va por buen camino
Cita:
Empezado por jplj
Nunca me ha gustado usarla pues creo que genera un código poco legible, pero en su día creo haber leido que proporciona un código más optimo para el compilador, creando un ejecutable mejor.

¿Es correcto?, o simplemente se trata de una estructura que facilita la escritura repetitiva de código.
Pues no se, casi nunca la uso, pero más que nada porque si he de depurar el código, o pongo lo que quiero ver en el watch o no hay manera de ver los valores de las variables/propiedades/..... y eso me crispa los nervios

Responder Con Cita
  #5  
Antiguo 08-06-2004
jplj jplj is offline
Miembro
 
Registrado: oct 2003
Posts: 189
Poder: 21
jplj Va por buen camino
Me despistado.

Evidentemente si propones la estructura with .. do como código tan eficiente como la segunda propuesta que hago, es que esta estructura no sirve para evitar escribir codigo repetitivo (cosa a la que induce a pensar muchos libros).

¿por qué es tan eficiente? ¿cómo funciona esa estructura?.
Responder Con Cita
  #6  
Antiguo 08-06-2004
Avatar de delphi.com.ar
delphi.com.ar delphi.com.ar is offline
Federico Firenze
 
Registrado: may 2003
Ubicación: Buenos Aires, Argentina *
Posts: 5.932
Poder: 27
delphi.com.ar Va por buen camino
Cita:
Empezado por jplj
Nunca me ha gustado usarla pues creo que genera un código poco legible, pero en su día creo haber leido que proporciona un código más optimo para el compilador, creando un ejecutable mejor.
La lógica indica que si lo que pones en el with es una función o un método de una clase, en ambos casos vamos a evaluar el resultado, el código de esta función / método / propiedad se ejecutará una sola vez. Por el contrario si llamamos a esta función / método / propiedad tantas veces como lo necesitemos, el código de este se ejecutará para cada llamado. Obviamente que esto lo podemos subsanar utilizando una simple variable. Si ves el código compilado, verás que es muy similar al utilizar una variable para la asignación.
Por otro lado es cierto lo que dice cadetill, es algo molesto para seguir el hilo de ejecución de una aplicación.
__________________
delphi.com.ar

Dedique el tiempo suficiente para formular su pregunta si pretende que alguien dedique su tiempo en contestarla.
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


La franja horaria es GMT +2. Ahora son las 07:03:53.


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