Daniel Bastos wrote:
> Galera,
> fui criar umas funções pra manipular arrays dinâmicos pra mim, mas surgiu
> uma dívida que não consigo entender o pq:
> 
> procedure AddInDynArray(var AArray : array of variant; AValue : variant);
> begin
>   SetLength(AArray, Length(AArray)+1);
>   AArray[High(AArray)] := AValue;
> end;
> 
> Quando compilo, da o erro: [DCC Error] DynArray.pas(120): E2008 Incompatible
> types apontando a posição para o array passado por parâmetro.
> O estranho que só aconteceu isso quando o array é passado por parâmetro. Se
> eu criar um outro array no var desta, passa pela compilação.
> Alguem consegue me esplicar?

É a diferença entre um dynamic array (que o setlength espera) e um open 
array (que você passou como parâmetro). Declare um

type
   TVariantArray: array of Variant;

e utilize-o no lugar do array of variant, deve resolver.

Joao Morais

Responder a