AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Taschenrechner ein Editfeld

Ein Thema von Beat · begonnen am 30. Nov 2012 · letzter Beitrag vom 7. Dez 2012
Antwort Antwort
Beat

Registriert seit: 30. Nov 2012
12 Beiträge
 
#1

AW: Taschenrechner ein Editfeld

  Alt 7. Dez 2012, 14:53
Wenn ich ehrlich bin, bezweifle ich, daß der Taschenrechner richtig funktioniert, - wofür ist "zwischen" gut?
Delphi-Quellcode:
procedure TForm1.Button13Click(Sender: TObject);
begin
try
     If zwischen = true then Ausgabe.Text := FloatToStr (Ergebnis + StrToFloat (Ausgabe.Text));
        zwischen := true ;
        Ergebnis := StrToFloat (Ausgabe.Text) ;
        rz := 1 ;
        form1.Ausgabe.Text := '' ;
except Showmessage ('Bitte 2 oder mehr Zahlen addieren !');
end;
end;

Delphi-Quellcode:
procedure TForm1.Button13Click(Sender: TObject);
begin
  try
    If zwischen then
      Ausgabe.Text := FloatToStr (Ergebnis + StrToFloat (Ausgabe.Text));
    zwischen := true ;
    Ergebnis := StrToFloat (Ausgabe.Text) ;
    rz := 1 ;
    Ausgabe.Text := '' ;
  except
    Showmessage ('Bitte 2 oder mehr Zahlen addieren !');
  end;
end;
Ein wenig formatieren, das nicht auszurottende "if irgendwas=true then" berichtigt, und schon ist das alles etwas lesenswerter.

Gruß
K-H
1. Ganz einfach. Zwischen habe ich eingebaut, damit man mehrere mal hintereinander addieren kann. Sprich Falls (If) zwischen schon bestimmt wurde (= true), dann soll man die alte abgespeicherte Zahl mit der neuen addieren (Ausgabe.Text := FloatToStr (Ergebnis + StrToFloat (Ausgabe.Text)). Ich konnte es nicht anders formulieren

2.
Mhh, was ist denn an dem "if irgendwas=true then" so schlimm ?
  Mit Zitat antworten Zitat
Benutzerbild von implementation
implementation

Registriert seit: 5. Mai 2008
940 Beiträge
 
FreePascal / Lazarus
 
#2

AW: Taschenrechner ein Editfeld

  Alt 7. Dez 2012, 14:56
Mhh, was ist denn an dem "if irgendwas=true then" so schlimm ?
Dass man es besser so schreiben kann:
if irgendwas then ...

Mit =true kann man unter Umstaenden grosse Probleme bekommen, die man dann schwer wieder findet.
  Mit Zitat antworten Zitat
Popov
(Gast)

n/a Beiträge
 
#3

AW: Taschenrechner ein Editfeld

  Alt 7. Dez 2012, 15:44
Mhh, was ist denn an dem "if irgendwas=true then" so schlimm ?
An für sich nichts, mal davon abgesehen, dass man mit der Zeit p80286's Variante übersichtlicher findet. Bei Delphi ist das die Typische Variante, (fast) jeder macht es so.

Zufällig gab es die Tage eine Diskussion dazu. Man kann sagen, dass deine Variante gegen True zu prüfen an für sich nicht schlimm ist, solange du nur Delphifunktionen nutzt. Wenn du aber irgendwann mit API oder einigen DLLs usw. arbeitest, kann es passieren, dass es zu Problemen kommen wird. Denn andere Sprachen liefern u. U. andere Werte für True (bei Delphi ist es -1), so dass der Vergleich gegen True u. U. nicht klappen wird. Wenn also eine Delphifremde Funktion für True eine 1 liefert und Delphi unter True -1 versteh, dann wird der Vergleich nicht klappen. Wenn du aber nicht gegen True prüfst, betrachtet Delphi alles was nicht False ist als True, auch eine 3.

Aber wie gesagt, solange du nur Delphi Funktionen nutzt ist es gehopst wie gesprungen ob du es so oder so machst.

Geändert von Popov ( 7. Dez 2012 um 16:04 Uhr) Grund: Kleinen Fehler korrigiert
  Mit Zitat antworten Zitat
Benutzerbild von Bummi
Bummi

Registriert seit: 15. Jun 2010
Ort: Augsburg Bayern Süddeutschland
3.470 Beiträge
 
Delphi XE3 Enterprise
 
#4

AW: Taschenrechner ein Editfeld

  Alt 7. Dez 2012, 16:05
Delphi-Quellcode:
program Project2;

{$APPTYPE CONSOLE}

uses
  SysUtils;

  Function WithTrue:Boolean;
    begin
      Result := Boolean(2);
    end;

begin
  try
    if WithTrue then Writeln('OK 1');
    if WithTrue = true then Writeln('OK 2');
    Readln;

    { TODO -oUser -cConsole Main : Code hier einfügen }
  except
    on E: Exception do
      Writeln(E.ClassName, ': ', E.Message);
  end;
end.
Thomas Wassermann H₂♂
Das Problem steckt meistens zwischen den Ohren
DRY DRY KISS
H₂ (wenn bei meinen Snipplets nichts anderes angegeben ist Lizenz: WTFPL)
  Mit Zitat antworten Zitat
Popov
(Gast)

n/a Beiträge
 
#5

AW: Taschenrechner ein Editfeld

  Alt 7. Dez 2012, 16:19
Ausnahmen bestätigen bekanntlich die Regel und wer sowas macht ist selber schuld

Sieh mal, ich hatte mal Kollegen die nur Pfusch produzierten, keine Ahnung wieso die nicht gefeuert wurden. Irgendwann kam einen neuer Chef, der selbst ein Pfuscher war. Er erklärte die Art der Pfuscher zum Firmenstandard. Wer dann noch gut arbeitete, der lieferte schlechte Arbeit ab. Regeln ändern bedeutet nicht, dass falsch richtig ist.
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#6

AW: Taschenrechner ein Editfeld

  Alt 7. Dez 2012, 16:41
Also sooo ungewöhnlich ist das nicht,
ist mir letzt noch in einer DB über den Weg gelaufen.
Und schlechte Angewohnheiten wird man eben schlecht los.

Gruß
K-H
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector
  Mit Zitat antworten Zitat
Bjoerk

Registriert seit: 28. Feb 2011
Ort: Mannheim
1.384 Beiträge
 
Delphi 10.4 Sydney
 
#7

AW: Taschenrechner ein Editfeld

  Alt 7. Dez 2012, 16:42
Mhh, was ist denn an dem "if irgendwas=true then" so schlimm ?
[..] Zufällig gab es die Tage eine Diskussion dazu. [..]
Popov, irgendwie magst du das true?
Schreibst du auch: If (1 < 2) = true then ..

Edit.Text := FloatToStr(0) ist auch "Weltklasse".
Schreibst du auch I := StrToFloat('1')?

PS.: Bitte nicht noch eine Diskussion. Danke. Nicht böse gemeint.

Gruß
Thomas
  Mit Zitat antworten Zitat
Popov
(Gast)

n/a Beiträge
 
#8

AW: Taschenrechner ein Editfeld

  Alt 7. Dez 2012, 17:05
Popov, irgendwie magst du das true?
Schreibst du auch: If (1 < 2) = true then ..
Habe ich das je behauptet? Such mir mal einen Code von mir in dem das so steht. Also bitte keine d. Bemerkungen. Allerdings mag ich es nicht wenn einem gesagt wird: man macht es so in Delphi und nun friss oder stirb. Didaktisch ist es besser einem zu sagen warum etwas so ist wie es ist. Und es ist nun mal nicht falsch gegen True zu prüfen. Das ist Mathe. Wenn man anfängt Delphifremde oder eigene Trues zu produzieren oder zu prüfen, dann wird dadurch die Aussage nicht falsch. Das Problem ist, dass wenn jeder anfängt klug zu scheißen, dann ist jede Didaktik für den Arsch. Ein Physiklehrer kann behaupten, dass Wasser durchsichtig und Geschmacklosigkeit ist. Ein Klugscheißer der ihm dann eine Cola, die ja auch aus Wasser besteht, als Gegenbeweis liefert, ist nur ein Klugscheißer, mehr nicht.

Das Problem ist nun mal, du kannst einem 100 mal erzählen, dass das so und so in Delphi gemacht wird. Entweder er akzeptiert es, weiss aber nicht wieso, oder dein Tipp geht ihm am A. vorbei. Habe ich deine Frage beantwortet?

Zitat:
Edit.Text := FloatToStr(0) ist auch "Weltklasse".
Schreibst du auch I := StrToFloat('1')?
Das stimmt schon und hat seinen Grund. Wenn du den Code nicht verstehst, dann frag vorher warum etwas so ist wie es ist.
  Mit Zitat antworten Zitat
Antwort Antwort


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 22:17 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