Autor |
Beitrag |
Deliverenc
      
Beiträge: 20
|
Verfasst: So 09.05.10 11:10
hi
ich glaube das die frage schon mal gestelt worden ist nur ich finde die antwort beziungsweise die frage net.
ich will ein gröseres rechen programm schreiben muss aber auch mit zwischen ergebnissen rechen die auch angezeit werden sollen. die zahlen gebe ich in ein edit felder eine und acuh die ausgabe findet in einem edit feld stadt. meine frage ist wie und wo muss ich was programiren das das ergebnis automatisch angezeigt wird ohne das ich einen button betätigen muss.
Danke für die hilfe
Gruß Deliverenc
|
|
ALF
      
Beiträge: 1085
Erhaltene Danke: 53
WinXP, Win7, Win10
Delphi 7 Enterprise, XE
|
Verfasst: So 09.05.10 11:34
Deliverenc hat folgendes geschrieben : | ...das das ergebnis automatisch angezeigt wird ohne das ich einen button betätigen muss. |
Hi, dies ist aber eine schlechte Idee!
Kongret, Du müsstest also vorher schon festlegen welche rechenop Du durchführen willst, gut das geht noch.
Aber jetzt, die Eingabe in den Editfelder, mh... ok, ganz ohne Mousklicks wirds wohl auch nicht gehen. Du must ja irgendwann in das nächste Eingabefeld. Egal wie Du es lösen willst, ohne Tastaturcklicks (Entertaste, Tabtaste z.B.) kommst Du nicht weit. Um also die /das Ergebnis schon anzuzeigen während du noch die Eingaben machst....., lass es! der Aufwand ist viel zu gross! Zu mal Du schon Ergebnisse oder schlimmer, Fehler bekommst, die Du ja auch noch bearbeiten musst!
Also, ohne Tastur-/ Mouseklicks Ergebnisse zu bekommen, nur durch die Eingabe der Zahlen in die Editfelder ne, einfach nur schlecht!
kleines Beispiel: Editfeld1:=5, Op= /, Editfeld2:=0,2.
Was passiert jetzt, so wie Du es machen willst, wenn Du im EditFeld2 die 0 eingibst!
Gruss Alf
_________________ Wenn jeder alles kann oder wüsste und keiner hätt' ne Frage mehr, omg, währe dieses Forum leer!
|
|
jaenicke
      
Beiträge: 19314
Erhaltene Danke: 1747
W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: So 09.05.10 11:57
Geht aber relativ einfach:
Alle OnChange-Ereignisse auf eine Methode setzen, dort dann mit TryStrToInt / TryStrToFloat die Umwandlung versuchen. Wenn alles gültige Zahlen sind, dann die Berechnung durchführen.
Bei möglichen Divisionen durch 0 oder so muss das natürlich abgefangen werden. Am besten direkt mit if, notfalls allgemein mit try..except. Dann kann entweder das Ergebnis oder ungültig oder so angezeigt werden.
Je nach Anwendungszweck macht das durchaus Sinn und spart viel Zeit, wenn man z.B. Parameter ausprobieren möchte.
|
|
ALF
      
Beiträge: 1085
Erhaltene Danke: 53
WinXP, Win7, Win10
Delphi 7 Enterprise, XE
|
Verfasst: So 09.05.10 12:12
_________________ Wenn jeder alles kann oder wüsste und keiner hätt' ne Frage mehr, omg, währe dieses Forum leer!
|
|
jaenicke
      
Beiträge: 19314
Erhaltene Danke: 1747
W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: So 09.05.10 12:17
|
|
ALF
      
Beiträge: 1085
Erhaltene Danke: 53
WinXP, Win7, Win10
Delphi 7 Enterprise, XE
|
Verfasst: So 09.05.10 12:56
Deliverenc hat folgendes geschrieben : | ich will ein gröseres rechen programm schreiben muss aber auch mit zwischen ergebnissen rechen die auch angezeit werden sollen. |
@jaenicke, meinst Du nicht, das dies sehr Aufwendig werden kann? Meist sieht man bestimmte Dinge erst, beim Coden um festzustellen, oops- so geht das nicht, hier muss ja auch noch was abgefangen werden damit die Funktion(Formel) und und und, mir nicht das Prog durcheinander bringt.
Ich gehe mal davon aus, das da auch jedemenge Formeln mit drin sein werden, also nicht einfach nur ein einfacher Taschenrechner, und das ganze ohne ein auszuführenden Button.
Ich weis, das man dies machen kann, aber zutrauen/umsetzen mh....
Gruss Alf
_________________ Wenn jeder alles kann oder wüsste und keiner hätt' ne Frage mehr, omg, währe dieses Forum leer!
|
|
jaenicke
      
Beiträge: 19314
Erhaltene Danke: 1747
W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: So 09.05.10 13:05
Nun, im Grunde kann man es sich einfach machen und einfach für jedes Zwischenergebnis nen try..except Block nehmen. Wenn eine Exception auftritt, darf natürlich auch nicht weitergerechnet werden.
Aber das Schema ist im Grunde einfach: Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29:
| try a := ... EditA.Text := a; except EditA.Text := 'ungültig'; FailedA := True; end;
try b := ... EditB.Text := b; except EditB.Text := 'ungültig'; FailedB := True; end;
Failed := FailedA or FailedB;
try if Failed then raise EAlreadyFailedException.Create(); ab := ... EditAB.Text := ab; except EditAB.Text := 'ungültig'; Failed := True; end;
... | Das lässt sich sicher auch optimaler lösen, je nach Berechnung, aber so geht es recht allgemein zu lösen. Und es werden alle möglichen Zwischenergebnisse berechnet und alle Ergebnisfelder aktualisiert.
Theoretisch gehen natürlich auch verschachtelte try..except Blöcke, aber bei einer komplexen Rechnung kommt man dann schnell durcheinander, da ist der sequentielle Weg vermutlich sinnvoller.
|
|
ffgorcky
      
Beiträge: 573
WIN XP/2000 & 7Prof (Familie:Win95,Win98)
|
Verfasst: So 09.05.10 17:49
Also ich denke mal, dass Du nicht immer zwischendurch die Maus in die Hand nehmen möchtest.
Dafür gibt es dann ja bei den Buttons die Eigenschaft Default:=True, so dass Du nur einmal Enter/Return drücken brauchst.
- Oder habe ich Dich jetzt falsch verstanden? - sonst müsstest Du ja genau festlegen, wann die Eingabe denn die richtige Länge hat.
|
|
jaenicke
      
Beiträge: 19314
Erhaltene Danke: 1747
W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: So 09.05.10 18:32
ffgorcky hat folgendes geschrieben : | sonst müsstest Du ja genau festlegen, wann die Eingabe denn die richtige Länge hat. |
Nein, die Berechnung muss nur versuchen zu berechnen und wenn es nicht klappt gibt es eben kein anzeigbares Ergebnis.
Wenn dann die Eingabe fertig ist, siehst du auch direkt das Ergebnis.
Das Prinzip verwende ich z.B. sehr oft bei Suchfiltern, genau wie es Windows selbst ja (ab Vista) auch tut.
|
|
Deliverenc 
      
Beiträge: 20
|
Verfasst: So 09.05.10 18:42
ich bedanke mich für die antworten das das komplizirter ist wie ich es mir gedacht habe, habe ich schon vermutet. sgat mir aber doch wie ich z.B. eine automatischergebnis anzeige hinbekomme wenn dir rechnung 2+2 beträgt ohne das ich irgend was drücken muss.
|
|
jaenicke
      
Beiträge: 19314
Erhaltene Danke: 1747
W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: So 09.05.10 19:05
Wie gesagt: OnChange aller Edits auf die selbe Methode legen, fertig.
Du probierst es irgendwie gar nicht aus, fällt mir da so auf...
Na gut, weils ne Sache von 2 Minuten ist, Demo im Anhang...
Einloggen, um Attachments anzusehen!
|
|
Deliverenc 
      
Beiträge: 20
|
Verfasst: So 09.05.10 19:15
ich weis ich habe eben erst nach gelesen da ich weg wahr und da stante ich auch kurz auf dem schlauch und wuste net wie ich grade anfangen sollte.
danke für die demo
|
|
|