Delphi - pilas en delphi

 
Vista:

pilas en delphi

Publicado por mike (1 intervención) el 18/05/2007 05:29:15
hola necesito ayuda para poder programar un bonton para hacer una pila con punteros, si alguien tiene algun coidgo fuente donde me pueda guiar se los agredecira de antemano

"URGE"
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil
Val: 65
Oro
Ha mantenido su posición en Delphi (en relación al último mes)
Gráfica de Delphi

RE:pilas en delphi

Publicado por E.T. (1244 intervenciones) el 18/05/2007 16:54:50
Que tal, aquí te dejo el siguiente código, es para hacer una lista con punteros, es el mismo principio que las pilas de aquí puedes guiarte, no recuerdo de donde saqué este codigo y no se si esté todo correcto pero puede servirte

unit Unit1;

interface

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

type
TForm1 = class(TForm)
BtCargar: TButton;
BtMostrar: TButton;
BtDestruir: TButton;
BtSalir: TButton;
Memo1: TMemo;
EdMarca: TEdit;
EdModelo: TEdit;
EdYear: TEdit;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
BtAgregar: TButton;

Procedure LoadList(Sender:Tobject);
Procedure ShowList(Sender:Tobject);
Procedure DestroyList(Sender:Tobject);
procedure BtAgregarClick(Sender: TObject);
procedure BtMostrarClick(Sender: TObject);
procedure BtCargarClick(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.dfm}
type
CarPtr=^CarRec;
CarRec=Record
Make,Model:String[20];
Year:word;
NextRec:CarPtr;
end;

var
FirstCar:CarPtr;

Procedure InitCarArray;
begin
FirstCar:=Nil;
end;

Procedure AddCar(Make,Model:String; Year:Word);
var
CurrentRec:CarPtr;
Begin
If FirstCar=nil then
begin
New(CurrentRec);
FirstCar:=CurrentRec;
end
Else
begin
CurrentRec:=FirstCar;
While CurrentRec^.NextRec<>nil do
CurrentRec:=CurrentRec.NextRec;
New(CurrentRec^.NextRec);
End;
CurrentRec^.Make:=Make;
CurrentRec^.Model:=Model;
CurrentRec^.Year:=Year;
CurrentRec.NextRec:=Nil;
end;

Procedure Tform1.LoadList(Sender:Tobject);
begin
InitCarArray;
AddCar('Chevy','Camaro',1977);
AddCar('AMC','Pacer',1979);
AddCar('Ford','Perfect',1975);
AddCar('Toyota','Camry',1995);
end;

Procedure Tform1.ShowList(Sender:Tobject);
var CurrentRec:CarPtr;
begin
Memo1.Lines.Clear;
If FirstCar=nil then exit;
CurrentRec:=FirstCar;
While CurrentRec<>nil do
begin
Memo1.Lines.Append(IntToStr(CurrentRec.Year)+' '+CurrentREc.Make+' '
+CurrentRec.Model);
CurrentRec:=CurrentRec.NextRec;
end;
end;

Procedure Tform1.DestroyList(Sender:TObject);
var CurrentRec:CarPtr;
begin
If FirstCar<>nil then
begin
repeat
currentRec :=FirstCar.NextRec;
Dispose(FirstCar);
FirstCar:=CurrentRec;
until FirstCar=nil;
end;
end;
procedure TForm1.BtAgregarClick(Sender: TObject);
begin
AddCar(EdMarca.Text,EdModelo.Text,StrToInt(EdYear.Text));
end;

procedure TForm1.BtMostrarClick(Sender: TObject);
begin
Form1.ShowList(nil);
end;

procedure TForm1.BtCargarClick(Sender: TObject);
begin
Form1.LoadList(nil);
end;

end.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar