[Erledigt] Logische Verknüpfungen in switch-Anweisung

[Erledigt] Logische Verknüpfungen in switch-Anweisung

Postby Signalmast88 » 10.03.2018, 20:43

Hallo Rob,

wäre es möglich, bei den cases in der switch-Anweisung die ODER-Verknüpfung (|) analog dem if-Befehl einzubauen?
Das ist ja auch in anderen Programmiersprachen möglich und würde manche Scripts sehr vereinfachen ...
z.B.:
Code: Select all
<switch var="#AAA">
     <case val="900"|val="901"|val="902">
     ...
Last edited by Signalmast88 on 11.03.2018, 20:22, edited 1 time in total.
Liebe Grüße, Robert.

Spur H0, Rocrail 64 Bit auf Win7, GBMboost, GBM16T, LightControl, NeoControl, OneControl, OneOC, MoBaLiSt64 (zweckentfremdet)
Signalmast88
 

Re: Logische Verknüpfungen in switch-Anweisung

Postby Signalmast88 » 11.03.2018, 18:45

Hi Rob,

kannst du mir bitte kurz mitteilen, ob sich das mit vertretbarem Aufwand realisieren lässt?
Vielen Dank.
Liebe Grüße, Robert.

Spur H0, Rocrail 64 Bit auf Win7, GBMboost, GBM16T, LightControl, NeoControl, OneControl, OneOC, MoBaLiSt64 (zweckentfremdet)
Signalmast88
 

Re: Logische Verknüpfungen in switch-Anweisung

Postby rjversluis » 11.03.2018, 20:07

Hi Robert,

nein, das implementiere ich nicht.
Ich kenne keine Programmiersprache welche so ein Konstrukt unterstützt.
Verwende einfach IF statements.
Best Regards, Rob.
:!: PS: Do not forget to attach the usual files.
:!: PS: Nicht vergessen die übliche Dateien an zu hängen.
[ macOS - Linux] - [ N: CBus - CAN-GCA ] - [ 0: RocNetNode - GCA-Pi ]
rjversluis
Site Admin
 

Re: Logische Verknüpfungen in switch-Anweisung

Postby Signalmast88 » 11.03.2018, 20:18

Hi Rob,

ok, danke für die Info.
Klar geht es mit if's auch, aber wenn man mehrere Optionen hat, von denen einige die gleiche Prozedur verlangen, dann wäre es halt mit switch etwas eleganter :wink:
Übrigens: hier ein Beispiel, dass es so etwas in anderen Programmiersprachen doch gibt:

Code: Select all
Dim number As Integer = 8
Select Case number
    Case 1 To 5
        Debug.WriteLine("Between 1 and 5, inclusive")
        ' The following is the only Case clause that evaluates to True.
    Case 6, 7, 8
        Debug.WriteLine("Between 6 and 8, inclusive")
    Case 9 To 10
        Debug.WriteLine("Equal to 9 or 10")
    Case Else
        Debug.WriteLine("Not between 1 and 10, inclusive")
End Select
Liebe Grüße, Robert.

Spur H0, Rocrail 64 Bit auf Win7, GBMboost, GBM16T, LightControl, NeoControl, OneControl, OneOC, MoBaLiSt64 (zweckentfremdet)
Signalmast88
 

Re: Logische Verknüpfungen in switch-Anweisung

Postby rjversluis » 11.03.2018, 20:20

Hi Robert,

so ein blöde Konstrukt habe ich bis her nicht beobachtet.
Wie schon berichtet: Vergesse es.

https://www.amazon.de/Programming-Langu ... =c+ritchie
Best Regards, Rob.
:!: PS: Do not forget to attach the usual files.
:!: PS: Nicht vergessen die übliche Dateien an zu hängen.
[ macOS - Linux] - [ N: CBus - CAN-GCA ] - [ 0: RocNetNode - GCA-Pi ]
rjversluis
Site Admin
 

Re: [Erledigt] Logische Verknüpfungen in switch-Anweisung

Postby sakagu » 13.03.2018, 07:50

Hallo Robert,

das "|" ist ja hier im xml-script nur dann ein "ODER" wenn danach noch steht: alltrue="false", ansonsten ist es ein "UND".
Hab mich allerdings auch schon gefragt, ob es solche Verknüpfungen hier im xml-script bei der Switch-Anweisung auch gibt.
In C gibt es was ähnliches, sieht dann so aus:

switch (variable) {
case 0:
case 1:
do_something = irgendwas;
break;
default:
break;
}

Hier spielt ja Case 0 und Case 1 ohne break dazwischen ein "ODER", da do_something ausgeführt wird, wenn entweder variable == 0 oder == 1 ist.
Solche switches in C sind meines Wissens schon sehr verbreitet und entsprechen auch dem ANSI-C.
Aber wie Rob schreibt, man kann es auch mit lauter if machen, das ganze switch selber kann ja mit if abgebildet werden.

Grüße
Walter
Märklin K-Gleis, ECOS 50000 mit Software 4.2.2, Rocrail auf Win 10
sakagu
 

Re: [Erledigt] Logische Verknüpfungen in switch-Anweisung

Postby Signalmast88 » 13.03.2018, 08:53

Hallo Walter,

ja, ich weiß. Aber nachdem Rob so etwas leider ablehnt, habe ich es eben mit einigen if's programmieren müssen.
Der Code wird dadurch zwar um einiges länger, ziemlich unübersichtlich und ist bei weitem nicht so elegant, aber was soll's ... :|
Liebe Grüße, Robert.

Spur H0, Rocrail 64 Bit auf Win7, GBMboost, GBM16T, LightControl, NeoControl, OneControl, OneOC, MoBaLiSt64 (zweckentfremdet)
Signalmast88
 

Re: [Erledigt] Logische Verknüpfungen in switch-Anweisung

Postby rjversluis » 13.03.2018, 09:03

Moin,

ich schaue mal ob so was möglich ist:

Code: Select all
<switch var="#AAA">
     <case val="900|901|902">
Best Regards, Rob.
:!: PS: Do not forget to attach the usual files.
:!: PS: Nicht vergessen die übliche Dateien an zu hängen.
[ macOS - Linux] - [ N: CBus - CAN-GCA ] - [ 0: RocNetNode - GCA-Pi ]
rjversluis
Site Admin
 

Re: [Erledigt] Logische Verknüpfungen in switch-Anweisung

Postby rjversluis » 13.03.2018, 09:26

Moin,

ich habe es jetzt für Integers so implementiert.

http://wiki.rocrail.net/doku.php?id=xml ... -en#switch
Best Regards, Rob.
:!: PS: Do not forget to attach the usual files.
:!: PS: Nicht vergessen die übliche Dateien an zu hängen.
[ macOS - Linux] - [ N: CBus - CAN-GCA ] - [ 0: RocNetNode - GCA-Pi ]
rjversluis
Site Admin
 

Re: [Erledigt] Logische Verknüpfungen in switch-Anweisung

Postby sakagu » 13.03.2018, 20:29

Hi Rob,

danke! Find ich super, dass du das doch noch implementiert hast. Diese Erweiterung wird auch bei mir zu besserer Lesbarkeit beitragen und wird mir auch Tipparbeit ersparen ... ;-)

Grüße
Walter
Märklin K-Gleis, ECOS 50000 mit Software 4.2.2, Rocrail auf Win 10
sakagu
 


Return to XMLScripting (DE)