Retorno de uma function
Como faço pra retornar tres valores de um function, o valores são string, integer e o outro é um real.
Tô perdidaço nisso
Obrigado pela atenção
Tô perdidaço nisso
Obrigado pela atenção
Salvati
Curtidas 0
Respostas
Rômulo Barros
04/05/2004
Transforma tudo para string, concatenando os valores com um ponto (.) entre eles. Daí então, basta fazer uma procedure para desconcatenar (he he) os valores, tendo como ponto de referência o ponto (.) :lol:
GOSTEI 0
Lucas Silva
04/05/2004
Tenta fazer com procedure..
procedure Teste(var A: String; B:Integer; C:Real) begin .... A := ´Lucas´; B := 32; C := 43,98; end; // e na hora de buscar os valores //em uma procedure qualquer.. procedure TForm1..... var A1: String; B1:Integer; C1:Real; begin Teste(A1,B1,C1); end;
GOSTEI 0
Rômulo Barros
04/05/2004
[quote:52e30c6c05=´Lucas Alves Silva´]Tenta fazer com procedure..
[/quote:52e30c6c05]
Muito boa a sua solução, Lucas Alves Silva. Está aí uma das maneiras de se passar parâmetros no delphi (Passagem por referência) muito pouco utilizado por programadores..., e que deveria ser dado mais atenção.
procedure Teste(var A: String; B:Integer; C:Real) begin .... A := ´Lucas´; B := 32; C := 43,98; end; // e na hora de buscar os valores //em uma procedure qualquer.. procedure TForm1..... var A1: String; B1:Integer; C1:Real; begin Teste(A1,B1,C1); end;
Muito boa a sua solução, Lucas Alves Silva. Está aí uma das maneiras de se passar parâmetros no delphi (Passagem por referência) muito pouco utilizado por programadores..., e que deveria ser dado mais atenção.
GOSTEI 0
Lucas Silva
04/05/2004
[quote:8880e29279=´Undeclared Identifier´]Muito boa a sua solução, Lucas Alves Silva. Está aí uma das maneiras de se passar parâmetros no delphi (Passagem por referência) muito pouco utilizado por programadores..., e que deveria ser dado mais atenção.[/quote:8880e29279]
Eu gosto muito de fazer consultas deste tipo, eu acho bem mais facil, do que ficar criando váriaveis globais, e coisa do tipo...
Essa passagem de parâmetros é simples e rápida...
Eu gosto muito de fazer consultas deste tipo, eu acho bem mais facil, do que ficar criando váriaveis globais, e coisa do tipo...
Essa passagem de parâmetros é simples e rápida...
GOSTEI 0
Salvati
04/05/2004
Achei muito legal, e acabei lembrando desse modo de chamar procedures, ótimo isso, mas pro colocar td em procedure tá mais enrolado, tenho que iniciar muitas coisas.
Mas achei interessante essa concatenação de strings, já é o que tô mexendo, mas quando quero transformá-lo de string para inteiro ou float ele apresenta erro, dizendo que não é uma variável qeu não pode virar inteiro.
Qaulquer coisa te passo por e-mail pra dar uma olhada, estanho.
Mas achei interessante essa concatenação de strings, já é o que tô mexendo, mas quando quero transformá-lo de string para inteiro ou float ele apresenta erro, dizendo que não é uma variável qeu não pode virar inteiro.
Qaulquer coisa te passo por e-mail pra dar uma olhada, estanho.
GOSTEI 0
Marco Salles
04/05/2004
Utileze a a palavra chave [b:5f72189763]var[/b:5f72189763], No Contexto da sua Função...Por Exemplo:
Na Hora De Chamar a Função:
Function SeiLaOQue(var a:String, var b:Integer):Real; begin a:=Qualquer String; b:=Qualquer Numero Inteiro; result:Qualquer Numero Real; end;
Na Hora De Chamar a Função:
Var a:String; b:Integer; c:Real; begin c:=SeiLaOQue(a,b); end;
GOSTEI 0
Salvati
04/05/2004
legal..valeu de novo...rs
vou implementá-lo daqui a pouco, mas oq há de errado, que fiquei muito curioso agora.
Se souberem o erro me avisem por favor
O código da minha procedure e da minha function estão abaixo:
[/code]
vou implementá-lo daqui a pouco, mas oq há de errado, que fiquei muito curioso agora.
Se souberem o erro me avisem por favor
O código da minha procedure e da minha function estão abaixo:
Function ReadComm:String;
var BytesLidos: DWord;
f: real;
ReadStr, tst: String;
begin
iRet:=ReadFile(hComm, bRead[0], 255, BytesLidos, nil);
if ord(iRet)=-1 then exit;
ReadStr:=´´;
//IF bytesLidos > 0 then ShowMessage(inttostr(BytesLidos));
If BytesLidos > 0 Then
{ For I:=0 To BytesLidos - 1 do
ReadStr:=ReadStr + chr(bRead[i])
Else
FlushComm;
Result:=ReadStr; }
begin
if bRead[0]=255 then
tst:=formatfloat(´#.00´,(((bRead[2])*2)/3));
result:=((inttostr(bRead[1]))+´ - ´+(tst));
end;
End;
procedure TfPrincipal.Timer1Timer(Sender: TObject); var cStr, s, t: String; quant, d, e, posi, a: integer; b: real; begin if not bAberta then begin ShowMessage(´PORTA SERIAL ESTA FECHADA !´); exit; end; begin cStr:=ReadComm; if Length(cStr)>0 then posi:=Pos(´-´,cStr); quant:=length(cStr); a:=strtoint(Copy(cStr,1,((posi)-1))); t:=(copy(cStr,((posi)+1),quant)); Memo1.Lines.Add(cStr); edit1.Text:=inttostr(a); case a of 1: begin edit1.Text:=inttostr(a); edit2.text:=(t); end; 2: begin edit3.text:=inttostr(a); edit4.text:=(t); end; 3: begin edit5.text:=inttostr(a); edit6.text:=(t); end; 4: begin edit7.text:=inttostr(a); edit8.text:=(t); end; 5: begin edit9.text:=inttostr(a); edit10.text:=(t); end; 6: begin edit11.text:=inttostr(a); edit12.text:=(t); end; 7: begin edit13.text:=inttostr(a); edit14.text:=(t); end; 8: begin edit15.text:=inttostr(a); edit16.text:=(t); end; 9: begin edit17.text:=inttostr(a); edit18.text:=(t); end; 10: begin edit19.text:=inttostr(a); edit20.text:=(t); end; end; end; end;
GOSTEI 0