![]() |
Re: Taschenrechner Ausgabe
Unter interface gibt es eine Zeile, die mit uses beginnt. An die darauffolgende Liste hängst Du StrUtils mit Komma getrennt hinten dran.
|
Re: Taschenrechner Ausgabe
Das mindeste wäre gewesen erst einmal die Delphi-Hilfe aufzurufen.
Wenn du nach "uses" suchst, erhältst du als erstes Ergebnis "Programme und Units". Und da steht wirklich alles sehr gut erklärt, was man du zu diesem Thema wissen musst. |
Re: Taschenrechner Ausgabe
Safak67, welche Delphi Version verwendest Du eigentlich? (Sorry wenn es schonmal irgendwo geschrieben wurde)
PosEx gibt z.B. bei Delphi 5 noch nicht. |
Re: Taschenrechner Ausgabe
Zitat:
|
Re: Taschenrechner Ausgabe
danke blup habe es gelesen.. eine letzte frage habe ich noch.. kann mir einer ausführlich erklären am besten kommentieren was hier gemacht wird...
Delphi-Quellcode:
{ermittelt aus einer Reihe von Operatoren den,
der am weitesten Rechts im Term auftaucht} function FindOperator(const ATerm, AOperatoren: string; out AOp: Char; out APos: Integer): Boolean; var i, iPos: Integer; Op: Char; begin AOp := #0; APos := 0; Result := False; for i := 1 to Length(AOperatoren) do begin Op := AOperatoren[i]; iPos := APos; repeat iPos := PosEx(Op, ATerm, iPos + 1); if iPos > APos then begin AOp := Op; APos := iPos; Result := True; end; until (iPos = 0); end; end; function BerechneTerm(ATerm: string): Double; const OperatorLevel: array[0..1] of string = ('+-', '*/'); var Op: Char; i, iPos: Integer; Value1, Value2: Double; begin for i := Low(OperatorLevel) to High(OperatorLevel) do begin if FindOperator(ATerm, OperatorLevel[i], Op, iPos) then begin Value1 := BerechneTerm(Copy(ATerm, 1, iPos - 1)); Value2 := BerechneTerm(Copy(ATerm, iPos + 1, Length(ATerm))); case Op of '+': Result := Value1 + Value2; '-': Result := Value1 - Value2; '*': Result := Value1 * Value2; '/': Result := Value1 / Value2; else raise Exception.Create(Format('undefinierter Operator ''%s''', [Op])); end; Exit; end; end; Result := StrToFloat(ATerm); end; |
Re: Taschenrechner Ausgabe
Die Frage ist doch eher was du daran nicht verstehst...
Ich meine, wenn du den Quelltext durchgehst, dann musst du doch sehen was du nicht verstehst, und dann kannst du das doch konkret fragen. |
Re: Taschenrechner Ausgabe
Delphi-Quellcode:
was hat das mit out´s an sich..?
function FindOperator(const ATerm, AOperatoren: string;
out AOp: Char; out APos: Integer): Boolean;
Delphi-Quellcode:
wieso #0?
AOp := #0;
Delphi-Quellcode:
was bedeutet die Zeile?
OperatorLevel: array[0..1] of string = ('+-', '*/');
[delphi]raise Exception.Create(Format('undefinierter Operator ''%s''', [Op])); wann kommt die Fehlermeldung? |
Re: Taschenrechner Ausgabe
Zitat:
Zitat:
Zitat:
Und so weiter. Sollte nirgends der Fehler abgefangen werden, kommt von Windows die Meldung, dass das Programm beendet werden muss. |
Re: Taschenrechner Ausgabe
wieso berechnet die funktion nicht mit negativen?
|
Re: Taschenrechner Ausgabe
Vielleicht weil das Minuszeichen als Operator benutzt wird? Denn ob das hinter einem anderen Operator kommt, wird ja nicht abgeprüft. Das solltest du aber im Debugger auch sehen was da passiert.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:13 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