AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi Stack-Problem kann nur ein Element Stapeln!
Thema durchsuchen
Ansicht
Themen-Optionen

Stack-Problem kann nur ein Element Stapeln!

Ein Thema von Arathok · begonnen am 6. Nov 2008 · letzter Beitrag vom 6. Nov 2008
Antwort Antwort
Arathok

Registriert seit: 29. Mai 2008
Ort: Saalfeld
13 Beiträge
 
#1

Stack-Problem kann nur ein Element Stapeln!

  Alt 6. Nov 2008, 08:32
Hallo ich bins mal wieder. hier mein neuseste problem.
Delphi-Quellcode:
type
  TForm1 = class(TForm)
    Edit1: TEdit;
    Label1: TLabel;
    Button1: TButton;
    Button2: TButton;
    Label2: TLabel;
    Button3: TButton;
    Memo1: TMemo;
    procedure Button3Click(Sender: TObject);
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;// hier wirds wichtig...
     type tstapel=record
     Stack: ARRAY[0..256000]of longint;
     top:integer;
  End;
  var
  Form1: TForm1;
  s: tstapel;
  e:integer;
implementation
procedure ErzSt(var s:tstapel);
begin
s.top:=0
End;
procedure StEl(var s:tstapel;e:Integer);
Begin
Inc(s.top);
s.Stack[s.top]:=e;
end;
Procedure StLeer(var s:tstapel;e:integer);
begin
Dec(s.top);
e:=(s.Stack[s.top])
end;
{$R *.dfm}
procedure TForm1.Button3Click(Sender: TObject);
begin
ErzSt(s);
begin
s.top:=0
End;


end;
procedure TForm1.Button1Click(Sender: TObject);
begin
e:=StrToInt(edit1.text);
StEl(s,e)
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
StLeer(s,e);
memo1.Lines.Add(IntToStr(e));
end;

end.
Das problem ist jetzt: wenn ich etwas vom stapel herunter nehmen will, dann sehebekomme ich als ergebniss immer wieder nur die zuletzt eingestackte zahl...
Button1= Stacken
Button2= Destacken
Button3= Stapel erzeugen

Danke im Vorraus
Ara
  Mit Zitat antworten Zitat
Angel4585

Registriert seit: 4. Okt 2005
Ort: i.d.N.v. Freiburg im Breisgau
2.199 Beiträge
 
Delphi 2010 Professional
 
#2

Re: Stack-Problem kann nur ein Element Stapeln!

  Alt 6. Nov 2008, 08:39
es muss heissen

s.top:=Inc(s.top);

und

s.top:=Dec(s.top);



Edit: oder doch nicht? prüfe mal ob sich die Zahlen danach tatsächlich erhöhen, schon ne weile her das ich damit was gemacht hab
Martin Weber
Ich bin ein Rüsselmops
  Mit Zitat antworten Zitat
Benutzerbild von hazard999
hazard999

Registriert seit: 2. Okt 2008
38 Beiträge
 
#3

Re: Stack-Problem kann nur ein Element Stapeln!

  Alt 6. Nov 2008, 08:42


autsch.

der code tut weh.

Delphi-Quellcode:
type
   tstapel = record
      Stack: array[0..256000] of longint;
      top: integer;
   end;

   TForm1 = class(TForm)
      Edit1: TEdit;
      Label1: TLabel;
      Button1: TButton;
      Button2: TButton;
      Label2: TLabel;
      Button3: TButton;
      Memo1: TMemo;
      procedure Button3Click(Sender: TObject);
      procedure Button1Click(Sender: TObject);
      procedure Button2Click(Sender: TObject);
   private
      { Private-Deklarationen }
      s: tstapel;
      procedure ErzSt;
      procedure StEl(e: Integer);
      function StLeer: integer;
   public
      { Public-Deklarationen }

   end; // hier wirds wichtig...
var
   Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.ErzSt;
begin
   s.top := 0
end;

procedure TForm1.StEl(e: Integer);
begin
   Inc(s.top);
   s.Stack[s.top] := e;
end;

function TForm1.StLeer: integer;
begin
   Dec(s.top);
   result := s.Stack[s.top];
end;

procedure TForm1.Button3Click(Sender: TObject);
begin
   ErzSt;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
   e := StrToInt(edit1.text);
   StEl(e);
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
   memo1.Lines.Add(IntToStr(StLeer));
end;

end.
etwas besser...
  Mit Zitat antworten Zitat
Benutzerbild von hazard999
hazard999

Registriert seit: 2. Okt 2008
38 Beiträge
 
#4

Re: Stack-Problem kann nur ein Element Stapeln!

  Alt 6. Nov 2008, 08:43
oder doch nicht. inc und dec sind CallByRef.
wenn du dir nicht sicher bist dann F1
  Mit Zitat antworten Zitat
Arathok

Registriert seit: 29. Mai 2008
Ort: Saalfeld
13 Beiträge
 
#5

Re: Stack-Problem kann nur ein Element Stapeln!

  Alt 6. Nov 2008, 08:45
Zitat von Angel4585:
es muss heissen

s.top:=Inc(s.top);

und

s.top:=Dec(s.top);



Edit: oder doch nicht? prüfe mal ob sich die Zahlen danach tatsächlich erhöhen, schon ne weile her das ich damit was gemacht hab
[Fehler] Unit1.pas(46): Inkompatible Typen: 'Integer' und 'procedure, untyped pointer or untyped parameter'

ok danke es hat doch funktioniert
  Mit Zitat antworten Zitat
Angel4585

Registriert seit: 4. Okt 2005
Ort: i.d.N.v. Freiburg im Breisgau
2.199 Beiträge
 
Delphi 2010 Professional
 
#6

Re: Stack-Problem kann nur ein Element Stapeln!

  Alt 6. Nov 2008, 09:03
Was wars denn jetz?
Martin Weber
Ich bin ein Rüsselmops
  Mit Zitat antworten Zitat
Antwort Antwort


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 09:32 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