Array
(
)

Ajuda Na Procedure Do Botão Listar

Acdestefani
   - 21 mar 2006

Olá!
Como não tenho experência nenhuma em programação, gostaria de pedir a ajuda de vocês.
Criei uma Procedure pra listar os registros cadastrados, mas ao clicar no botâo LISTAR não acontece. Vocês poderiam me ajudar a descobrir porque não tá funcionando essa Procedure?
Abaixo segue o código do meu sistema.
É a última Procedure do Código.
Desde já agradeço a ajuda de todos.

unit imc;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;

const
Min=1;
Max=2;

type
TForm1 = class(TForm)
titulo: TLabel;
Lbnome: TLabel;
Lbpeso: TLabel;
Lbaltura: TLabel;
Lbimc: TLabel;
Lbresultado: TLabel;
LbResImc: TLabel;
Btincluir: TButton;
Btlocalizar: TButton;
Btalterar: TButton;
Btexcluir: TButton;
Btlistar: TButton;
Btsair: TButton;
Listreg: TListBox;
LbResRes: TLabel;
EdNome: TEdit;
EdPeso: TEdit;
EdAltura: TEdit;
procedure FormCreate(Sender: TObject);
procedure BtincluirClick(Sender: TObject);
procedure BtsairClick(Sender: TObject);
procedure BtcalcularClick(Sender: TObject);
procedure BtlistarClick(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

type
Ptr = Integer;
Ficha = Record
Nome : String;
Peso,Altura,Imc : Real;
Condicao : String;
End;

ListaPessoas = Record
Pessoa : array [Min..Max] of Ficha;
Primeiro : Ptr;
Ultimo : Ptr;
end;

var
Form1 : TForm1;
L : ListaPessoas;
F : Ficha;
Aux : Integer;

implementation

{$R *.dfm}

Procedure FlVazia(var Lista:ListaPessoas);
Begin
Lista.Primeiro := Min;
Lista.Ultimo := Lista.Primeiro;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
Flvazia(L);
end;

procedure Inclui(x:Ficha; var Lista:ListaPessoas);
begin
if Lista.Ultimo > Max then
showmessage(´Erro: Lista Cheia´)
else
begin
Lista.Pessoa[Lista.Ultimo] := x;
Lista.Ultimo := Lista.Ultimo + 1;
end;
end;

Function Vazia (var Lista:ListaPessoas): boolean;

begin
Vazia := Lista.Primeiro = Lista.Ultimo;
end;

procedure TForm1.BtincluirClick(Sender: TObject);
begin
F.Nome:=EdNome.text;
F.Peso:=strtofloat(EdPeso.text);
F.Altura:=strtofloat(EdAltura.text);
Listreg.Items.Add(F.Nome);
Listreg.Items.Add(FloatToStr(F.Peso));
Listreg.Items.Add(FloatToStr(F.Altura));
Listreg.Items.Add(FloatToStr(F.Imc));
Listreg.Items.Add(F.Condicao);
Listreg.Items.Add(´´);
Ednome.Clear;
Edpeso.Clear;
Edaltura.Clear;
LbResImc.Caption:=´´;
LbResRes.Caption:=´´;
Ednome.SetFocus;

end;
procedure TForm1.BtsairClick(Sender: TObject);
begin
Close
end;

procedure TForm1.BtcalcularClick(Sender: TObject);
begin
F.Imc:=strtofloat(EdPeso.text)/(strtofloat(EdAltura.text)*strtofloat(EdAltura.text));
Lbresimc.Caption:=floattostr(F.Imc);
if F.Imc < 20 then
Lbresres.Caption:=´IDEAL´
else
if (F.Imc>=20) and (F.Imc<=25) then
Lbresres.Caption:=´IDEAL´
else
if (F.Imc>=25) and (F.Imc<=30) then
Lbresres.Caption:=´EXCESSO DE PESO´
else
if (F.Imc>=30) and (F.Imc<=35) then
Lbresres.Caption:=´OBESIDADE´
else
if F.Imc > 35 then
Lbresres.Caption:=´OBESIDADE MÓRBITA´

end;
[COLOR=red]
procedure TForm1.BtlistarClick(Sender: TObject);
var
i:integer;
begin
listreg.clear;
for i:=L.Primeiro to L.Ultimo-1 do
begin
Listreg.Items.Add(L.Pessoa[i].Nome);
Listreg.Items.Add(FloatToStr(L.pessoa[i].Peso));
Listreg.Items.Add(FloatToStr(L.pessoa[i].Altura));
Listreg.Items.Add(FloatToStr(L.pessoa[i].Imc));
Listreg.Items.Add(L.pessoa[i].Condicao);
Listreg.Items.Add(´´);
end;
end;

end.


Paullsoftware
   - 21 mar 2006


Citação:
procedure TForm1.BtlistarClick(Sender: TObject);
var
i:integer;
begin
listreg.clear;
for i:=L.Primeiro to L.Ultimo-1 do
begin
Listreg.Items.Add(L.Pessoa[i].Nome);
Listreg.Items.Add(FloatToStr(L.pessoa[i].Peso));
Listreg.Items.Add(FloatToStr(L.pessoa[i].Altura));
Listreg.Items.Add(FloatToStr(L.pessoa[i].Imc));
Listreg.Items.Add(L.pessoa[i].Condicao);
Listreg.Items.Add(´´);
end;
end;

tente mudar essa linha
#Código

for i:= 0 to L.Count-1 do

não testei estou sem Delphi aqui (Lan-house) mais amanhã pela manhã testo pra vc...


Acdestefani
   - 24 mar 2006

Valeu paullsoftware!
Muito obrigado pela ajuda.
Abraços