Fórum Função que retorna dois valores #376147
20/10/2009
0
É comum criar funções que retorna sempre um valor como no exemplo a seguir:
function (cdPrd, descPrd : string) : string;
Mas agora preciso criar um função que retorna dois valores.
Alguém poderia me ajudar?
Obrigado.
Uelinton
Uelinton_reis
Curtir tópico
+ 0Post mais votado
13/01/2015
Exemplo:
----------------
1 - Crie um type, após o "uses":
Type
TVariosRetornos = record
nome : String; //defina quantos quais os retornos vc quer e qual o tipo de cada um.
idade : Integer;
sexo : String;
end;
--------------
2 - Na declaração da função, utilize este record como sendo o retorno;
function DadosCliente(codigo:Integer):TVariosRetornos;
--------------
3 - Na linha da função, dê o retorno para cada um:
function DadosCliente(codigo:Integer):TVariosRetornos;
begin
case codigo of
1: begin
Result.nome := 'José da Silva';
Result.idade := 45;
Result.sexo := 'Masculino';
end;
2: begin
Result.nome := 'Maria Aparecida';
Result.idade := 33;
Result.sexo := 'Feminino';
end;
end;
end;
--------------
4 - Na chamada, declare o retorno como sendo do mesmo tipo que vc criou:
procedure Tform1.Button1Click(Sender: TObject);
var Resultado: TVariosRetornos;
begin
Resultado := DadosCliente(1);
Showmessage('Nome do cliente = '+ Resultado.nome + #13 +
'Idade = '+ IntToStr(Resultado.idade) + #13 +
'Sexo = '+ Resultado.sexo);
Resultado := DadosCliente(2);
Showmessage('Nome do cliente = '+ Resultado.nome + #13 +
'Idade = '+ IntToStr(Resultado.idade) + #13 +
'Sexo = '+ Resultado.sexo);
end;
Flávio Siebert
Gostei + 3
Mais Posts
20/10/2009
Alanporto
Ex1:
type ExemploRecord = record valor1: Integer; valor2: String [10]; end; function Exemplo1(valor1,valor2: Boolean) : ExemploRecord;
Ex2:
function Exemplo2(valor1: String; var retorno: Integer) : Integer;
Gostei + 0
20/10/2009
Uelinton_reis
type ExemploRecord = record valor1: Integer; valor2: String [10]; end; function Exemplo1(valor1,valor2: Boolean) : ExemploRecord;
function Exemplo2(valor1: String; var retorno: Integer) : Integer;
Valeu cara....
Teria como vc dar um exemplo utilizando o retorno...
se puder agradeço...
obrigado.
Gostei + 0
21/10/2009
Alanporto
function Retorna2Valores(var valor2: Integer): Integer; begin valor2 := 5; Result := 10; end;
essa função sempre vai retornar 10 para o Resultado da função,e a variável valor2 passada por referência recebe 5. Assim:
var retorno1, retorno2: Integer begin retorno1 := Retorna2Valores(retorno2); end;
nesse caso, as variáveis ficariam: retorno1 = 10 e retorno2 = 5.
Gostei + 0
14/01/2015
Renato Rubinho
Um meio mais simples é utilizar o retorno como variant.
function RetornaVariant: variant; begin // Passa o result com VarArrayOf agrupando os retornos Result := VarArrayOf(['1',2]); end; procedure TForm1.Button1Click(Sender: TObject); var vAux1: variant; begin // Recebe o retorno numa variável variant vAux1 := RetornaVariant; // Utiliza os valores pelo índice do VarArrayOf ShowMessage(vAux1[0] + ' ' + IntToStr(vAux1[1])); end;
Abraççç,
rrubinho
Gostei + 1
22/07/2016
Hermeson Gonçalves
Gostei + 0
03/12/2017
Rogério Neves
Gostei + 0
03/12/2017
Rogério Neves
como pegaria o valor do result dentro da própria função ?
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)