AGB  ·  Datenschutz  ·  Impressum  







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

Problem bei Additions-Parser

Ein Thema von J3ster · begonnen am 20. Jan 2009 · letzter Beitrag vom 20. Jan 2009
Antwort Antwort
J3ster

Registriert seit: 20. Jan 2009
2 Beiträge
 
#1

Problem bei Additions-Parser

  Alt 20. Jan 2009, 17:12
Hallo Leute,
ich muss für ein Schulprojekt einen Parser (offensichtlich in Delphi) programmieren. Dieser Parser soll zunächst einmal beliebig viele Additionen durchführen können, soll jedoch später so erweitert werden, dass alle Rechenarten unter Beachtung der Rechenregeln bearbeitet werden können. Allerdings habe ich mich schon in dieser Projektphase bei o.g. Problem festgehängt und ich finde den Fehler einfach nicht. Das große Problem ist, dass der erste und der letzte der eingegebenen Summanden vom Programm nicht mit in die Rechnung einbezogen werden.
Eure Hilfe wäre super.

Vielen Dank schon mal im Vorraus,
J3ster

Delphi-Quellcode:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls,StrUtils;

type
  TForm1 = class(TForm)
    Edit1: TEdit;
    Button1: TButton;
    Label1: TLabel;
    procedure Button1Click(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var
term : string;
positioncounter, counter,I : integer;
position : array of integer;
summanden : array of real;
summe : real;

begin
  term:=Edit1.Text;
  SetLength(position,1);
  counter:=0;

  if Pos('+',term) <> 0 then
    begin
      position[counter]:=Pos('+',term);
      positioncounter:=position[counter];

      while PosEx('+',term,positioncounter+1)<>0 do
        begin
          counter:=counter+1;
          SetLength(position,counter+1);
          position[counter]:=PosEx('+',term,positioncounter+1);
          positioncounter:=position[counter];
        end;

      SetLength(Summanden,counter+1);

      Summanden[0]:= strtoint(copy(term,1,Position[0]-1));

      for I := 1 to counter -1 do
        begin
          Summanden[I]:= strtoint(copy(term,Position[I]+1,(Position[I+1]-Position[I]-1)));
        end;

      summe:=0;

      for I := 0 to counter do
        begin
          summe:=summe+summanden[I];
        end;

      Label1.Caption:=FloatToStr(summe);
    end;

end;

end.


// Der zweite und der letze Summand werden bei der Addition nicht einbezogen.
  Mit Zitat antworten Zitat
taaktaak

Registriert seit: 25. Okt 2007
Ort: Radbruch
1.990 Beiträge
 
Delphi 7 Professional
 
#2

Re: Problem bei Additions-Parser

  Alt 20. Jan 2009, 17:32
mal so als Denkansatz...
Delphi-Quellcode:
while PosEx('+',term,positioncounter+1)<>0 do
        begin
          counter:=counter+1;
          SetLength(position,counter+1); // count=0 >> LängeNeu =1
hier müsste Länge=2 gesetzt werden, da du vor der while-Schleife ja schon einen Wert in das Array geschrieben hast...

// PS: Ein herzliches Willkommen in der DP!
Ralph
  Mit Zitat antworten Zitat
Florian Hämmerle
(Gast)

n/a Beiträge
 
#3

Re: Problem bei Additions-Parser

  Alt 20. Jan 2009, 17:35
Vielleicht hilft dir das hier weiter:
Parser-Tutorial

mfg Flö
  Mit Zitat antworten Zitat
J3ster

Registriert seit: 20. Jan 2009
2 Beiträge
 
#4

Re: Problem bei Additions-Parser

  Alt 20. Jan 2009, 18:38
Vielen vielen Dank,

eure Antworten haben mir beide viel weiter geholfen.

Grüße,
J3ster
  Mit Zitat antworten Zitat
Florian Hämmerle
(Gast)

n/a Beiträge
 
#5

Re: Problem bei Additions-Parser

  Alt 20. Jan 2009, 18:41
Ich arbeite auch gerade an sowas.... Soll aber später ne kleine Scriptsprache werden...
Aber klein anfangen ist wichtig!!

Also übernimm dich nicht sondern mach alles schön nacheinander sonst gibts wahrscheinlich nur murks....

übrigens:
Delphi OpenGL hat zwei gute Tutorials zu Scriptsprachen. Das erste könnte auch für dich interessant sein. Mgl.weise auch das zweite...
DGL-tutorials

mfg Flö
  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 05:46 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