BUG: HPCL auf CCU1, Makro bricht einfach ab, Typumwandlung

Bugreports und Updatewünsche an die Firma contronics
Keine allgemeinen Fragen!

Moderator: Co-Administratoren

Antworten
Familienvater
Beiträge: 7151
Registriert: 31.12.2006, 15:18
System: Alternative CCU (auf Basis OCCU)
Wohnort: Rhein-Main
Danksagung erhalten: 35 Mal

BUG: HPCL auf CCU1, Makro bricht einfach ab, Typumwandlung

Beitrag von Familienvater » 27.05.2013, 18:31

Moin,

bin mal wieder mittelschwer begeistert, und ich weiß nicht, ob ich mich direkt darüber schon mal aufgeregt habe, oder nur über ähnliche Dinge beim Rechnen mit Datum etc.

Man muss so etwas von höllisch aufpassen, bzw. lieber HPCL gar nichts selbst typUmwandeln lassen

Code: Alles auswählen

//strMessage ist eine Variable vom Typ Zeichen
strMessage:="test_string: 1+1="+1+1+" ???"
Wer glaubt zu Wissen, was in strMessage steht?
Richtig, HPCL leidet unter Dyskalkulie: test_string: 1+1=11 ???

Weiter gehts, ich will HPCL helfen und schreibe

Code: Alles auswählen

//strMessage ist eine Variable vom Typ Zeichen
strMessage:="test_string: 1+1="+(1+1)+" ???"
Wer glaubt zu Wissen, was in strMessage steht?
Ich weiß es nicht, das Makro bricht an dieser Stelle anscheinend ab, und es gibt keinerlei Fehlermeldung, weder beim Compilieren, noch beim Ausführen.
Wenn einem so etwas in einem Wenn-Dann Block passiert, springt HPCL wohl zum nächsten Befehl nach dem Wenn-Dann-Block, was evtl. zu nicht nachvollziehbaren Ergebnissen führt (So bei mir passiert).

Und probiert auch nicht, so zu subtrahieren, egal ob mit oder ohne Klammern, auch da endet spontan die Ausführung des Makros.

Man kann aber an manchen Stellen auch Rechnen ohne unbedingt eine Zwischenvariable zu nutzen:

Code: Alles auswählen

//strTemp, strMessage ist eine Variable vom Typ Zeichen
//lngZahl1, lngZahl2 sind Zahlen mit Startwert 0

strTemp:="1234"
lngZahl1:=1
lngZahl2:=1
strMessage:="test_string: Rechnen im Funktionsargument: "+textteil(strTemp,2,lngZahl1+lngZahl2)
das Funktioniert, es wird 23 aus der Zeichenkette rausgeschnitten.

Das ganze ist so tückisch, das ich heute kurz davor war, meiner CCU das Fliegen beizubringen...

Das einzige, was VIELLEICHT noch eine Ursache sein könnte, ist das ich das nur mit einer Beta? der ExecEngine (2.46, 130409) getestet habe, die ich von Herrn Krapoth am 12.April bekommen habe, die aber sonst zu meiner Zufriedenheit Dienst tut (Uptime meines Projekts zuletzt über 17 Tage am Stück).

Der Familienvater

buempi
Ehrenmitglied
Beiträge: 12194
Registriert: 29.07.2006, 15:58
Wohnort: Schweiz
Danksagung erhalten: 5 Mal

Re: BUG: HPCL auf CCU1, Makro bricht einfach ab, Typumwandlu

Beitrag von buempi » 27.05.2013, 19:00

Hallo Familienvater

Ist das nicht etwas gar gesucht? Ich weiss auch nicht, was du bei dieser "Formel" für ein Ergebnis erwartest:

Code: Alles auswählen

strMessage:="test_string: 1+1="+(1+1)+" ???"
Rechenoperationen INNERHALB eines Strings...? Kennst du eine Programmiersprache, die das auflösen kann?

Viele Grüsse
Bümpi

Familienvater
Beiträge: 7151
Registriert: 31.12.2006, 15:18
System: Alternative CCU (auf Basis OCCU)
Wohnort: Rhein-Main
Danksagung erhalten: 35 Mal

Beitrag von Familienvater » 27.05.2013, 19:50

Moin,

die Rechenoperation ist ja ausserhalb des Strings, ich kenne es nur so, das eine 1 die nicht explizit durch "1" in einen String gecastet wird, auch als Zahl angesehen wird. Und zahlen kann ich addieren, spätestens wenn ich das ganze klammere.
Aber evtl. ist das Problem, das es bei HPCL kein extra Zeichen für String-Concatenation gibt, und deswegen der Compiler lieber Strings verknüpft als Zahlen zu addieren.
Und bei meinem Problem habe ich auch nicht zwei konstante Zahlen addiert, sondern eine Zahl-Variable und eine Konstante, und wäre für mich alleine durch das erste Argument vom Typ Zahl klar, wohin die Reise geht, zumal das 2. Argument in meinen Augen auch eine Zahl darstellt. Und Zahl+Zahl ist für mich immer eine Zahl und keine verknüpfte Zeichkette.

Spätestens wenn ich eine Subtraktion machen möchte, muss das Ergebniss eine Zahl sein. Und wenn das Syntaktisch an der Stelle nicht erlaubt ist, muss es der Compiler ablehnen.

Und wenn es dem Compiler aus dem Kontext heraus nicht klar ist, muss er Warnen oder Abbrechen. Aber nicht weitermachen und nachher bei der Ausführung feststellen, das da eine Exception geworfen wird, und dann einfach irgendwo die Ausführung im Code fortsetzen.


Der Familienvater

Gesendet von meinem Nexus 7 mit Tapatalk 2

Antworten

Zurück zu „homeputer CL - Bugs & Updatewünsche“