thepinky
Goto Top

Erklärung einfacher If Bedingung mit Boolean Wert (wie komm ich an die Werte?)

Hallo zusammen,

habe ein Programm vorliegen, welches ich gerne erweitern möchte.
Beim Datenimport, möchte ich zwischen drei möglichen Versionen unterscheiden.
Bisher unterscheidet das Programm schon zwischen Standard und wir nennen es mal bJG.
Will noch ein weitere Entscheidung implementieren. (z.B. cJG)

bJG wurde als Bololean Variable deklariert und false initialisiert.

Ich würde gerne nachvollziehen, wodurch sich der Wert der Variablen bJG auf true ändert.
Mal schauen ob das ganze überhaupt durch posten von nur einigen Codezeilen möglich ist. Sonst werde ich noch weitere Informationen bereitstellen.

Die Daten die ankommen sind in der Variablen sText as String gespeichert.
sText enthällt:
ST C7
JG 0 1 4 0 0 0 96
SE AC0N000282 13.0.0 46
DA 2023/11/06 12:43:37 7A
MS TEST 20
LO BB
CH AB
IT 1 31.911 mm SCi 1 {C8;4}32.000 0.100 -0.100 OK 10
EN B3
Die Unterscheidungsmerkmale in dem Inputstring sind: Standard ohne JG in der zweiten Zeile und die dritte Variante wäre identisch wie bJG allerdings enthält die achte Zeile zusätzlich {C } diese würde ich gerne als Unterscheidungsmerkmal verwenden..

Anbei noch eine Codestelle wodurch ich vermute die aktuelle Unterscheidung stattfindet.

        Hauptmenü.bJG = IIf(InStr(sText, My.Settings.zBauteilzaehler) > 0, True, False)
        If Hauptmenü.bJG Then

Also eigentlich sind es zwei Themen die ineinander greifen .
Ich möchte gerne das aktuelle ein wenig besser verstehen und im Nachgang gerne dritte Unterscheidung implementieren.

Vielen Dank im voraus!

Content-ID: 23788264993

Url: https://administrator.de/contentid/23788264993

Ausgedruckt am: 21.11.2024 um 22:11 Uhr

MirkoKR
MirkoKR 04.08.2024 um 10:29:21 Uhr
Goto Top
Moin.

... die Codezeilen, die durch IF deine Variable füllen sind sicher notwendig (in Code-TAGS!)

... und natürlich kannst du ungesehen, nach der ersten IF-Zeile weitere entsprechende einfügen ...

Bleibt aber die Frage, ob unsere berühmt-berüchtigten Poweshell-Skripter da was elleganteres haben ... 🤔

... nach deinem Edit: wo kommt
"My.Settings.zBauteilzaehler" her?
thepinky
thepinky 04.08.2024 um 10:51:46 Uhr
Goto Top
Guter Hinweis bzgl. Bauteilzähler.
Habe gerade eine Haltepunkt eingefügt und erkannt, dass der Bauteilzähler JG enthält. (oder auch nicht)

Wenn ich dort auf "Gehe zu Definition" gehe kommt folgender Code:

      
  Public Property zBauteilzaehler() As String
            Get
                Return CType(Me("zBauteilzaehler"),String)  
            End Get
            Set
                Me("zBauteilzaehler") = value  
            End Set
        End Property

Habe keine Ahnung wie man darüber auf das ausgelesene JG kommt.
Kann ich diesen Weg auch die andere Variante verwirklichen? Also {C } auslesen?
13910172396
13910172396 04.08.2024 aktualisiert um 11:14:09 Uhr
Goto Top
Online-Demo

Gruß Strods
cykes
cykes 04.08.2024 um 11:21:38 Uhr
Goto Top
Moin,

bin jetzt nicht so der große (VBA-)Entwickler, aber vielleicht kann ich zumindest zum besseren Verständnis beitragen face-wink

Deine Codezeile:

Hauptmenü.bJG = IIf(InStr(sText, My.Settings.zBauteilzaehler) > 0, True, False)
sucht mittels InStr-Funktion in sText nach dem ersten vorkommen von 'JG' - kommt 'JG' im sText vor ist die Bedingung > 0 (erste Position im Suchtext wird zurückgegeben) erfüllt und bJG wird auf TRUE gesetzt, bei = 0 (JG nicht vorhanden) entsprechend auf FALSE.
Siehe:
- IIf Funktion
- InStr Funktion

hat InStr nur zwei Argumente bedeutet das InStr(<Zeichenfolge, die durchsucht wird>,<Zeichenfolge, die gesucht wird>)

Also muss der zBauteilzaehler noch irgendwo anders im Code auf 'JG' gesetzt werden (oder eben nicht). Was beinhaltet denn die Variable value?

Gruß

cykes
thepinky
thepinky 04.08.2024 aktualisiert um 11:38:40 Uhr
Goto Top
Also müsste es ja auch funktionieren, wenn ich "My.Settings.zBauteilzaehler" durch "JG" ersetze.

So funktioniert es auch...

 'Hauptmenü.bJG = IIf(InStr(sText, My.Settings.zBauteilzaehler) > 0, True, False)  
 Hauptmenü.bJG = IIf(InStr(sText, "JG") > 0, True, False)  
 If Hauptmenü.bJG Then

Aber da hat sich bestimmt jemand etwas bei gedacht. face-smile

Value steht so bei allen Properties, wird aber entsprechend immer etwas anderes zugewiesen. (hoffentlich habe ich jetzt nicht totalen Blödsinn geschrieben)
cykes
cykes 04.08.2024 um 12:10:02 Uhr
Goto Top
Strods hat Dir oben schon einen Lösungsvorschlag für Deine Erweiterung geliefert ...
Zitat von @thepinky:
Aber da hat sich bestimmt jemand etwas bei gedacht. face-smile
Mit Sicherheit, aber ohne den kompletten Code zu kennen, können wir da schlecht eine Aussage treffen.
Value steht so bei allen Properties, wird aber entsprechend immer etwas anderes zugewiesen. (hoffentlich habe ich jetzt nicht totalen Blödsinn geschrieben)
Value beinhaltet vermutlich immer die ersten beiden Buchstaben am Anfag jeder Zeile (also ST, JG, SE ... EN) und weist das einer entsprechenden Variable zu.