AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

anfänger: stack als klasse erstellen

Ein Thema von nkaaa · begonnen am 9. Mai 2006 · letzter Beitrag vom 10. Mai 2006
Antwort Antwort
Seite 1 von 3  1 23      
nkaaa

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

anfänger: stack als klasse erstellen

  Alt 9. Mai 2006, 18:18
hallo,
ich möchte mir zu lernzwecken einen stack als klasse erstellen.
habe mir zur oop deshalb auch schon ein tutorial durchgelesen.

habe bis jetzt folgendes:
Delphi-Quellcode:
type
  Tmystack = class
    procedure create;
    procedure pop;
    procedure push(str : string);
    function firstItem: string;
  end;
bekomme sofort einen compilerfehler:

[Fehler] Unit1.pas(19): E2065 Ungenügende Forward- oder External-Deklaration: 'Tmystack.create'

für jede der proceduren. wäre nett wenn mir einer weiterhelfen könnte

gruß nkaaa
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.858 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: anfänger: stack als klasse

  Alt 9. Mai 2006, 18:21
Du mußt die Methoden implementieren (zumindest als stubs).
Markus Kinzler
  Mit Zitat antworten Zitat
nkaaa

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

Re: anfänger: stack als klasse

  Alt 9. Mai 2006, 18:42
danke, funktioniert
  Mit Zitat antworten Zitat
Benutzerbild von leddl
leddl

Registriert seit: 13. Okt 2003
Ort: Künzelsau
1.613 Beiträge
 
Delphi 2006 Professional
 
#4

Re: anfänger: stack als klasse

  Alt 9. Mai 2006, 18:46
Create würde ich allerdings als Konstruktor deklarieren, und nicht als normale Prozedur.
constructor Create;
Axel Sefranek
A programmer started to cuss, cause getting to sleep was a fuss.
As he lay there in bed, looping round in his head
was: while(!asleep()) ++sheep;
  Mit Zitat antworten Zitat
Benutzerbild von Ultimator
Ultimator

Registriert seit: 17. Feb 2004
Ort: Coburg
1.860 Beiträge
 
FreePascal / Lazarus
 
#5

Re: anfänger: stack als klasse

  Alt 9. Mai 2006, 19:15
Und Pop würde ich als function deklarieren, denn irgendwem musst du ja den Wert zuweisen, den du vom Stack holst
Julian J. Pracht
  Mit Zitat antworten Zitat
nkaaa

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

Re: anfänger: stack als klasse

  Alt 9. Mai 2006, 19:26
dazu war eigentlich
function firstItem: string; gedacht

also erst angucken was draufliegt und dann eventuell mit pop runterschmeissen.
  Mit Zitat antworten Zitat
Benutzerbild von DGL-luke
DGL-luke

Registriert seit: 1. Apr 2005
Ort: Bad Tölz
4.149 Beiträge
 
Delphi 2006 Professional
 
#7

Re: anfänger: stack als klasse

  Alt 9. Mai 2006, 19:28
naja... wenn du nix aufm stack hast eben ne exception werfen ^^

ansonsten ist es so, dass "pop" ein anerkanntes "signalwort" ist. bei firstitem würd ich eher vermuten, dass ich da zugreifen kann, ohne dass er was runterschmeißt.
Lukas Erlacher
Suche Grafiktablett. Spenden/Gebrauchtangebote willkommen.
Gotteskrieger gesucht!
For it is the chief characteristic of the religion of science that it works. - Isaac Asimov, Foundation I, Buch 1
  Mit Zitat antworten Zitat
nkaaa

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

Re: anfänger: stack als klasse

  Alt 9. Mai 2006, 19:37
ich glaub du hast mich falsch verstanden.

die function firstitem liefert das element zurück, was ich zuletzt auf den stack gepackt habe;
danach entscheide ich mich dann, ob ich das element wirklich runterschmeissen will (mit pop).

pop schmeisst hier wirklich nur das element vom stack, ohne irgendetwas zurückzugeben.



Zitat:
bei firstitem würd ich eher vermuten, dass ich da zugreifen kann, ohne dass er was runterschmeißt.
so wollte ich das auch machen
  Mit Zitat antworten Zitat
Benutzerbild von 3_of_8
3_of_8

Registriert seit: 22. Mär 2005
Ort: Dingolfing
4.129 Beiträge
 
Turbo Delphi für Win32
 
#9

Re: anfänger: stack als klasse

  Alt 9. Mai 2006, 19:40
Zwei Sachen fallen mir auf:

1. Pop ist normalerweise eine Funktion, die das oberste Element löscht und den Inhalt zurückgibt.
2. Die Funktion, die du firstItem nennst, bezeichnet man normalerweise als Peek.

Ist eigentlich egal, aber so habe zumindest ich es gelernt.
Manuel Eberl
„The trouble with having an open mind, of course, is that people will insist on coming along and trying to put things in it.“
- Terry Pratchett
  Mit Zitat antworten Zitat
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
Antwort Antwort
Seite 1 von 3  1 23      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:14 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz