PDA

Ver la Versión Completa : Paso de parametros


Delphos
17-01-2005, 20:18:33
Hola foro

Resulta que no se como devolver dos parametros de una funcion

Por ejemplo:

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:

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:

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í:


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