Array
(
)

erro ao dar o create

Tdqr
   - 08 jan 2006

galera não estou entendendo pq ocorre um erro qd eu vou dar o create, alguem pode me explicar

type
TPessoa = class
private
fNome: string;
public
property Nome: string read fNome write fNome;
end;

var
Form1: TForm1;
vlist: TList;
FPessoa: array of TPessoa;
i: integer;

implementation

{$R *.dfm}

procedure TForm1.BitBtn1Click(Sender: TObject);
begin
i := i + 0;
vlist := TList.Create;
FPessoa[i] := TPessoa.Create; <------------------- ERRO


Edilcimar
   - 08 jan 2006

Aqui FPessoa[i] você está tentando carregar um I que não tem valor, pois o mesmo não foi inicializado


Tdqr
   - 08 jan 2006

Mesmo inicializando i , ele continua dando erro
i := 0;
vlist := TList.Create;
FPessoa[i] := TPessoa.Create;
FPessoa[i].Nome := Edit1.Text;
vlist.Add(FPessoa);
i := i + 0;


Tdqr
   - 09 jan 2006

sera que alguem pode me ajudar?????


Massuda
   - 09 jan 2006

Pelo código que você postou, FPessoa é um array dinâmico. Você precisa ajustar o tamanho desse array usando SetLength; algo do tipo...#Código

I := Length(FPessoa);
SetLength(FPessoa, I + 1);
FPessoa[I] := TPessoa.Create;
...



Michael
   - 09 jan 2006


Citação:
I := I + 0;


:?: :shock:

Como a array é dinâmica, vc tem que setar suas dimensões, usando a procedure SetLength.

#Código

SetLength(FPessoas, 1)


Outra coisa, não use variáveis globais. Prefira campos da classe. E se for usá-las, não nomeias com um F inicial, pois esta notação é usada em campos privados.


Citação:
sera que alguem pode me ajudar?????


Não poste este tipo de mensagem, pois dá a entender que os usuários do fórum tem a obrigação de responder às perguntas questionadas.

[]´s