[Gelöst] If ...Then Schleife mit Stringlen 2 Varianten konstruieren...

  • Hallo


    Vorweg, ich nutze noch: autoit3.exe - AU3Check (3.3.10.0), AutoIt3Wrapper v.2.1.4.3, SciTE v.3.5.1.0
    Bin in der Zeit von Damals stehen geblieben... Evtl. könnt Ihr mir deswegen nicht weiterhelfen, aber ich probiere es mal.

    Ich will mit 'stringlen' ein Input prüfen und müßte jetzt eine If...Then schleife konstruieren, da weiß ich nicht weiter.

    Im Hauptordner sind "Angebot 2009", Unterordner 01-1234-9 (alle vor 2010 nur 1Zahl als letztes)
    Im Hauptordner sind "Angebot 2010", Unterordner 01-1234-10 (alle nach 2010 2Zahlen als letztes)

    - Wenn im Input $IAA nur 1 Zahl eingegeben wurde, dann soll eine Null vorne angehängt werden
    - Wenn im Input $IAA 2 Zahlen eingegeben wurden, dann soll die Zahl so belassen werden
    - $OrdAngAlt muß als Ausgabe also immer mit Null sein, also "Angebot 2009" weil einen Ordner "Angebot 209" gibts nicht!
    - Wobei $AngAltGanzNum auch nur eine Zahl als letztes haben kann 01-1234-9 (alle vor 2010 nur 1Zahl als letztes)


    Hier mal das ganze Script
    Ich habe mir das in Zeile 203 mit einer MSGBox ausgeben lassen um zu sehen was ich erhalte.
    evtl. kann man ja auch eine Globale Varialble machen, weil ich muß das ganze auch in Zeile 150 machen.


    Wenn was unklar ist fragt.

    Einmal editiert, zuletzt von Fintan (11. Januar 2016 um 20:22)

    • Offizieller Beitrag

    Die ganze StringLen Abfrage kannst du dir mit StrinFormat sparen

  • Hallo Raupi

    Hm, triffts leider nicht ganz, jetzt kommt bei 1Zahl als Ergebnis "Angebot 20 9" also ein Leerzeichen drin, somit findet er den Ordner nicht,
    bei 2 Zahlen funktionierts.
    gebraucht werden aber 2 variablen mit der Abfrage bei Eingabe von 1Zahl, einmal mit aufgefüllter Null "09", einmal nur so"9"

    So soll es sein bei Eingabe 1Zahl, z.B.: 9, "...\Angebot 2009\01-1234-9:
    $OrdAngAlt immer mit Null sein = "Angebot 2009", weil einen Ordner "Angebot 20 9" gibts nicht!
    $AngAltGanzNum = 01-1234-9 (alle vor 2010 nur 1Zahl als letztes)

    So soll es bei Eingabe 2Zahlen sein, z.B.: 10, "...\Angebot 2010\01-1234-10":
    $OrdAngAlt ließt 2 stellige Zahl aus, also 10 = "Angebot 2010"
    $AngAltGanzNum = 01-1234-10 (alle nach 2009 2Zahlen als letztes)

    3 Mal editiert, zuletzt von Fintan (26. Februar 2016 um 20:33)

    • Offizieller Beitrag

    Um das ganze leichter zu machen, wo genau trifft der Fehler auf (Funktion, Zeilennummer) ?
    Deine Variablennamen sind alles andere als leicht zu lesen und ich habe deine Verzeichnisstruktur nicht.

    Edit: Benutze mal diesen StrinFormat:

    StringFormat("%02s", GUICtrlRead($InpAngAlt3)

    Edit 2: Ich hab bei StringFormat gepennt und vergessen die führende 0 einzubauen.
    Beim 1. Script von mir einfach "%02i" anstatt "%2i" bei StringFormat verwenden, alternativ auch "%02s" das kommt aufs gleiche raus, da Autoit Int und String gleich behandelt.

  • Guten Morgen Raupi

    Danke für deine Mühe, jeztzt geht es doch mit Stringlen,
    ich hatte nur eine Variable falsch plaziert in Zeile 153, weswegen es nicht klappte.

    Case $Jump2AngAlt
    Local $IAA = GUICtrlRead($InpAngAlt3) ; ließt die Zahl 9 aus
    $OrdAngAlt = $OrdAngJa & "20" & $IAA & "\" ; bei 2 Zahlen (10) = Angebot 2010
    If (StringLen($IAA) < 2) Then $OrdAngAlt = $OrdAngJa & "20" & "0" & $IAA & "\" ; wenn nur 1 Zahl (9), dann addierts Null dazu = Angebot 2009
    ShellExecute($OrdAngJa & "20" & $IAA & "\", "", "", "open") <- falsche Variable so nicht
    ShellExecute($OrdAngAlt, "", "", "open") ; so funktionierts jetzt

    manchmal muß man einfach noch mal eine Nacht drüber schlafen

    und in Zeile 202 dann so:

    ; wie in meinem Beispiel Oben
    Func _goAngAlt()

    Local $IAA = GUICtrlRead($InpAngAlt3) ; ließt die Zahl 9 aus
    Local $AngAltGanzNum = GUICtrlRead($InpAngAlt1) & '-' & GUICtrlRead($InpAngAlt2) & '-' & $IAA ; setzt 01-1234-9 zusammen
    $OrdAngAlt = $OrdAngJa & "20" & $IAA & "\" ; bei 2 Zahlen (10) = Angebot 2010
    If (StringLen($IAA) < 2) Then $OrdAngAlt = $OrdAngJa & "20" & "0" & $IAA & "\" ; wenn nur 1 Zahl (9), dann addiert Null dazu = Angebot 2009

    If Not FileExists($OrdAngAlt & $AngAltGanzNum) Then
    MsgBox(64, $Fel, $OrdNix, 2)
    Else
    ShellExecute($AngAltGanzNum, "", $OrdAngAlt, "open")
    EndIf
    EndFunc ;==>_goAngAlt

    3 Mal editiert, zuletzt von Fintan (26. Februar 2016 um 20:34) aus folgendem Grund: Bild eingefügt

  • Hi Raupi

    Nur noch als Rückmeldung.
    StringFormat("%02d", GUICtrlRead($InpAngAlt3) funktioniert, hatte nur meine 2. Variable falsch konstruiert...
    und ist auf jeden Fall kürzer wie meine 'gschreibsel'.