AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Projekte Taschenrechner 2.0 - Der Multi-Rechner
Thema durchsuchen
Ansicht
Themen-Optionen

Taschenrechner 2.0 - Der Multi-Rechner

Ein Thema von LDProgrammierer · begonnen am 17. Aug 2010 · letzter Beitrag vom 21. Aug 2010
Antwort Antwort
Seite 2 von 2     12   
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.557 Beiträge
 
Delphi 12 Athens
 
#1

AW: Taschenrechner 2.0 - Der Multi-Rechner

  Alt 18. Aug 2010, 11:56
Wenn man ganz krank ist, kann man sich da auch noch einen Matheparser erstellen, also daß man "123 * 456" in ein Editfeld eingibt, das Programm sich dieses zerlegt und dann ausrechnet.
Und falls man dazu auch noch komplett beklopt ist, dann nutzt man nichtmal die komplexen Rechenfunktionen von Delphi und dem PC, sondern macht das auch noch selber (vorallem für Zahlen, welche nicht in einen Integer, Int64, Extended usw. reinpassen).
Ein Therapeut entspricht 1024 Gigapeut.

Geändert von himitsu (18. Aug 2010 um 11:59 Uhr)
  Mit Zitat antworten Zitat
LDProgrammierer

Registriert seit: 16. Aug 2010
10 Beiträge
 
Delphi 7 Enterprise
 
#2

AW: Taschenrechner 2.0 - Der Multi-Rechner

  Alt 19. Aug 2010, 13:09
Ich weiß leider überhaupt nicht wie man eine Eingabe abfängt, könnte mir bitte jemand den Source-Code geben? Wäre sehr hilfreich. LDProgrammierer
  Mit Zitat antworten Zitat
aurikel_Max

Registriert seit: 9. Okt 2009
86 Beiträge
 
#3

AW: Taschenrechner 2.0 - Der Multi-Rechner

  Alt 19. Aug 2010, 13:14
Ich weiß leider überhaupt nicht wie man eine Eingabe abfängt, könnte mir bitte jemand den Source-Code geben? Wäre sehr hilfreich. LDProgrammierer
Nun, du könntest mehrere Sachen machen .. um zB. dafür zu sorgen, dass nur Zahlen (und zB. Punkte) eingegeben werden, musst du das OnKeyPress-Ereignis von deinem Editfeld abfangen. Ich benutze hierzu Variante 3 von diesem Link (dies fängt allerdings nur Buchstaben ab).

Wenn du zB. auf eine Division durch 0 prüfen möchtest, so würde ich bei einer Division prüfen, ob der Divisor 0 ist. (if StrToFloat(edDivisor.Text) = 0 then ...)
Max
  Mit Zitat antworten Zitat
LDProgrammierer

Registriert seit: 16. Aug 2010
10 Beiträge
 
Delphi 7 Enterprise
 
#4

AW: Taschenrechner 2.0 - Der Multi-Rechner

  Alt 19. Aug 2010, 13:30
Danke ich werde ausprobieren ob es geht.
  Mit Zitat antworten Zitat
LDProgrammierer

Registriert seit: 16. Aug 2010
10 Beiträge
 
Delphi 7 Enterprise
 
#5

AW: Taschenrechner 2.0 - Der Multi-Rechner

  Alt 20. Aug 2010, 09:44
Also ich habe das mit dem dividieren durch null verhindern leider irgenwie nicht geschafft obwohl ich folgenden Code verwendet habe if strtofloat(edit2.Text)= 0 then ShowMessage ('Durch null darf nicht dividiert werden'); dann kann er das Programm das öffnen, jedoch zeigt er nicht die Nachricht die ich gezeigt haben wollte, selbst wenn ich durch null dividiere. Wenn ich jedoch folgenden code schreibe :if strtofloat(edit2.Text)= 5 then ShowMessage ('Durch null darf nicht dividiert werden'); , also das er bei fünf eine Meldung ausgeben, soll und sonst weder Position noch irgendwas anderes am Code verändere erscheint doch eine Meldung. Was soll ich tun? Ich habe das Gefühl das liegt daran, das dann die Meldung floating point division by zero ausgegeben wird. Bitte helft mir
  Mit Zitat antworten Zitat
Satty67

Registriert seit: 24. Feb 2007
Ort: Baden
1.566 Beiträge
 
Delphi 2007 Professional
 
#6

AW: Taschenrechner 2.0 - Der Multi-Rechner

  Alt 20. Aug 2010, 09:54
Wenn eine Exception ausgelöst wird (hier Division durch 0) wird der nachfolgende Code bis zum Ende des Try Except bzw. Finally Block abgebrochen.

Vorm Berechnen auf 0 prüfen:
Delphi-Quellcode:
if strtofloat(edit2.Text)= 0 then
  ShowMessage ('Durch null darf nicht dividiert werden')
else
  Berechnen;
  Mit Zitat antworten Zitat
aurikel_Max

Registriert seit: 9. Okt 2009
86 Beiträge
 
#7

AW: Taschenrechner 2.0 - Der Multi-Rechner

  Alt 20. Aug 2010, 09:54
Also ich habe das mit dem dividieren durch null verhindern leider irgenwie nicht geschafft obwohl ich folgenden Code verwendet habe if strtofloat(edit2.Text)= 0 then ShowMessage ('Durch null darf nicht dividiert werden'); dann kann er das Programm das öffnen, jedoch zeigt er nicht die Nachricht die ich gezeigt haben wollte, selbst wenn ich durch null dividiere. Wenn ich jedoch folgenden code schreibe :if strtofloat(edit2.Text)= 5 then ShowMessage ('Durch null darf nicht dividiert werden'); , also das er bei fünf eine Meldung ausgeben, soll und sonst weder Position noch irgendwas anderes am Code verändere erscheint doch eine Meldung. Was soll ich tun? Ich habe das Gefühl das liegt daran, das dann die Meldung floating point division by zero ausgegeben wird. Bitte helft mir
Ehm .. ich bin mir nicht sicher, hast du nach deinem IF StrToFloat(edDivisor.Text) = 0 auch ein Exit? Denn es darf ja nichts mehr geschehen, wenn du durch 0 dividierst.
Also:
Delphi-Quellcode:
IF StrToFloat(edDivisor.Text) = 0 THEN
begin
    ShowMessage('..');
    Exit;
end;
Max
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.557 Beiträge
 
Delphi 12 Athens
 
#8

AW: Taschenrechner 2.0 - Der Multi-Rechner

  Alt 20. Aug 2010, 09:57
Ich würde auch noch auf Hier im Forum suchenStrToFloatDef und Hier im Forum suchenTryStrToFloat hinweisen.
Ein Therapeut entspricht 1024 Gigapeut.
  Mit Zitat antworten Zitat
Satty67

Registriert seit: 24. Feb 2007
Ort: Baden
1.566 Beiträge
 
Delphi 2007 Professional
 
#9

AW: Taschenrechner 2.0 - Der Multi-Rechner

  Alt 20. Aug 2010, 10:04
Die beiden Funktionen würden sich fast schon aufdrängen.

Alternativ evtl. mit Try Except arbeiten:
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
  x,y : double;
begin
  y := 0;
  try
    x := 1 / y;
    // ShowMessage wird nie ausgeführt,
    // da der Code davor eine Exception ausgelöst hat
    ShowMessage(FloatToStr(x));
  except
    on E:EZeroDivide do
      ShowMessage('Durch 0 darf nicht dividiert werden.');
  end;
end;
€: geht ja um Gleitkommazahlen, Code angepasst

Geändert von Satty67 (20. Aug 2010 um 10:12 Uhr)
  Mit Zitat antworten Zitat
LDProgrammierer

Registriert seit: 16. Aug 2010
10 Beiträge
 
Delphi 7 Enterprise
 
#10

AW: Taschenrechner 2.0 - Der Multi-Rechner

  Alt 20. Aug 2010, 11:06
Nein ich verwende keine doubles sondern Real :var a, b, c : Real; dann geht es ganz normal weiter a:= strtofloat(edit1.Text) usw.

Geändert von mkinzler (20. Aug 2010 um 11:11 Uhr)
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


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 07:03 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