erro ao dar o create

08/01/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


Tdqr

Respostas

08/01/2006

Edilcimar

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


Responder Citar

08/01/2006

Tdqr

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;


Responder Citar

09/01/2006

Tdqr

sera que alguem pode me ajudar?????


Responder Citar

09/01/2006

Massuda

Pelo código que você postou, FPessoa é um array dinâmico. Você precisa ajustar o tamanho desse array usando SetLength; algo do tipo...
I := Length(FPessoa);
SetLength(FPessoa, I + 1);
FPessoa[I&93; := TPessoa.Create;
...



Responder Citar

09/01/2006

Michael

I := I + 0;


:?: :shock:

Como a array é dinâmica, vc tem que setar suas dimensões, usando a procedure [b:f878476c7e]SetLength[/b:f878476c7e].

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 [b:f878476c7e]F[/b:f878476c7e] inicial, pois esta notação é usada em campos privados.

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


Responder Citar