![]() |
taschenrechner (erweiterung)
Liste der Anhänge anzeigen (Anzahl: 1)
Hi,
ich habe ein taschenrechner programmiert, ich habe einige fehler drin.. Die ganze Eingabe(sring) die ich mache soll im Label stehen, also erst wenn ich auf gleich klicke soll er berechnen.. Ich weiß aber nicht wie das ganz genau geht und was in der berechnung verändern muss.. also ich hab das soweit gemacht das das in der anzeige steht.. Wie soll ich das jetzt berechnen..?
Delphi-Quellcode:
edit: ich hab das so geändert das das mit der anzeige funktioniert, das problem ist jett nur noch die berechnung.. wie mache ich die berechnung
unit Calculator_Main;
interface uses SysUtils, WinTypes, WinProcs, Messages, Classes, Graphics, Controls, Forms, Dialogs, Buttons, StdCtrls; type TFormTR = class(TForm) Sp7: TSpeedButton; Sp8: TSpeedButton; Sp9: TSpeedButton; Sp4: TSpeedButton; Sp5: TSpeedButton; Sp6: TSpeedButton; Sp1: TSpeedButton; Sp2: TSpeedButton; Sp3: TSpeedButton; Sp0: TSpeedButton; DecimalSep: TSpeedButton; SpErgebnis: TSpeedButton; SpPlus: TSpeedButton; SpMinus: TSpeedButton; SpMal: TSpeedButton; SpDurch: TSpeedButton; LabelAnzeige: TLabel; SpeedButton1: TSpeedButton; procedure FormCreate(Sender: TObject); procedure SpZahlClick(Sender: TObject); procedure SpZeichenClick(Sender: TObject); procedure SpeedButton1Click(Sender: TObject); procedure spErgebnisClick(Sender: TObject); private { Private-Deklarationen } zahl1,zahl2 : real; op : char; SpArray : ARRAY[0..9] OF TSpeedButton; public { Public-Deklarationen } end; var FormTR: TFormTR; implementation {$R *.DFM} procedure TFormTR.FormCreate(Sender: TObject); begin SpArray [0] := Sp0; SpArray [1] := Sp1; SpArray [2] := Sp2; SpArray [3] := Sp3; SpArray [4] := Sp4; SpArray [5] := Sp5; SpArray [6] := Sp6; SpArray [7] := Sp7; SpArray [8] := Sp8; SpArray [9] := Sp9; end; procedure TFormTR.SpeedButton1Click(Sender: TObject); begin LabelAnzeige.Caption := '0'; end; procedure TFormTR.spErgebnisClick(Sender: TObject); var Formular,Seg1,Seg2: string; begin Formular := LabelAnzeige.Caption; if pos('+',Formular) > 1 then begin Seg1 := copy(Formular,1,pos('+',Formular) - 1); Seg2 := copy(Formular,pos('+',Formular) + 1,length(Formular)); end; ShowMessage(Seg1+'+'+Seg2); end; procedure TFormTR.SpZahlClick(Sender: TObject); VAR Nr : INTEGER; begin if LabelAnzeige.caption='0' then LabelAnzeige.caption:=''; if LabelAnzeige.caption='Error' then LabelAnzeige.caption:=''; LabelAnzeige.caption := LabelAnzeige.caption + TSpeedButton(Sender).Caption; end; procedure TFormTR.SPZeichenClick(Sender: TObject); begin if LabelAnzeige.caption='Error' then LabelAnzeige.caption:='0'; if sender = spPlus then begin //zahl1:=StrToFloat(LabelAnzeige.caption); //LabelAnzeige.caption:='0'; op:='+' end; if sender = spMinus then begin //zahl1:=StrToFloat(LabelAnzeige.caption); //LabelAnzeige.caption:='0'; op:='-' end; if sender = spMal then begin //zahl1:=StrToFloat(LabelAnzeige.caption); //LabelAnzeige.caption:='0'; op:='x' end; if sender = spDurch then begin //zahl1:=StrToFloat(LabelAnzeige.caption); //LabelAnzeige.caption:='0'; op:='/' end; LabelAnzeige.caption := LabelAnzeige.caption + op; { if sender = spErgebnis then begin zahl2:=StrToFloat(LabelAnzeige.Caption); case op of '+':LabelAnzeige.caption:=FloatToStr(zahl1+zahl2); '-':LabelAnzeige.caption:=FloatToStr(zahl1-zahl2); 'x':LabelAnzeige.caption:=FloatToStr(zahl1*zahl2); '/':if zahl2 <> 0 then LabelAnzeige.caption:=FloatToStr(zahl1/zahl2) else LabelAnzeige.caption:='Division durch Null nicht moeglich' end end } end; end. |
Re: taschenrechner (erweiterung)
Das ist schon ein wenig aufwändiger. Im Moment wertest Du das Event aus, was die Operatortasten schicken:
Delphi-Quellcode:
Wenn Du die ausgeschriebene Aufgabe lösen willst, musst Du das so modifizieren, dass Du das op-Zeichen zum bisherigen Text im Feld zufügst. Beim Drücken der = Taste musst Du den String dann zerlegen, nach Rechenzeichen durchsuchen und nach Rechenregeln behandeln.
if sender = spPlus then
begin zahl1:=StrToFloat(LabelAnzeige.caption); LabelAnzeige.caption:='0'; op:='+' end; Grüße, Messie |
Re: taschenrechner (erweiterung)
Zitat:
wenn ich ![]() Verstehe das nicht falsch! Aber Du lernst nicht zu programmieren wenn Du fremden Code in dein Programm einbindest ohne zu verstehen was er macht. |
Re: taschenrechner (erweiterung)
ich hab das selber programmiert, danach wurde es nur von dem lehrer korrigiert, deswegen diese kommentarzeilen.. Ich weiß nur nicht wie ich das mit der berechnung machen soll
|
Re: taschenrechner (erweiterung)
Zitat:
Grüße, Messie Edit: kein rotes Fenster gehabt @safak67: den Hinweis habe ich oben schon gegeben |
Re: taschenrechner (erweiterung)
ich hab das ja programm aber geändert, wie erteile ich die strings und berechne es dann?
|
Re: taschenrechner (erweiterung)
Hallo,
das hier ist nur nen denk ansatz, runterprogrammieren musst du ihn selbst:
Delphi-Quellcode:
Hoffe das hilft,
function rechne(s: string) : real;
var I : Integer; tmp : String; begin result:=0; for I := 0 to Length(S) do begin if NOT ((S[I]='+') OR (S[I]='andres Rechenzeichen')OR (S[I]='andres Rechenzeichen')..... then begin tmp:= tmp +S[I]; end else if(S[I]='+') then result := addiere(result,StrToFloat(tmp)); if (S[I]='andres Rechenzeichen') then result := tuwas(StrToFloat(tmp)); ..... end; end; function addiere(k : real; j : real) : real; begin result := k+j; end; .... Highttower |
Re: taschenrechner (erweiterung)
Zitat:
Grüße, Messie |
Re: taschenrechner (erweiterung)
ja aber wie mache ich das genau..?
wenn ich z.B 2+4*5-3 habe muss er doch punkt vor strichrechnung machen, wie spreche jetzt die 4*5 an das er das zu erst berechnet.. allgemein weiß ich nicht wie man das mit der berechnung macht |
Re: taschenrechner (erweiterung)
Na wie gesagt, wie mit dem Auge. Ich persönlich würde es so machen:
Operator suchen, der Vorrang hat und umschließende Ausdrücke auswerten 2+4*5-3 | * wird gefunden, mit Ausdrück davor/danach berechnen 2+20-3 | * / nicht gefunden, also geht es mit + - weiter 22-3 19 | kein operator übrig (Ausnahme Vorzeichen), ergo Ergebnis Könnte man rekursiv lösen. ***** bei 2+4*5-3 findest du "*", hast also eine Position im String, dort zerlegst Du den String und hast jetzt 2+4 und 5-3. Im Ersten ermittelst Du die Zahl von rechts und im zweiten die Zahl von links. Danach einfach die Zahlen mit dem Operator bearbeiten (den Du Dir irgendwo gemerkt hast). |
Re: taschenrechner (erweiterung)
ich hab mein Programm etwas erweitert.. ich weiß aber immer noch nicht wie das mit der berechnung geh, ich habe kein plan.. das ich das aufteilen muss ist mir klar, aber welche funktionen ich bei delphi benutzen muss weiß ich nicht
Delphi-Quellcode:
unit Calculator_Main;
interface uses SysUtils, WinTypes, WinProcs, Messages, Classes, Graphics, Controls, Forms, Dialogs, Buttons, StdCtrls; type TFormTR = class(TForm) Sp7: TSpeedButton; Sp8: TSpeedButton; Sp9: TSpeedButton; Sp4: TSpeedButton; Sp5: TSpeedButton; Sp6: TSpeedButton; Sp1: TSpeedButton; Sp2: TSpeedButton; Sp3: TSpeedButton; Sp0: TSpeedButton; DecimalSep: TSpeedButton; spResult: TSpeedButton; SpPlus: TSpeedButton; SpMinus: TSpeedButton; SpMal: TSpeedButton; SpDurch: TSpeedButton; LabelAnzeige: TLabel; SpeedButton1: TSpeedButton; procedure FormCreate(Sender: TObject); procedure SpZahlClick(Sender: TObject); procedure SpZeichenClick(Sender: TObject); procedure SpeedButton1Click(Sender: TObject); procedure spResultClick(Sender: TObject); private { Private-Deklarationen } op : char; SpArray : ARRAY[0..9] OF TSpeedButton; public { Public-Deklarationen } end; var FormTR: TFormTR; implementation {$R *.DFM} procedure TFormTR.FormCreate(Sender: TObject); begin SpArray [0] := Sp0; SpArray [1] := Sp1; SpArray [2] := Sp2; SpArray [3] := Sp3; SpArray [4] := Sp4; SpArray [5] := Sp5; SpArray [6] := Sp6; SpArray [7] := Sp7; SpArray [8] := Sp8; SpArray [9] := Sp9; end; procedure TFormTR.SpeedButton1Click(Sender: TObject); begin LabelAnzeige.Caption := '0'; end; procedure TFormTR.spResultClick(Sender: TObject); var Formular,Seg1,Seg2: string; index : integer; Op : string; begin Formular := LabelAnzeige.Caption; for index := 0 to 3 do begin case index of 0: Op := '*'; 1: Op := '/'; 2: Op := '+'; 3: Op := '-'; end; if pos(Op,Formular) > 1 then begin Seg1 := copy(Formular,1,pos(Op,Formular) - 1); Seg2 := copy(Formular,pos(Op,Formular) + 1,length(Formular)); end; end; //ShowMessage(Seg1+'+'+Seg2); end; procedure TFormTR.SpZahlClick(Sender: TObject); begin if LabelAnzeige.caption='0' then LabelAnzeige.caption:=''; if LabelAnzeige.caption='Error' then LabelAnzeige.caption:=''; LabelAnzeige.caption := LabelAnzeige.caption + TSpeedButton(Sender).Caption; end; procedure TFormTR.SPZeichenClick(Sender: TObject); begin if LabelAnzeige.caption='Error' then LabelAnzeige.caption:='0'; if sender = spPlus then begin op:='+' end; if sender = spMinus then begin op:='-' end; if sender = spMal then begin op:='x' end; if sender = spDurch then begin op:='/' end; LabelAnzeige.caption := LabelAnzeige.caption + op; end; end. |
Re: taschenrechner (erweiterung)
Crossposts solltest du angeben... :roll:
Dann kann man dort auch schauen, ob es schon Antworten gibt... ![]() |
Re: taschenrechner (erweiterung)
Zitat:
:mrgreen: Zur Berechnung: Du musst wie beim Zerlegen mit dem Auge Zwischensummen bilden und die weiterverarbeiten. Fertige Funktionen gibt es da nicht. 1+2*3+4:nach * oder / suchen, benachbarte Operanden berechnen, Strichrechnung mit Zwischensumme durchführen. Dazu musst Du noch Klammern beachten. Ich sagte oben schon, dass das etwas Arbeit ist. Die musst Du Dir antun für diese Lösung. Rekursives Zerlegen war ja schon vorgeschlagen. Grüße, Messie |
Re: taschenrechner (erweiterung)
wenn ich wüsste wie da ran gehen soll, dann würde ich zehn stunden daran sitzten.. ich weiß nicht wie ich mit der berechnung anfangen soll
|
Re: taschenrechner (erweiterung)
Kurz vor deinem letzten Post hier hab ich drüben ja die eine Zeile gepostet, die dafür nötig ist, dass erstmal was geht...
|
Re: taschenrechner (erweiterung)
also einiges habe ich ja auch gefunden.. um alle operanden zu integrieren muss ich das ja parsen.. wie mache ich das aber in delphi?
|
Re: taschenrechner (erweiterung)
Wenn es nur im die zwei Operanden geht, musst du da nichts parsen für die Operatoren, denn da hast du op bereits als Variable. Da reicht eine Unterscheidung mit case.
Und wenn du mehr willst, musst du sowieso ein wenig am Konzept basteln. |
Re: taschenrechner (erweiterung)
das mit den zwei operanden habe ich schon verstanden, aber das problem ist ja wenn ich da z.B 4+3*2-6 stehen habe.. Ich muss das so programmieren das das geht, aber ich habe keine ahnung von parsen.. habe mir auch über die suchfunktion was angeschaut aber leider keine ahnung
|
Re: taschenrechner (erweiterung)
Du solltest dir erst einmal um das Prinzip gedanken machen, wie man eine solche Aufgabe löst.
Danach kommt die Umsetzung in eine Programmiersprache. Du hast ja bereits als ersten Schritt den Term in zwei Teile zerlegt. Allerdings muss dabei mit dem Operator der geringsten Priorität begonnen werden. 1 + 2 * 3 => (1) + (2 * 3) Wie berechnet man nun aber jeden dieser Teilterme? Solange ein Term einen Operator enthält, kann man diesen erneut in Teilterme zerlegen. 2 * 3 => (2) * (3) Enthält ein Term aber nur noch eine Zahlenfolge, kann dieser direkt in eine Zahl umgewandelt werden. Das lässt sich sehr schön mit einer rekursiven Funktion darstellen:
Delphi-Quellcode:
Diese Funktion berücksichtigt noch nicht, dass Operatoren gleicher Priorität von links nach rechts ausgewertet werden.
function BerechneTerm(ATerm: string): Double;
var Op: string; iPos: Integer; Value1, Value2: Double; begin for i := 0 to 3 do begin case i of 0: Op := '+'; 1: Op := '-'; 2: Op := '*'; 3: Op := '/'; end; iPos := Pos(Op, ATerm); if iPos > 0 then begin Value1 := BerechneTerm(Copy(ATerm, 1, iPos - 1)); Value2 := BerechneTerm(Copy(ATerm, iPos + 1, Length(ATerm))); case i of 0: Result := Value1 + Value2; 1: Result := Value1 - Value2; 2: Result := Value1 * Value2; 3: Result := Value1 / Value2; end; Exit; end; end; Result := StrToFloat(ATerm); end; |
Re: taschenrechner (erweiterung)
wenn ich eine funktion in delphi schreieb, wie binde ich das da ein, weil wenn ich das programm starte gibt er mir ne fehlermeldung an..
[Warnung] Calculator_Main.PAS(77): Rückgabewert der Funktion 'spResult' könnte undefiniert sein [Fehler] Calculator_Main.PAS(32): Ungenügende Forward- oder External-Deklaration: 'TFormTR.spResultClick' |
Re: taschenrechner (erweiterung)
Zitat:
Dieser Eintrag steht übrigens in der dfm-Datei. Grüße, Messie [Edit] Nochmal :warn: Beiträge mit vernünftiger Groß/Kleinschreibung und ohne Tippfehler lassen sich besser lesen und werden deshalb auch eher beantwortet. Lies' ruhig nochmal vor dem Absenden durch. Fehler lassen sich danach noch mit der Benutzung des Edit-Buttons beheben. Hilft wirklich. [/Edit] |
Re: taschenrechner (erweiterung)
ok sorry, ich werde mehr auf meine rechtschreibung achten..
also ich hab das so gemacht wie oben beschrieben aber hab jetzt ein anderen fehler.. [Fehler] Calculator_Main.PAS(33): Bezeichner redefiniert: 'spResult'
Delphi-Quellcode:
unit Calculator_Main;
interface uses SysUtils, WinTypes, WinProcs, Messages, Classes, Graphics, Controls, Forms, Dialogs, Buttons, StdCtrls; type TFormTR = class(TForm) Sp7: TSpeedButton; Sp8: TSpeedButton; Sp9: TSpeedButton; Sp4: TSpeedButton; Sp5: TSpeedButton; Sp6: TSpeedButton; Sp1: TSpeedButton; Sp2: TSpeedButton; Sp3: TSpeedButton; Sp0: TSpeedButton; DecimalSep: TSpeedButton; spResult: TSpeedButton; SpPlus: TSpeedButton; SpMinus: TSpeedButton; SpMal: TSpeedButton; SpDurch: TSpeedButton; LabelAnzeige: TLabel; SpeedButton1: TSpeedButton; procedure SpZahlClick(Sender: TObject); procedure SpZeichenClick(Sender: TObject); procedure SpeedButton1Click(Sender: TObject); function spResult(ATerm: string): Double; private { Private-Deklarationen } op : char; public { Public-Deklarationen } end; var FormTR: TFormTR; implementation {$R *.DFM} procedure TFormTR.SpeedButton1Click(Sender: TObject); begin LabelAnzeige.Caption := '0'; end; function spResult(ATerm: string): Double; var Op: string; iPos, i: Integer; Value1, Value2: Double; begin for i := 0 to 3 do begin case i of 0: Op := '+'; 1: Op := '-'; 2: Op := '*'; 3: Op := '/'; end; iPos := Pos(Op, ATerm); if iPos > 0 then begin Value1 := spResult(Copy(ATerm, 1, iPos - 1)); Value2 := spResult(Copy(ATerm, iPos + 1, Length(ATerm))); case i of 0: spResult := Value1 + Value2; 1: spResult := Value1 - Value2; 2: spResult := Value1 * Value2; 3: spResult := Value1 / Value2; end; Exit; end; end; spResult := StrToFloat(ATerm); end; |
Re: taschenrechner (erweiterung)
Deine Prozedur heißt genauso wie der SpeedButton...
Bezeichner müssen eindeutig sein, egal ob Namen von Prozeduren oder von Komponenten. |
Re: taschenrechner (erweiterung)
wie jetzt?
wo ist jetzt der Fehler bei mir? |
Re: taschenrechner (erweiterung)
Du hast eine Funktion mit dem Namen spResult erstellt, dein SpeedButton heißt aber genauso... Eins von beidem musst du umbenennen.
Delphi-Quellcode:
function spResult(ATerm: string): Double;
|
Re: taschenrechner (erweiterung)
ich krieg die krise.. jetzt habe ich ein anderen fehler..
[Fehler] Calculator_Main.PAS(69): Operator oder Semikolon fehlt [Fehler] Calculator_Main.PAS(70): Operator oder Semikolon fehlt [Fehler] Calculator_Main.PAS(32): Ungenügende Forward- oder External-Deklaration: 'TFormTR.Result'
Delphi-Quellcode:
function Result(ATerm: string): Double; private { Private-Deklarationen } op : char; public { Public-Deklarationen } end; var FormTR: TFormTR; implementation {$R *.DFM} procedure TFormTR.SpeedButton1Click(Sender: TObject); begin LabelAnzeige.Caption := '0'; end; function Result(ATerm: string): Double; var Op: string; iPos, i: Integer; Value1, Value2: Double; begin for i := 0 to 3 do begin case i of 0: Op := '+'; 1: Op := '-'; 2: Op := '*'; 3: Op := '/'; end; iPos := Pos(Op, ATerm); if iPos > 0 then begin Value1 := Result(Copy(ATerm, 1, iPos - 1)); Value2 := Result(Copy(ATerm, iPos + 1, Length(ATerm))); case i of 0: Result := Value1 + Value2; 1: Result := Value1 - Value2; 2: Result := Value1 * Value2; 3: Result := Value1 / Value2; end; Exit; end; end; Result := StrToFloat(ATerm); end; |
Re: taschenrechner (erweiterung)
Du hast unten in der Implementierung das TFormTR. vor dem Namen der Funktion vergessen. ;-)
Zitat:
Zudem ist Result auch keine gute Idee, weil so der Rückgabewert einer Funktion heißt... Warum nicht ein richtiger Name wie EvaluateTerm oder so... |
Re: taschenrechner (erweiterung)
was bedeutet
'=' erwartet aber '(' gefunden.. jetzt habe ich diese fehlermeldung |
Re: taschenrechner (erweiterung)
Ja, und in welcher Zeile? :glaskugel:
|
Re: taschenrechner (erweiterung)
also es kommt ein message, aber danach springt die zwischen ....Result und (Aterm:....
Delphi-Quellcode:
function TFormTR.Result(ATerm: string): Double;
|
Re: taschenrechner (erweiterung)
Ich würde mal vermuten das liegt genau dadran:
Zitat:
|
Re: taschenrechner (erweiterung)
also soll ich alle result ein anderen namen geben
|
Re: taschenrechner (erweiterung)
Das wäre sinnvoll die Funktion umzubenennen, und wenn dann immer noch ein Fehler kommt, musst du den eben noch einmal posten.
Aber das "Result := " darfst du natürlich nicht ändern... |
Re: taschenrechner (erweiterung)
Liste der Anhänge anzeigen (Anzahl: 1)
also ich habe immer noch die gleiche fehlermeldung, ich poste mal alles rein..
edit: also ich hab die funktion umbenannt danach auch result hat beides nicht funktioniert,, immer noch die gleiche fehlermeldung
Delphi-Quellcode:
unit Calculator_Main;
interface uses SysUtils, WinTypes, WinProcs, Messages, Classes, Graphics, Controls, Forms, Dialogs, Buttons, StdCtrls; type TFormTR = class(TForm) Sp7: TSpeedButton; Sp8: TSpeedButton; Sp9: TSpeedButton; Sp4: TSpeedButton; Sp5: TSpeedButton; Sp6: TSpeedButton; Sp1: TSpeedButton; Sp2: TSpeedButton; Sp3: TSpeedButton; Sp0: TSpeedButton; DecimalSep: TSpeedButton; spResult: TSpeedButton; SpPlus: TSpeedButton; SpMinus: TSpeedButton; SpMal: TSpeedButton; SpDurch: TSpeedButton; LabelAnzeige: TLabel; SpeedButton1: TSpeedButton; procedure SpZahlClick(Sender: TObject); procedure SpZeichenClick(Sender: TObject); procedure SpeedButton1Click(Sender: TObject); function TFormTR.BerechneTerm(ATerm: string): Double; private { Private-Deklarationen } op : char; public { Public-Deklarationen } end; var FormTR: TFormTR; implementation {$R *.DFM} procedure TFormTR.SpeedButton1Click(Sender: TObject); begin LabelAnzeige.Caption := '0'; end; function TFormTR.BerechneTerm(ATerm: string): Double; var Op: string; iPos, i: Integer; Value1, Value2: Double; begin for i := 0 to 3 do begin case i of 0: Op := '+'; 1: Op := '-'; 2: Op := '*'; 3: Op := '/'; end; iPos := Pos(Op, ATerm); if iPos > 0 then begin Value1 := BerechneTerm(Copy(ATerm, 1, iPos - 1)); Value2 := BerechneTerm(Copy(ATerm, iPos + 1, Length(ATerm))); case i of 0: EvaluateTerm := Value1 + Value2; 1: EvaluateTerm := Value1 - Value2; 2: EvaluateTerm := Value1 * Value2; 3: EvaluateTerm := Value1 / Value2; end; Exit; end; end; EvaluateTerm := StrToFloat(ATerm); end; procedure TFormTR.SpZahlClick(Sender: TObject); begin if LabelAnzeige.caption='0' then LabelAnzeige.caption:=''; if LabelAnzeige.caption='Error' then LabelAnzeige.caption:=''; LabelAnzeige.caption := LabelAnzeige.caption + TSpeedButton(Sender).Caption; end; procedure TFormTR.SPZeichenClick(Sender: TObject); begin if LabelAnzeige.caption='Error' then LabelAnzeige.caption:='0'; if sender = spPlus then begin op:='+' end; if sender = spMinus then begin op:='-' end; if sender = spMal then begin op:='x' end; if sender = spDurch then begin op:='/' end; LabelAnzeige.caption := LabelAnzeige.caption + op; end; end. |
Re: taschenrechner (erweiterung)
:wall: :wall: :wall:
Zitat:
Du hast es aber oben bei der Deklaration auch dazu geschrieben und nicht nur unten... :roll: Oben in der Zeile vor private muss das TFormTR. weg. Und außerdem darfst du das Result unten nicht auch da ersetzen, wo gar nicht der Funktionsaufruf gemeint ist...
Delphi-Quellcode:
Ach ja: Und Zeile 80 muss weg...
Value1 := BerechneTerm(Copy(ATerm, 1, iPos - 1));
Value2 := BerechneTerm(Copy(ATerm, iPos + 1, Length(ATerm))); case i of 0: Result := Value1 + Value2; 1: Result := Value1 - Value2; 2: Result := Value1 * Value2; 3: Result := Value1 / Value2; end; Den ganzen Term kannst du nicht in eine Zahl umwandeln. |
Re: taschenrechner (erweiterung)
wie mache ich das dann mit der Ausgabe?
|
Re: taschenrechner (erweiterung)
Naja, ein Beispiel zur Ausgabe als ShowMessage habe ich ja schon geschrieben...
Da wo du BerechneTerm aufrufst musst du halt auch die Ausgabe des Rückgabewerts machen... |
Re: taschenrechner (erweiterung)
Zitat:
|
Re: taschenrechner (erweiterung)
also ich habe paar sachen versucht, aber das mit der ausgabe kriege ich immer noch nicht hin.. hat einer ne idee..?
bin am verzweifeln, hääte nicht gedacht das parsen so schwer sein kann. |
Re: taschenrechner (erweiterung)
hat denn keiner ne idee wie ich das mit der ausgabe mache
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 15:40 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