Line: 9737. Error: Subscript used with non-Aray variable

  • Hallo zusammen,

    ein paar ausländische User haben ein Problem mit unseren Installern, die ich mit AutoIt erstellt habe.
    Wir haben herausfinden können, dass sobald ein User seinen PC zwar mit deutscher Windows-Version, aber mit anderer Spracheinstellung benutzen, diese Fehlermeldung auftritt: Line: 9737. Error: Subscript used with non-Aray variable

    Zitat eines Userpostings:

    Zitat

    Ursache:
    Windows Deutsch, Sprache eingestellt Russisch
    Entscheidung:
    Muss Deutsche Sprach eingestellt sein

    Was kann ich tun, um das zu vermeiden?

    Gruß
    Pitter

  • Ohne den Code gesehen zu haben kann dir da sicher keiner helfen. Des kann ja keiner wissen, wie du was Programmiert hast.

    Das finden von Rechtschreibfehlern muss sofort und unverzüglich dem Autor gemeldet werden. Das eigennützige Verwenden dieser Rechtschreibfehler ist strengstens untersagt und kann mit Freiheitsenzug bestraft werden.

  • Naja...
    Was wollt Ihr haben? Den ganzen Code? Das sind mehr als 1.500 Zeilen. Ich denke nicht, dass das sinnvoll ist.
    Ich denke eher, dass ich da irgendeine Einstellung beim kompilieren ändern muss, damit der Installer auch auf anderssprachigen Windows-Versionen läuft.

    Gruß
    Pitter

  • Line: 9737. Error: Subscript used with non-Aray variable

    Der Fehler entsteht offensichtlich in einem Include. Es wird ein Arrayelement erwartet wo keines ist.
    Also entweder debugst du selber oder zeigst den Code. Alles andere wäre Hellseherei.

  • Das Problem ist bei mir halt nicht nachvollziehbar....

    Hier also dann die Installer.au3... Weiterhin sind da dann noch weitere au3, die dann im weiteren Verlauf includiert werden.

    Spoiler anzeigen
    [autoit]

    #region ;**** Directives created by AutoIt3Wrapper_GUI ****
    #AutoIt3Wrapper_icon=GPW_BASE\GPW.ico
    #AutoIt3Wrapper_outfile=GPW-POiObs-Installer-V6.0.2.exe
    #AutoIt3Wrapper_Compression=4
    #AutoIt3Wrapper_Res_Comment=GoPalWorld PoiObs Installer
    #AutoIt3Wrapper_Res_Description=Für die Installation des POiObservers
    #AutoIt3Wrapper_Res_Fileversion=6.0.1.26
    #AutoIt3Wrapper_Res_Fileversion_AutoIncrement=y
    #AutoIt3Wrapper_Res_LegalCopyright=Peter Pliquet
    #AutoIt3Wrapper_Res_Language=1031
    #AutoIt3Wrapper_Run_Tidy=y
    #AutoIt3Wrapper_Tidy_Stop_OnError=n
    #endregion ;**** Directives created by AutoIt3Wrapper_GUI ****

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

    #include <GUIConstantsEx.au3>
    #include <WindowsConstants.au3>
    #include <ProgressConstants.au3>
    #include <StaticConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <WindowsConstants.au3>
    #include <EditConstants.au3>
    #include <Constants.au3>
    #include <IE.au3>
    #include <File.au3>
    #include <Array.au3>
    #include <GuiButton.au3>
    #include <GUIConstants.au3>
    #include <String.au3>
    #include <GUICtrlSetOnHover_UDF.au3>
    #include <FTPEx.au3>

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

    OnAutoItExitRegister("endscript")
    Opt("TrayMenuMode", 3)
    Opt("WinTitleMatchMode", 2)
    ;~ Opt("MustDeclareVars", 1)
    TraySetToolTip("GoPalWorld PoiObs Installer V6.0")
    Global $gui, $background, $msg, $var1, $var2, $Input_1, $pfad, $file_1, $count, $source, $dest, $poiobs_lokal, $end, $skin_line, $skin_line_3, $skin_ini, $file_path
    Global $Paypal, $Ablehnen, $Annehmen, $Abbruch, $Install, $Logo, $Logo2, $reboot, $inifile, $ini, $update_ini, $update_line, $new_display_sizeMoin
    Global $progress, $label1, $label2, $label3, $label4, $label5, $label6, $label_6a, $label_6b, $label_7, $hardware, $stream, $label_8, $label_9, $x
    Global $poibs_ins, $temp1, $temp2, $temp3, $temp4, $var, $i, $pass2, $label1, $sat, $lizenz, $ini, $version, $version_type, $version_number, $label2, $foo, $line, $fl, $dest
    Global $pfad = @ScriptDir & "\Buttons"
    Dim $temp4 = 0, $temp5 = 0, $timer = 0, $ColorToggle = 1, $satpos = 80, $schleife = 1, $update = 1, $search, $updatepfad, $file
    $poiobs_lokal = 0
    $Characters = StringSplit("abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ123456789", "")
    $SerialNumber = ""
    For $x = 1 To 5
    For $i = 1 To 5
    $SerialNumber &= $Characters[Random(1, 61, 1)]
    Next
    If $x <> 5 Then $SerialNumber &= ""
    Next
    $pfad = @TempDir & '\' & $SerialNumber & '\'
    DirRemove($pfad, 1)
    Sleep(1000)
    DirCreate($pfad)

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

    ;~ ########### Includierte Dateien
    FileInstall("GPW_BASE\7za.exe", $pfad & "7za.exe")
    FileInstall("GPW_BASE\cecopy.exe", $pfad)
    FileInstall("GPW_BASE\rapistart.exe", $pfad)
    FileInstall("GPW_BASE\lizenz.htm", $pfad, 1)
    FileInstall("GPW_BASE\reboot.exe", $pfad, 1)
    FileInstall("GPW_BASE\hardware.exe", $pfad)
    FileInstall("GPW_BASE\GoPalWorld-Skin.7z", $pfad & "GoPalWorld-Skin.7z", 1)

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

    ;~ ########### Buttons und Bitmaps
    FileInstall("GPW_BASE\Buttons\car.ani", $pfad, 1)
    FileInstall("GPW_BASE\Buttons\stop_pressed.bmp", $pfad)
    FileInstall("GPW_BASE\Buttons\stop_hoover.bmp", $pfad)
    FileInstall("GPW_BASE\Buttons\stop.bmp", $pfad)
    FileInstall("GPW_BASE\Buttons\go.bmp", $pfad)
    FileInstall("GPW_BASE\Buttons\go_hoover.bmp", $pfad)
    FileInstall("GPW_BASE\Buttons\go_pressed.bmp", $pfad)
    FileInstall("GPW_BASE\Buttons\annehmen.bmp", $pfad)
    FileInstall("GPW_BASE\Buttons\annehmen_hoover.bmp", $pfad)
    FileInstall("GPW_BASE\Buttons\annehmen_pressed.bmp", $pfad)
    FileInstall("GPW_BASE\Buttons\ablehnen.bmp", $pfad)
    FileInstall("GPW_BASE\Buttons\ablehnen_hoover.bmp", $pfad)
    FileInstall("GPW_BASE\Buttons\ablehnen_pressed.bmp", $pfad)
    FileInstall("GPW_BASE\Buttons\reboot.bmp", $pfad)
    FileInstall("GPW_BASE\Buttons\reboot_hoover.bmp", $pfad)
    FileInstall("GPW_BASE\Buttons\reboot_pressed.bmp", $pfad)
    FileInstall("GPW_BASE\Buttons\end.bmp", $pfad)
    FileInstall("GPW_BASE\Buttons\end_hoover.bmp", $pfad)
    FileInstall("GPW_BASE\Buttons\end_pressed.bmp", $pfad)
    FileInstall("GPW_BASE\Buttons\Installer-Grafik_oben.jpg", $pfad)
    FileInstall("GPW_BASE\Buttons\Installer-Grafik_links.jpg", $pfad)
    FileInstall("GPW_BASE\Buttons\paypal.bmp", $pfad)
    FileInstall("GPW_BASE\Buttons\Splash.bmp", $pfad)

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

    ;~ ########### SplashImage vor dem Start des Installer-Fensters
    SplashImageOn("Start", $pfad & "Splash.bmp", 487, 159, -1, -1, 2)

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

    ;~ ######################

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

    $setuptxt = '"dev:\setup.txt"'
    $test = $pfad & 'cecopy.exe desk:' & $pfad & 'hardware.exe' & ' ' & '"' & 'dev:\my flash disk\temp\hardware.exe"'
    $foo = Run($test, @ScriptDir, @SW_HIDE, $STDOUT_CHILD)
    Sleep(1500)

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

    $line = StdoutRead($foo)
    If Not StringInStr($line, "syncing", 0) Then
    ProcessClose("cecopy.exe")
    MsgBox(16, "FEHLER", "Kein PNA gefunden. Programm wird beendet", 5, $gui)
    Exit
    EndIf

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

    ;~ ########### Erkennung der OS-Version des PC
    If @OSType = "WIN32_NT" Then
    If @OSVersion = "WIN_VISTA" Then
    If Not ProcessExists("wmdhost.exe") Then
    WinClose("Verbindungsprüfung")
    MsgBox(0, "", "MobileDeviceCenter läuft nicht. Programm wird beendet", 10)

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

    Exit
    EndIf
    ElseIf @OSVersion = "WIN_7" Then
    If Not ProcessExists("wmdhost.exe") Then
    WinClose("Verbindungsprüfung")
    MsgBox(0, "", "MobileDeviceCenter läuft nicht. Programm wird beendet", 10)

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

    Exit
    EndIf

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

    ElseIf @OSVersion = "WIN_XP" Then
    If Not ProcessExists("WCESMgr.exe") Then
    WinClose("Verbindungsprüfung")
    MsgBox(16, "", "ActiveSync läuft nicht. Programm wird beendet", 10)

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

    Exit
    EndIf
    EndIf
    Else
    WinClose("Verbindungsprüfung")
    MsgBox(16, "", "Dieses Betriebsystem wird nicht unterstützt", 10)
    EndIf
    TraySetIcon("car.ani")
    TraySetState()

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

    While Not StringInStr($line, ":990", 0) And Not StringInStr($line, ":5678", 0) And Not StringInStr($line, ":5679", 0)
    $foo = Run("netstat -ano ", @ScriptDir, @SW_HIDE, $STDOUT_CHILD)
    Sleep(1000)
    $line = StdoutRead($foo)

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

    WEnd
    TraySetState(8)

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

    #include "gpws_file_check.au3"
    #include "gpws_gui.au3"

    [/autoit]

    Gruß
    Pitter

    Einmal editiert, zuletzt von Pitter (3. März 2011 um 12:52)

  • Die gpws_gui.au3:

    Spoiler anzeigen
    [autoit]

    Local $chars, $text, $inifile, $i_EncryptLevel, $s_EncryptPassword, $text, $file

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

    TraySetIcon($pfad & "\car.ani")
    TraySetState(4)
    GUICtrlDelete($Install)
    GUICtrlDelete($Abbruch)
    GUICtrlDelete($label6)

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

    If FileExists(@ScriptDir & "\*********") Then
    MsgBox(64, "ACHTUNG", "Es wird mit den Daten der ************** gearbeitet", 5)

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

    FileCopy(@ScriptDir & "\dummy.txt", $pfad & "hardware.txt", 1)
    Else
    RunWait($pfad & 'cecopy.exe desk:' & $pfad & 'CDel.exe' & ' ' & '"' & 'dev:\My Flash Disk\temp\CDel.exe"', @ScriptDir, @SW_HIDE)

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

    $progress = GUICtrlCreateProgress(144, 296, 470, 29, BitOR($PBS_SMOOTH, $WS_BORDER))
    $label6 = GUICtrlCreateLabel("PNA Analysescripte werden kopiert", 144, 248, 470, 24, BitOR($SS_CENTER, $SS_CENTERIMAGE))
    RunWait($pfad & 'rapistart.exe ' & '"' & '\my flash disk\temp\hardware.exe' & '"', @ScriptDir, @SW_HIDE)
    GUICtrlDelete($label6)
    $label6 = GUICtrlCreateLabel("PNA Hard- und Software wird analysiert", 144, 248, 470, 24, BitOR($SS_CENTER, $SS_CENTERIMAGE))
    For $x = 1 To 100 Step 1
    GUICtrlSetData($progress, $x)
    Sleep(90)
    Next

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

    RunWait($pfad & 'cecopy.exe /s ' & '"' & 'dev:\temp\hardware.txt' & '"' & ' ' & '"' & $pfad & 'hardware.txt' & '"', @TempDir, @SW_HIDE)
    EndIf

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

    If FileExists($pfad & 'hardware.txt') Then
    $hardware1 = FileRead($pfad & 'hardware.txt')
    GUICtrlDelete($progress)
    GUICtrlDelete($label6)
    $hardware = StringSplit($hardware1, "|")

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

    if $hardware[10] = 6 Then
    MsgBox(4096, " Fehler", "Auf PNA mit Windows CE6.0" & @CRLF & "ist der PoiObserver derzeit nicht lauffähig!" & @CRLF & @CRLF & "Programm wird beendet")
    endscript()
    Exit
    EndIf

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

    if $hardware[4] = "-" Or $hardware[4] = "0" Then
    MsgBox(16, "ACHTUNG", "Die GoPal-Version konnte nicht erkannt werden!" & @CRLF & '' & @CRLF & "Bitte am PNA einen Hardreset machen und " & @CRLF & "GoPal neu installieren." & @CRLF & "Danach den Installer erneut aufrufen!" & @CRLF & "Falls das Problem erneut auftritt," & @CRLF & "bitte im Forum melden!", 30)
    endscript() ;~ gehe in Endscript-Funktion
    Exit
    EndIf

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

    ;############### Lauf in die Encrypt-Funktion
    encrypt() ;~ call encrypt-function
    ;############### Kommt aus der Encrypt-Funktion zurück

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

    Sleep(300)

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

    FileMove($pfad & "\GPW_2.ini", $pfad & "\GPW_1.ini", 1)

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

    $new_hardware = IniReadSection($pfad & "\GPW_1.ini", "new_PNAs")
    $flag = 0
    For $i = 1 To $new_hardware[0][0]
    If StringLeft($new_hardware[$i][1], 4) = StringLeft($hardware[5], 4) Then
    $flag = 1
    ;~ Global $new_display_size = $new_hardware[$i][0]
    EndIf
    Next

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

    $var = IniReadSection($pfad & "\GPW_1.ini", "version_path")
    $ini = IniReadSection($pfad & "\GPW_1.ini", "version_size")
    For $i = 1 To $ini[0][0]

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

    If $ini[$i][1] = $hardware[4] Then
    $version = $ini[$i][0]
    ExitLoop
    Else
    $version = "----"
    EndIf
    Next

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

    If $flag = 0 Then
    MsgBox(65, " Fehler", "Ihr Medion-PNA wird nicht über diesen" & @CRLF & "Installer unterstützt. Bitte benutzen Sie den" & @CRLF & @CRLF & "GPW-PoiObs-Installer V 1.5.1" & @CRLF & @CRLF & "Programm wird beendet.")
    endscript()
    Exit
    EndIf

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

    If $version = "----" Then
    ConsoleWrite("Version ausgelesen: " & $version & @CRLF)
    $update = MsgBox(49, "Update", "Das Programm hat die GoPal-Version" & @CRLF & "nicht erkannt!" & @CRLF & '' & @CRLF & "Möchten Sie Online auf ein Update prüfen?", 30)
    If $update = 1 Then
    FileClose($pfad & "\GPW_1.ini")
    FileDelete($pfad & "\GPW_1.ini") ;~ Ini im Klartext löschen

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

    ;~ ###################### Neue Funktion zum Update der GPW.INI
    ;~####### FTP-Daten
    $server = '*******'
    $username = '**********'
    $pass = '***************'
    $path = '/****************/'

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

    $version_file = (@ScriptDir & "\Update.txt")
    $version_line = FileReadLine($version_file, 2)

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

    $DownloadFile_1 = (@ScriptDir & "\Update_1.txt") ;~ dito
    $Ftp_FileName_1 = "Update.txt" ;~ Dateiname in Var schreiben

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

    $Open = _FTP_Open('MyFTP Control') ;~ Öffne FTP
    If @error = 1 Then ftperror() ;~ Wenn kein FTP möglich, dann gehe in Fehler

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

    $label6 = GUICtrlCreateLabel("FTP wird geöffnet...", 144, 248, 470, 24, BitOR($SS_CENTER, $SS_CENTERIMAGE))
    Sleep(500)

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

    $Conn = _FTP_Connect($Open, $server, $username, $pass) ;~ Verbinden mit dem FTP
    If @error = 1 Then ftperror() ;~ Wenn kein FTP möglich, dann gehe in Fehler

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

    GUICtrlDelete($label6)

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

    $label6 = GUICtrlCreateLabel("Anmelden am Server....", 144, 248, 470, 24, BitOR($SS_CENTER, $SS_CENTERIMAGE))
    Sleep(500)

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

    $FtpDir = _FTP_DirSetCurrent($Conn, $path) ;~ Wechseln des Standart-Verzeichnisses
    If @error = 1 Then ftperror() ;~ Wenn kein FTP möglich, dann gehe in Fehler

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

    GUICtrlDelete($label6)

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

    Local $Ftpd_1 = _FTP_ProgressDownload($Conn, $DownloadFile_1, $Ftp_FileName_1) ;~ Download mit Progressbar
    If $Ftpd_1 = 1 Then ;~ Kontrolle, ob File da ist
    Local $Ftpc = _FTP_Close($Open) ;~ FTP wieder schliessen

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

    If FileExists($DownloadFile_1) Then ;~ Wenn File da ist
    $version_line_1 = FileReadLine($DownloadFile_1, 2) ;~ Lese Zeile 2
    EndIf

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

    If $version_line = $version_line_1 Then ;~ Vergleiche Original-Update.txt mit neuer
    $version = "----"
    $goGPW = MsgBox(49, " Fehler", "Ihre Gopal-Version wird nicht unterstützt." & @CRLF & "Sie haben die Möglichkeit dem GopalWorld-Skin-Team durch einen Klick auf YES ihre Gopal-Version mitzuteilen. Das Goaplworld-Skin-Team wird daraufhin ihre Version kompatibel machen." & @CRLF & @CRLF & "Möchten Sie uns Ihre Gopal-Version mitteilen?", 30)
    If $goGPW = 1 Then
    ShellExecute("http://service.gopalworld.de/gopal.php?size=" & $hardware[4] & "&pna=" & $hardware[5] & "&version=" & $hardware[6] & "&winvers=" & $hardware[10] & "&Installer=GPW-PoiObs-Installer-V6")
    endscript()
    Exit
    Else
    MsgBox(65, " Fehler", "Diese Gopal Version " & @CRLF & "ist nicht mit diesem Skin kompatibel." & @CRLF & "Programm wird beendet.")
    endscript()
    Exit
    EndIf
    Else
    MsgBox(64, "Update!", "Es ist eine Neue Version verfügbar!")
    $fg = MsgBox(65, "Updaten?", "Möchten Sie jetzt Updaten?", 30)
    If $fg = 1 Then
    $DownloadIniFile = ($pfad & "\GPW_3.ini") ;~ Pfad in Var schreiben
    $Ftp_IniName = "GPW.ini" ;~ Dateiname in Var schreiben

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

    $Open = _FTP_Open('MyFTP Control') ;~ Öffne FTP
    If @error = 1 Then ftperror()

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

    $label6 = GUICtrlCreateLabel("FTP wird geöffnet...", 144, 248, 470, 24, BitOR($SS_CENTER, $SS_CENTERIMAGE))
    Sleep(500)

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

    $Conn = _FTP_Connect($Open, $server, $username, $pass) ;~ Verbinden mit dem FTP
    If @error = 1 Then ftperror() ;~ Wenn kein FTP möglich, dann gehe in Fehler

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

    GUICtrlDelete($label6)
    $label6 = GUICtrlCreateLabel("Anmelden am Server....", 144, 248, 470, 24, BitOR($SS_CENTER, $SS_CENTERIMAGE))
    Sleep(500)

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

    $FtpDir = _FTP_DirSetCurrent($Conn, $path) ;~ Wechseln des Standart-Verzeichnisses
    If @error = 1 Then ftperror() ;~ Wenn kein FTP möglich, dann gehe in Fehler

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

    GUICtrlDelete($label6)

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

    Local $Ftpd_2 = _FTP_ProgressDownload($Conn, $DownloadIniFile, $Ftp_IniName) ;~ Download mit Progressbar

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

    If $Ftpd_2 = 1 Then ;~ Kontrolle, ob File da ist
    Local $Ftpc = _FTP_Close($Open) ;~ FTP wieder schliessen
    Else
    $label6 = GUICtrlCreateLabel("DATEI WURDE NICHT GELADEN!", 144, 248, 470, 24, BitOR($SS_CENTER, $SS_CENTERIMAGE))
    Local $Ftpc = _FTP_Close($Open) ;~ FTP wieder schliessen
    Sleep(3000)
    endscript()
    Exit
    EndIf
    Sleep(200)
    FileMove($pfad & "\GPW_3.ini", @ScriptDir & "\GPW.ini", 1) ;~ Die runtergeladene INI umbenennen zum Weiterverarbeiten

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

    ;############### Lauf in die Encrypt-Funktion
    encrypt() ;~ call encrypt-function
    ;############### Kommt aus der Encrypt-Funktion zurück

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

    $new_hardware = IniReadSection($pfad & "\GPW_1.ini", "new_PNAs")
    $flag = 0
    For $i = 1 To $new_hardware[0][0]
    If StringLeft($new_hardware[$i][1], 4) = StringLeft($hardware[5], 4) Then
    $flag = 1
    ;~ Global $new_display_size = $new_hardware[$i][0]
    EndIf
    Next

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

    $var = IniReadSection($pfad & "\GPW_1.ini", "version_path")
    $ini = IniReadSection($pfad & "\GPW_1.ini", "version_size")
    For $i = 1 To $ini[0][0]

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

    If $ini[$i][1] = $hardware[4] Then
    $version = $ini[$i][0]
    ExitLoop
    Else
    $version = "----"

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

    EndIf
    Next

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

    If $flag = 0 Then
    MsgBox(65, " Fehler", "Ihr Medion-PNA wird nicht über diesen" & @CRLF & "Installer unterstützt. Bitte benutzen Sie den" & @CRLF & "GPW-PoiObs-Installer V 1.5.1" & @CRLF & @CRLF & "Programm wird beendet.")
    endscript()
    Exit
    EndIf

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

    If $version = "----" And $hardware[4] <> "-" Then
    $goGPW = MsgBox(36, " Fehler", "Ihre Gopal-Version wird nicht unterstützt." & @CRLF & "Sie haben die Möglichkeit dem GopalWorld-Skin-Team durch einen Klick auf YES ihre Gopal-Version mitzuteilen. Das Goaplworld-Skin-Team wird daraufhin ihre Version kompatibel machen." & @CRLF & @CRLF & "Möchten Sie uns Ihre Gopal-Version mitteilen?")
    If $goGPW = 6 Then
    ShellExecute("http://service.gopalworld.de/gopal.php?size=" & $hardware[4] & "&pna=" & $hardware[5] & "&version=" & $hardware[6] & "&winvers=" & $hardware[10] & "&Installer=GPW-PoiObs-Installer-V6")
    EndIf
    endscript()
    Exit
    EndIf
    If $version = "----" Then
    fehler()
    EndIf
    Else
    fehler()
    EndIf
    EndIf
    Else
    ftperror()
    EndIf
    Else
    fehler()
    EndIf
    EndIf
    ;~ ######################Ende der neuen Funktion

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

    $version_type = StringLeft($version, StringLen($version) - 3)
    $version_number = StringRight($version, 3)
    ConsoleWrite($version_type & $version_number & @CRLF)

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

    AdlibUnRegister()

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

    GUICtrlDelete($label2)
    GUICtrlDelete($label6)

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

    If $hardware[6] = "-" Then
    MsgBox(16, "ACHTUNG", " Keine Speicher-Karte vorhanden " & @CRLF & "oder Speicher-Karte voll!" & @CRLF & '' & @CRLF & " Bitte Karte einsetzen und Programm neu starten.", 20)
    endscript()
    Exit
    EndIf

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

    $pfad1 = $pfad & '\' & 'GoPalWorld-Skin'
    $dirsize = (DirGetSize($pfad1, 0)) ;~ Grösse des Installations-Ordners ermitteln
    $dirsizeround = Round($dirsize / 1024 / 1024, 2) ;~ Ergebnis runden in MB
    $installsize = ($dirsizeround - 6.00) ;~ Rundungsergebnis ./. 2 MB
    $speicher = Round($hardware[7] / 1024 / 1024, 2) ;~ SD-Karten freier Platz runden in MB
    If $speicher <= 0 Then ;~ ist der Speicherplatz kleiner als 0 (Falschmeldung der Hardware.exe bei Minus-Ausgabe)
    $speicher = ($speicher * - 1) ;~ mit -1 multiplizieren, um ein positives Ergebnis zu bekommen
    EndIf
    $bedarf = ($installsize - $speicher) ;~ Speicherbedarf berechnen

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

    If $speicher <= $installsize Then ;~ Wenn der Speicherplatz auf der SD kleiner ist als der Installation-Bedarf, dann Fehler
    MsgBox(16, "ACHTUNG", "Zu wenig Speicherplatz auf der Speicherkarte!" & @CRLF & '' & @CRLF & "Es sind nur " & $speicher & "MB statt benötigter " & $installsize & "MB frei!" & @CRLF & "Bitte Speicher-Karte um " & $bedarf & "MB bereinigen, " & @CRLF & "oder grössere Karte einsetzen und Programm neu starten!", 30)
    endscript() ;~ gehe in Endscript-Funktion
    Exit
    EndIf

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

    GUICtrlDelete($label2)
    $label2 = GUICtrlCreateLabel("Das Gerät ist ein ----> " & $hardware[5], 144, 152, 470, 24, BitOR($SS_LEFT, $SS_CENTERIMAGE))

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

    If StringLeft(StringRight($hardware[5], 4), 1) = 5 Then

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

    $hardware[1] = "Sirf"
    EndIf

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

    GUICtrlDelete($label3)
    GUICtrlDelete($label4)
    GUICtrlDelete($label5)
    GUICtrlDelete($label6)

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

    $label3 = GUICtrlCreateLabel("Das System arbeitet mit einem " & $hardware[1] & " Prozessor. ", 144, 176, 470, 24, BitOR($SS_LEFT, $SS_CENTERIMAGE))
    $label4 = GUICtrlCreateLabel("Folgende GoPal-Software ist installiert: " & $version_type & " " & $version_number, 144, 200, 470, 24, BitOR($SS_LEFT, $SS_CENTERIMAGE))
    If $hardware[2] == "mfd" And $hardware[3] = "sd" Then
    $label5 = GUICtrlCreateLabel("POIObs-Sourcen auf MFD und SD, Ziel auswählen ->", 144, 224, 420, 24, BitOR($SS_LEFT, $SS_CENTERIMAGE))
    $poibs_ins = GUICtrlCreateCombo("", 560, 224, 55, 55)
    GUICtrlSetData(-1, "--|mfd|sd", "mfd")
    ElseIf $hardware[2] == "mfd" And $hardware[3] = "-" Then
    $label5 = GUICtrlCreateLabel("POIObs-Sourcen auf MFD, Ziel auswählen ->", 144, 224, 420, 24, BitOR($SS_LEFT, $SS_CENTERIMAGE))
    $poibs_ins = GUICtrlCreateCombo("", 560, 224, 55, 55)
    GUICtrlSetData(-1, "--|mfd", "mfd")
    ElseIf $hardware[2] == "-" And $hardware[3] = "sd" Then
    $label5 = GUICtrlCreateLabel("POIObs-Sourcen auf SD, Ziel auswählen ->", 144, 224, 420, 24, BitOR($SS_LEFT, $SS_CENTERIMAGE))
    $poibs_ins = GUICtrlCreateCombo("", 560, 224, 55, 55)
    GUICtrlSetData(-1, "--|mfd|sd", "sd")
    Else
    if (FileExists(StringLeft(@SystemDir, 2) & "\myNFPOIs\POIObserver\PoiObserver.exe") And FileExists(StringLeft(@SystemDir, 2) & "\myNFPOIs\POIObserver\VirtComMgr.exe")) Then
    $label5 = GUICtrlCreateLabel("PoiObserver-Source auf " & StringLeft(@SystemDir, 2) & ", PoiObs installieren->", 144, 224, 420, 24, BitOR($SS_LEFT, $SS_CENTERIMAGE))
    $poibs_ins = GUICtrlCreateCombo("", 560, 224, 55, 55)
    GUICtrlSetData(-1, "--|sd|mfd", "mfd")
    ;~ ==============================
    ;~ NEU !!!!!!!!!!!!!!!!!!!!!!!!
    $file_path = "C:\myNFPOIs\POIObserver\"
    ;~ ==============================
    $poiobs_lokal = 1
    Else
    $label5 = GUICtrlCreateLabel("Keine POIOBServer-Sourcen gefunden!", 144, 224, 420, 24, BitOR($SS_LEFT, $SS_CENTERIMAGE))
    ;~ ==============================
    ;~ NEU !!!!!!!!!!!!!!!!!!!!!!!!
    MsgBox(0, "ACHTUNG", "Bitte den Ordner Poiobserver selber suchen!" & @CRLF & " " & @CRLF & "Sollte der Ordner nicht da sein," & @CRLF & "bitte das Newbiepack von" & @CRLF & "www.navifriends.com" & @CRLF & "nach Anmeldung downloaden" & @CRLF & "und auf dem PC installieren!" & @CRLF & " " & @CRLF & "Danach den Installer nochmals ausführen!", 10)
    $file_path = FileSelectFolder("PoiObs bitte selbst suchen", "", 4)
    GUICtrlDelete($label5)
    ConsoleWrite("filepath = " & $file_path )
    if (FileExists($file_path & "\PoiObserver.exe"))Then
    $label5 = GUICtrlCreateLabel("POIOBServer-Sourcen auf dem PC im Ordner", 144, 224, 420, 24, BitOR($SS_LEFT, $SS_CENTERIMAGE))
    $label6 = GUICtrlCreateLabel($file_path & " Ziel auswählen ->", 144, 248, 470, 24, BitOR($SS_LEFT, $SS_CENTERIMAGE))

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

    $poibs_ins = GUICtrlCreateCombo("", 560, 224, 55, 55)
    GUICtrlSetData(-1, "--|sd|mfd", "mfd")
    $poiobs_lokal = 1
    Else
    GUICtrlDelete($label2)
    GUICtrlDelete($label3)
    GUICtrlDelete($label4)
    GUICtrlDelete($label5)
    $label4 = GUICtrlCreateLabel("POIOBServer-Sourcen nicht gefunden!", 144, 200, 420, 24, BitOR($SS_LEFT, $SS_CENTERIMAGE))
    $label5 = GUICtrlCreateLabel("Bitte das Newbiepack von Navifriends installieren!", 144, 224, 420, 24, BitOR($SS_LEFT, $SS_CENTERIMAGE))
    $label6 = GUICtrlCreateLabel("Das Programm wird beendet! ", 144, 248, 470, 24, BitOR($SS_LEFT, $SS_CENTERIMAGE))
    Sleep(10000)
    endscript()
    Exit
    EndIf

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

    ;~ ==============================
    EndIf

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

    EndIf
    TraySetIcon()

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

    $Install = GUICtrlCreateButton("", 504, 352, 101, 69, $BS_BITMAP)
    GUICtrlSetImage(-1, $pfad & "\go.bmp", 0)
    _GUICtrl_SetOnhover(-1, "_hover_Proc", "_Leave_hover_Proc", "PrimaryDown_Proc", "PrimaryUp_Proc")
    $Abbruch = GUICtrlCreateButton("", 392, 352, 101, 69, $BS_BITMAP)
    GUICtrlSetImage(-1, $pfad & "\stop.bmp", 0)
    _GUICtrl_SetOnhover(-1, "_hover_Proc", "_Leave_hover_Proc", "PrimaryDown_Proc", "PrimaryUp_Proc")

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

    If $hardware[7] = "-" Then
    GUICtrlDelete($Install)
    MsgBox(4096, " Fehler", "Keine Speicherkarte gefunden " & @CRLF & " Programm wird beendet")
    endscript()
    Exit
    EndIf

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

    While 1
    $msg = GUIGetMsg()
    Select
    Case $msg = $GUI_EVENT_CLOSE
    endscript()
    Exit
    Case $msg = $Install
    #include "GPWs_func_3.au3"
    ExitLoop
    Case $msg = $Paypal
    ShellExecute("https://www.paypal.com/********************+")
    Case $msg = $Abbruch
    endscript()
    Exit
    EndSelect
    WEnd
    Else
    MsgBox(4096, " Fehler", "Keine Hardware.txt!" & @CRLF & " Programm wird beendet")

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

    EndIf

    [/autoit]

    Gruß
    Pitter

    Einmal editiert, zuletzt von Pitter (3. März 2011 um 12:53)

  • Bis hierhin würde ich sagen alles ok. Fehlen noch ca. 1350 Zeilen.
    Mal abgesehen davon das deine Variable $pfad keinen abschliessenden \ enthält, du aber z.B. nach $pfad & "7za.exe" installieren möchtest.


    edit: Umschliesst du deinen AutoIt Code bitte mit Spoilern.

    Code
    [spoiler][autoit]Dein COde[/autoit][/spoiler]
  • Naja...

    [autoit]

    $pfad = @TempDir & '\' & $SerialNumber & '\'

    [/autoit]

    Eine au3 kann ich nicht veröffentlichen, da ich die so dermassen einschrumpfen müsste, dass die nicht mehr lesbar wäre....
    Aber bereits in der gui.au3 müsste der Fehler auftreten, weil schon nach der Rückkehr aus der Update-Funktion das Problem auftritt.... :(

    Spoiler anzeigen
    [autoit]

    #region ;**** Directives created by AutoIt3Wrapper_GUI ****
    #AutoIt3Wrapper_Res_Language=1031
    #AutoIt3Wrapper_Tidy_Stop_OnError=n
    #endregion ;**** Directives created by AutoIt3Wrapper_GUI ****

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

    _IEErrorHandlerRegister()
    $oIE = _IECreateEmbedded()

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

    ;~ ############# Fenster für den Installer zusammenstellen
    $gui = GUICreate("GoPalWorld-PoiObs-Installer V6", 623, 436, -1, -1, BitOR($WS_SYSMENU, $WS_CAPTION, $WS_MINIMIZEBOX), 1)
    GUISetIcon($pfad & "earth_day.ico")
    GUISetFont(10, 400, 0, "MS Sans Serif")
    GUISetBkColor(0xA6CAF0)
    $Logo = GUICtrlCreatePic($pfad & "\Installer-Grafik_oben.jpg", 3, 3, 616, 96, BitOR($SS_NOTIFY, $WS_CLIPSIBLINGS))
    GUICtrlSetResizing(-1, $GUI_DOCKAUTO)
    $Logo2 = GUICtrlCreatePic($pfad & "\Installer-Grafik_links.jpg", 3, 98, 129, 333, BitOR($SS_NOTIFY, $WS_GROUP, $WS_CLIPSIBLINGS))
    GUICtrlSetResizing(-1, $GUI_DOCKAUTO)

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

    $ButtonGroup = GUICtrlCreateGroup("", 144, 328, 473, 105) ;~ Button-Gruppe für Paypal und Install-Buttons
    $Paypal = GUICtrlCreateButton("", 160, 352, 77, 49, $BS_BITMAP)
    GUICtrlSetImage(-1, $pfad & "\paypal.bmp", 0)
    $Label7 = GUICtrlCreateLabel("© GoPalWorld-Team 2008-2011", 150, 412, 193, 20)
    GUICtrlSetFont(-1, 6, 400, 0, "MS Sans Serif")
    $Install = GUICtrlCreateButton("", 504, 352, 101, 69, $BS_BITMAP)
    GUICtrlSetBkColor(-1, 0xFF0000)

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

    ;~ ############# Anzeige der Lizenz
    $GUIActiveX = GUICtrlCreateObj($oIE, 146, 104, 469, 221)
    _IENavigate($oIE, $pfad & "lizenz.htm")
    GUISetState(@SW_SHOW)

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

    ;~ ############# Entpacken des Skin-Ordners
    SplashOff()

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

    $archive2 = $pfad & "GoPalWorld-Skin.7z"
    Run($pfad & '7za.exe' & ' x "' & $archive2 & '" ' & '' & "-y -o" & '"' & $pfad & '"', @TempDir, @SW_HIDE)

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

    ;~ ############# Countdown für die Lizenz
    For $i = 10 To 1 Step -1
    GUICtrlSetData($Install, $i)
    Sleep(1000)
    Next

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

    GUICtrlDelete($Install)
    GUICtrlDelete($Label7)

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

    ;~ ############# Buttons zum annehmen und Ablehnen
    $Annehmen = GUICtrlCreateButton("", 444, 345, 164, 81, $BS_BITMAP)
    GUICtrlSetImage(-1, $pfad & "\annehmen.bmp", 0)
    _GUICtrl_SetOnhover(-1, "_hover_Proc", "_Leave_hover_Proc", "PrimaryDown_Proc", "PrimaryUp_Proc")
    $Ablehnen = GUICtrlCreateButton("", 272, 345, 164, 81, $BS_BITMAP)
    GUICtrlSetImage(-1, $pfad & "\ablehnen.bmp", 0)
    _GUICtrl_SetOnhover(-1, "_hover_Proc", "_Leave_hover_Proc", "PrimaryDown_Proc", "PrimaryUp_Proc")

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

    While 1
    $msg = GUIGetMsg()
    Select
    Case $msg = $GUI_EVENT_CLOSE
    ExitLoop
    Case $msg = $Annehmen
    GUICtrlDelete($oIE)
    GUICtrlDelete($GUIActiveX)
    GUICtrlDelete($Annehmen)
    GUICtrlDelete($Ablehnen)
    ExitLoop
    Case $msg = $Paypal
    ShellExecute("https://www.paypal.com/*******************************+")
    Case $msg = $Ablehnen
    endscript()
    Exit
    EndSelect
    WEnd
    ;~ ############# Ende Buttons

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

    ;~ ############# 2. Seite im Installer
    $InstName = GUICtrlCreateLabel("GoPalWorld-POiObs-Installer V6", 144, 104, 470, 33, BitOR($SS_CENTER, $SS_CENTERIMAGE))
    GUICtrlSetFont(-1, 14, 800, 0, "MS Sans Serif")
    $label2 = GUICtrlCreateLabel("WILLKOMMEN BEIM GPW-INSTALLER", 144, 152, 470, 24, BitOR($SS_CENTER, $SS_CENTERIMAGE))
    $label3 = GUICtrlCreateLabel("Bitte stelle sicher, dass der PNA mit dem PC", 144, 176, 470, 24, BitOR($SS_CENTER, $SS_CENTERIMAGE))
    $label4 = GUICtrlCreateLabel("korrekt verbunden und eingeschaltet bleibt!", 144, 200, 470, 24, BitOR($SS_CENTER, $SS_CENTERIMAGE))
    $Label7 = GUICtrlCreateLabel("© GoPalWorld-Team 2008-2010", 150, 412, 193, 20)
    GUICtrlSetFont(-1, 6, 400, 0, "MS Sans Serif")
    $Install = GUICtrlCreateButton("", 504, 352, 101, 69, $BS_BITMAP)
    GUICtrlSetImage(-1, $pfad & "\go.bmp", 0)
    _GUICtrl_SetOnhover(-1, "_hover_Proc", "_Leave_hover_Proc", "PrimaryDown_Proc", "PrimaryUp_Proc")
    $Abbruch = GUICtrlCreateButton("", 392, 352, 101, 69, $BS_BITMAP)
    GUICtrlSetImage(-1, $pfad & "\stop.bmp", 0)
    _GUICtrl_SetOnhover(-1, "_hover_Proc", "_Leave_hover_Proc", "PrimaryDown_Proc", "PrimaryUp_Proc")

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

    While 1
    $msg = GUIGetMsg()
    Select
    Case $msg = $GUI_EVENT_CLOSE
    endscript()
    Exit
    Case $msg = $Install
    #include "gpws_func_1.au3"
    ExitLoop
    Case $msg = $Paypal
    ShellExecute("https://www.paypal.com/**************************)
    Case $msg = $Abbruch
    endscript()
    Exit
    EndSelect
    WEnd
    Exit

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

    ;################################################
    ;###############Funktionen#######################
    ;################################################

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

    ;~############# Encrypt-Tool
    Func encrypt()
    $file = FileOpen(@ScriptDir & "\GPW.ini", 0)
    If $file = -1 Or "" Then
    MsgBox(16, "ACHTUNG", "GPW.ini fehlt oder ist leer" & @CRLF & "oder beschädigt. " & @CRLF & "Bitte die INI erneut downloaden " & @CRLF & "und in den Install-Ordner legen!", 10)
    endscript()
    Exit
    EndIf
    FileClose($file)

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

    $chars = FileRead(@ScriptDir & "\GPW.ini")

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

    $sEncryptPassword = '***************************'
    $iEncryptLevel = '****'

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

    $text = _StringEncrypt(0, $chars, $sEncryptPassword, $iEncryptLevel)

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

    $inifile = FileOpen($pfad & "\GPW_2.ini", 2)
    FileWrite($inifile, $text)
    FileClose($inifile)
    EndFunc ;==>encrypt

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

    ;~ ############## Fehlerfunktion bei FTP-Fehlern
    Func ftperror()
    MsgBox(16, "ACHTUNG", "Keine FTP-Verbindung möglich! " & @CRLF & "Bitte FTP in der Firewall freigeben," & @CRLF & "oder den Administrator bitten," & @CRLF & "den FTP-Zugang freizugeben!" & @CRLF & "" & @CRLF & "Der Installer wird nun beendet!", 10)
    endscript()
    Exit
    EndFunc ;==>ftperror

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

    ;~ ############## Funktion zum Beenden des Installers
    Func endscript()
    DirRemove($pfad, 1)
    Sleep(200)
    TraySetState(2)
    FileMove(@ScriptDir & "\update_1.txt", @ScriptDir & "\update.txt", 1)
    FileDelete(@ScriptDir & "\setup.txt")
    EndFunc ;==>endscript

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

    ;~ ############## Fehlermeldung bei der INI-Erkennung
    Func fehler()
    $goGPW = MsgBox(17, " Fehler", "Ihre Gopal-Version wird nicht unterstützt." & @CRLF & "Sie haben die Möglichkeit dem GopalWorld-Skin-Team durch einen Klick auf OK Ihre Gopal-Version mitzuteilen. Das GoPalWorld-Skin-Team wird daraufhin Ihre Version kompatibel machen." & @CRLF & @CRLF & "Möchten Sie uns Ihre Gopal-Version mitteilen?")
    If $goGPW = 1 Then
    ShellExecute("http://service.gopalworld.de/gopal.php?size=" & $hardware[4] & "&pna=" & $hardware[5] & "&version=" & $hardware[6] & "&installer= GPW-Skin-Installer")
    endscript()
    Exit
    Else
    endscript()
    Exit
    EndIf
    EndFunc ;==>fehler

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

    ;~ ############## Funktionen zur Animation der Buttons
    Func _hover_Proc($iCtrlID)
    Switch $iCtrlID
    Case $Annehmen
    GUICtrlSetImage($iCtrlID, $pfad & "\annehmen_hoover.bmp")
    Case $Ablehnen
    GUICtrlSetImage($iCtrlID, $pfad & "\ablehnen_hoover.bmp")
    Case $Install
    GUICtrlSetImage($iCtrlID, $pfad & "\go_hoover.bmp")
    Case $Abbruch
    GUICtrlSetImage($iCtrlID, $pfad & "\stop_hoover.bmp")
    Case $End
    GUICtrlSetImage($iCtrlID, $pfad & "\end_hoover.bmp")
    Case $Reboot
    GUICtrlSetImage($iCtrlID, $pfad & "\reboot_hoover.bmp")
    EndSwitch
    EndFunc ;==>_hover_Proc

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

    Func _Leave_hover_Proc($iCtrlID)
    Switch $iCtrlID
    Case $Annehmen
    GUICtrlSetImage($iCtrlID, $pfad & "\annehmen.bmp")
    Case $Ablehnen
    GUICtrlSetImage($iCtrlID, $pfad & "\ablehnen.bmp")
    Case $Install
    GUICtrlSetImage($iCtrlID, $pfad & "\go.bmp")
    Case $Abbruch
    GUICtrlSetImage($iCtrlID, $pfad & "\stop.bmp")
    Case $End
    GUICtrlSetImage($iCtrlID, $pfad & "\end.bmp")
    Case $Reboot
    GUICtrlSetImage($iCtrlID, $pfad & "\reboot.bmp")
    EndSwitch
    EndFunc ;==>_Leave_hover_Proc

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

    Func PrimaryDown_Proc($iCtrlID)
    Switch $iCtrlID
    Case $Annehmen
    GUICtrlSetImage($iCtrlID, $pfad & "\annehmen_pressed.bmp")
    Case $Ablehnen
    GUICtrlSetImage($iCtrlID, $pfad & "\ablehnen_pressed.bmp")
    Case $Install
    GUICtrlSetImage($iCtrlID, $pfad & "\go_pressed.bmp")
    Case $Abbruch
    GUICtrlSetImage($iCtrlID, $pfad & "\stop_pressed.bmp")
    Case $End
    GUICtrlSetImage($iCtrlID, $pfad & "\end_pressed.bmp")
    Case $Reboot
    GUICtrlSetImage($iCtrlID, $pfad & "\reboot_pressed.bmp")
    EndSwitch
    EndFunc ;==>PrimaryDown_Proc

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

    Func PrimaryUp_Proc($iCtrlID)
    Switch $iCtrlID
    Case $Annehmen
    GUICtrlSetImage($iCtrlID, $pfad & "\annehmen_hoover.bmp")
    Case $Ablehnen
    GUICtrlSetImage($iCtrlID, $pfad & "\ablehnen_hoover.bmp")
    Case $Install
    GUICtrlSetImage($iCtrlID, $pfad & "\go_hoover.bmp")
    Case $Abbruch
    GUICtrlSetImage($iCtrlID, $pfad & "\stop_hoover.bmp")
    Case $End
    GUICtrlSetImage($iCtrlID, $pfad & "\end_hoover.bmp")
    Case $Reboot
    GUICtrlSetImage($iCtrlID, $pfad & "\reboot_hoover.bmp")
    EndSwitch
    EndFunc ;==>PrimaryUp_Proc

    [/autoit]

    Gruß
    Pitter

    Einmal editiert, zuletzt von Pitter (3. März 2011 um 12:54)

  • Naja...

    [autoit]

    $pfad = @TempDir & '\' & $SerialNumber & '\'

    [/autoit]


    Ja ok, hab ich nicht gesehen. Frag ich mich dann aber warum du ein paar Zeilen vorher dieselbe Variable mit einem anderen Wert global definierst. Im 2ten Skript in Zeile3 machst du dann aber sowas "TraySetIcon($pfad & "\car.ani")". In Zeile 30 dann " $hardware1 = FileRead($pfad & 'hardware.txt')". Da soll dann z.B. das Array $hardware draus erstellt werden und schon eine Zeile später setzt du voraus, das dieses Array auch wirklcih existiert: " if $hardware[10] = 6 Then".

    Da sollte man vlt. mal ein wenig mit IsArray() arbeiten.

  • global hab ich die definiert, weil ich $pfad noch mehrfach brauche in den weiteren au3...

    zu:$hardware1 = FileRead($pfad & 'hardware.txt')"
    Gut, das kannst Du nicht wissen, was da zwischendrin passiert. Aber das ist schon so in Ordnung, da ich:
    a: die Existenz der Datei abprüfe
    b: dort definitiv ein Eintrag vorhanden ist, weil ich diese hardware.txt über ein externes Programm auf dem PNA erstellen lasse... und diese liesst die REG des Gerätes aus und trägt in jedem Fall dort was ein.... und wenn es ein "-" ist.
    Klar... sauberer wäre das mit IsArray() zu arbeiten... stimmt! Kann aber hier doch eigentlich nicht zu dem benannten Fehler führen...

    TraySetIcon($pfad & "\car.ani")... stimmt... das ist ein Fehler... hab noch einen solchen Fehler gefunden...
    Nur komischerweise funktioniert das auf mehr als mittlerweile mehr als 5.000 Systemen... nur bei Systemen mit anderer Spracheinstellung nicht!!!
    Das ist ja das seltsame an der Geschichte... ;(

    Gruß
    Pitter

  • global hab ich die definiert, weil ich $pfad noch mehrfach brauche in den weiteren au3...


    Und trotzdem definierst du unmittelbar nacheinander 2 verschiedene Werte ohne den ersten jemals genutzt zu haben :)

    Zitat

    zu:$hardware1 = FileRead($pfad & 'hardware.txt')"
    Gut, das kannst Du nicht wissen, was da zwischendrin passiert. Aber das ist schon so in Ordnung, da ich:
    a: die Existenz der Datei abprüfe
    b: dort definitiv ein Eintrag vorhanden ist, weil ich diese hardware.txt über ein externes Programm auf dem PNA erstellen lasse... und diese liesst die REG des Gerätes aus und trägt in jedem Fall dort was ein.... und wenn es ein "-" ist.


    Entschuldige den Ausdruck aber da beginnt die Schlamperei zur Methode zu werden. Bei einem Skript diesen Umfangs ist jede noch so kleine Abfrage bei der Fehlersuche hilfreich. Das du die Existenz prüfst ist ja gut und schön aber du verlässt dich blind darauf, das dort auch etwas drinsteht.

    Zitat

    Klar... sauberer wäre das mit IsArray() zu arbeiten... stimmt! Kann aber hier doch eigentlich nicht zu dem benannten Fehler führen...


    Der Fehler wird aber durch einen fehlerhaften Zugriff auf ein Array ausgelöst. Den kompletten Code kannst du nicht zeigen also sag ich dir nochmal - @error auswerten wo es nur geht, Rückgabewerte prüfen, isArray() verwenden ...

    Wir können das Skript ja leider nicht testen. Wenn du den Fehler durch intensives debugen nicht findest, musst du als Entwickler wohl in den sauren Apfel beissen und dir ein System mit den selben Bedingungen aufsetzen. Spätestens dann solltest du das Problem finden.

  • Du hast ja Recht mit der Schlamperei...... :whistling:

    Ich bin eh dabei die Version zu überarbeiten, weil mal wieder ein paar Updates eingepflegt werden müssen...
    Bin ja froh, dass Du mich auf meine Fehler stösst. Ich nehm es mir zu Herzen und bau den Krempel mal komplett um...

    Gruß
    Pitter

  • Du könntest auch mal versuchen dein Script mit dem Obfuscator zu kompilieren. Dabei darauf achten, dass nichts obfuscated oder entfernt wird (siehe Parameter des Obfuscators). So solltest du eine au3 erhalten die sämtliche Codezeilen inklusive includes enthält und dadurch etwas mit der Zeilenangabe anfangen können die in der Fehlermeldung genannt wird. Hab ich aber noch nie getestet, ein Versuch ist es jedenfalls wert. Selbst wenn die Zeilenangabe nicht genau übereinstimmt sollte es dadurch möglich sein den Bereich einzuschränken.

  • Interessanter Lösungsansatz....

    Hab das mal getestet und den Bereich lokalisiert.

    Das scheint in diesem Bereich zu liegen:

    Spoiler anzeigen
    [autoit]

    MsgBox(64, "Update!", "Es ist eine Neue Version verfügbar!")
    $fg = MsgBox(65, "Updaten?", "Möchten Sie jetzt Updaten?", 30)
    If $fg = 1 Then
    $DownloadIniFile = ($pfad & "GPW_3.ini") ;~ Pfad in Var schreiben
    $Ftp_IniName = "GPW.ini" ;~ Dateiname in Var schreiben

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

    $Open = _FTP_Open('MyFTP Control') ;~ Öffne FTP
    If @error = 1 Then ftperror()

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

    $label6 = GUICtrlCreateLabel("FTP wird geöffnet...", 144, 248, 470, 24, BitOR($SS_CENTER, $SS_CENTERIMAGE))
    Sleep(500)

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

    $Conn = _FTP_Connect($Open, $server, $username, $pass) ;~ Verbinden mit dem FTP
    If @error = 1 Then ftperror() ;~ Wenn kein FTP möglich, dann gehe in Fehler

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

    GUICtrlDelete($label6)
    $label6 = GUICtrlCreateLabel("Anmelden am Server....", 144, 248, 470, 24, BitOR($SS_CENTER, $SS_CENTERIMAGE))
    Sleep(500)

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

    $FtpDir = _FTP_DirSetCurrent($Conn, $path) ;~ Wechseln des Standart-Verzeichnisses
    If @error = 1 Then ftperror() ;~ Wenn kein FTP möglich, dann gehe in Fehler

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

    GUICtrlDelete($label6)

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

    Local $Ftpd_2 = _FTP_ProgressDownload($Conn, $DownloadIniFile, $Ftp_IniName) ;~ Download mit Progressbar

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

    If $Ftpd_2 = 1 Then ;~ Kontrolle, ob File da ist
    Local $Ftpc = _FTP_Close($Open) ;~ FTP wieder schliessen
    Else
    $label6 = GUICtrlCreateLabel("DATEI WURDE NICHT GELADEN!", 144, 248, 470, 24, BitOR($SS_CENTER, $SS_CENTERIMAGE))
    Local $Ftpc = _FTP_Close($Open) ;~ FTP wieder schliessen
    Sleep(3000)
    endscript()
    Exit
    EndIf
    Sleep(200)
    FileMove($pfad & "GPW_3.ini", @ScriptDir & "\GPW.ini", 1) ;~ Die runtergeladene INI umbenennen zum Weiterverarbeiten

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

    ;############### Lauf in die Encrypt-Funktion
    encrypt() ;~ call encrypt-function
    ;############### Kommt aus der Encrypt-Funktion zurück

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

    $new_hardware = IniReadSection($pfad & "GPW_1.ini", "new_PNAs")
    $flag = 0
    For $i = 1 To $new_hardware[0][0]
    If StringLeft($new_hardware[$i][1], 4) = StringLeft($hardware[5], 4) Then
    $flag = 1
    ;~ Global $new_display_size = $new_hardware[$i][0]
    EndIf
    Next

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

    $var = IniReadSection($pfad & "GPW_1.ini", "version_path")
    $ini = IniReadSection($pfad & "GPW_1.ini", "version_size")
    For $i = 1 To $ini[0][0]

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

    If $ini[$i][1] = $hardware[4] Then
    $version = $ini[$i][0]
    ExitLoop
    Else
    $version = "----"

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

    EndIf
    Next

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

    If $flag = 0 Then
    MsgBox(65, " Fehler", "Ihr Medion-PNA wird nicht über diesen" & @CRLF & "Installer unterstützt. Bitte benutzen Sie den" & @CRLF & "GPW-PoiObs-Installer V 1.5.1" & @CRLF & @CRLF & "Programm wird beendet.")
    endscript()
    Exit
    EndIf

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

    If $version = "----" And $hardware[4] <> "-" Then
    $goGPW = MsgBox(36, " Fehler", "Ihre Gopal-Version wird nicht unterstützt." & @CRLF & "Sie haben die Möglichkeit dem GopalWorld-Skin-Team durch einen Klick auf YES ihre Gopal-Version mitzuteilen. Das Goaplworld-Skin-Team wird daraufhin ihre Version kompatibel machen." & @CRLF & @CRLF & "Möchten Sie uns Ihre Gopal-Version mitteilen?")
    If $goGPW = 6 Then
    ShellExecute("http://service.gopalworld.de/gopal.php?size=" & $hardware[4] & "&pna=" & $hardware[5] & "&version=" & $hardware[6] & "&winvers=" & $hardware[10] & "&Installer=GPW-PoiObs-Installer-V6")
    EndIf
    endscript()
    Exit
    EndIf
    If $version = "----" Then
    fehler()
    EndIf
    Else
    fehler()
    EndIf
    EndIf
    Else
    ftperror()
    EndIf
    Else
    fehler()
    EndIf
    EndIf
    ;~ ######################Ende der neuen Funktion

    [/autoit]

    Seht Ihr da was, was ich verändern könnte?
    Ich tippe auf den Abschnitt, nachdem das Script aus der encypt() zurück kommt....

    Gruß
    Pitter

  • Schau dir Zeile 43 genau an, grundsätzlich gehört zur Fehlervermeidung an solchen Stellen mit IsArray gearbeitet:

    [autoit]

    if StringRight($pfad,1) <> "\" then $pfad &= "\" ;vorher einfügen
    $new_hardware = IniReadSection($pfad & "GPW_1.ini", "new_PNAs")
    If IsArray($new_hardware) Then
    $flag = 0
    For $i = 1 To $new_hardware[0][0]
    If StringLeft($new_hardware[$i][1], 4) = StringLeft($hardware[5], 4) Then
    $flag = 1
    ;~ Global $new_display_size = $new_hardware[$i][0]
    EndIf
    Next
    Else
    ;Fehlermeldung ausgeben
    Exit
    EndIf

    [/autoit]

    mfg autoBert

  • Danke erst mal für die Hinweise...
    Werde das berücksichtigen bei meinen Änderungen...

    Was mich nur wundert ist, dass das bisher noch nirgendwo Probleme gemacht hat... nur bei Leuten, die osteuropäische Sprach-Versionen aktiv haben fängt das Teil das spinnen an....
    Die gleichen Grundscripte incl. der Encrypt-Funktion benutze ich in 6 verschiedenen Installern... ohne Änderung, mit genau dem gleichen Ablauf. Die Anpassungen erfolgen erst in den weiteren au3.

    Wenn ich da alle erfolgreichen Installationen addiere, komme ich auf fast 20.000 fehlerfreien Installationen (mal die DAUs ausgenommen, wo die Fehler vor der eigenen Tastatur sitzen und fehlerhafter Formatierung der SD-Karten, Blockaden durch Virenscanner oder Firewalls).... eigentlich immer die gleichen Fehler, bis auf diese beiden Burschen. einer mit russischer Sprachversion auf deutschem Win7 32bit und einer mit polnischer Sprachversion auf Vista 64bit.

    Deshalb habe ich bisher diesen kompletten Teil unangetastet gelassen, so wie ich das vor fast 1 Jahr mal erweitert habe.... Nach dem Motto: Never change a running system.

    Gruß
    Pitter