If Problem

  • Hallo,
    BIn grad dabei ein kleines Programm zu machen
    diese läuft mit TCP

    [autoit]

    If $Recv = $string_start then run($p_acc, $folder) and?! run($p_data, $folder

    [/autoit]


    das rote ist mein Problem, ich möchte das er
    in der If Schleife zwei oder mehrere Programme startet....
    mit and gehts iw net <.<

    Hat jemand ne Lösung?

    BizZi

    2 Mal editiert, zuletzt von BizZi (23. Februar 2010 um 18:04)

  • versuch mal dies:

    [autoit]

    If $Recv = $string_start Then
    Run($p_acc, $folder)
    Run($p_data, $folder)
    EndIf

    [/autoit]

    Edit: Ahh du hast es ja schon :D

  • also habs versucht.. bekomm dann aber ne Fehlermeldung... Endif statement with no matching If statement... das If steht aber zu 100% da x_X

  • [autoit]

    $NewSocket2 = TCPAccept($MainSocket2)
    If $NewSocket2 >= 0 Then
    Do
    $Recv2 = TCPRecv($NewSocket2,2048)
    If $Recv2 = $string_start then
    run($p_1, $folde)
    sleep($interval_run )
    run($p_2, $folder)
    sleep($interval_run )
    run($p_3, $folder)
    sleep($interval_run )
    run($p_4, $folder)
    sleep($interval_run )
    run($p_5, $folde)
    sleep($interval_run )
    run($p_6, $folder)
    sleep($interval_run )
    run($p_7, $folder)
    sleep($interval_run )
    run($p_8, $folder)
    Endif
    Until $Recv2<> ""
    EndIf

    [/autoit]


    :thumbup:

  • Der Teil den du gepostet hast, sieht absolut korrekt aus.
    Hier nochmal mit Einrückung zur besseren "Übersicht":

    Spoiler anzeigen
    [autoit]

    $NewSocket2 = TCPAccept($MainSocket2)
    If $NewSocket2 >= 0 Then
    Do
    $Recv2 = TCPRecv($NewSocket2, 2048)
    If $Recv2 = $string_start Then
    Run($p_1, $folder)
    Sleep($interval_run)
    Run($p_2, $folder)
    Sleep($interval_run)
    Run($p_3, $folder)
    Sleep($interval_run)
    Run($p_4, $folder)
    Sleep($interval_run)
    Run($p_5, $folde)
    Sleep($interval_run)
    Run($p_6, $folder)
    Sleep($interval_run)
    Run($p_7, $folder)
    Sleep($interval_run)
    Run($p_8, $folder)
    EndIf
    Until $Recv2 <> ""
    EndIf

    [/autoit]
  • Warum machst du so nen Wind um den Code? Wenn du willst, dass dir geholfen wird, dann poste den ganzen Code.

    Wenn Au3Check sagt, da fehlt ein "If", dann fehlt da ein "If" .

    Zu deiner Frage: Switch-Case-Endswitch, Select-Case-EndSelect
    Switch wird benutzt um eine Variable auf mehrere Werte zu überprüfen.

    [autoit]

    Switch GUIGetMsg()
    Case ...
    Case ...
    EndSwitch

    [/autoit]

    Select macht das gleiche wie eine If-ElseIf-EndIf Kette. Ist nur übersichtlicher und schneller.

  • Spoiler anzeigen
    [autoit]

    While 1
    $time2 = (@HOUR & ":" & @MIN & ":" & @SEC)
    $date2 = (@MDAY & "." & @MON & "." & @YEAR)
    GuiCtrlSetData($Label3, $time2)
    GuiCtrlSetData($Label2, $date2)
    GuiCtrlSetData($Input1, $ip)
    ;GuiCtrlSetData($Input2, $port)

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    $NewSocket = TCPAccept($MainSocket)
    If $NewSocket >= 0 Then
    Do
    $Recv = TCPRecv($NewSocket,2048)
    GuiCtrlSetData($Edit1, GUICtrlRead($Edit1) & @CRLF & @CRLF & "[Date] " & $date2 & @CRLF & "[Time] " & $time2)
    GUICtrlSetData($Edit1, GUICtrlRead($Edit1) & $Recv)
    $message_log2 = FileOpen($message_log, 1)
    FileWrite($message_log2, @CRLF & "[Date] " & $date2 & @CRLF & "[Time] " & $time2 & @CRLF & $Recv)
    FileClose($message_log2)
    Until $Recv <> ""
    EndIf

    [/autoit] [autoit][/autoit] [autoit]

    $NewSocket2 = TCPAccept($MainSocket2)
    If $NewSocket2 >= 0 Then
    Do
    $Recv2 = TCPRecv($NewSocket2,2048)
    If $Recv2 = $string_start then
    run($p1, $folder)
    sleep($interval_run )
    run($p2, $folder)
    sleep($interval_run )
    run($p3, $folder)
    sleep($interval_run )
    run($p4, $folder)
    sleep($interval_run )
    run($p5, $folder)
    sleep($interval_run )
    run($p6, $folder)
    sleep($interval_run )
    run($p7, $folder)
    sleep($interval_run )
    run($p8, $folder)
    Endif
    If $Recv2 = $string_restart then ProcessClose($8)
    sleep($interval_close)
    ProcessClose($7)
    sleep($interval_close)
    ProcessClose($6)
    sleep($interval_close)
    ProcessClose($5)
    sleep($interval_close)
    ProcessClose($4)
    sleep($interval_close)
    ProcessClose($3)
    sleep($interval_close)
    ProcessClose($2)
    sleep($interval_close)
    ProcessClose($1)
    sleep(1000)
    run($p1, $folder)
    sleep($interval_run )
    run($p2, $folder)
    sleep($interval_run )
    run($p3, $folder)
    sleep($interval_run )
    run($p4, $folder)
    sleep($interval_run )
    run($p5, $folder)
    sleep($interval_run )
    run($p6, $folder)
    sleep($interval_run )
    run($p7, $folder)
    sleep($interval_run )
    run($p8, $folder)
    Endif
    If $Recv2 = $string_shutdown then ProcessClose($8)
    sleep($interval_close)
    ProcessClose($7)
    sleep($interval_close)
    ProcessClose($6)
    sleep($interval_close)
    ProcessClose($5)
    sleep($interval_close)
    ProcessClose($4)
    sleep($interval_close)
    ProcessClose($3)
    sleep($interval_close)
    ProcessClose($2)
    sleep($interval_close)
    ProcessClose($1)
    Endif
    Until $Recv2<> ""
    EndIf

    [/autoit] [autoit][/autoit] [autoit]

    $NewSocket3 = TCPAccept($MainSocket3)
    If $NewSocket3 >= 0 Then
    Do
    $Recv3 = TCPRecv($NewSocket3,2048)
    GuiCtrlSetData($Edit2, GuiCtrlRead($Edit2)& @CRLF & @CRLF & "[Date] " & $date2 & @CRLF & "[Time] " & $time2 & $Recv3)
    $system_log2 = FileOpen($system_log, 1)
    FileWrite($system_log2, @CRLF & @CRLF & "[Date] " & $date2 & @CRLF & "[Time] " & $time2 & $Recv3)
    FileClose($system_log2)
    Until $Recv3 <> ""
    EndIf

    [/autoit]

    so das der teil der dafür interessant ist.. der rest is nur noch GUI.
    Wen ichs mit z.b.

    [autoit]

    If $Recv2 = $string_start then run($p_1, $file)

    [/autoit]


    macht läufts einwandfrei, bloß sobald ich mehr dranhängen krieg ich
    ne fehlermeldung

  • wenn du mehrere anweisungen ausführen lassen willst brauchst du nach dem then immer nen zeilenumbruch.

    woher sollte dder compiler sonst wissen ob du ein oder mehrere befehle ausführen lassen willst

  • also wen ich das richtig verstanden hab

    [autoit]

    If $Recv2 = $string_start then run($p_acc, $folder_programm) @CRLF

    [/autoit]


    funkt aber leider trozdem net.. X(

  • autsch..


    nicht so:

    Spoiler anzeigen
    [autoit]

    If $Recv2 = $string_shutdown then ProcessClose($8)
    sleep($interval_close)
    ProcessClose($7)
    sleep($interval_close)
    ProcessClose($6)
    sleep($interval_close)
    ProcessClose($5)
    sleep($interval_close)
    ProcessClose($4)
    sleep($interval_close)
    ProcessClose($3)
    sleep($interval_close)
    ProcessClose($2)
    sleep($interval_close)
    ProcessClose($1)
    Endif

    [/autoit]

    sondern so:

    Spoiler anzeigen
    [autoit]

    If $Recv2 = $string_shutdown then
    ProcessClose($8)
    sleep($interval_close)
    ProcessClose($7)
    sleep($interval_close)
    ProcessClose($6)
    sleep($interval_close)
    ProcessClose($5)
    sleep($interval_close)
    ProcessClose($4)
    sleep($interval_close)
    ProcessClose($3)
    sleep($interval_close)
    ProcessClose($2)
    sleep($interval_close)
    ProcessClose($1)
    Endif

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit]
  • funzt auch net >____<
    habs genauso gemacht wie ihr es gesagt habt...
    Immer wieder Die fehlermeldung X_x

  • ich weiß zwar nicht für was das gut sein soll aber:

    Spoiler anzeigen
    [autoit]

    While 1
    $time2 = (@HOUR & ":" & @MIN & ":" & @SEC)
    $date2 = (@MDAY & "." & @MON & "." & @YEAR)
    GUICtrlSetData($Label3, $time2)
    GUICtrlSetData($Label2, $date2)
    GUICtrlSetData($Input1, $ip)
    ;GuiCtrlSetData($Input2, $port)

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    $NewSocket = TCPAccept($MainSocket)
    If $NewSocket >= 0 Then
    Do
    $Recv = TCPRecv($NewSocket, 2048)
    GUICtrlSetData($Edit1, GUICtrlRead($Edit1) & @CRLF & @CRLF & "[Date] " & $date2 & @CRLF & "[Time] " & $time2)
    GUICtrlSetData($Edit1, GUICtrlRead($Edit1) & $Recv)
    $message_log2 = FileOpen($message_log, 1)
    FileWrite($message_log2, @CRLF & "[Date] " & $date2 & @CRLF & "[Time] " & $time2 & @CRLF & $Recv)
    FileClose($message_log2)
    Until $Recv <> ""
    EndIf

    [/autoit] [autoit][/autoit] [autoit]

    $NewSocket2 = TCPAccept($MainSocket2)
    If $NewSocket2 >= 0 Then
    Do
    $Recv2 = TCPRecv($NewSocket2, 2048)
    If $Recv2 = $string_start Then
    Run($p1, $folder)
    Sleep($interval_run)
    Run($p2, $folder)
    Sleep($interval_run)
    Run($p3, $folder)
    Sleep($interval_run)
    Run($p4, $folder)
    Sleep($interval_run)
    Run($p5, $folder)
    Sleep($interval_run)
    Run($p6, $folder)
    Sleep($interval_run)
    Run($p7, $folder)
    Sleep($interval_run)
    Run($p8, $folder)
    EndIf
    If $Recv2 = $string_restart Then
    ProcessClose($8)
    Sleep($interval_close)
    ProcessClose($7)
    Sleep($interval_close)
    ProcessClose($6)
    Sleep($interval_close)
    ProcessClose($5)
    Sleep($interval_close)
    ProcessClose($4)
    Sleep($interval_close)
    ProcessClose($3)
    Sleep($interval_close)
    ProcessClose($2)
    Sleep($interval_close)
    ProcessClose($1)
    Sleep(1000)
    Run($p1, $folder)
    Sleep($interval_run)
    Run($p2, $folder)
    Sleep($interval_run)
    Run($p3, $folder)
    Sleep($interval_run)
    Run($p4, $folder)
    Sleep($interval_run)
    Run($p5, $folder)
    Sleep($interval_run)
    Run($p6, $folder)
    Sleep($interval_run)
    Run($p7, $folder)
    Sleep($interval_run)
    Run($p8, $folder)
    EndIf
    If $Recv2 = $string_shutdown Then
    ProcessClose($8)
    Sleep($interval_close)
    ProcessClose($7)
    Sleep($interval_close)
    ProcessClose($6)
    Sleep($interval_close)
    ProcessClose($5)
    Sleep($interval_close)
    ProcessClose($4)
    Sleep($interval_close)
    ProcessClose($3)
    Sleep($interval_close)
    ProcessClose($2)
    Sleep($interval_close)
    ProcessClose($1)
    EndIf
    Until $Recv2 <> ""
    EndIf

    [/autoit] [autoit][/autoit] [autoit]

    $NewSocket3 = TCPAccept($MainSocket3)
    If $NewSocket3 >= 0 Then
    Do
    $Recv3 = TCPRecv($NewSocket3, 2048)
    GUICtrlSetData($Edit2, GUICtrlRead($Edit2) & @CRLF & @CRLF & "[Date] " & $date2 & @CRLF & "[Time] " & $time2 & $Recv3)
    $system_log2 = FileOpen($system_log, 1)
    FileWrite($system_log2, @CRLF & @CRLF & "[Date] " & $date2 & @CRLF & "[Time] " & $time2 & $Recv3)
    FileClose($system_log2)
    Until $Recv3 <> ""
    EndIf
    WEnd

    [/autoit]
  • OMG -.-
    bin ich doof ... :S
    habs bei den obersten gemacht aber bei dem letzten net...
    sry...
    habs jetzt danke an alle