[Ju...] Posted July 15, 2021 Share Posted July 15, 2021 Hallo, folgendes Szenario: ich erzeuge über Ergebnis=inquireNumber() eine Abfrage für eine Eingabe für den Maschinenbediener. Als Eingabe soll natürlich eine Zahl erfolgen, z.B. 0.01. Jetzt möchte ich danach abfragen if Ergebnis == number message(...) endif Wie kann ich das gestalten? Was ist der Paramater für die Abfrage einer Zahl, ich komme nicht drauf? Oder wie kann ich das sonst gestalten? Wäre super wenn mir hier jemand einen Tip geben könnte. Link to comment Share on other sites More sharing options...
[No...] Posted July 16, 2021 Share Posted July 16, 2021 Akzeptiert denn die Funktion inquireNumber() auch andere Eingaben? Das wäre ja suboptimal 😃 Gerade mal ausprobiert: Wenn man eine Zahl eingibt, wird die Zahl zurückgegeben. Trägt man Buchstaben oder irgendwas anderes ein, dann wird 0 (Null) zurückgegeben. Das ist natürlich wiederum suboptimal, weil man so nicht eindeutig auf die Eingabe von "0" reagieren kann. 😕 Aber solange es nur um Werte ungleich Null geht, kannst du einfach schreiben Variable=inquireNumber() if Variable <> 0 then message("Zahl eingegeben") else message("Was anderes (oder 0) eingegeben") endif Wenn allerdings auch die Null vorkommen kann, dann wird es komplexer. Da habe ich momentan keine wirkliche Idee. Link to comment Share on other sites More sharing options...
[Ma...] Posted July 16, 2021 Share Posted July 16, 2021 With inquireNumber in Result element - if you use wrong decimal point it gets only whole number. Wouldn't be inquireText much usefull? Link to comment Share on other sites More sharing options...
[No...] Posted July 19, 2021 Share Posted July 19, 2021 Please sign in to view this quote. Auch wieder wahr....PCM ist halt programmiertechnisch irgendwie nicht ganz zu Ende gedacht. Link to comment Share on other sites More sharing options...
[Ju...] Posted July 19, 2021 Author Share Posted July 19, 2021 Ja ist nicht so einfach. Habe bisher auch keine 100% zufriedenstellende Lösung gefunden und vorerst auf die Abfrage verzichtet. Wäre auch nur eine zusätzliche Absicherung gewesen. Habe jetzt auch inquireText genutzt und lasse fall Eingabe "," kommt dieses in "." umwandeln. Link to comment Share on other sites More sharing options...
[No...] Posted July 20, 2021 Share Posted July 20, 2021 Der Knackpunkt ist m.E. die Unterscheidung, ob ein Wert Null bei der Abfrage von der Eingabe des Bedieners stammt oder von der Funktion zurückgegeben wurde, weil z.B. der Bediener einen Text statt einer Zahl eingegeben hat. Alles andere ist ja eigentlich schon durch inquireNumber() sichergestellt. Man kann übrigens auch andere Methoden benutzen, um auf eine Zahl zu prüfen. Eine wäre die Eingabe als Text und dann Asuwertung mit val(), was noch den Vorteil hätte, daß evtl. eingegebene Kommas automatisch in einen Dezimalpunkt gewandelt werden. Aber auch hier wieder: Wenn keine verwertbare Zahl eingegeben wurde, gibt val() Null zurück und man hat wieder dasselbe Problem. Dann gäbe es noch die Möglichkeit, die Erweiterung .isNumber zu benutzen ( z.B. if variable.isNumber then....) Aber auch hier wieder: Wenn es keine Zahl ist, wird Null zurückgegeben und man weiß wieder nicht, woher die kommt. Das einzige was mir noch einfällt wäre, daß man die Zahl als Text eingibt und dann zuerst mal den String analysiert, ob er was anderes als Nullen und vielleicht noch Dezimalpunkte/Kommas enthält. Da reicht es ja, nach dem ersten unterschiedlichen Zeichen zu suchen. Und erst wenn dem nicht so ist, benutzt man val(), und wenn das dann Null zurückgibt, war's keine Zahl. Sehr umständlich, und fraglich ob sich der Aufwand lohnt.... 😕 Link to comment Share on other sites More sharing options...
[Ju...] Posted July 20, 2021 Author Share Posted July 20, 2021 Ja genau auf die Lösung mit val bin ich auch gekommen, aber habe dass dann doch wieder zerschlagen weil es nicht 100% das war und ich wollte es dann nicht weiter verfolgen. Ein Restrisiko besteht jetzt bei der Eingabe, aber ich denke ein bisschen Verantwortung kann man dem Maschinenbediener trotzdem noch überlassen, in dem Sinn dass er eine Zahl und keine Buchstaben eingibt. Link to comment Share on other sites More sharing options...
[No...] Posted July 20, 2021 Share Posted July 20, 2021 Wobei ich mich schon frage, warum inquireNumber() überhaupt was anderes als Zahlen zulässt. Völlig widersinnig. Das ist für mich reine Faulheit der Programmierer. Link to comment Share on other sites More sharing options...
Recommended Posts
Please sign in to comment
You will be able to leave a comment after signing in