Seite 1 von 1

Aufruf zwei gleicher For-Schleifen

Verfasst: 13.12.2019 12:21
von Espoleon
Hallo,

da ich seit Tagen nicht auf die Lösung eines Rätsels komme, möchte ich es mal hier versuchen.

Ich rufe zwei For-Schleifen bei einem Linksklick, auf ein ImageGadget, auf. Das Resultat wird nur von der ersten For-Schleife angezeigt und ich weiß nicht wieso.

Vielleicht sieht jemand von euch die Lösung.

For-Schleifen:

Code: Alles auswählen

If DM_Settings_Navi_Mode.i = 0 And DM_Settings_Navi_ModeString.s = "Text"

  For DM_Content_Navi_Show.i = CP::List_Func(5, 0, "", "", "", "", 0, "Digital Media", "Vars Cons Coords", "Navi Main Switch ID") To (DM_Helper_List_Count_NaviMainEntries() * 58) Step 58

    If IsGadget(DM_Content_Navi_Show.i) <> 0
      HideGadget(DM_Content_Navi_Show.i, 1)
    EndIf

    If IsGadget(DM_Content_Navi_Show.i + 29) <> 0
      HideGadget(DM_Content_Navi_Show.i + 29, 0)
    EndIf

  Next

ElseIf DM_Settings_Navi_Mode.i = 1 And DM_Settings_Navi_ModeString.s = "Icons"

  For DM_Content_Navi_Show.i = CP::List_Func(5, 0, "", "", "", "", 0, "Digital Media", "Vars Cons Coords", "Navi Main Switch ID") To (DM_Helper_List_Count_NaviMainEntries() * 58) Step 58

    If IsGadget(DM_Content_Navi_Show.i) <> 0
      HideGadget(DM_Content_Navi_Show.i, 0)
    EndIf

    If IsGadget(DM_Content_Navi_Show.i + 29) <> 0
      HideGadget(DM_Content_Navi_Show.i + 29, 1)
    EndIf

  Next

EndIf



If DM_Settings_Navi_Mode.i = 0 And DM_Settings_Navi_ModeString.s = "Text"

  For DM_Content_Navi_Show.i = CP::List_Func(5, 0, "", "", "", "", 0, "Digital Media", "Vars Cons Coords", "Navi Games Switch ID") To (DM_Helper_List_Count_NaviGamesEntries() * 58) Step 58

    If IsGadget(DM_Content_Navi_Show.i) <> 0
      HideGadget(DM_Content_Navi_Show.i, 1)
    EndIf

    If IsGadget(DM_Content_Navi_Show.i + 29) <> 0
      HideGadget(DM_Content_Navi_Show.i + 29, 0)
    EndIf

  Next

ElseIf DM_Settings_Navi_Mode.i = 1 And DM_Settings_Navi_ModeString.s = "Icons"

  For DM_Content_Navi_Show.i = CP::List_Func(5, 0, "", "", "", "", 0, "Digital Media", "Vars Cons Coords", "Navi Games Switch ID") To (DM_Helper_List_Count_NaviGamesEntries() * 58) Step 58

    If IsGadget(DM_Content_Navi_Show.i) <> 0
      HideGadget(DM_Content_Navi_Show.i, 0)
    EndIf

    If IsGadget(DM_Content_Navi_Show.i + 29) <> 0
      HideGadget(DM_Content_Navi_Show.i + 29, 1)
    EndIf

  Next

EndIf
Der Code DM_Helper_List_Count_NaviGamesEntries() * 58, DM_Helper_List_Count_NaviGamesEntries() * 58 gibt die Anzahl der Einträge aus der Liste (List_Main()) zurück. Die * 58 beziehen sich auf 58 Elemente je Eintrag und da nur die Einträge gezählt werden sollen, werden mit * 58 die Elemente übersprungen. Zu jedem Eintrag gehört außerdem ein Icon-Eintrag, welcher ebenfalls die selben Elemente verwendet (sowohl der Eintrag als auch der Icon-Eintrag verwenden jeweils diese Elemente aber jeder Eintrag und jeder Icon-Eintrag kann seine eigenen Werte zu den Elementen haben). Daher * 58, um wirklich nur jeden einzelnen Eintrag zu zählen.

Zur Verdeutlichung:

Eintrag
Switch
Switch Icon
Summary
Summary Icon
...

List_Main
Eintrag ID
Eintrag X
Eintrag Y
Eintrag W
Eintrag H
Eintrag Text
Eintrag TextFont
Eintrag SubText
Eintrag SubTextFont
Eintrag IconID
Eintrag IconOverID
Eintrag IconOpacity
Eintrag IconOpacityOver
Eintrag ImageID
Eintrag ImageOverID
Eintrag Color Text
Eintrag Color TextOver
Eintrag Color SubText
Eintrag Color SubTextOver
Eintrag Color Background
Eintrag Color BackgroundOver
Eintrag Color EdgeTop
Eintrag Color EdgeRight
Eintrag Color EdgeBottom
Eintrag Color EdgeLeft
Eintrag Color EdgeTopOver
Eintrag Color EdgeRightOver
Eintrag Color EdgeBottomOver
Eintrag Color EdgeLeftOver

Ein Debug "Navi Games" direkt nach dem ersten For, in der zweiten Ausführung (also ab dem zweiten If DM_Settings_Navi_Mode.i = 0 And DM_Settings_Navi_ModeString.s = "Text") wird nicht angezeigt. Das sagt mir bisher nur das der Inhalt des zweiten Aufrufs nicht abgearbeitet / ausgeführt wird.
Nur, wieso?


Danke euch im voraus!

Re: Aufruf zwei gleicher For-Schleifen

Verfasst: 13.12.2019 13:34
von ccode_new
Espoleon hat geschrieben: Ein Debug "Navi Games" direkt nach dem ersten For, in der zweiten Ausführung (also ab dem zweiten If DM_Settings_Navi_Mode.i = 0 And DM_Settings_Navi_ModeString.s = "Text") wird nicht angezeigt.
Ein Debug direkt nach:
If DM_Settings_Navi_Mode.i = 0 And DM_Settings_Navi_ModeString.s = "Text"
wird aber ausgeführt, oder ?

Re: Aufruf zwei gleicher For-Schleifen

Verfasst: 13.12.2019 13:51
von Espoleon
Ja, wird im oberen Teil (erste und zweite For-Schleife) ausgegeben.

Nachtrag:
Ja, wird auch im unteren Teil vor der ersten For-Schleife ausgegeben.

Re: Aufruf zwei gleicher For-Schleifen

Verfasst: 13.12.2019 14:12
von ccode_new
Was gibt den das hier zurück ?

Debug CP::List_Func(5, 0, "", "", "", "", 0, "Digital Media", "Vars Cons Coords", "Navi Games Switch ID")

Debug (DM_Helper_List_Count_NaviGamesEntries() * 58)

Re: Aufruf zwei gleicher For-Schleifen

Verfasst: 13.12.2019 14:32
von Espoleon
Setze ich das

Code: Alles auswählen

Debug CP::List_Func(5, 0, "", "", "", "", 0, "Digital Media", "Vars Cons Coords", "Navi Games Switch ID")
Debug (DM_Helper_List_Count_NaviGamesEntries() * 58)
direkt nach dem If DM_Settings_Navi_Mode.i = 0 And DM_Settings_Navi_ModeString.s = "Text" im unteren Teil, dann erhalte ich

Code: Alles auswählen

[13:17:15] [Debug] 567
[13:17:15] [Debug] 464
Die erste ID is korrekt, was man an folgendem Bild erkennen kann, die zweite ID ist hier nicht richtig und bringt mich vorerst wieder auf eine zu korrigierende Fehlerquelle.


Danke ccode_new

Bild