1. Artikel
  2. Mitglieder
    1. Letzte Aktivitäten
    2. Benutzer online
    3. Team
    4. Mitgliedersuche
  3. Forum
  • Anmelden
  • Registrieren
  • Suche
Dieses Thema
  • Alles
  • Dieses Thema
  • Dieses Forum
  • Artikel
  • Seiten
  • Forum
  • Erweiterte Suche
  1. Paules-PC-Forum.de
  2. Forum
  3. Programmierung
  4. XProfan
  5. XProfan-Stammtisch

CaseOf

  • H.Brill
  • 13. Juli 2023 um 10:24
  • H.Brill
    Stammuser
    Reaktionen
    483
    Beiträge
    1.178
    • 13. Juli 2023 um 10:24
    • #1

    Hallo,

    ich habe mal Versuche mit Select...EndSelect gemacht, da ich selber in einem meiner Programme

    darüber gestolpert bin.

    Und zwar geht es darum, bestimmte Bereiche (z.B. 600 - 630) über CaseOf abzufragen. Hier stößt man bei Select...EndSelect

    auf Stolpersteine. Gerade Anfänger könnten so in die Falle tappen.

    Code
    Cls
    Print "mit CASEOF\n"
    Test1(5)
    Test1(12)
    Test1(32)
    Test1(620)
    
    Print
    Print "mit IF\n"
    Test2(5)
    Test2(12)
    Test2(32)
    Test2(629)
    
    Waitkey
    
    Proc Test1
    Parameters long x
    Select x
      CaseOf  > 0, < 10  '1,2,3,4,5,6,7,8,9
        Print "einstellig"
      CaseOf  > 9, < 30 '10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29 
       Print "10er und 20er"
      CaseOf >= 600, <= 630
       Print "liegt im Bereich !"
      Otherwise
       Print "höher als 30 oder kleiner 1"
    EndSelect
    EndProc
    
    Proc Test2
    Parameters long x
    If (x > 0) And (x < 10)
     Print "einstellig" 
    ElseIf (x > 9) And (x < 30)
      Print "10er und 20er"
    ElseIf (x >= 600) And (x <= 630)
      Print "liegt im Bereich !"
    Else
      Print "höher als 30 oder kleiner 1"
    EndIf
    EndProc
    
    End
    Alles anzeigen

    Da in der Hilft bei SELECT steht :

    Spoiler anzeigen

    Select ... CaseOf ... Otherwise ... EndSelect

    Die Funktion der SELECT-Struktur entspricht im Wesentlichen einer IF/ELSEIF-Struktur.

    sollte auch entsprechend der IF-Struktur ein AND und ein OR bei der Select-Anweisung möglich sein.

    Das würde mir auch logischer erscheinen. Natürlich könnte man jetzt sagen, daß man doch die BETWEEN()

    Funktion nutzen sollte, aber das ist ja nicht das Thema.

    Auch ein Konstrukt, ähnlich wie bei den regulären Ausdrücken, könnte ich mir vorstellen :

    Code
    [600-639], [0-9] [a-z]{1}

    Wäre vielleicht auch interessant.

    Wir sind die XProfaner.

    Sie werden von uns assimiliert.

    Widerstand ist zwecklos!

    Wir werden alle ihre Funktionen und Algorithmen

    den unseren hinzufügen.

  • p. specht
    Premium-Mitglied
    Reaktionen
    986
    Beiträge
    5.665
    • 13. Juli 2023 um 21:12
    • #2

    Ich nutze (bei float-Variablen) manchmal BETWEEN(x, min, max)

    Keine Ahnung, ob das schnell genug ist ...

    HP255G7:Win10pro2.004,4*AMD Ryzen3200U@2.60GHz,6+2GB-RadeonVega/237GBSSD:intlDVDRW,3xUSB3 ext4TB-HDX,XProfanX3+Xasm/Xpse

  • H.Brill
    Stammuser
    Reaktionen
    483
    Beiträge
    1.178
    • 14. Juli 2023 um 07:19
    • #3
    Zitat von p. specht

    Ich nutze (bei float-Variablen) manchmal BETWEEN(x, min, max)

    Keine Ahnung, ob das schnell genug ist ...

    Hab ich oben ja geschrieben, das das nicht das Thema ist.

    Übrigens geht Between(x, min, max) auch mit Integer/Long - Variablen bzw. Werten.

    Nur Range() gibt Float zurück, das man aber mit INT() konvertieren kann.

    Wir sind die XProfaner.

    Sie werden von uns assimiliert.

    Widerstand ist zwecklos!

    Wir werden alle ihre Funktionen und Algorithmen

    den unseren hinzufügen.

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!

Benutzerkonto erstellen Anmelden

Windows 11

Ähnliche Themen

  • Rasterbild (Millimeterpapier)

    • H.Brill
    • 11. Mai 2023 um 09:40
    • Algorithmen und Lehrreiches
  1. Datenschutzerklärung
  2. Impressum
Community-Software: WoltLab Suite™