Função retornar um Array

01/09/2004

Boa tarde a todos.

Existe como uma função retornar um array?


Marcotema

Respostas

01/09/2004

Rafs

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)

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&93; := ´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


Responder Citar

01/09/2004

Vinicius2k

Colega,

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&93;:= 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)&91;4&93;; 

  // Um teste simples do retorno... 
  ShowMessage(IntToStr(MeuRetorno)); 

end;


T+


Responder Citar

01/09/2004

Marcotema

Valeu, obrigado pela dica.


Responder Citar

01/09/2004

Marcotema

Valeu, obrigado pela dica.


Responder Citar