ERROR: yacc stack overflow

  • ich habe ein ziemlich langes if-statement

    [autoit]

    If $bcheck = ">> vvss" Or $bcheck = ">> vv00" Or $bcheck = ">> vv01" Or $bcheck = ">> vv02" Or $bcheck = ">> vv03" [...] Then

    [/autoit]


    das geht bis vv128.

    Wie kann ich das kürtzen?

    Thx schonmal :D

    Einmal editiert, zuletzt von hofi02 (12. Juni 2008 um 17:56)

  • ich check das grad net wie ich das umschreiben muss, das beispiel aus der hilfe hilft mir auch nicht weiter :huh:

    Könntest mir da mal bitte weiterhelfen? :)

    • Offizieller Beitrag

    Hi!

    Sind wir mal nicht so :D.

    [autoit]

    Dim $result = false;
    If $bcheck = ">> vvss" Then $result = true;
    For $i = 0 to 128
    If $bcheck = ">> vv" & $i Then $result = true;
    Next

    [/autoit]

    So in der Art, du hast das Ergebnis der Auswertung dann in $result, kannst also folgendes machen:

    [autoit]

    If $result Then
    ; bisheriger Code in der If-Klausel
    EndIf

    [/autoit]

    Eventuell musst du $i noch mit StringFormat als 2- oder 3-stellige Zahl umwandeln lassen :).

    Viel Erfolg,
    peethebee

  • Wenn gefunden, kann die Schleife abgebrochen werden

    [autoit]

    Dim $result = false;
    If $bcheck = ">> vvss" Then $result = true;
    For $i = 0 to 128*($Result == False) ; Keine Schleife, wenn $result = true
    If $bcheck = ">> vv" & $i Then
    $result = true ;
    ExitLoop
    EndIf
    Next

    [/autoit]
  • Danke ihr seit die besten das funktioniert ohne probleme

    edit: ich bekomm die zahl mit StringFormat nicht richtig formatiert ic hbekomme z.b immer 000100 oder 00080 raus
    bzw. versteh ic hnicht ganz wie der befehl funktioniert.

    Einmal editiert, zuletzt von hofi02 (9. Juni 2008 um 20:22)

  • Du brauchst: %02d
    % -> Variable
    0 -> Mit Nullen auffüllen
    2 -> Mind. 2 Stellen
    d -> decimal Integer

    [autoit]

    For $i = 0 To 128
    ConsoleWrite(StringFormat ( ">> vv%02d" ,$i) & @CRLF)
    Next

    [/autoit]