Vergleich von Objekten unterschiedlicher Typen

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

Moderator: Co-Administratoren

Antworten
rayki
Beiträge: 73
Registriert: 23.01.2008, 16:30

Vergleich von Objekten unterschiedlicher Typen

Beitrag von rayki » 20.07.2009, 13:32

Hallo,

ich habe zwei Objekte von verschiedenem Typ Obj1(EAGeraet: "aus", "an") und Obj2 (eigener Typ: "x", "y", "z")

Beiden Objekten weise ich den Wert '0' zu: (Obj1="aus", Obj2="x").

Ich habe eine WENN-Abfrage programmiert:

Code: Alles auswählen

WENN Obj1 = Obj2 DANN
 ...Aktion1...
SONST
 ...Aktion2...
ENDEWENN

WENN Obj1 <> Obj2 DANN
 ...Aktion1...
SONST
 ...Aktion2...
ENDEWENN
Ich lande grundsätzlich im Sonst-Zweig (Aktion 2); und zwar immer beim Vergleich von Objekten unterschiedlichen Typs.
Außerdem ist es vollkommen belanglos, ob ich auf Gleichheit oder Ungleichheit prüfe. Ich lande immer im Sonst-Zweig.

Gegenprobe 1:
Ich weise den Objekten unterschiedliche Werte zu: Obj1=0 (="aus") Obj2=1(="y"). Ich lande wieder in beiden Sonst-Zweigen.

Ich glaube nicht, dass das ein Feature ist. Oder?

Mfg.
Rayk

contronics-RK
Beiträge: 954
Registriert: 18.07.2006, 15:58

Re: Vergleich von Objekten unterschiedlicher Typen

Beitrag von contronics-RK » 22.07.2009, 21:44

Hallo,

ein Vergleich zwischen unterschiedlichen Typen ist nicht möglich, das Ergebnis ist grundsätzlich unwahr.
Es gibt aber einen Umweg, nämlich der Vergleich des Indexes der Typen.
Durch die Zuweisung der Objekte an den Typ Zahl erfolgt eine automatische Typumwandlung auf den Zieltyp (also Zahl/Index), damit werden im Vergleich zwei Zahlen verglichen.
Im Beispiel sind die Variablen i1 und i2 vom Typ Zahl ohne Kommastellen (Startwert ohne Komma), Licht und xy sind Objekte unterschiedlichen Typs.
Beispiel:
i1:=xy
i2:=Licht
wenn i1 = i2 dann
Anzeige:="gleich"
sonst
Anzeige:="ungleich"
endewenn
Mit freundlichem Gruss
CL-control - Ralph Krapoth
http://www.cl-control.de
Bei Fragen bitte keine PMs, sondern mail an technik@cl-control.de
PMs werden nicht regelmässig kontrolliert und und können unbeantwortet bleiben.

rayki
Beiträge: 73
Registriert: 23.01.2008, 16:30

Re: Vergleich von Objekten unterschiedlicher Typen

Beitrag von rayki » 23.07.2009, 08:11

Hallo Herr Krapoth,

vielen Dank für Ihre Antwort. Allerdings muß ich zugeben, dass das Verhalten für mich alles andere als verständlich ist. Ich habe erwartet, dass bei einem Vergleich von Aufzählungstypen das Ergebnis dem Vergleich des Index des Aufzählungswertes entspricht (eigentlich genau so, wie mit dem Umweg über einen Ganzzahl-Datentyp).

Das ein Vergleich von Werten unterschiedlichen Typs nicht möglich ist, habe ich in der Hilfe nicht gefunden. Ich verstehe aber auch nicht welchen Sinn es macht, den Vergleich von Werten unterschiedlichen Typs immer als "unwahr" zu betrachten. Die Zuweisung von Werten unterschiedlichen Typs funktioniert ja auch:

Code: Alles auswählen

  a1[Typ: EAGeraet{"aus", "an"}] := "aus"       ->  a1=0
  a2[Typ: XY{"x", "y", "z"}]     := "z"         ->  a2=2

  a2 := a1   ->  a2=0
Wenn der Vergleich unterschiedlicher Typen nicht erlaubt ist, sollte das meiner Meinung nach durch die Grammatik der Skriptsprache ausgedrückt und durch einen Syntaxfehler beim Übersetzen des Codes dem Anwender angezeigt werden.
Durch das jetzige Verhalten entsteht die kuriose Situation, dass beim Vergleich (Operator "=") das selbe Ergebnis wie beim inversen Vergleich (Operator "<>") entsteht. Ich vermute bei "<" und ">" ist es ebenfalls so ?

Mit freundl. Grüßen,
Rayk Würker

Antworten

Zurück zu „homeputer Studio / Standard: Bugs & Updatewünsche“