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 27-02-2009
socger socger is offline
Miembro
 
Registrado: jun 2004
Posts: 89
Poder: 20
socger Va por buen camino
Post ¿Una función en Delphi, puede devolver varios parámetros?

Hasta ahora cuando he usado una función sólo he devuelto un parámetro, cuando he tenido que devolver varios por ejemplo he declarado variables públicas y luego las he leido desde otras partes del módulo en el que estoy desarrollando.

Por ejemplo una función podría que uso muy a menudo es algo parecido a esto

function TModuloPrograma.Comprobar_Algo : ShortString;
var Mensaje_Error : ShortString
begin
Mensaje_Error := '';
try
// Cuerpo de lo que quiero hacer
Except
// Si se produce un error que quiero controlar
Mensaje_Error := 'se ha producido un error';
End;

Result := Mensaje_Error;
end;

Lo que no se es si una función puede devolver varias variables. ¿Podría amáblemente decirme alguien esto ó como lo solucionais?.

Gracias de antemano.
Responder Con Cita
  #2  
Antiguo 27-02-2009
pjmedina pjmedina is offline
Miembro
 
Registrado: abr 2006
Posts: 84
Poder: 18
pjmedina Va por buen camino
Funcion
Código Delphi [-]
function TModuloPrograma.Comprobar_Algo(var mensaje:string;var mensaje2:string) : ShortString;
var Mensaje_Error : ShortString
begin
Mensaje_Error := '';
try
// Cuerpo de lo que quiero hacer
 mensaje:='lo que sea';
 mensaje2:='lo que sea';
Except
// Si se produce un error que quiero controlar 
Mensaje_Error := 'se ha producido un error';
mensaje:='error';
mensaje2:='error';
End;
 
Result := Mensaje_Error;
end;

UTILIZACION
Código Delphi [-]
var
 sms,sms1,sms2:string;
begin
 sms:=ModuloPrograma.Comprobar_Algo(sms1,sms2);
end;

Espero que te sirva.

Saludos.
Responder Con Cita
  #3  
Antiguo 27-02-2009
pjmedina pjmedina is offline
Miembro
 
Registrado: abr 2006
Posts: 84
Poder: 18
pjmedina Va por buen camino
Por cierto, al igual que lo he hecho con una función, también puedo hacerlo con un procedimiento. En el ejemplo que te he puesto, despues de llamar a la funcion las tres variables (sms,sms1 y sms2) tiene el valor que le pasa la función.
Responder Con Cita
  #4  
Antiguo 27-02-2009
Avatar de DarkMan
DarkMan DarkMan is offline
Miembro
 
Registrado: jul 2006
Posts: 102
Poder: 18
DarkMan Va por buen camino
Aquí tienes el tema tratado anteriormente.
__________________
"La recompensa de una buena acción está en haberla hecho"
Responder Con Cita
  #5  
Antiguo 27-02-2009
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,

Otra opción puede user utilizar "records", de modo que podríamos declarar una como este:

Código Delphi [-]
type
  TOperationResult = record
    operationResult : integer;
    operationMessage : string;
  end;

Que podríamos emplear como tipo de resultado para la siguiente función:

Código Delphi [-]
function SumOperation(a, b: integer) : TOperationResult;
begin
  Result.operationResult := (a + b);
  Result.operationMessage := Format(
    'The sum of %d and %d is %d',
    [a, b, Result.operationResult]
  );
end;

Que a su vez podríamos utilizar de este modo:

Código Delphi [-]
procedure TForm1.Button1Click(Sender: TObject);
begin
  ShowMessage(SumOperation(1, 2).operationMessage);
end;

Para obtener, en este caso, el mensaje "The sum of 1 and 2 is 3".
__________________
David Esperalta
www.decsoftutils.com
Responder Con Cita
  #6  
Antiguo 27-02-2009
Avatar de Caro
*Caro* Caro is offline
Moderadora
 
Registrado: jul 2004
Ubicación: Cochabamba, Bolivia
Posts: 2.544
Poder: 22
Caro Va por buen camino
Hola, otra opción sería utilizar Out, que define un parametro de salida y supuestamente no necesita inicialización.

Código Delphi [-]
 function NombreFuncion(Out a , b : Integer) : Integer
 begin
   ....................
  a := valor;
  b ;= otrovalor;
 end;

Saluditos
__________________
Disfruten cada minuto de su vida a lado de sus seres queridos como si fuese el ultimo, uno nunca sabe lo que puede pasar.
Responder Con Cita
  #7  
Antiguo 27-02-2009
Avatar de ContraVeneno
ContraVeneno ContraVeneno is offline
Miembro
 
Registrado: may 2005
Ubicación: Torreón, México
Posts: 4.738
Poder: 23
ContraVeneno Va por buen camino
Otra opción sería.... naaa, creo que ya con esas son suficientes
__________________

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
¿Se puede instalar Delphi 7 profesional en varios PCs? rrf Varios 3 21-10-2008 17:24:33
función date para devolver Nº dia de la semana lucasarts_18 PHP 2 27-03-2007 14:27:03
Devolver varios registro desde SP lucasarts_18 Oracle 2 27-12-2005 15:16:57
problema para devolver 2 valores en una funcion tiagor64 OOP 4 06-05-2005 15:38:59
IBSQL puede devolver un valor haciendo INSERT? altp SQL 2 04-10-2003 22:09:49


La franja horaria es GMT +2. Ahora son las 16:08:54.


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