![]() |
Problem bei Additions-Parser
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. |
Re: Problem bei Additions-Parser
mal so als Denkansatz...
Delphi-Quellcode:
hier müsste Länge=2 gesetzt werden, da du vor der while-Schleife ja schon einen Wert in das Array geschrieben hast...
while PosEx('+',term,positioncounter+1)<>0 do
begin counter:=counter+1; SetLength(position,counter+1); // count=0 >> LängeNeu =1 // PS: Ein herzliches Willkommen in der DP! |
Re: Problem bei Additions-Parser
|
Re: Problem bei Additions-Parser
Vielen vielen Dank,
eure Antworten haben mir beide viel weiter geholfen. Grüße, J3ster |
Re: Problem bei Additions-Parser
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... ![]() mfg Flö |
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:20 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