Ungewöhnliches ini Verhalten

  • He Leute, ich habe wieder ein Problem mit meinem Synchronisationsprogramm.
    Und zwar soll das Tool eine ini vom Server herunterladen und die beiden ini's vergleichen und je nachdem dann updaten oder nicht.
    So, jetzt ist das Problem, dass die ini datei auf dem server die version 2 hat und die andere die version 1 aber trotzdem behauptet das programm, die versionen wären beide gleich.
    Und das Programm erstellt noch eine Datei 0 ohne Endung.
    Hier ist der Quellcode(teilweise zensiert, passwörter für server etc.)

    Spoiler anzeigen
    [autoit]


    #include <GUIConstantsEx.au3>
    #include <WindowsConstants.au3>
    #include <FTPex.au3>
    FileDelete(@TempDir + "\serverversion.ini")
    MsgBox(0,"",$test)
    Global $possible = 1
    Global $disabled = 0
    Global $status = "ready"
    Global $newstatus = 1
    Global $serveron = 0
    Global $FTPUser = '###', $FTPPass = '###', $FTPServer = '###'
    $Minesync = GUICreate("Minesync", 428, 195, 209, 134,$WS_CAPTION)
    $Label1 = GUICtrlCreateLabel("Lädt Minesync...", 24, 8, 358, 52)
    GUICtrlSetFont(-1, 30, 400, 0, "MS Sans Serif")
    $Button1 = GUICtrlCreateButton("Abbrechen", 8, 64, 401, 121, $WS_GROUP)
    GUICtrlSetFont(-1, 30, 400, 0, "MS Sans Serif")
    GUISetState(@SW_SHOW)
    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $Button1
    Exit
    EndSwitch
    if $possible = 0 Then
    if $disabled = 0 Then
    GUICtrlSetState($Button1,$GUI_DISABLE)
    $disabled = 1
    EndIf
    ElseIf $possible = 1 Then
    if $disabled = 1 Then
    GUICtrlSetState($Button1,$GUI_ENABLE)
    $disabled = 0
    EndIf
    EndIf
    if $newstatus = 1 Then
    if $status = "checkversion" or "waitcancel" Then
    GUICtrlSetData($Label1,"Überprüfe Version...")
    $newstatus = 0
    Elseif $status = "sync" Then
    GUICtrlSetData($Label1,"Synchronisieren...")
    $newstatus = 0
    EndIf
    EndIf
    if $status = "ready" Then
    $status = "checkversion"
    ElseIf $status = "checkversion" Then
    GUICtrlSetState($Button1,$GUI_DISABLE)
    Global $file = 'serverversion.ini'
    Global $ziel = @TempDir + "\"
    Global $hFTPOpen = _FTP_Open('FTP Control')
    Global $hFTPConn = _FTP_Connect($hFTPOpen, $FTPServer, $FTPUser, $FTPPass)
    _FTP_FileGet($hFTPConn,$file,$ziel,True)
    $versionserver = IniRead(@TempDir + "\serverversion.ini","server","version","notfound")
    $versionclient = IniRead(@AutoItExe + "\minesynctestserver\thisversion.ini","server","version","notfound")
    if $versionclient = "notfound" or $versionserver = "notfound" Then
    MsgBox(0,"FEHLER","ini fehlerhaft")
    _FTP_Close($hFTPOpen)
    Exit
    EndIf
    if $versionclient < $versionserver Then
    GUICtrlSetState($Button1,$GUI_ENABLE)
    $status = "waitcancel"
    $canceltimer = TimerInit()
    ElseIf $versionclient > $versionserver Then
    MsgBox(0,"FEHLER","Die Version im Client ist neuer als die im Server, das heißt der Upload wurde abgebrochen")
    _FTP_Close($hFTPOpen)
    Exit
    ElseIf $versionclient = $versionclient Then
    $status = "startserver"
    EndIf
    ElseIf $status = "waitcancel" Then
    if $canceltimer > 3000 Then
    MsgBox(0,"TEST","Hier kommt dann die Synchronisation hin")
    _FTP_Close($hFTPOpen)
    Exit
    EndIf
    ElseIf $status = "startserver" Then
    MsgBox(0,"TEST","Das passiert, wenn die versionen übereinstimmen!")
    _FTP_Close($hFTPOpen)
    Exit
    EndIf
    WEnd

    [/autoit]


    Hier sind die beiden ini dateien

    Spoiler anzeigen

    Server ini:

    Code
    [server]
    version=2


    Client ini

    Code
    [server]
    version=1


    Danke für eure Hilfe im Vorraus
    Mfg Fliwatt

  • Hallo,

    ich hab mich mal rangesetzt und wie folgt bearbeitet:

    Spoiler anzeigen
    [autoit]

    #cs ----------------------------------------------------------------------------

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

    AutoIt Version: 3.3.8.0
    Author: myName

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

    Script Function:
    Template AutoIt script.

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

    #ce ----------------------------------------------------------------------------

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

    ; Script Start - Add your code below here

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

    #include <GUIConstantsEx.au3>
    #include <WindowsConstants.au3>
    #include <FTPex.au3>
    FileDelete(@TempDir + "\serverversion.ini")
    Global $possible = 1
    Global $disabled = 0
    Global $status = "ready"
    Global $newstatus = 1
    Global $serveron = 0
    Global $FTPUser = '###', $FTPPass = '###', $FTPServer = '###'
    $Minesync = GUICreate("Minesync", 428, 195, 209, 134,$WS_CAPTION)
    $Label1 = GUICtrlCreateLabel("Lädt Minesync...", 24, 8, 358, 52)
    GUICtrlSetFont(-1, 30, 400, 0, "MS Sans Serif")
    $Button1 = GUICtrlCreateButton("Abbrechen", 8, 64, 401, 121, $WS_GROUP)
    GUICtrlSetFont(-1, 30, 400, 0, "MS Sans Serif")
    GUISetState(@SW_SHOW)
    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $Button1
    Exit
    EndSwitch
    if $possible = 0 Then
    if $disabled = 0 Then
    GUICtrlSetState($Button1,$GUI_DISABLE)
    $disabled = 1
    EndIf
    ElseIf $possible = 1 Then
    if $disabled = 1 Then
    GUICtrlSetState($Button1,$GUI_ENABLE)
    $disabled = 0
    EndIf
    EndIf
    if $newstatus = 1 Then
    if $status = "checkversion" or "waitcancel" Then
    GUICtrlSetData($Label1,"Überprüfe Version...")
    $newstatus = 0
    Elseif $status = "sync" Then
    GUICtrlSetData($Label1,"Synchronisieren...")
    $newstatus = 0
    EndIf
    EndIf
    if $status = "ready" Then
    $status = "checkversion"
    ElseIf $status = "checkversion" Then
    GUICtrlSetState($Button1,$GUI_DISABLE)
    Global $file = 'Serverversion.ini'
    Global $ziel = @TempDir & "\serverversion.ini"
    Global $hFTPOpen = _FTP_Open('FTP Control')
    Global $hFTPConn = _FTP_Connect($hFTPOpen, ---)
    _FTP_FileGet($hFTPConn,$file,$ziel,True)
    $versionserver = IniRead(@TempDir & "\serverversion.ini","server","version","notfound")
    $versionclient = IniRead("C:\thisversion.ini","server","version","notfound")
    MsgBox(0, $versionserver, $versionclient)
    if $versionclient = "notfound" or $versionserver = "notfound" Then
    MsgBox(0,"FEHLER","ini fehlerhaft")
    _FTP_Close($hFTPOpen)
    Exit
    EndIf
    if $versionclient < $versionserver Then
    GUICtrlSetState($Button1,$GUI_ENABLE)
    $status = "waitcancel"
    $canceltimer = TimerInit()
    ElseIf $versionclient > $versionserver Then
    MsgBox(0,"FEHLER","Die Version im Client ist neuer als die im Server, das heißt der Upload wurde abgebrochen")
    _FTP_Close($hFTPOpen)
    Exit
    ElseIf $versionclient = $versionclient Then
    $status = "startserver"
    EndIf
    ElseIf $status = "waitcancel" Then
    if $canceltimer > 3000 Then
    MsgBox(0,"TEST","Hier kommt dann die Synchronisation hin")
    _FTP_Close($hFTPOpen)
    Exit
    EndIf
    ElseIf $status = "startserver" Then
    MsgBox(0,"TEST","Das passiert, wenn die versionen übereinstimmen!")
    _FTP_Close($hFTPOpen)
    Exit
    EndIf
    WEnd

    [/autoit]

    Ich weiß nicht ob durch die neue Version es legitim geworden ist Pfade u.ä. nicht mehr mit '&' sondern '+' zu verbinden, sprich @Tempdir + "\Datei024.txt" anstelle von @Tempdir & "\Datei024.txt"zu schreiben. Des weiteren ist alles was mit FTP zu tuen hat CASESENSITIVE! D.h. wenn deine Datei auf dem Server 'Serverversion.ini' heißt und du aber 'serverversion.ini' abrufen willst sind das für den Server zwei verschiedene (!) Dateien.
    Der Code wie oben funktioniert bei mir (hab natürlich meine eigenen Serverdaten auch wieder entfernt ;) ). Falls er bei dir nicht funktionieren sollte melde dich einfach noch Mal.
    HF Aquaplant

  • danke, das kommt davon, wenn man in mehreren sprachen gleichzeitig programmiert, in java ist das anders :D
    Aber mein Kot(absicht) geht immer noch nicht, bitte check ihn noch mal (Du hast in Zeile 62 so 3 bindestriche gemacht, hat das was zu bedeuten?)

    Spoiler anzeigen
    [autoit]


    #include <GUIConstantsEx.au3>
    #include <WindowsConstants.au3>
    #include <FTPex.au3>
    FileDelete(@TempDir & "\serverversion.ini")
    Global $possible = 1
    Global $disabled = 0
    Global $status = "ready"
    Global $newstatus = 1
    Global $serveron = 0
    Global $FTPUser = '#', $FTPPass = '#', $FTPServer = '#'
    $Minesync = GUICreate("Minesync", 428, 195, 209, 134,$WS_CAPTION)
    $Label1 = GUICtrlCreateLabel("Lädt Minesync...", 24, 8, 358, 52)
    GUICtrlSetFont(-1, 30, 400, 0, "MS Sans Serif")
    $Button1 = GUICtrlCreateButton("Abbrechen", 8, 64, 401, 121, $WS_GROUP)
    GUICtrlSetFont(-1, 30, 400, 0, "MS Sans Serif")
    GUISetState(@SW_SHOW)
    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $Button1
    Exit
    EndSwitch
    if $possible = 0 Then
    if $disabled = 0 Then
    GUICtrlSetState($Button1,$GUI_DISABLE)
    $disabled = 1
    EndIf
    ElseIf $possible = 1 Then
    if $disabled = 1 Then
    GUICtrlSetState($Button1,$GUI_ENABLE)
    $disabled = 0
    EndIf
    EndIf
    if $newstatus = 1 Then
    if $status = "checkversion" or "waitcancel" Then
    GUICtrlSetData($Label1,"Überprüfe Version...")
    $newstatus = 0
    Elseif $status = "sync" Then
    GUICtrlSetData($Label1,"Synchronisieren...")
    $newstatus = 0
    EndIf
    EndIf
    if $status = "ready" Then
    $status = "checkversion"
    ElseIf $status = "checkversion" Then
    GUICtrlSetState($Button1,$GUI_DISABLE)
    Global $file = 'serverversion.ini'
    Global $ziel = @TempDir & "\"
    Global $hFTPOpen = _FTP_Open('FTP Control')
    Global $hFTPConn = _FTP_Connect($hFTPOpen, $FTPServer, $FTPUser, $FTPPass)
    _FTP_FileGet($hFTPConn,$file,$ziel,True)
    $versionserver = IniRead(@TempDir & "\serverversion.ini","server","version","notfound")
    $versionclient = IniRead(@AutoItExe & "\minesynctestserver\thisversion.ini","server","version","notfound")
    if $versionclient = "notfound" or $versionserver = "notfound" Then
    MsgBox(0,"FEHLER","ini fehlerhaft")
    _FTP_Close($hFTPOpen)
    Exit
    EndIf
    if $versionclient < $versionserver Then
    GUICtrlSetState($Button1,$GUI_ENABLE)
    $status = "waitcancel"
    $canceltimer = TimerInit()
    ElseIf $versionclient > $versionserver Then
    MsgBox(0,"FEHLER","Die Version im Client ist neuer als die im Server, das heißt der Upload wurde abgebrochen")
    _FTP_Close($hFTPOpen)
    Exit
    ElseIf $versionclient = $versionclient Then
    $status = "startserver"
    EndIf
    ElseIf $status = "waitcancel" Then
    if $canceltimer > 3000 Then
    MsgBox(0,"TEST","Hier kommt dann die Synchronisation hin")
    _FTP_Close($hFTPOpen)
    Exit
    EndIf
    ElseIf $status = "startserver" Then
    MsgBox(0,"TEST","Das passiert, wenn die versionen übereinstimmen!")
    _FTP_Close($hFTPOpen)
    Exit
    EndIf
    WEnd

    [/autoit]


    auf dem server liegt die datei (case sensitive) serverversion.ini

  • Ich hab dir mal den wichtigen Teil ausgeschnitten. Wenn du nach meinen Kommentaren alles angibst sollte es funktionieren. Die drei Striche waren weil ich zu faul war die Variablen wieder nazugeben und meine Daten wieder gelöscht hab ^^

    Spoiler anzeigen
    [autoit]

    GUICtrlSetState($Button1,$GUI_DISABLE)
    Global $file = 'Serverversion.ini' ;Casesensitive? auf meinem Server ist die Datei mit großem Anfangsbuchstaben geschrieben
    Global $ziel = @TempDir & "\serverversion.ini" ;hier musst du noch den Dateinamen angeben!
    Global $hFTPOpen = _FTP_Open('FTP Control')
    Global $hFTPConn = _FTP_Connect($hFTPOpen, $sIP, $sUser, $sPW) ;deine drei Werte
    _FTP_FileGet($hFTPConn,$file,$ziel,True)
    $versionserver = IniRead(@TempDir & "\serverversion.ini","server","version","notfound")
    $versionclient = IniRead("C:\thisversion.ini","server","version","notfound") ;Pfad anpassen
    if $versionclient = "notfound" or $versionserver = "notfound" Then
    MsgBox(0,"FEHLER","ini fehlerhaft")
    _FTP_Close($hFTPOpen)
    Exit
    EndIf

    [/autoit]