AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi Taschenrechner : ' ' ist kein Gleitkommawert

Taschenrechner : ' ' ist kein Gleitkommawert

Ein Thema von Ric · begonnen am 26. Jul 2011 · letzter Beitrag vom 29. Jul 2011
Antwort Antwort
Seite 1 von 2  1 2   
Benutzerbild von patti
patti

Registriert seit: 20. Okt 2004
Ort: Mittelfranken
665 Beiträge
 
Turbo Delphi für Win32
 
#1

AW: Taschenrechner : ' ' ist kein Gleitkommawert

  Alt 26. Jul 2011, 11:05
Bring hierfür blos niemanden diesen Sch* mit den Try-Except bei.
Hm, hab gerade etwas drüber nachgedacht und in Delphi ist das vielleicht wirklich nicht so das wahre. Java kennt da ein etwas ausgefeilteres try-catch-Konstrukt, bei dem verschiedene Exceptions unterschiedlich behandelt werden können, da ists dann ein leichtes, z.B. eine NumberFormatException abzufangen und entsprechend zu behandeln:

Code:
try {
  int i = Integer.parseInt("a");
} catch (NumberFormatException ex) {
  // whatever
}
Vorteil ist m.M.n., dass ich hier alle Möglichkeiten habe, auf eine Fehl-Eingabe zu reagieren, da bin ich bei den TryStrTo*-Methoden schon etwas eingeschränkter. Dann seh ich eigentlich auch kein Problem mehr beim Debuggen Gibts in Delphi eigentlich eine entpsrechende Möglichkeit?

Grüße
Patrick Kreutzer
[Informatik-Student im 4. Semester]
http://www.patti-k.de/
  Mit Zitat antworten Zitat
Medium

Registriert seit: 23. Jan 2008
3.688 Beiträge
 
Delphi 2007 Enterprise
 
#2

AW: Taschenrechner : ' ' ist kein Gleitkommawert

  Alt 26. Jul 2011, 11:09
Delphi-Quellcode:
try
  //foo
except
  on e: SomeSpecialExceptionClass do ...
  on e: SomeLessSpecialExceptionClass do ...
  on e: SomeFairlyGeneralExceptionClass do ...
  ...
  on e: Exception do ...
end;
Dennoch ist es nicht sinnvoll diesen Fall mit Exceptions zu behandeln, da ja eine erwartete Fehleingabe vorliegt.
"When one person suffers from a delusion, it is called insanity. When a million people suffer from a delusion, it is called religion." (Richard Dawkins)
  Mit Zitat antworten Zitat
Benutzerbild von patti
patti

Registriert seit: 20. Okt 2004
Ort: Mittelfranken
665 Beiträge
 
Turbo Delphi für Win32
 
#3

AW: Taschenrechner : ' ' ist kein Gleitkommawert

  Alt 26. Jul 2011, 11:21
Dennoch ist es nicht sinnvoll diesen Fall mit Exceptions zu behandeln, da ja eine erwartete Fehleingabe vorliegt.
Gut, darüber lässt sich diskutieren. Danke für das Beispiel!

Grüße
Patrick Kreutzer
[Informatik-Student im 4. Semester]
http://www.patti-k.de/
  Mit Zitat antworten Zitat
Medium

Registriert seit: 23. Jan 2008
3.688 Beiträge
 
Delphi 2007 Enterprise
 
#4

AW: Taschenrechner : ' ' ist kein Gleitkommawert

  Alt 26. Jul 2011, 11:24
Naja, er setzt mit "edit1.Text := '';" den Inhalt ja selbst, programmseitig, auf einen nicht wandelbaren Wert, somit muss das als definierter Zustand angesehen werden, der alles andere als eine Ausnahme ist. Find ich. Wo wir schon mal dabei sind =)
"When one person suffers from a delusion, it is called insanity. When a million people suffer from a delusion, it is called religion." (Richard Dawkins)
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu
Online

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

AW: Taschenrechner : ' ' ist kein Gleitkommawert

  Alt 26. Jul 2011, 12:19
Kennt Delphi auch,
Delphi-Quellcode:
try

except
  on E: EIrgendwas do begin

  end;
  on E: Exception do begin

  end;
end;
Aber da der "Debugger" Exceptions standardmäßig erstmal anzeigt, wenn sie ausgelöst werden, auch wenn sie dann über Try-Except weggefangen werden.
Wie gesagt, im laufenden Betrieb mag es "funktionieren", aber vorallem im Debugger isses blöd.
Klar könnte man bestimmte Excepionklassen im Debugger ausschließen, aber dann isses blöd, wenn man soeine Exception von wo anders nicht mehr so schön mitbekommt.


[edit] ups, da hab ich wohl 2 Beiträge mittendrin übersehn
Ein Therapeut entspricht 1024 Gigapeut.

Geändert von himitsu (26. Jul 2011 um 12:22 Uhr)
  Mit Zitat antworten Zitat
Ric

Registriert seit: 10. Jul 2011
6 Beiträge
 
#6

AW: Taschenrechner : ' ' ist kein Gleitkommawert

  Alt 26. Jul 2011, 13:58
Danke für eure antworten,

hab jetzt rausbekommen woran es lag

 if edit1.Text = 'then exit; Diese umwandlung war richtig, aber falsch positioniert.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu
Online

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

AW: Taschenrechner : ' ' ist kein Gleitkommawert

  Alt 26. Jul 2011, 14:07
if edit1.Text = 'then ... Diese umwandlung war richtig,
Was für eine Umwandlung?

Tipp: Gib mal irgendwo ein Leerzeichen, einen Buchstaben oder einen zweiten Punkt in dein Edit ein.
Ein Therapeut entspricht 1024 Gigapeut.
  Mit Zitat antworten Zitat
Ric

Registriert seit: 10. Jul 2011
6 Beiträge
 
#8

AW: Taschenrechner : ' ' ist kein Gleitkommawert

  Alt 27. Jul 2011, 07:18
Es hat alles prima geklappt, erscheint auch keine Fehlermeldung mehr
So sieht das jetzt aus

Delphi-Quellcode:
procedure TForm1.btn_malClick(Sender: TObject);
begin
  if edit1.Text = 'then exit;
  opperator := '*';
  if zwischenergebnis = 0 then
  begin
    try
      zwischenergebnis := strtofloat(edit1.text);
    except
      zwischenergebnis := 0;
    end;
    edit1.Text := '';
  end
  else
  begin
      edit1.Text := FloatToStr(zwischenergebnis * strtofloat(edit1.text));
      zwischenergebnis := StrToFloat(edit1.text);
      oppbool := true;
  end;
end;
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu
Online

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

AW: Taschenrechner : ' ' ist kein Gleitkommawert

  Alt 27. Jul 2011, 08:50
Zitat:
erscheint auch keine Fehlermeldung mehr
Hast du dir alle Beiträge durchgelesen?
Ein Therapeut entspricht 1024 Gigapeut.
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.662 Beiträge
 
Delphi 12 Athens
 
#10

AW: Taschenrechner : ' ' ist kein Gleitkommawert

  Alt 27. Jul 2011, 12:20
Anscheinend nicht. Aber die erste Abfrage lässt sich ja beliebig erweitern.
Delphi-Quellcode:
if (Edit1.Text = '') or (Edit1.Text = ' ') or (Edit1.Text = 'A') or (Edit1.Text = 'a')
{...} or (Edit1.Text = 'Meine Fresse, was so alles in einem String stehen kann') then exit;
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2   

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 23:04 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