Fórum Parametros de Funções #297447
28/09/2005
0
function Impressora(ALote: boolean; out ATodos:boolean ; out AReq :string) : string;
Eu gostaria de saber o porque da utilização do ´OUT´ antes da declaração de um parametro de uma função...
Se possivel, caso haja alguma semelhança entre um e outro tipo de argumento, gostaria de um esclarecimento sobre eles...
Agradeço desde jah a atenção
Tiago Malveira
Curtir tópico
+ 0Posts
28/09/2005
Massuda
Gostei + 0
28/09/2005
Siam
Gostei + 0
28/09/2005
Massuda
Gostei + 0
15/11/2005
Nigro
Olá pessoal
Preciso saber como posso fazer uma função retornar 3 valores, sei que tem algo de var no meio,
mas não sei extatamente como se faz.
Por exemplo, tenho a string: 1.21.3
1 = Matéria
21 = Classificação
3 = Tópico
eu precisaria receber a string gravar esses dados no banco, não posso usar copy, pois a
quantidade de caracteres pode variar: 21.3.144, etc...
function Retorna(pCodigo : String; Var Var1: String) : String;
var
sCodigo : String;
begin
sCodigo := Copy(Edit1.Text, Pos(´.´, Edit1.Text) + 1, Length(pCodigo));
Result := sCodigo;
end;
Obrigado
Gostei + 0
16/11/2005
Massuda
procedure DecodeTime(Time: TDateTime; var Hour, Min, Sec, MSec: Word);
...ela retorna quatro valores.
Gostei + 0
16/11/2005
Emerson Nascimento
procedure Retorna(pCodigo: String; var pMateria, pClassificacao, pTopico: String); var sCodigo : String; begin pMateria := Copy(pCodigo, 1, Pos(´.´,pCodigo)-1); pCodigo := Copy(pCodigo, Length(pMateria)+1, Length(pCodigo)); pClassificacao := Copy(pCodigo, 1, Pos(´.´,pCodigo)-1); pTopico := Copy(pCodigo, Pos(´.´,pCodigo)+1, Length(pCodigo)); end; sintaxe: var Materia, Classificacao, Topico: string; begin Retorna(´1.21.3´, Materia, Classificacao, Topico); ShowMessage(Materia+#13+Classificacao+13+Topico); end;
uma outra forma seria criar um record para receber esse retorno:
type TRetornoMateria = record Materia, Classificacao, Topico: string; end; function Retorna(pCodigo: String): TRetornoMateria; var sCodigo : String; begin Result.Materia := Copy(pCodigo, 1, Pos(´.´,pCodigo)-1); pCodigo := Copy(pCodigo, Length(pMateria)+1, Length(pCodigo)); Result.Classificacao := Copy(pCodigo, 1, Pos(´.´,pCodigo)-1); Result.Topico := Copy(pCodigo, Pos(´.´,pCodigo)+1, Length(pCodigo)); end; sintaxe: var Retorno: TRetornoMateria; begin Retorno := Retorna(´1.21.3´); ShowMessage(Retorno.Materia+#13+Retorno.Classificacao+13+Retorno.Topico); end;
você poderia ainda utilizar StringList para fazer a separação dos elementos:
var Materia, Classificacao, Topico: string; Lista: TStringList; begin Lista := TStringList.Create; Lista.Delimiter := ´.´; Lista.DelimitedText := ´1.21.3´; Materia := Lista[0]; Classificacao := Lista[1]; Topico := Lista[2]; ShowMessage(Materia+#13+Classificacao+13+Topico); end;
entre outras formas...
Gostei + 0
16/11/2005
Adriano Santos
Não sei se entendi, mas de qualquer forma ai vai:
Use Record, veja o exemplo:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs;
type
TTeste = Record
Item1 : String;
Item2 : Integer;
Item3 : Double;
end;
type
TForm1 = class(TForm)
private
{ Private declarations }
public
{ Public declarations }
function Retorna(Param1, Param2, Param3 : String) : TTeste;
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
{ TForm1 }
function TForm1.Retorna(Param1, Param2, Param3: String): TTeste;
begin
//seus comandos
Result.Item1 := ´Teste´;
Result.Item2 := 100;
Result.Item3 := 12.00;
end;
end.
Gostei + 0
16/11/2005
Adriano Santos
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)