vergleichen von Stringvariablen

Einrichtung, Anschluss und Programmierung der HomeMatic CCU

Moderator: Co-Administratoren

BDO
Beiträge: 68
Registriert: 14.07.2017, 13:27
Hat sich bedankt: 24 Mal
Danksagung erhalten: 1 Mal

vergleichen von Stringvariablen

Beitrag von BDO » 22.10.2021, 19:03

Hallo,
ein Hilferuf: ich möchte aus einer Stringvariablen zwei durch Semikolon getrennte Werte isolieren, diese je einer Systemvariablen zuordnen und aus dem Vergleich eine Aktion ableiten.
Bis zum "if" funktioniert das Beispiel, aber dann...
Kann mir jemand mit der richtigen Syntax weiterhelfen?
Beispiel:
integer a = 5;
integer b = 2;
var c = (a # ";" # b).ToString(0);
WriteLine(c);
a = c.StrValueByIndex(";", 0).ToString(0);
b = c.StrValueByIndex(";", 1).ToString(0);
WriteLine("a=" # a);
WriteLine("b=" # b);
if (a<c) {var d = "ja";}
WriteLine(d);

Vielen Dank schon mal für Profihilfe.
Gruß Boris

MichaelN
Beiträge: 9562
Registriert: 27.04.2020, 10:34
System: CCU
Hat sich bedankt: 696 Mal
Danksagung erhalten: 1608 Mal

Re: vergleichen von Stringvariablen

Beitrag von MichaelN » 22.10.2021, 19:07

Und wie sieht bei dir der output aus? Was ist das Ziel des Vergleich? String oder Zahlen vergleichen?

Und a kleiner c? Echt jetzt?
Und wenn du d in der Schleife erst definierst, dann ist die bei false undefiniert und wirft einen Fehler.
LG, Michael.

Wenn du eine App zur Bedienung brauchst, dann hast du kein Smarthome.

Wettervorhersage über AccuWeather oder OpenWeatherMap+++ Rollladensteuerung 2.0 +++ JSON-API-Ausgaben auswerten +++ undokumentierte Skript-Befehle und Debugging-Tipps +++

Benutzeravatar
Roland M.
Beiträge: 9738
Registriert: 08.12.2012, 15:53
System: CCU
Wohnort: Graz, Österreich
Hat sich bedankt: 251 Mal
Danksagung erhalten: 1357 Mal

Re: vergleichen von Stringvariablen

Beitrag von Roland M. » 22.10.2021, 19:19

Hallo!
if (a<c) {var d = "ja";}
WriteLine(d);
Die Variable d muss außerhalb des if deklariert werden!
Wenn die Bedingung nicht wahr ist, ist d im WriteLine gar nicht deklariert.

Aber wobei besteht jetzt dein Problem?

Code: Alles auswählen

var a = "X";
var b = "Y";

boolean c = (a < b);

WriteLine("Ergebnis: " # c);  ! c = true

Roland
Zur leichteren Hilfestellung bitte unbedingt beachten:
  • Bezeichnung (HM-... bzw. HmIP-...) der betroffenen Geräte angeben (nicht Artikelnummer)
  • Kurzbeschreibung des Soll-Zustandes (Was soll erreicht werden?)
  • Kurzbeschreibung des Ist-Zustandes (Was funktioniert nicht?)
  • Fehlermeldungen genau abschreiben, besser noch...
  • Screenshots von Programmen, Geräteeinstellungen und Fehlermeldungen (direkt als jpg/png) einstellen!

-----------------------------------------------------------------------
1. CCU2 mit ~100 Geräten (in Umstellung auf RaspberryMatic-OVA auf Proxmox-Server)
2. CCU2 per VPN mit ~50 Geräten (geplant: RaspberryMatic auf Charly)
3. CCU2 per VPN mit ~40 Geräten (geplant: RaspberryMatic auf CCU3)
CCU1, Test-CCU2, Raspi 1 mit kleinem Funkmodul, RaspberryMatic als VM unter Proxmox, Access Point,...

BDO
Beiträge: 68
Registriert: 14.07.2017, 13:27
Hat sich bedankt: 24 Mal
Danksagung erhalten: 1 Mal

Re: vergleichen von Stringvariablen

Beitrag von BDO » 22.10.2021, 19:49

Hallo Roland,
Vielen Dank - wie immer eine grosse Hilfe!
Gruß Boris

Tyfys
Beiträge: 531
Registriert: 17.04.2021, 17:12
System: CCU
Hat sich bedankt: 26 Mal
Danksagung erhalten: 121 Mal

Re: vergleichen von Stringvariablen

Beitrag von Tyfys » 23.10.2021, 11:12

Kleiner Tipp meinerseits.

Es ist keine gute Idee Zahlen in Strings miteinander zu vergleichen.
Das kann zu unerwünschten Ergebnissen führen.

Vergleiche:

Code: Alles auswählen

integer a = 15;
integer b = 2;
WriteLine(a.Type());
WriteLine(b.Type());
WriteLine( (a>b));

string a = "15";
string b = "2";
WriteLine(a.Type());
WriteLine(b.Type());
WriteLine( (a>b));
Gruß
Harry
Gruß
Harry

BDO
Beiträge: 68
Registriert: 14.07.2017, 13:27
Hat sich bedankt: 24 Mal
Danksagung erhalten: 1 Mal

Re: vergleichen von Stringvariablen

Beitrag von BDO » 23.10.2021, 18:49

Danke Harry,
Danke für dieses sehr gute Beispiel. Macht das Verstehen etwas klarer. Dennoch: für Nichtprogrammierer keine einfache Welt. Aber, es macht auch Spass.
Gruß Boris

Benutzeravatar
Roland M.
Beiträge: 9738
Registriert: 08.12.2012, 15:53
System: CCU
Wohnort: Graz, Österreich
Hat sich bedankt: 251 Mal
Danksagung erhalten: 1357 Mal

Re: vergleichen von Stringvariablen

Beitrag von Roland M. » 23.10.2021, 19:06

Hallo Boris!

Auch bei dieser Frage gilt: bitte immer den konkreten Anwendungsfall schildern, dann wird auch das Helfen leichter!

Willst du hier wirklich Strings vergleichen (a > b), Zahlen (z.B. Rückgabewerte von externen Abfragen), sind die "Nachkommastellen" in der Länge fixiert, oder, oder, oder... In deinem vorigen Thread viewtopic.php?f=26&t=70135&p=683426#p683426 hast du das ja auch (noch) nicht beantwortet...


Roland
Zur leichteren Hilfestellung bitte unbedingt beachten:
  • Bezeichnung (HM-... bzw. HmIP-...) der betroffenen Geräte angeben (nicht Artikelnummer)
  • Kurzbeschreibung des Soll-Zustandes (Was soll erreicht werden?)
  • Kurzbeschreibung des Ist-Zustandes (Was funktioniert nicht?)
  • Fehlermeldungen genau abschreiben, besser noch...
  • Screenshots von Programmen, Geräteeinstellungen und Fehlermeldungen (direkt als jpg/png) einstellen!

-----------------------------------------------------------------------
1. CCU2 mit ~100 Geräten (in Umstellung auf RaspberryMatic-OVA auf Proxmox-Server)
2. CCU2 per VPN mit ~50 Geräten (geplant: RaspberryMatic auf Charly)
3. CCU2 per VPN mit ~40 Geräten (geplant: RaspberryMatic auf CCU3)
CCU1, Test-CCU2, Raspi 1 mit kleinem Funkmodul, RaspberryMatic als VM unter Proxmox, Access Point,...

MichaelN
Beiträge: 9562
Registriert: 27.04.2020, 10:34
System: CCU
Hat sich bedankt: 696 Mal
Danksagung erhalten: 1608 Mal

Re: vergleichen von Stringvariablen

Beitrag von MichaelN » 23.10.2021, 19:12

Das habe ich ja auch schon gefragt, aber Hilfe zur Selbsthilfe ist anscheinend nicht gefragt. Warten wir einfach auf das nächste Rätsel des TAges.
LG, Michael.

Wenn du eine App zur Bedienung brauchst, dann hast du kein Smarthome.

Wettervorhersage über AccuWeather oder OpenWeatherMap+++ Rollladensteuerung 2.0 +++ JSON-API-Ausgaben auswerten +++ undokumentierte Skript-Befehle und Debugging-Tipps +++

BDO
Beiträge: 68
Registriert: 14.07.2017, 13:27
Hat sich bedankt: 24 Mal
Danksagung erhalten: 1 Mal

Re: vergleichen von Stringvariablen

Beitrag von BDO » 23.10.2021, 23:18

Oha, da bin ich sicher falsch verstanden worden. Mein Ansinnen und meine Fragen an das Forum haben das Ziel, mein Verständnis für die eQ-3 Scriptsprache zu vertiefen. Mein Hintergrund ist einerseits etwas Erfahrung mit MS-VBA und andererseits derWunsch, mein Leben als invalider Rollstuhlfahrer mit Hilfe von Homematic-Produkten etwas sicherer und komfortabler zu gestalten..
Derzeit bemühe ich mich darum mein Pflegebett, das mit einer manuellen eFernbedienung ausgestattet ist, auf HmIP-RC8 umzurüsten.
Dabei haben mir eure Hinweise sehr geholfen!
Ich wäre dankbar, wenn ich weiterhin auf eure Hilfestellungen rechnen kann.
Gruß Boris

Benutzeravatar
Roland M.
Beiträge: 9738
Registriert: 08.12.2012, 15:53
System: CCU
Wohnort: Graz, Österreich
Hat sich bedankt: 251 Mal
Danksagung erhalten: 1357 Mal

Re: vergleichen von Stringvariablen

Beitrag von Roland M. » 24.10.2021, 00:49

Hallo Boris!
BDO hat geschrieben:
23.10.2021, 23:18
Ich wäre dankbar, wenn ich weiterhin auf eure Hilfestellungen rechnen kann.
Selbstverständlich wird auch das weiterhin geschehen!
Nur bitte habe aber auch Verständnis, dass mit etwas Hintergrundwissen - eben der konkrete Anwendungsfall - auch das Helfen leichter funktioniert, da oft eine recht allgemein gestellte Frage Antworten in mehrere Richtungen zulässt und man meist nicht gewillt ist, alle Eventualitäten aufzuzählen, da das den Umfang einer Antwort sprengen würde.

Mit meiner Unterstützung kannst du aber sicher (soweit es mir möglich ist und mein Wissen reicht) rechnen, auch ich habe die Homematic eingesetzt, um den Alltag mit meinem Vater bis ganz kurz vor seinem 93. Geburtstag allen zu erleichtern. Ich glaube auch behaupten zu dürfen, wovon ich spreche...


Roland
Zur leichteren Hilfestellung bitte unbedingt beachten:
  • Bezeichnung (HM-... bzw. HmIP-...) der betroffenen Geräte angeben (nicht Artikelnummer)
  • Kurzbeschreibung des Soll-Zustandes (Was soll erreicht werden?)
  • Kurzbeschreibung des Ist-Zustandes (Was funktioniert nicht?)
  • Fehlermeldungen genau abschreiben, besser noch...
  • Screenshots von Programmen, Geräteeinstellungen und Fehlermeldungen (direkt als jpg/png) einstellen!

-----------------------------------------------------------------------
1. CCU2 mit ~100 Geräten (in Umstellung auf RaspberryMatic-OVA auf Proxmox-Server)
2. CCU2 per VPN mit ~50 Geräten (geplant: RaspberryMatic auf Charly)
3. CCU2 per VPN mit ~40 Geräten (geplant: RaspberryMatic auf CCU3)
CCU1, Test-CCU2, Raspi 1 mit kleinem Funkmodul, RaspberryMatic als VM unter Proxmox, Access Point,...

Antworten

Zurück zu „HomeMatic Zentrale (CCU / CCU2 / CCU3 / Charly)“