so hab ein bisschen weitergearbeitet:
Delphi-Quellcode:
type
Tzeiger = ^Tinfo;
Tinfo = Record
info : String;
next : Tzeiger;
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
var first : Tzeiger; //Zeiger auf das erste Element im STack
end;
implementation
constructor Tstack.create();
begin
inherited;
new(stack.first);
first:=nil;
end;
procedure Tstack.pop;
var help : Tzeiger;
begin
if not (first = nil) then
begin
help:=first;
first:=first^.next;
dispose(help);
end;
end;
procedure Tstack.push(info : String);
var help : Tzeiger;
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.Button3Click(Sender: TObject);
begin
stack.create;
end;
anbei noch meine kleine testumgebung.
bekomme im testprogramm sofort beim Stack.create eine zugriffsverletzung :/
die Fehlermeldung kommt selbst dann noch, wenn ich das
new(stack.first);
ausklammere.
wer weiß rat?