Buscar

Passando arrays dinâmicos para procedures/functions

Código

 Aviso: O ponto principal desta dica não é implementar a procedure imaginada, mas sim um demonstrar um aspecto curioso da passagem de arrays como parâmetros no Delphi.

  Imagine que você quer implementar uma procedure que separe as palavras de uma string por espaços.

  Vamos esboçar um protótipo:
    procedure SplitString (s : String; var output : array of String);

  O que se pode imaginar por aqui é que o programa vai ler a string S, contar os espaços e alocar a memória para o array output, certo? Errado. Tente compilar isto e você obterá um erro de 'Incompatible types'.

  Para passar um array dinâmico para uma procedure/function, você precisa, primeiro, definir um tipo para o array específico que você quer passar. Nesse caso, array of String. Fica assim:
    type TDynamicStringArray = array of String;

  E o protótipo:
    procedure SplitString (s : String; var output : TDynamicStringArray);

  Agora sim você compilar sem problemas pode usar SetLength para alocar a memória.

  Flw.

Publicidade

Vote na dica




Quantidade de votos: 0 votos
Aceitação: 0%


Detalhes da dica

Categoria: Object pascal
Adicionada dia: 03/02/05
Por: Haslan Guimarães
Visualizada: 14358 vezes

Planeta Delphi - Tudo sobre programação Delphi Planeta Delphi - www.planetadelphi.com.br - Todos os direitos reservados | Copyright 2001-2009