![]() |
Stack-Problem kann nur ein Element Stapeln!
Hallo ich bins mal wieder. hier mein neuseste problem.
Delphi-Quellcode:
Das problem ist jetzt: wenn ich etwas vom stapel herunter nehmen will, dann sehebekomme ich als ergebniss immer wieder nur die zuletzt eingestackte zahl...
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. Button1= Stacken Button2= Destacken Button3= Stapel erzeugen Danke im Vorraus Ara |
Re: Stack-Problem kann nur ein Element Stapeln!
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 |
Re: Stack-Problem kann nur ein Element Stapeln!
:wall:
autsch. der code tut weh.
Delphi-Quellcode:
etwas besser...
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. |
Re: Stack-Problem kann nur ein Element Stapeln!
oder doch nicht. inc und dec sind CallByRef.
wenn du dir nicht sicher bist dann F1 |
Re: Stack-Problem kann nur ein Element Stapeln!
Zitat:
ok danke es hat doch funktioniert |
Re: Stack-Problem kann nur ein Element Stapeln!
Was wars denn jetz? :gruebel:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:09 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz