AGB  ·  Datenschutz  ·  Impressum  







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

Automatisches Rechnen

Ein Thema von TheBeer · begonnen am 30. Aug 2014 · letzter Beitrag vom 30. Aug 2014
Antwort Antwort
Popov
(Gast)

n/a Beiträge
 
#1

AW: Automatisches Rechnen

  Alt 30. Aug 2014, 15:40
Was mkinzler sagen will ist, dass es riskant ist anzunehmen, dass in einem Edit-Feld immer eine Zahl steht. Was passiert wenn dort mal keine Zahl steht? Dann gibt es eine Fehlermeldung und u. U. Programmabbruch.

Falls dir TryStrToFloat nichts sagt, mit StrToFloatDef kann man auch eine Prüfung auf korrekte Zahl machen:

Delphi-Quellcode:
  if StrToFloatDef(Edit1.Text, 0) = StrToFloatDef(Edit1.Text, -1) then
    ShowMessage('Alles klar, in Edit1 steht eine Zahl.')
  else
    ShowMessage('Halt, in Edit1 steht ein Text oder eine fehlerhafte Zahl.')
Wenn in Edit-Feld eine Zahl steht, ist die IF Abfrage TRUE. Steht keine Zahl drinn, gibt das linke StrToFloatDef als Ersatz eine 0, das rechte -1. Das Ergebnis ist FALSE.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: Automatisches Rechnen

  Alt 30. Aug 2014, 15:50
Zitat:
DefaultFormatSettings.ThousandSeparator:='.';
Es ist nicht sonderlich gut, wenn man an globalen Einstellungen rumspielt, es sei denn das soll wirklich für das komplette Programm dauerhaft umgestellt werden. Dann aber einmal beim Programmstart und nicht immer wieder.

Am Besten du verwendest eine eigene TFormatSettings-Variable, welche dann als Parameter z.B. an deine StrToFloat und FloatToStr übergeben wird.
Und es ist natürlich auch unglücklich, daß dein FormatSettings zwischen deinen beiden StrToFloat und FloatToStr steht, denn beim ersten Aufruf wäre ja das FormatSettings vom StrToFloat eventuell noch falsch.



Bei Delphi 6 ist das jetzt ein kleines Problem.
Wenn du es damals bei Borland registriert hattest, womit deine Lizenz also bekannt wäre, dann könnte man bestimmt noch was über die Community machen.
Embarcadero selber kann keine Setups vor Delphi 7 bereitstellen und verweist dann meistens auf uns, wo es noch jemandenden gibt, der ein Setup besitzt.
Ein Therapeut entspricht 1024 Gigapeut.
  Mit Zitat antworten Zitat
TheBeer

Registriert seit: 30. Aug 2014
6 Beiträge
 
#3

AW: Automatisches Rechnen

  Alt 30. Aug 2014, 15:52
danke und klar das ist dann natürlich sinnvoll

aber irgendwie funst das immer noch nicht mit dem automatischen Rechnen ich hab den Code was ich habe mit ein bei Google verglichen gehabt was auch für eine automatische Rechnung is und ich weiß immer noch nicht warum

Wenn ich das alles über ein Button rechnen lasse funktioniert das einwandfrei aber das will ich ja nicht. Er soll gleich berechnen sobald man in Edit1 oder Edit 2 usw was eingibt. Das sind 8 Edit Felder und mit 8 Buttons is das etwas schlecht
Könnte auch ein für alles machen was aber der letzte Ausweg is.

Die exe funktioniert so jetzt erst einmal auch die Zahleneingabe klappt sehr gut und jaa ^^ es stürtzt ab sobald man ein Buchstaben eingibt was ich gleich ändern werde

nur erscheint das Ergebnis nicht im Label 9 usw

Mach ich das über ein Button mit der selben Funktion und dem selben Code halt nur mit Click geht alles. Mächtig verwirrend


EDIT: ich hab leider von damals gar nix mehr. Die Email Adresse war meine alte GMX die ich gelöscht habe wegen Werbung und alles andere hab ich auch nicht mehr da ich das immer auf die CD rauf schreibe
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: Automatisches Rechnen

  Alt 30. Aug 2014, 15:59
Aktion ausführen bei Klicken des Knopfes -> OnClick des Buttons
Aktion ausführen bei Änderung des Textes -> OnChange des Edits

Aber gerade hier mußt du die Eingabewerte prüfen, denn während der Eingabe können/werden schnell mal ungültige Inhalte entstehen (z.B. leere Edit-Texte) und dann wäre es echt nervig, wenn nach jedem einzelnen Tastendruck eine Exception mit nachfolgender Fehlermeldung auftreten könnte.
Ein Therapeut entspricht 1024 Gigapeut.
  Mit Zitat antworten Zitat
TheBeer

Registriert seit: 30. Aug 2014
6 Beiträge
 
#5

AW: Automatisches Rechnen

  Alt 30. Aug 2014, 16:00
na ich glaube ich lösche nochmal alles und fange zum 3. mal von vorn an ^^ aus Fehler lernt man ja


Weil es zwar immer noch nicht rechnet aber es stürzt auch ab sobald man auf ein Label klickt. Vielleicht lasse ich mir doch noch was einfallen und gebe das alles doch in ein Edit aus.

Mal was überlegen ^^




Edit: danke für die Rar Datei ^^ die lese ich mir jetzt erst mal durch vielleicht finde ich den Fehler ja auch selbst ohne Hilfe sonst wird man ja Faul und grübelt gar nicht mehr

Geändert von TheBeer (30. Aug 2014 um 16:08 Uhr)
  Mit Zitat antworten Zitat
mse1

Registriert seit: 21. Nov 2007
115 Beiträge
 
#6

AW: Automatisches Rechnen

  Alt 30. Aug 2014, 15:57
Das ist eine ähnliche Aufgabe wie im 1. Kapitel von "Programmieren macht Spass!":
http://sourceforge.net/projects/mseu...1.zip/download
Zwar nicht mit Lazarus aber auch mir Free Pascal. Die verwendete Komponentenbibliothek hat spezielle Komponenten für Zahleneingabe und Zahlenanzeige. StrToFloat() ist dort nicht notwendig.
Martin Schreiber
  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 00:32 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