PDA

Ver la Versión Completa : Function con retorno multiple


MaMu
03-10-2008, 01:17:44
Resulta que tengo una funcion que me devuelve el valor de un campo de una consulta en una tabla. Ahora bien, se puede hacer una funcion que devuelva mas de un valor? es decir, que retorne dos campos en vez de uno. (todos los campos son del mismo tipo)
Por ejemplo, direccion y telefono.

Saludos

Kipow
03-10-2008, 01:45:21
Prueba utilizando el tipo variant;

var
v : Variant;
Direccion,
Telefono : String;

begin
// La funcion ConsultaSQL retorna un Variant; Obvio esta la debes de definir.
V := ConsultaSQL('SELECT DIRECCION, TELEFONO FROM MITABLA');

Direccion := V[0];
Telefono := V[1];

duilioisola
03-10-2008, 08:36:10
Creo entender que tu problema se solucionaría pasando parametros por referencia:
procedure DameDireccionYTelefono(CodigoCliente : integer; var Direccion, Telefono : string);
begin
{hacer el select}
Direccion := FieldByName['DIRECCION'].AsString;
Telefono := FieldByName['TELEFONO'].AsString;
end;
y la llamarías así:
var
dir : string;
tel : string;
begin
...
DameDireccionYTelefono(123,dir,tel);
...
end;

DarkMan
03-10-2008, 13:54:53
Yo lo haría usando arrays:


Type TResultadoMultiple= Array [1..3] of String;
...

Function DevolverDatos(CodCliente: Integer): TResultadoMultiple;
begin
Result[1]:='lalala';
Result[2]:='lelele';
Result[3]:='lololo';
end;
...

Procedure TForm1.Button1click(Sender: TObject);
var ResultadoMultiple: TResultadoMultiple;
begin
...
ResultadoMultiple:= DevolverDatos(56);
...
end;