Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

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

Coloboración Paypal con ClubDelphi

 
 
Herramientas Buscar en Tema Desplegado
  #13  
Antiguo 05-10-2010
Avatar de Ñuño Martínez
Ñuño Martínez Ñuño Martínez is offline
Moderador
 
Registrado: jul 2006
Ubicación: Ciudad Catedral, Españistán
Posts: 6.025
Poder: 28
Ñuño Martínez Tiene un aura espectacularÑuño Martínez Tiene un aura espectacular
Cita:
Empezado por Casimiro Notevi Ver Mensaje
No recuerdo haber usado nunca 'out' , ¿qué ventajas e inconvenientes tiene, Ñuño?
Con OUT le estás diciendo al compilador que dentro del procedimiento no vas a usar el valor contenido en la variable, pero sí vas a modificar su valor, que luego vas a utilizar desde el procedimiento llamante. Por decirlo de alguna manera, es un caso especial de VAR. Por lo tanto el compilador tiene información de primera mano en cuanto a qué vas a hacer con ese parámetro. En consecuencia:
  1. En ese parámetro sólo pueden usarse variables: ni constantes ni expresiones ni funciones... En esto es igual al modificador VAR.
  2. Como vas a ignorar el valor del parámetro, el compilador puede ahorrarse el apilarlo en la llamada, optimizando la operación.
  3. Como es un parámetro de "sólo salida", el compilador puede optimizar la vuelta (RET) del procedimiento o función.
  4. Si haces algo mal, el compilador te avisa y así puedes encontrar posibles errores en tu algoritmo (por ejemplo, si intentas acceder al contenido del parámetro antes de asignarle nada).

Un posible problema puede darse si finalmente no asignamos ningún valor a los parámetros OUT, ya que entonces la variable podría quedarse con un valor indeterminado (dependiendo del compilador, opciones de optimización, etc.), y esos errores son difíciles de detectar. Por ejemplo:
Código Delphi [-]
FUNCTION Funcion (CONST Entrada: STRING; OUT Salida: STRING): BOOLEAN;
BEGIN
  IF Entrada <> '' THEN Salida := 'Hay entrada';
  RESULT := Length (Entrada) > 5;
END;

 ...
{ ¡Aquí el Label1 puede ser "indefinido" si el Edit1 está vacío! }
  EsLargo := Funcion (Edit1.Text, Label1.Caption);

Muchas veces, cuando usamos el modificador VAR en realidad deberíamos usar OUT (aunque no siempre, ojo). De la misma forma, cuando no usamos ningún modificador muchas veces deberíamos utilizar CONST.

Última edición por Ñuño Martínez fecha: 05-10-2010 a las 12:33:43.
Responder Con Cita
 



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
Grid no trae el result correcto Paulao Varios 14 19-03-2009 14:16:52
Alamcenar Result de storedProc desde otra unidad R0M3R0 Conexión con bases de datos 3 22-08-2008 01:32:52
PROCEDURE xxx.yyy can't return a result set in the given context. erian96 MySQL 2 15-07-2006 21:13:49
Result de un Query a dataset walito Conexión con bases de datos 2 19-04-2006 20:38:12
Parametro Result del StoredProc MarcelRuz Conexión con bases de datos 2 11-06-2004 21:24:15


La franja horaria es GMT +2. Ahora son las 21:48:49.


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
Copyright 1996-2007 Club Delphi