Einzelnen Beitrag anzeigen

nkaaa

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

Re: anfänger: stack als klasse erstellen

  Alt 10. Mai 2006, 18:14
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?
Angehängte Dateien
Dateityp: rar stack_als_klasse_751.rar (178,1 KB, 10x aufgerufen)
  Mit Zitat antworten Zitat