PDA

Ver la Versión Completa : Modeado de tipos o variable.


jplj
07-06-2004, 22:04:23
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?



(Componente As InterfaceX).PropiedadX:= 0;
(Componente As InterfaceX).PropiedadY:= 1;
(Componente As InterfaceX).Ejecuta;






var
CompIn: InterfaceX;
begin
CompIn:= (Componente As InterfaceX);
CompoIn.PropiedadX:= 0;
CompoIn.PropiedadY:= 1;
CompoIn.Ejecuta;




Saludos
JuanPe.

__marcsc
07-06-2004, 22:08:31
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


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!

jplj
08-06-2004, 18:52:34
En primer lugar gracias por la respuesta. :)

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


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.

__cadetill
08-06-2004, 18:59:47
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 :mad:

:D

jplj
08-06-2004, 19:01:24
Me despistado. :confused:

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?.

delphi.com.ar
08-06-2004, 19:12:51
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.