unit Unit1;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
type
TInfo = Record
Name : String;
age : Integer;
end;
PInfo = ^TInfo;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure PushItem(List: TList; Name: String; Age:Integer);
var
Info: PInfo;
begin
New(Info);
Info.Name := Name;
Info.Age := Age;
List.Add(Info);
end;
procedure PopItem(List:TList; var Name:String; var Age:Integer);
begin
if List.Count>0 then
begin
Name := PInfo(List[List.Count-1]).Name;
Age := PInfo(List[List.Count-1]).Age;
Dispose(PInfo(List[List.Count-1]));
List.Delete(List.Count-1);
end
else
begin
Name := '';
Age := 0;
end;
end;
procedure GetItem(List:TList; var Info:PInfo; RecordNumber:Integer);
begin
Info := PInfo(List[RecordNumber]);
end;
procedure CreateList(var List:TList);
begin
if not Assigned(List) then
List := TList.Create
else
List.Clear;
end;
procedure DestroyList(List:TList);
var
i: Integer;
begin
for i := 0 to List.Count-1 do
Dispose(PInfo(List[i]));
List.Free;
end;
procedure TForm1.Button1Click(Sender: TObject);
var
List : TList;
i : Integer;
Info : PInfo;
Name : String;
Age : Integer;
begin
CreateList(List);
PushItem(List, 'Adenilton', 29);
PushItem(List, 'Ana', 25);
PushItem(List, 'Roberto', 14);
PushItem(List, 'Marta', 40);
PushItem(List, 'Silvia', 60);
PushItem(List, 'Pedro', 32);
PopItem(List, Name, Age);
ShowMessage('Name:'+Name+', Age:'+IntToStr(Age));
PopItem(List, Name, Age);
ShowMessage('Name:'+Name+', Age:'+IntToStr(Age));
PopItem(List, Name, Age);
ShowMessage('Name:'+Name+', Age:'+IntToStr(Age));
PushItem(List, 'Carlos', 80);
for i := List.Count-1 downto 0 do
begin
GetItem(List,Info,i);
ShowMessage('Name:'+Info.Name+', Age:'+IntToStr(Info.Age));
end;
DestroyList(List);
end;
end. |
|