Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi STACK!!!DRINGEND!!! (https://www.delphipraxis.net/111286-stack-dringend.html)

robbespierre 1. Apr 2008 16:34


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.

Daniel 1. Apr 2008 16:37

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 18:37 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