Select Case mit logisch AND und OR Vergleich

Programmierung unter AOO/LO (StarBasic, Python, Java, ...)

Moderator: Moderatoren

Benutzeravatar
Faol
***
Beiträge: 73
Registriert: Di, 26.01.2016 21:18

Select Case mit logisch AND und OR Vergleich

Beitrag von Faol » Do, 26.04.2018 17:57

Hallo,

Ich bin ratlos bzgl. nachfolgenden Codes

Code: Alles auswählen

REM  *****  BASIC  *****
'Case Is >= 75 And intResult < 90
'**************************************************************************
REM funktionierende Anweisung
Sub aCase
x=10
a="a"

Select Case x
	Case  10
		Print x
	Case Else
		Print "nix"
End Select

End Sub

'**************************************************************************
REM Anweisung funktioniert nicht
Sub bCase
x=10
a="a"

REM Anweisung funktioniert nicht
REM ODER wird ignoriert
Select Case x
	Case  1 OR a="a"
		Print x
	Case Else
		Print "nix"
End Select

End Sub

'**************************************************************************
REM Anweisung funktioniert nicht
REM Ausserdem wird Operator nicht erkannt Fehler = <10 
'Sub cCase
'x=10
'a="a"
'
'Select Case x
'	' Wenn Case(x) = 10 UND a="a" dann Print x
'	' ODER
' 	' Wenn Case(x) < 10 UND a="z" dann Print x
'	Case  10 AND a="a" OR <10 AND a="z"
'		Print x
'	Case Else
'		Print "nix"
'End Select
'
'End Sub
Mich interessiert, wie man die Anweisung für die Routine "'Sub cCase" schreiben muss,
damit die kombinierte UND/ODER Abfrage funktioniert.
Und eine Info, warum, der Operator in [OR <10] bei Ausführung zu einem Fehler führt.

Hintergrund ich habe in dem Originalcode viele CASE-Abfragen, die ich gerne logisch zusammnefassen würde.
Mit einer IF-Anweisung funktioniert die logische Prüfung und Zusammenfassung.
In meinem Fall ist die SELECT-Anweisdung etwas übersichtlicher, zumal ich den Code für
jemand anderes schreibe, der ein absoluter Basicanfänger ist.

Vielen Dank.

Gruß
Faol
⇒⇒⇒⇒⇒⇒⇒⇒⇒⇒⇒⇒⇒⇒⇒⇒⇒⇒⇒
Win.10 Prof. (x64) • AOO 4.1.5
⇐⇐⇐⇐⇐⇐⇐⇐⇐⇐⇐⇐⇐⇐⇐⇐⇐⇐⇐

F3K Total
********
Beiträge: 3212
Registriert: Mo, 28.02.2011 17:49

Re: Select Case mit logisch AND und OR Vergleich

Beitrag von F3K Total » Do, 26.04.2018 19:00

Hi,
da select Case nur einen boolean Wert verarbeiten kann, siehe https://wiki.openoffice.org/wiki/Docume ... /Branching, würde ich das OR als erstes berechnen:

Code: Alles auswählen

Sub bCase

x=10
a="a"

if (x=9) OR (a="a") then bTrue = true else bTrue = false
'print btrue
Select Case bTrue
	Case true
		Print x
	Case Else
		Print "nix"
End Select

End Sub
Gruß R

Benutzeravatar
Faol
***
Beiträge: 73
Registriert: Di, 26.01.2016 21:18

Re: Select Case mit logisch AND und OR Vergleich

Beitrag von Faol » Do, 26.04.2018 22:12

Hallo R,

vielen Dank für diese Antwort und Deine vielen Beiträge von denen ich sehr profitiert habe. :D

In der Zwischenzeit habe ich im eBook „AndrewMacro.odt“ von Andrew Pitonyak ab Seite 422
die Verwendung von einer IIf-Anweisung in einer Select-Case-Anweisung gefunden.
Wobei diese Logik funktioniert, allerdings keine weitere Verschachtelung, zumindest die ich bisher durchgetestet habe:
REM IIf (Ausdruck, AusdruckWahr, AusdruckFalsch)

Code: Alles auswählen

Sub eCase
x=9
a="a"
y=1
REM http://www.pitonyak.org/AndrewMacro.odt 
REM ab Seite 422
REM IIf (Ausdruck, AusdruckWahr, AusdruckFalsch) | https://help.libreoffice.org/3.6/Basic/IIf_Statement_Runtime/de
	Select Case x
		Case IIf(x > 8 AND a="a", x, x+1)
			Print "x = " & x
		Case Else
			Print "nix"
	End Select
End Sub
Ich werde mal sehen, wie ich die neuen Informationen in meinem Originalcode einsetzen kann,
damit dieser bei den vielen Abfragen übersichtlicher wird.

Nochmals vielen Dank

Gruß
Faol
⇒⇒⇒⇒⇒⇒⇒⇒⇒⇒⇒⇒⇒⇒⇒⇒⇒⇒⇒
Win.10 Prof. (x64) • AOO 4.1.5
⇐⇐⇐⇐⇐⇐⇐⇐⇐⇐⇐⇐⇐⇐⇐⇐⇐⇐⇐

Antworten