![]() |
STACK!!!DRINGEND!!!
hey
hab ich zwar schonmal geschrieben, aber hab meinen stack jez verbessert, aber irgendwie kann er den inhalt vom stack nichts in die andere unit übergeben, kann jmd helfen? unit:
Code:
unit postfix;
interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TForm1 = class(TForm) Button1: TButton; Edit1: TEdit; Edit2: TEdit; procedure Button1Click(Sender: TObject); procedure Edit2Change(Sender: TObject); procedure FormActivate(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; operator:shortstring; wort:string; hilf,laenge,i,neu:integer; op:boolean; zahl1,zahl2:integer; zeichen:char; implementation uses post; {$R *.dfm} PROCEDURE rechne(operator:shortstring;VAR neu:integer); BEGIN zahl1:=pop^.inhalt; zahl2:=pop^.inhalt; zeichen:=operator[1]; CASE zeichen OF '+':neu:=zahl2+zahl1; '-':neu:=zahl2-zahl1; '*':neu:=zahl2*zahl1; '/':neu:=zahl2 DIV zahl1; END; push(neu); END; procedure TForm1.Button1Click(Sender: TObject); begin op:=false; wort:=edit1.text; laenge:=length(wort); FOR i:=1 TO laenge DO BEGIN CASE (wort[i]) OF '+':BEGIN rechne(wort[i],neu);op:=true;END; '-':BEGIN rechne(wort[i],neu);op:=true;END; '*':BEGIN rechne(wort[i],neu);op:=true;END; '/':BEGIN rechne(wort[i],neu);op:=true;END; END; IF op=false THEN BEGIN hilf:=strtoint(wort[i]); push(hilf); END; END; end; procedure TForm1.Edit2Change(Sender: TObject); begin edit2.Text:=inttostr(neu); end; procedure TForm1.FormActivate(Sender: TObject); begin init; end; end. der stack ist jetzt:
Code:
unit post;
interface type tzeiger = ^tknoten; tknoten = RECORD inhalt:integer; next:tzeiger; END; PROCEDURE init; FUNCTION empty:boolean; PROCEDURE push(neu:integer); FUNCTION pop:tzeiger; VAR hilfe,hilfe1,head,element:tzeiger; neu:string; implementation PROCEDURE init; BEGIN head:=NIL; END; FUNCTION empty:boolean; BEGIN result:=head=NIL; END; PROCEDURE push(neu:integer); BEGIN new(element); element^.inhalt:=neu; IF empty THEN BEGIN head:=element; element^.next:=NIL; END ELSE BEGIN hilfe:=head; WHILE hilfe<>NIL DO BEGIN hilfe:=hilfe^.next; END; hilfe:=element; element^.next:=NIL; END; END; FUNCTION pop:tzeiger; BEGIN hilfe:=head; WHILE hilfe<>NIL DO BEGIN hilfe1:=hilfe;hilfe:=hilfe^.next; END; pop:=hilfe; hilfe1:=NIL; END; end. |
Re: STACK!!!DRINGEND!!!
SO! NICHT! 111 eins
BITTE BENUTZE GROSS- UND KLEINSCHREIBUNG! ... *räusper* Wenn Du bereits ein thread zu diesem Thema hast, dann solltest Du diesen weiterbenutzen (*das ist noch gut, das kann man noch essen*) Bitte stelle Deine Frage in Deinem bisherigen Thema, nur dann sind alle Infos beisammen und man kann Dir ernsthaft helfen. Ich mache hier mal zu. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:01 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-2025 by Thomas Breitkreuz