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^