Fórum Função retornar um Array #249046
01/09/2004
0
Existe como uma função retornar um array?
Marcotema
Curtir tópico
+ 0Post mais votado
01/09/2004
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
Gostei + 4
Mais Posts
01/09/2004
Vinicius2k
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+
Gostei + 0
01/09/2004
Marcotema
Gostei + 0
01/09/2004
Marcotema
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)