Função retornar um Array
01/09/2004
0
Boa tarde a todos.
Existe como uma função retornar um array?
Existe como uma função retornar um array?
Marcotema
Curtir tópico
+ 0
Responder
Post mais votado
01/09/2004
Você poderá fazer da seguinte maneira.
Crie um Tipo, abaixo da cláusula [b:d316de3944]type[/b:d316de3944] e defina como um array (de algum tipo)
Depois crie a função e defina o resultado dela do tipo que você criou.
Segue um código exemplo (estou enviando a unit completa)
Coloque um BreakPoint na linha ShowMessage e você verá o conteúdo de lCaracteres. Que deverá ser: ´Pos0´, ´Pos1´, ´Pos2´, ´Pos3´, ´Pos4´, ´Pos5´, ´Pos6´, ´Pos7´, ´Pos8´, ´Pos9´
Se precisar trabalhar com outro conteúdo, basta alterar o tipo do array do novo Tipo que você criou
Crie um Tipo, abaixo da cláusula [b:d316de3944]type[/b:d316de3944] e defina como um array (de algum tipo)
Depois crie a função e defina o resultado dela do tipo que você criou.
Segue um código exemplo (estou enviando a unit completa)
unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TResultArray = array of string; //<== Definição do tipo TForm1 = class(TForm) Button1: TButton; procedure Button1Click(Sender: TObject); private function RetornarArray(FParametro: integer): TResultArray; { Private declarations } public { Public declarations } end; var Form1: TForm1; implementation {$R *.dfm} function TForm1.RetornarArray(FParametro: integer): TResultArray; var i: integer; begin if FParametro > 0 then begin SetLength(Result, FParametro); for i := 0 to FParametro - 1 do begin Result[i] := ´Pos´+IntToStr(i); end; end; end; procedure TForm1.Button1Click(Sender: TObject); var lCaracteres: TResultArray; begin Setlength(lCaracteres, 10); lCaracteres := RetornarArray(10); ShowMessage(´´); end; end.
Coloque um BreakPoint na linha ShowMessage e você verá o conteúdo de lCaracteres. Que deverá ser: ´Pos0´, ´Pos1´, ´Pos2´, ´Pos3´, ´Pos4´, ´Pos5´, ´Pos6´, ´Pos7´, ´Pos8´, ´Pos9´
Se precisar trabalhar com outro conteúdo, basta alterar o tipo do array do novo Tipo que você criou
Rafs
Responder
Mais Posts
01/09/2004
Vinicius2k
Colega,
Um outro exemplo, um pouco diferente :
T+
Um outro exemplo, um pouco diferente :
// Declarando o tipo dinamico... type TMeuArray = Array of Integer; { **** } // Declarando a função que retorna meu tipo // dinamico... O parametro eh soh um exemplo... function RetornaArray(MeuParam: Integer): TMeuArray; var i: Integer; begin // Definindo o tamanho do Array -- isto é necessário. SetLength(Result,10); // Só um exemplo para preencher o Result... for i:= 0 to 9 do Result[i]:= MeuParam + i; end; { **** } procedure TForm1.Button1Click(Sender: TObject); var MeuRetorno: Integer; begin // buscando o retorno... note que vc dará também um índice // para o retorno da função como faria num array convencional... MeuRetorno:= RetornaArray(200)[4]; // Um teste simples do retorno... ShowMessage(IntToStr(MeuRetorno)); end;
T+
Responder
Clique aqui para fazer login e interagir na Comunidade :)