Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Paso de parametros (https://www.clubdelphi.com/foros/showthread.php?t=17674)

Delphos 17-01-2005 20:18:33

Paso de parametros
 
Hola foro

Resulta que no se como devolver dos parametros de una funcion

Por ejemplo:
Código:

procedure TForm1.Button1Click(Sender: TObject);
  var: Hora1, Min1, Hora2, Min2 : Integer;
        TotHora,TotMin: String
begin
  Instrucciones
    .
    .
  // Se que una llamada normal seria asi
    HorasMinutosEnTurno( Hora1, Min1, Hora2, Min2);
 
  //Pero yo quiero que la funcion me devuelva dos valores
  ¿Como recogo aqui el valor de TotalHoras y el TotalMinutos de la funcion?
end;

Function HorasMinutosEnTurno(HoraInicio,MinutosInicio,HoraFinal,MinutosFinal:Integer):String;
var : TotalHoras, TotalMinutos : String
begin
  Instrucciones
    ...
    ...
  TotalHoras:= a lo que sea
  TotalMinutos := a lo que sea
end ;

Muchas gracias de antemano.

Salu2.

maeyanes 17-01-2005 20:32:21

Tienes varias posibilidades, la más rápida:

Usar un procedimiento de esta forma:
Código Delphi [-]
Procedure HorasMinutosEnTurno(HoraInicio, MinutosInicio,
  HoraFinal, MinutosFinal:Integer;
  var TotalHoras, TotalMinutos: String);
Así devuelves en TotalHoras y TotalMinutos los valores que necesitas..

Claro, que si necesitas usar el valor de la función original solo para mostrarla, podrías componer la cadena a devolver:
Código Delphi [-]
var
  TotalHoras: Integer;
  TotalMinutos: Integer;

begin
  // Cálculos...
  Result := Format(%d horas %d minutos', [TotalHoras, TotalMinutos])
end;
Otra opción sería crear un tipo registro que tenga los 2 valores y devolver en la función un registro de ese tipo...


Saludos...

Delphos 18-01-2005 13:45:44

Ok. Mensaje captado.

¿Y la llamada de la funcion como seria para recoger los dos totales en variables diferentes?

maeyanes 18-01-2005 15:23:55

La primera opción es un procedimiento, y la llamada sería más o menos así:

Código Delphi [-]
var
  HorasTotales: string;
  MinutosTotales: string;

begin
  Procedure HorasMinutosEnTurno(10, 50, 12, 30, HorasTotales, MinutosTotales);
  ShowMessage(Format('El turno duró: %s horas y %s minutos', [HorasTotales,
    MinutosTotales]);
end;

Delphos 18-01-2005 15:32:07

Vale asunto solucionado.

Muchas gracias Marcos.

Salu2


La franja horaria es GMT +2. Ahora son las 18:15:56.

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