Einzelnen Beitrag anzeigen

nkaaa

Registriert seit: 25. Feb 2006
28 Beiträge
 
Delphi 2005 Personal
 
#16

Re: anfänger: stack als klasse erstellen

  Alt 10. Mai 2006, 20:22
hab jetzt alles so gemacht
Delphi-Quellcode:
type
  Pinfo = ^Tinfo;
  Tinfo = Record
            info : String;
            next : Pinfo;
          End;

  Tstack = class(Tobject)
    //constructor create;
    procedure pop; //Element vom Stack runterschmiessen, OHNE es zurückzuliefern!
    procedure push(info : String); //Element draufpacken
    function empty : Boolean; //Ist der Stack leer?
    function GetFirstItem : String; //Liefert das erste Element vom Stack zurück
    destructor destroy;
    private
      first : Pinfo; //Zeiger auf das erste Element im Stack
  end;



var
  Form1: TForm1;

var
  st : Tstack;


implementation

{$R *.dfm}

{constructor Tstack.create();
begin
  inherited;
  //new(stack.first);
  //first:=nil;
end;                        ist anscheinend überflüssig  }



procedure Tstack.pop;
var help : Pinfo;
begin
  if not (first = nil) then
    begin
      help:=first;
      first:=first^.next;
      dispose(help);
    end;
end;


procedure Tstack.push(info : String);
var help : Pinfo;
begin
  new(help);
  help^.info:=info;
  help^.next:=nil;
  if (first=nil) then first^:=help^
    else
      begin
        help.next:=first;
        first:=help;
      end;
end;


function Tstack.empty : Boolean;
begin
  result:=(First=nil);
end;


function Tstack.GetFirstItem : String;
begin
  if not (first=nil) then result:=first^.info
    else result:='Kein Element im Stack';
end;


destructor Tstack.destroy;
begin
  inherited;
end;

procedure TForm1.createClick(Sender: TObject);
begin
  //st.create;
end;


procedure TForm1.pushClick(Sender: TObject);
begin
  st.push(edit1.text);
end;


procedure TForm1.popClick(Sender: TObject);
begin
  st.pop;
end;
anbei die ganze testumgebung.
bekomme immernoch einen fehler (zugrissverletzung)
beim "pushen" in der zeile:   if (first=nil) then first^:=help^
Angehängte Dateien
Dateityp: rar stack_als_klasse_290.rar (182,3 KB, 3x aufgerufen)
  Mit Zitat antworten Zitat