profifrage: datei encodieren / decodieren - methode zu langsam :(

  • es muss an einem String liegen, der größer ist als die Begrenzung.
    Ich denke, das du mehr als ~85MB freien Ram hast ^^
    Ändere mal die Zahl 2147483646 an allen Stellen in 2147473646, dann trennt er 10000 Zeichen früher, vielleicht reicht das

    --EDIT-- Achja, lass dir das Ergebnisarray nicht anzeigen, der lädt sich tot, weil es relativ groß ist
    --EDIT2-- Ich habe grade nochmal getestet, bei mir hat Autoit beim durchlauf eine Auslastung von bis zu 4500MB RAM, ist wohl doch ein bisschen Viel rechnerei mit vielen großen Daten.

    Vielleicht wäre es einfacher, die Daten nicht zu Speichern, sondern direkt in eine Datei zu schreiben, ich schau mal ob es damit besser klappt

    --Edit3-- Probier es mal damit

    Spoiler anzeigen
    [autoit]

    Func _Decodefile($s_FileName)
    Local $a_AArr, $s_Mid, $read, $s_ret, $i_done, $len, $count, $exitdo = 0, $maxstringlenght = 2147483646, $pos = 0
    $hFile = FileOpen($s_FileName, 16)
    $hFile2 = FileOpen(@ScriptDir & "\extracted-vfiles\test-decoded.v", 17)
    FileWrite($hFile2, "0x")
    Do
    $read = FileRead($hFile, $maxstringlenght)
    $len = StringLen($read)
    If $len < $maxstringlenght Then
    $exitdo = 1
    Else
    If $pos = 0 Then
    FileSetPos($hFile, $pos + 1, 0)
    Else
    FileSetPos($hFile, $pos, 0)
    EndIf
    $pos += $maxstringlenght
    EndIf
    $i_done = 1
    $count = Ceiling($len / 16777215)
    ConsoleWrite('@@ Debug(' & @ScriptLineNumber & ') : $len = ' & $len & @crlf & '>Error code: ' & @error & @crlf) ;### Debug Console
    ConsoleWrite('@@ Debug(' & @ScriptLineNumber & ') : $count = ' & $count & @crlf & '>Error code: ' & @error & @crlf) ;### Debug Console
    For $k = 1 To $count
    $s_ret = ""
    ConsoleWrite('@@ Debug(' & @ScriptLineNumber & ') : $k = ' & $k & @crlf & '>Error code: ' & @error & @crlf) ;### Debug Console
    $s_Mid = StringMid($read, $i_done, 16777215)
    $a_AArr = StringSplit($s_Mid, "")
    For $i = 1 To $a_AArr[0]
    If IsInt($i/100000) Then ConsoleWrite('@@ Debug(' & @ScriptLineNumber & ') : $i = ' & $i & @crlf & '>Error code: ' & @error & @crlf) ;### Debug Console
    If $a_AArr[$i] = "0" And $a_AArr[$i + 1] = "x" Then ContinueLoop
    If $a_AArr[$i] = "x" And $a_AArr[$i - 1] = "0" Then ContinueLoop
    Switch $a_AArr[$i]
    Case "5"
    $s_ret &= "0"
    Case "4"
    $s_ret &= "1"
    Case "7"
    $s_ret &= "2"
    Case "6"
    $s_ret &= "3"
    Case "1"
    $s_ret &= "4"
    Case "0"
    $s_ret &= "5"
    Case "3"
    $s_ret &= "6"
    Case "2"
    $s_ret &= "7"
    Case "D"
    $s_ret &= "8"
    Case "C"
    $s_ret &= "9"
    Case "F"
    $s_ret &= "A"
    Case "E"
    $s_ret &= "B"
    Case "9"
    $s_ret &= "C"
    Case "8"
    $s_ret &= "D"
    Case "B"
    $s_ret &= "E"
    Case "A"
    $s_ret &= "F"
    EndSwitch
    Next
    $i_done += 16777215
    $t = FileWrite($hFile2, $s_ret)
    ConsoleWrite('@@ Debug(' & @ScriptLineNumber & ') : $t = ' & $t & @crlf & '>Error code: ' & @error & @crlf) ;### Debug Console
    Next
    Until $exitdo = 1
    FileClose($hFile)
    FileClose($hFile2)
    Return 1
    EndFunc ;==>_Decodefile

    [/autoit]
  • dann ändere mal die Werte

    [autoit]

    $maxstringlenght

    [/autoit]

    und

    [autoit]

    16777215

    [/autoit]

    , setz die mal etwas kleiner, dann läuft der zwar öfter durch, der Speicherbedarf sollte aber niedriger sein

  • jo, sauber, daran lags ... zwar dauerts schon recht lange(war ja nicht anders zu erwarten bei autoit), aber wenigstens gehts! DANKE für deine zeit! hast du paypal ? würde mich gerne etwas erkenntlich zeigen.
    jetzt muss ich nurnoch eine ordentlich zip-funktion finden ... meine entpackt zwar, aber gibt trotzdem eine fehlermeldung ... hab da schon ewig dran rumgefummelt und wenn die unter win64 auch nicht geht ist es ja doof.

  • such mal nach der 7zip.dll, gibt auch ne UDF für autoit, die funktioniert eigentlich sehr gut.

  • ich hatte mich mal vor 2 jahren mit der 7zip vergeblich rumgeschlagen... die udf hatte bei mir gar nicht funktioniert. ...leider sind dinge auch komplett in zip ... ich weiss gar nicht ob man das überhaupt mit 7zip als "normals" packen und entpacken kann.....
    leider rennt die funktion von dir doch noch nicht so ganz ....
    - es rennt zwar mit errcode 0 durch, aber speichert die datei nicht. (decode)
    - bei encode (Siehe anhang/neues script): array out of range fehler bei " If $a_AArr[$i] = "0" And $a_AArr[$i + 1] = "x" Then ContinueLoop"
    den kann ich fixen mit: "For $i = 1 To $a_AArr[0] -1" statt "For $i = 1 To $a_AArr[0]"
    das ganze wird zwar dann laut debug beendet ohne fehler (siehe anhang), aber leider ist die gespeicherte ergebnis-datei dann fast leer.

    Spoiler anzeigen


    Spoiler anzeigen
    [autoit]


    ;~ #include <AVIConstants.au3>
    ;~ #include <ButtonConstants.au3>
    ;~ #include <EditConstants.au3>
    ;~ #include <GUIConstantsEx.au3>
    ;~ #include <StaticConstants.au3>
    #include <WindowsConstants.au3>
    #include <Array.au3>
    #include <File.au3>
    ;~ #include <GUIConstants.au3>
    ;~ #include <GuiListView.au3>
    ;~ #include <GuiImageList.au3>
    ;~ #include <Constants.au3>
    ;~ #include <inet.au3>
    ;~ #include <GuiEdit.au3>
    ;~ #include <GuiStatusBar.au3>
    ;~ #include <ScrollBarConstants.au3>
    ;~ #include <sendmessage.au3>
    #include <string.au3>
    #include <Zip32.au3>

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

    FileInstall("zip32.dll", @ScriptDir & "\zip32.dll")
    FileInstall("unzip32.dll", @ScriptDir & "\unzip32.dll")
    Global $destdirectory, $sourcefile, $sourcedirtozip, $destzipname, $timestring

    _StatsSaver()

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

    Func _StatsSaver() ; StatsSaver GUI
    $h10Gui = GUICreate("Stats Unpacker V0.01", 200, 200, -1, -1, $WS_MINIMIZEBOX)
    ;$Label61 = GUICtrlCreateLabel("Thanx for idea to ", 40, 70)
    ;GUICtrlCreatePic(@TempDir & "\logo.jpg", 10, 10, 425, 55)
    $QuitStats = GUICtrlCreateButton("X", 179, 0, 15, 15, 0)
    $RestoringStats = GUICtrlCreateButton("Restore Stats", 10, 120, 100, 15, 0)
    $SaveStats = GUICtrlCreateButton("Save Stats", 10, 140, 100, 15, 0)
    GUISetState(@SW_SHOW)

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

    While 1
    $nMsg = GUIGetMsg()
    Sleep(20)
    Switch $nMsg
    Case $QuitStats
    GUIDelete($h10Gui)
    ExitLoop
    Case $RestoringStats
    $sourcefile = FileOpenDialog("Select a vfile (.v archive)", @ScriptDir, "vfiles (*.v)")
    if $sourcefile <> "" Then
    $splitted = StringSplit($sourcefile,"\")
    _ArrayDisplay($splitted)
    _checkifstatsbackupexists2()
    $createdir = StringTrimRight($splitted[$splitted[0]], 2)
    MsgBox(0,"",$createdir)
    DirCreate(@ScriptDir & "\extracted-vfiles\" & $createdir)
    $decoded = _Decodefile($sourcefile)
    FileWrite(@ScriptDir & "\extracted-vfiles\"&$createdir&"-decoded.v", $decoded)
    _unpack(@ScriptDir & "\extracted-vfiles\"&$createdir&"-decoded.v", @ScriptDir & "\extracted-vfiles\"&$createdir)
    EndIf
    Case $SaveStats
    $sourcefile = FileSelectFolder("Select a directroy where vfiles where extracted", @ScriptDir)
    if $sourcefile <> "" Then
    $splitted = StringSplit($sourcefile,"\")
    $savedir = $splitted[$splitted[0]]
    _checkifstatsbackupexists()
    _pack($sourcefile, @ScriptDir & "\vfiles\"&$savedir&"-packed.v")
    $s_FileName = @ScriptDir & "\vfiles\"&$savedir&"-packed.v"
    $encoded = _Encodefile($s_FileName)
    FileWrite(@ScriptDir & "\vfiles\"&$savedir&".v", $encoded)
    EndIf
    EndSwitch
    WEnd
    EndFunc ;==>_tatsSaver

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

    Func _unpack($sourcefile, $destdirectory)
    _UnZip_Init("_UnZIP_PrintFunc", "UnZIP_ReplaceFunc", "_UnZIP_PasswordFunc", "_UnZIP_SendAppMsgFunc", "_UnZIP_ServiceFunc")
    _UnZIP_SetOptions()
    _UnZIP_Unzip($sourcefile, $destdirectory)
    If @error Then
    MsgBox(16, "Error", "Restorings stats and Archive unpacking error")
    Else
    MsgBox(64, "Success", "Restoring stats and archive unpacking successful")
    EndIf
    EndFunc

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

    Func _pack($sourcedirtozip, $destzipname)
    _Zip_Init("_ZIPPrint", "_ZIPPassword", "_ZIPComment", "_ZIPProgress")
    If @error Then
    MsgBox(16, "Error", "Zip32.dll did not initialize")
    Exit
    EndIf
    ; Global $sDate = 0, $sEncrypt = 0, $sSys = 1, $sEmptyFolder = 0, $sExcludeDate = 0, $sIncludeDate = 0, $sJunkDir = 0, $sMove = 0, $sUpdate = 0,
    ; $sFresh = 0, $sLatestTime = 0, $sComment = 0, $sPrivilege = 1, $sRecurse = 1, $sLevel = 9

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

    _ZIP_SetOptions(0,0,1,0,0,0,1)
    If @error Then
    MsgBox(16, "Error", "Options sets error")
    Exit
    EndIf

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

    _ZIP_Archive($destzipname, $sourcedirtozip)
    If @error Then
    MsgBox(16, "Error", "Saving stats and archive creating error")
    Else
    MsgBox(64, "Success", "Saving stats and archive creating successful")
    EndIf
    EndFunc

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

    Func _checkifstatsbackupexists()
    if DirGetSize(@ScriptDir & "\vfiles") = -1 then DirCreate(@ScriptDir & "\vfiles")
    EndFunc

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

    Func _checkifstatsbackupexists2()
    if DirGetSize(@ScriptDir & "\extracted-vfiles") = -1 then DirCreate(@ScriptDir & "\extracted-vfiles")
    EndFunc

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

    Func _createtimestring()
    Global $timestring = ("__date_"&@MON&"_"&@MDAY&"_"&@YEAR&"__time_"&@HOUR&"_"&@MIN&"_"&@SEC)
    EndFunc

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

    ;==========================# ZIP Dll-callback functions #======================================
    Func _ZIPPrint($sFile, $sPos)
    ConsoleWrite("!> _ZIPPrint: " & $sFile & @LF)
    EndFunc

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

    Func _ZIPPassword($sPWD, $sX, $sS2, $sName)
    Local $iPass = InputBox("Archive encrypting set", "Enter the password", "", "", 300, 120)

    If $iPass = "" Then Return 1

    Local $PassBuff = DllStructCreate("char[256]", $sPWD)
    DllStructSetData($PassBuff, 1, $iPass)
    EndFunc

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

    Func _ZIPComment($sComment)
    Local $iComment = InputBox("Archive comment set", "Enter the comment", "", "", 300, 120)
    If $iComment = "" Then Return 1

    Local $CommentBuff = DllStructCreate("char[256]", $sComment)
    DllStructSetData($CommentBuff, 1, $iComment)
    EndFunc

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

    ;~ Func _ZIPProgress($sName, $sSize)
    ;~ ;Return 1 for abort the zip!
    ;~ $CurZipSize += Number($sSize)
    ;~ Local $iPercent = Round(($CurZipSize / $UnCompSize * 100))
    ;~ GUICtrlSetData($progress, $iPercent)
    ;~ GUICtrlSetData($edit, $sName & @CRLF, 1)
    ;~
    ;~ ConsoleWrite("!> Name: " & $sName & @LF)
    ;~ EndFunc

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

    ;==========================# UnZIP Dll-callback functions #========================================
    Func _UnZIP_PrintFunc($sName, $sPos)
    ConsoleWrite("---> _UnZIP_PrintFunc: " & $sName & @LF)
    EndFunc

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

    Func UnZIP_ReplaceFunc($sReplace)
    If MsgBox(4 + 32, "Overwrite", "File " & $sReplace & " is exists." & @LF & "Do you want to overwrite all file?") = 6 Then
    Return $IDM_REPLACE_ALL
    Else
    Return $IDM_REPLACE_NONE
    EndIf
    EndFunc

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

    Func _UnZIP_PasswordFunc($sPWD, $sX, $sS2, $sName)
    ConsoleWrite("!> UnZIP_PasswordFunc: " & $sPWD & @LF)

    Local $iPass = InputBox("Password require", "Enter the password for decrypt", "", "", 300, 120)
    If $iPass = "" Then Return 1

    Local $PassBuff = DllStructCreate("char[256]", $sPWD)
    DllStructSetData($PassBuff, 1, $iPass)
    EndFunc

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

    Func _UnZIP_SendAppMsgFunc($sUcsize, $sCsize, $sCfactor, $sMo, $Dy, $sYr, $sHh, $sMm, $sC, $sFname, $sMeth, $sCRC, $fCrypt)
    ;ConsoleWrite("!> _UnZIP_SendAppMsgFunc: " & $sUcsize & @LF)
    EndFunc

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

    Func _Encodefile($s_FileName)
    Local $a_AArr, $s_Mid, $read, $s_ret, $i_done, $len, $count, $exitdo = 0, $maxstringlenght = 16777215, $pos = 0
    $hFile = FileOpen($s_FileName, 16)
    $hFile2 = FileOpen(@ScriptDir & "\vfiles\"&$s_FileName&"-packed2.v", 17)
    FileWrite($hFile2, "0x")
    Do
    $read = FileRead($hFile, $maxstringlenght)
    $len = StringLen($read)
    If $len < $maxstringlenght Then
    $exitdo = 1
    Else
    If $pos = 0 Then
    FileSetPos($hFile, $pos + 1, 0)
    Else
    FileSetPos($hFile, $pos, 0)
    EndIf
    $pos += $maxstringlenght
    EndIf
    $i_done = 1
    $count = Ceiling($len / 16777215)
    ConsoleWrite('@@ Debug(' & @ScriptLineNumber & ') : $len = ' & $len & @crlf & '>Error code: ' & @error & @crlf) ;### Debug Console
    ConsoleWrite('@@ Debug(' & @ScriptLineNumber & ') : $count = ' & $count & @crlf & '>Error code: ' & @error & @crlf) ;### Debug Console
    For $k = 1 To $count
    $s_ret = ""
    ConsoleWrite('@@ Debug(' & @ScriptLineNumber & ') : $k = ' & $k & @crlf & '>Error code: ' & @error & @crlf) ;### Debug Console
    $s_Mid = StringMid($read, $i_done, 16777215)
    $a_AArr = StringSplit($s_Mid, "")
    For $i = 1 To $a_AArr[0]
    If IsInt($i/100000) Then ConsoleWrite('@@ Debug(' & @ScriptLineNumber & ') : $i = ' & $i & @crlf & '>Error code: ' & @error & @crlf) ;### Debug Console
    If $a_AArr[$i] = "0" And $a_AArr[$i + 1] = "x" Then ContinueLoop
    If $a_AArr[$i] = "x" And $a_AArr[$i - 1] = "0" Then ContinueLoop
    Switch $a_AArr[$i]
    Case "0"
    $a_AArr[$i] = "5"
    Case "1"
    $a_AArr[$i] = "4"
    Case "2"
    $a_AArr[$i] = "7"
    Case "3"
    $a_AArr[$i] = "6"
    Case "4"
    $a_AArr[$i] = "1"
    Case "5"
    $a_AArr[$i] = "0"
    Case "6"
    $a_AArr[$i] = "3"
    Case "7"
    $a_AArr[$i] = "2"
    Case "8"
    $a_AArr[$i] = "D"
    Case "9"
    $a_AArr[$i] = "C"
    Case "A"
    $a_AArr[$i] = "F"
    Case "B"
    $a_AArr[$i] = "E"
    Case "C"
    $a_AArr[$i] = "9"
    Case "D"
    $a_AArr[$i] = "8"
    Case "E"
    $a_AArr[$i] = "B"
    Case "F"
    $a_AArr[$i] = "A"
    EndSwitch
    Next
    $i_done += 16777215
    $t = FileWrite($hFile2, $s_ret)
    ConsoleWrite('@@ Debug(' & @ScriptLineNumber & ') : $t = ' & $t & @crlf & '>Error code: ' & @error & @crlf) ;### Debug Console
    Next
    Until $exitdo = 1
    FileClose($hFile)
    FileClose($hFile2)
    Return 1
    EndFunc ;==>_Decodefile

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

    Func _Decodefile($s_FileName)
    Local $a_AArr, $s_Mid, $read, $s_ret, $i_done, $len, $count, $exitdo = 0, $maxstringlenght = 16777215, $pos = 0
    $hFile = FileOpen($s_FileName, 16)
    $hFile2 = FileOpen(@ScriptDir & "\extracted-vfiles\test-decoded.v", 17)
    FileWrite($hFile2, "0x")
    Do
    $read = FileRead($hFile, $maxstringlenght)
    $len = StringLen($read)
    If $len < $maxstringlenght Then
    $exitdo = 1
    Else
    If $pos = 0 Then
    FileSetPos($hFile, $pos + 1, 0)
    Else
    FileSetPos($hFile, $pos, 0)
    EndIf
    $pos += $maxstringlenght
    EndIf
    $i_done = 1
    $count = Ceiling($len / 16777215)
    ConsoleWrite('@@ Debug(' & @ScriptLineNumber & ') : $len = ' & $len & @crlf & '>Error code: ' & @error & @crlf) ;### Debug Console
    ConsoleWrite('@@ Debug(' & @ScriptLineNumber & ') : $count = ' & $count & @crlf & '>Error code: ' & @error & @crlf) ;### Debug Console
    For $k = 1 To $count
    $s_ret = ""
    ConsoleWrite('@@ Debug(' & @ScriptLineNumber & ') : $k = ' & $k & @crlf & '>Error code: ' & @error & @crlf) ;### Debug Console
    $s_Mid = StringMid($read, $i_done, 16777215)
    $a_AArr = StringSplit($s_Mid, "")
    For $i = 1 To $a_AArr[0]
    If IsInt($i/100000) Then ConsoleWrite('@@ Debug(' & @ScriptLineNumber & ') : $i = ' & $i & @crlf & '>Error code: ' & @error & @crlf) ;### Debug Console
    If $a_AArr[$i] = "0" And $a_AArr[$i + 1] = "x" Then ContinueLoop
    If $a_AArr[$i] = "x" And $a_AArr[$i - 1] = "0" Then ContinueLoop
    Switch $a_AArr[$i]
    Case "5"
    $s_ret &= "0"
    Case "4"
    $s_ret &= "1"
    Case "7"
    $s_ret &= "2"
    Case "6"
    $s_ret &= "3"
    Case "1"
    $s_ret &= "4"
    Case "0"
    $s_ret &= "5"
    Case "3"
    $s_ret &= "6"
    Case "2"
    $s_ret &= "7"
    Case "D"
    $s_ret &= "8"
    Case "C"
    $s_ret &= "9"
    Case "F"
    $s_ret &= "A"
    Case "E"
    $s_ret &= "B"
    Case "9"
    $s_ret &= "C"
    Case "8"
    $s_ret &= "D"
    Case "B"
    $s_ret &= "E"
    Case "A"
    $s_ret &= "F"
    EndSwitch
    Next
    $i_done += 16777215
    $t = FileWrite($hFile2, $s_ret)
    ConsoleWrite('@@ Debug(' & @ScriptLineNumber & ') : $t = ' & $t & @crlf & '>Error code: ' & @error & @crlf) ;### Debug Console
    Next
    Until $exitdo = 1
    FileClose($hFile)
    FileClose($hFile2)
    Return 1
    EndFunc ;==>_Decodefile

    [/autoit]

    Einmal editiert, zuletzt von WhiteLion (12. November 2011 um 13:14)

  • ok, zu dem Out of Range Error ersetz mal das alte hiermit

    [autoit]

    If $i < 3 Then
    If $a_AArr[$i] = "0" And $a_AArr[$i + 1] = "x" Then ContinueLoop
    If $a_AArr[$i] = "x" And $a_AArr[$i - 1] = "0" Then ContinueLoop
    EndIf

    [/autoit]

    Ich lasse es grade bei mir nochmal durchlaufen und schaue, ob der das bei mir Speichert

    Wenn du -1 eingibtst, lässt der ein Zeichen uas, also nimm das wieder raus ;)

    --EDIT--
    Achja, ich hatte den Pfad bei _Decode verändert, wo er das speichert, kann es sein das die Datei nur woanders liegt?

    --EDIT2--
    Zu den Zip Dateien: Ich benutze diese UDF

    Spoiler anzeigen
    [autoit]

    ;#AutoIt3Wrapper_au3check_parameters=-d -w 1 -w 2 -w 3 -w 4 -w 5 -w 6
    #include <array.au3>
    ; ------------------------------------------------------------------------------
    ;
    ; AutoIt Version: 3.2
    ; Language: English
    ; Description: ZIP Functions.
    ; Author: torels_
    ;
    ; ------------------------------------------------------------------------------

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

    ;~ If UBound($CMDLine) > 1 Then
    ;~ If $CMDLine[1] <> "" Then _Zip_VirtualZipOpen()
    ;~ EndIf

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

    ;===============================================================================
    ;
    ; Function Name: _Zip_Create()
    ; Description: Create Empty ZIP file.
    ; Parameter(s): $hFilename - Complete path to zip file that will be created
    ; Requirement(s): none.
    ; Return Value(s): Returns the Zip file path (to be used as a handle - even though it's not necessary)
    ; Author(s): torels_
    ;
    ;===============================================================================
    Func _Zip_Create($hFilename)
    $hFp = FileOpen($hFilename, 26)
    $sString = Chr(80) & Chr(75) & Chr(5) & Chr(6) & Chr(0) & Chr(0) & Chr(0) & Chr(0) & Chr(0) & Chr(0) & Chr(0) & Chr(0) & Chr(0) & Chr(0) & Chr(0) & Chr(0) & Chr(0) & Chr(0) & Chr(0) & Chr(0) & Chr(0) & Chr(0)
    FileWrite($hFp, $sString)
    If @error Then Return SetError(1,0,0)
    FileClose($hFp)

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

    While Not FileExists($hFilename)
    Sleep(10)
    Wend
    Return $hFilename
    EndFunc ;==>_Zip_Create

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

    ;===============================================================================
    ;
    ; Function Name: _Zip_AddFile()
    ; Description: Add a file to a ZIP Archieve.
    ; Parameter(s): $hZipFile - Complete path to zip file that will be created (or handle if existant)
    ; $hFile2Add - Complete path to the file that will be added
    ; $flag = 1
    ; - 0 ProgressBox
    ; - 1 no progress box
    ; Requirement(s): none.
    ; Return Value(s): On Success - 0
    ; On Failure - sets @error 1~3
    ; @error = 1 no Zip file
    ; @error = 2 no dll
    ; @error = 3 dll isn't registered
    ; On Failure - Returns False
    ; Author(s): torels_
    ; Notes: The return values will be given once the compressing process is ultimated... it takes some time with big files
    ;
    ;===============================================================================
    Func _Zip_AddFile($hZipFile, $hFile2Add, $flag = 1)
    Local $DLLChk = _Zip_DllChk()
    Local $files = _Zip_Count($hZipFile)
    If $DLLChk <> 0 Then Return SetError($DLLChk, 0, 0);no dll
    If not _IsFullPath($hZipFile) then Return SetError(4,0) ;zip file isn't a full path
    If Not FileExists($hZipFile) Then Return SetError(1, 0, 0) ;no zip file
    $oApp = ObjCreate("Shell.Application")
    $copy = $oApp.NameSpace($hZipFile).CopyHere($hFile2Add)
    While 1
    If $flag = 1 then _Hide()
    If _Zip_Count($hZipFile) = ($files+1) Then ExitLoop
    Sleep(10)
    WEnd
    Return SetError(0,0,1)
    EndFunc ;==>_Zip_AddFile

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

    ;===============================================================================
    ;
    ; Function Name: _Zip_AddFolder()
    ; Description: Add a folder to a ZIP Archieve.
    ; Parameter(s): $hZipFile - Complete path to zip file that will be created (or handle if existant)
    ; $hFolder - Complete path to the folder that will be added (possibly including "\" at the end)
    ; $flag = 1
    ; - 1 no progress box
    ; - 0 progress box
    ; Requirement(s): none.
    ; Return Value(s): On Success - 0
    ; On Failure - sets @error 1~3
    ; @error = 1 no Zip file
    ; @error = 2 no dll
    ; @error = 3 dll isn't registered
    ; Author(s): torels_
    ; Notes: The return values will be given once the compressing process is ultimated... it takes some time with big files
    ;
    ;===============================================================================
    Func _Zip_AddFolder($hZipFile, $hFolder, $flag = 1)
    Local $DLLChk = _Zip_DllChk()
    If $DLLChk <> 0 Then Return SetError($DLLChk, 0, 0);no dll
    If not _IsFullPath($hZipFile) then Return SetError(4,0) ;zip file isn't a full path
    If Not FileExists($hZipFile) Then Return SetError(1, 0, 0) ;no zip file
    If StringRight($hFolder, 1) <> "\" Then $hFolder &= "\"
    $files = _Zip_Count($hZipFile)
    $oApp = ObjCreate("Shell.Application")
    $oCopy = $oApp.NameSpace($hZipFile).CopyHere($oApp.Namespace($hFolder))
    While 1
    If $flag = 1 then _Hide()
    If _Zip_Count($hZipFile) = ($files+1) Then ExitLoop
    Sleep(10)
    WEnd
    Return SetError(0,0,1)
    EndFunc ;==>_Zip_AddFolder

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

    ;===============================================================================
    ;
    ; Function Name: _Zip_AddFolderContents()
    ; Description: Add a folder to a ZIP Archieve.
    ; Parameter(s): $hZipFile - Complete path to zip file that will be created (or handle if existant)
    ; $hFolder - Complete path to the folder that will be added (possibly including "\" at the end)
    ; $flag = 1
    ; - 1 no progress box
    ; - 0 progress box
    ; Requirement(s): none.
    ; Return Value(s): On Success - 0
    ; On Failure - sets @error 1~3
    ; @error = 1 no Zip file
    ; @error = 2 no dll
    ; @error = 3 dll isn't registered
    ; Author(s): torels_
    ; Notes: The return values will be given once the compressing process is ultimated... it takes some time with big files
    ;
    ;===============================================================================
    Func _Zip_AddFolderContents($hZipFile, $hFolder, $flag = 1)
    Local $DLLChk = _Zip_DllChk()
    If $DLLChk <> 0 Then Return SetError($DLLChk, 0, 0);no dll
    If not _IsFullPath($hZipFile) then Return SetError(4,0) ;zip file isn't a full path
    If Not FileExists($hZipFile) Then Return SetError(1, 0, 0) ;no zip file
    If StringRight($hFolder, 1) <> "\" Then $hFolder &= "\"
    $files = _Zip_Count($hZipFile)
    $oApp = ObjCreate("Shell.Application")
    $oFolder = $oApp.NameSpace($hFolder)
    $oCopy = $oApp.NameSpace($hZipFile).CopyHere($oFolder.Items)
    $oFC = $oApp.NameSpace($hFolder).items.count
    While 1
    If $flag = 1 then _Hide()
    If _Zip_Count($hZipFile) = ($files+$oFC) Then ExitLoop
    Sleep(10)
    WEnd
    Return SetError(0,0,1)
    EndFunc ;==>_Zip_AddFolderContents

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

    ;===============================================================================
    ;
    ; Function Name: _Zip_Delete()
    ; Description: Delete a file from a ZIP Archive.
    ; Parameter(s): $hZipFile - Complete path to zip file that will be created (or handle if existant)
    ; $hFolder - Complete path to the folder that will be added (possibly including "\" at the end)
    ; $flag = 1
    ; - 1 no progress box
    ; - 0 progress box
    ; Requirement(s): none.
    ; Return Value(s): On Success - 0
    ; On Failure - sets @error 1~3
    ; @error = 1 no Zip file
    ; @error = 2 no dll
    ; @error = 3 dll isn't registered
    ; Author(s): torels_
    ; Notes: none
    ;
    ;===============================================================================
    Func _Zip_Delete($hZipFile, $hFilename, $flag = 1)
    Local $DLLChk = _Zip_DllChk()
    If $DLLChk <> 0 Then Return SetError($DLLChk, 0, 0);no dll
    If not _IsFullPath($hZipFile) then Return SetError(4,0) ;zip file isn't a full path
    If Not FileExists($hZipFile) Then Return SetError(1, 0, 0) ;no zip file
    $list = _Zip_List($hZipFile)
    $dir = @TempDir & "\tmp" & Floor(Random(0,100))
    For $i = 1 to $list[0]
    If $list[$i] <> $hFilename Then _Zip_Unzip($hZipFile,$list[$i],$dir, $flag)
    Next
    FileDelete($hZipFile)
    _Zip_Create($hZipFile)
    _Zip_AddFolderContents($hZipFile, $dir, $flag)
    DirRemove($dir)
    EndFunc

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

    ;===============================================================================
    ;
    ; Function Name: _Zip_UnzipAll()
    ; Description: Extract all files contained in a ZIP Archieve.
    ; Parameter(s): $hZipFile - Complete path to zip file that will be created (or handle if existant)
    ; $hDestPath - Complete path to where the files will be extracted
    ; $flag = 1
    ; - 1 no progress box
    ; - 0 progress box
    ; Requirement(s): none.
    ; Return Value(s): On Success - 0
    ; On Failure - sets @error 1~3
    ; @error = 1 no Zip file
    ; @error = 2 no dll
    ; @error = 3 dll isn't registered
    ; Author(s): torels_
    ; Notes: The return values will be given once the extracting process is ultimated... it takes some time with big files
    ;
    ;===============================================================================
    Func _Zip_UnzipAll($hZipFile, $hDestPath, $flag = 1)
    Local $DLLChk = _Zip_DllChk()
    If $DLLChk <> 0 Then Return SetError($DLLChk, 0, 0);no dll
    If not _IsFullPath($hZipFile) then Return SetError(4,0) ;zip file isn't a full path
    If Not FileExists($hZipFile) Then Return SetError(2, 0, 0) ;no zip file
    If Not FileExists($hDestPath) Then DirCreate($hDestPath)
    Local $aArray[1]
    $oApp = ObjCreate("Shell.Application")
    $oApp.Namespace($hDestPath).CopyHere($oApp.Namespace($hZipFile).Items)
    For $item In $oApp.Namespace($hZipFile).Items
    _ArrayAdd($aArray, $item)
    Next
    While 1
    If $flag = 1 then _Hide()
    If FileExists($hDestPath & "\" & $aArray[UBound($aArray) - 1]) Then
    Return SetError(0, 0, 1)
    ExitLoop
    EndIf
    Sleep(500)
    WEnd
    EndFunc ;==>_Zip_UnzipAll

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

    ;===============================================================================
    ;
    ; Function Name: _Zip_Unzip()
    ; Description: Extract a single file contained in a ZIP Archieve.
    ; Parameter(s): $hZipFile - Complete path to zip file that will be created (or handle if existant)
    ; $hFilename - Name of the element in the zip archive ex. "hello_world.txt"
    ; $hDestPath - Complete path to where the files will be extracted
    ; $flag = 1
    ; - 1 no progress box
    ; - 0 progress box
    ; Requirement(s): none.
    ; Return Value(s): On Success - 0
    ; On Failure - sets @error 1~3
    ; @error = 1 no Zip file
    ; @error = 2 no dll
    ; @error = 3 dll isn't registered
    ; Author(s): torels_
    ; Notes: The return values will be given once the extracting process is ultimated... it takes some time with big files
    ;
    ;===============================================================================
    Func _Zip_Unzip($hZipFile, $hFilename, $hDestPath, $flag = 1)
    Local $DLLChk = _Zip_DllChk()
    If $DLLChk <> 0 Then Return SetError($DLLChk, 0, 0) ;no dll
    If not _IsFullPath($hZipFile) then Return SetError(4,0) ;zip file isn't a full path
    If Not FileExists($hZipFile) Then Return SetError(1, 0, 0) ;no zip file
    If Not FileExists($hDestPath) Then DirCreate($hDestPath)
    $oApp = ObjCreate("Shell.Application")
    $hFolderitem = $oApp.NameSpace($hZipFile).Parsename($hFilename)
    $oApp.NameSpace($hDestPath).Copyhere($hFolderitem)
    While 1
    If $flag = 1 then _Hide()
    If FileExists($hDestPath & "\" & $hFilename) Then
    return SetError(0, 0, 1)
    ExitLoop
    EndIf
    Sleep(500)
    WEnd
    EndFunc ;==>_Zip_Unzip

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

    ;===============================================================================
    ;
    ; Function Name: _Zip_Count()
    ; Description: Count files contained in a ZIP Archieve.
    ; Parameter(s): $hZipFile - Complete path to zip file that will be created (or handle if existant)
    ; Requirement(s): none.
    ; Return Value(s): On Success - 0
    ; On Failure - sets @error 1~3
    ; @error = 1 no Zip file
    ; @error = 2 no dll
    ; @error = 3 dll isn't registered
    ; Author(s): torels_
    ;
    ;===============================================================================
    Func _Zip_Count($hZipFile)
    Local $DLLChk = _Zip_DllChk()
    If $DLLChk <> 0 Then Return SetError($DLLChk, 0, 0) ;no dll
    If not _IsFullPath($hZipFile) then Return SetError(4,0) ;zip file isn't a full path
    If Not FileExists($hZipFile) Then Return SetError(1, 0, 0) ;no zip file
    $items = _Zip_List($hZipFile)
    Return UBound($items) - 1
    EndFunc ;==>_Zip_Count

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

    ;===============================================================================
    ;
    ; Function Name: _Zip_CountAll()
    ; Description: Count All files contained in a ZIP Archive (including Sub Directories)
    ; Parameter(s): $hZipFile - Complete path to zip file that will be created (or handle if existant)
    ; Requirement(s): none.
    ; Return Value(s): On Success - 0
    ; On Failure - sets @error 1~3
    ; @error = 1 no Zip file
    ; @error = 2 no dll
    ; @error = 3 dll isn't registered
    ; Author(s): torels_, Smashly
    ;
    ;===============================================================================
    Func _Zip_CountAll($hZipFile)
    Local $DLLChk = _Zip_DllChk()
    If $DLLChk <> 0 Then Return SetError($DLLChk, 0, 0) ;no dll
    If not _IsFullPath($hZipFile) then Return SetError(4,0) ;zip file isn't a full path
    If Not FileExists($hZipFile) Then Return SetError(1, 0, 0) ;no zip file
    $oApp = ObjCreate("Shell.Application")
    $oDir = $oApp.NameSpace(StringLeft($hZipFile, StringInStr($hZipFile, "\", 0, -1)))
    $sZipInf = $oDir.GetDetailsOf($oDir.ParseName(StringTrimLeft($hZipFile, StringInStr($hZipFile, "\", 0, -1))), -1)
    Return StringRight($sZipInf, StringLen($sZipInf) - StringInStr($sZipInf, ": ") - 1)
    EndFunc

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

    ;===============================================================================
    ;
    ; Function Name: _Zip_List()
    ; Description: Returns an Array containing of all the files contained in a ZIP Archieve.
    ; Parameter(s): $hZipFile - Complete path to zip file that will be created (or handle if existant)
    ; Requirement(s): none.
    ; Return Value(s): On Success - 0
    ; On Failure - sets @error 1~3
    ; @error = 1 no Zip file
    ; @error = 2 no dll
    ; @error = 3 dll isn't registered
    ; Author(s): torels_
    ;
    ;===============================================================================
    Func _Zip_List($hZipFile)
    local $aArray[1]
    Local $DLLChk = _Zip_DllChk()
    If $DLLChk <> 0 Then Return SetError($DLLChk, 0, 0) ;no dll
    If not _IsFullPath($hZipFile) then Return SetError(4,0) ;zip file isn't a full path
    If Not FileExists($hZipFile) Then Return SetError(1, 0, 0) ;no zip file
    $oApp = ObjCreate("Shell.Application")
    $hList = $oApp.Namespace($hZipFile).Items
    For $item in $hList
    _ArrayAdd($aArray,$item.name)
    Next
    $aArray[0] = UBound($aArray) - 1
    Return $aArray
    EndFunc ;==>_Zip_List

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

    ;===============================================================================
    ;
    ; Function Name: _Zip_Search()
    ; Description: Search files in a ZIP Archive.
    ; Parameter(s): $hZipFile - Complete path to zip file that will be created (or handle if existant)
    ; $sSearchString - name of the file to be searched
    ; Requirement(s): none.
    ; Return Value(s): On Success - 0
    ; On Failure - sets @error 1 (no file found)
    ; Author(s): torels_
    ; Notes: none
    ;
    ;===============================================================================
    Func _Zip_Search($hZipFile, $sSearchString)
    local $aArray
    Local $DLLChk = _Zip_DllChk()
    If $DLLChk <> 0 Then Return SetError($DLLChk, 0, 0) ;no dll
    If not _IsFullPath($hZipFile) then Return SetError(4,0) ;zip file isn't a full path
    If Not FileExists($hZipFile) Then Return SetError(1, 0, 0) ;no zip file
    $list = _Zip_List($hZipFile)
    for $i = 0 to UBound($list) - 1
    if StringInStr($list[$i],$sSearchstring) > 0 Then
    _ArrayAdd($aArray, $list[$i])
    EndIf
    Next
    if UBound($aArray) - 1 = 0 Then
    Return SetError(1,0,0)
    Else
    Return $aArray
    EndIf
    EndFunc ;==> _Zip_Search

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

    ;===============================================================================
    ;
    ; Function Name: _Zip_SearchInFile()
    ; Description: Search files in a ZIP Archive's File.
    ; Parameter(s): $hZipFile - Complete path to zip file that will be created (or handle if existant)
    ; $sSearchString - name of the file to be searched
    ; Requirement(s): none.
    ; Return Value(s): On Success - 0
    ; On Failure - sets @error 1 (no file found)
    ; Author(s): torels_
    ; Notes: none
    ;
    ;===============================================================================
    Func _Zip_SearchInFile($hZipFile, $sSearchString)
    local $aArray
    $list = _Zip_List($hZipFile)
    for $i = 1 to UBound($list) - 1
    _Zip_Unzip($hZipFile, $list[$i], @TempDir & "\tmp_zip.file")
    $read = FileRead(@TempDir & "\tmp_zip.file")
    if StringInStr($read,$sSearchstring) > 0 Then
    _ArrayAdd($aArray, $list[$i])
    EndIf
    Next
    if UBound($aArray) - 1 = 0 Then
    Return SetError(1,0,1)
    Else
    Return $aArray
    EndIf
    EndFunc ;==> _Zip_Search

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

    ;===============================================================================
    ;
    ; Function Name: _Zip_VirtualZipCreate()
    ; Description: Create a Virtual Zip.
    ; Parameter(s): $hZipFile - Complete path to zip file that will be created (or handle if existant)
    ; $sPath - Path to where create the Virtual Zip
    ; Requirement(s): none.
    ; Return Value(s): On Success - List of Created Files
    ; On Failure - sets @error 1~3
    ; @error = 1 no Zip file
    ; @error = 2 no dll
    ; @error = 3 dll isn't registered
    ; Author(s): torels_
    ; Notes: none
    ;
    ;===============================================================================
    Func _Zip_VirtualZipCreate($hZipFile, $sPath)
    $List = _Zip_List($hZipFile)
    If @error Then Return SetError(@error,0,0)
    If Not FileExists($sPath) Then DirCreate($sPath)
    If StringRight($sPath, 1) = "\" Then $sPath = StringLeft($sPath, StringLen($sPath) -1)
    For $i = 1 to $List[0]
    If Not @Compiled Then
    $Cmd = @AutoItExe
    $params = '"' & @ScriptFullPath & '" ' & '"' & $hZipFile & "," & $List[$i] & '"'
    Else
    $Cmd = @ScriptFullPath
    $Params = '"' & $hZipFile & "," & $List[$i] & '"'
    EndIf
    FileCreateShortcut($Cmd, $sPath & "\" & $List[$i], -1,$Params, "Virtual Zipped File", _GetIcon($List[$i], 0), "", _GetIcon($List[$i], 1))
    Next
    $List = _ArrayInsert($List, 1, $sPath)
    Return $List
    EndFunc

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

    ;===============================================================================
    ;
    ; Function Name: _Zip_VirtualZipOpen()
    ; Description: Open A File in a Virtual Zip, Internal Function.
    ; Parameter(s): none.
    ; Requirement(s): none.
    ; Return Value(s): On Success - 0
    ; On Failure - sets @error 1~3
    ; @error = 1 no Zip file
    ; @error = 2 no dll
    ; @error = 3 dll isn't registered
    ; Author(s): torels_
    ; Notes: none
    ;
    ;===============================================================================
    Func _Zip_VirtualZipOpen()
    $ZipSplit = StringSplit($CMDLine[1], ",")
    $ZipName = $ZipSplit[1]
    $ZipFile = $ZipSplit[2]
    _Zip_Unzip($ZipName, $ZipFile, @TempDir & "\", 4+16) ;no progress + yes to all
    If @error Then Return SetError(@error,0,0)
    ShellExecute(@TempDir & "\" & $ZipFile)
    EndFunc

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

    ;===============================================================================
    ;
    ; Function Name: _Zip_VirtualZipOpen()
    ; Description: Delete a Virtual Zip.
    ; Parameter(s): none.
    ; Requirement(s): none.
    ; Return Value(s): On Success - 0
    ; On Failure - none.
    ; Author(s): torels_
    ; Notes: none
    ;
    ;===============================================================================
    Func _Zip_VirtualZipDelete($aVirtualZipHandle)
    For $i = 2 to UBound($aVirtualZipHandle)-1
    If FileExists($aVirtualZipHandle[1] & "\" & $aVirtualZipHandle[$i]) Then FileDelete($aVirtualZipHandle[1] & "\" & $aVirtualZipHandle[$i])
    Next
    Return 0
    EndFunc

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

    ;===============================================================================
    ;
    ; Function Name: _Zip_DllChk()
    ; Description: Internal error handler.
    ; Parameter(s): none.
    ; Requirement(s): none.
    ; Return Value(s): Failure - @extended = 1
    ; Author(s): smashley
    ;
    ;===============================================================================
    Func _Zip_DllChk()
    If Not FileExists(@SystemDir & "\zipfldr.dll") Then Return 2
    If Not RegRead("HKEY_CLASSES_ROOT\CLSID\{E88DCCE0-B7B3-11d1-A9F0-00AA0060FA31}", "") Then Return 3
    Return 0
    EndFunc ;==>_Zip_DllChk

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

    ;===============================================================================
    ;
    ; Function Name: _GetIcon()
    ; Description: Internal Function.
    ; Parameter(s): $file - File form which to retrieve the icon
    ; $ReturnType - IconFile or IconID
    ; Requirement(s): none.
    ; Return Value(s): Icon Path/ID
    ; Author(s): torels_
    ;
    ;===============================================================================
    Func _GetIcon($file, $ReturnType = 0)
    $FileType = StringSplit($file, ".")
    $FileType = $FileType[UBound($FileType)-1]
    $FileParam = RegRead("HKEY_CLASSES_ROOT\." & $FileType, "")
    $DefaultIcon = RegRead("HKEY_CLASSES_ROOT\" & $FileParam & "\DefaultIcon", "")

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

    If Not @error Then
    $IconSplit = StringSplit($DefaultIcon, ",")
    ReDim $IconSplit[3]
    $Iconfile = $IconSplit[1]
    $IconID = $IconSplit[2]
    Else
    $Iconfile = @SystemDir & "\shell32.dll"
    $IconID = -219
    EndIf

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

    If $ReturnType = 0 Then
    Return $Iconfile
    Else
    Return $IconID
    EndIf
    EndFunc

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

    ;===============================================================================
    ;
    ; Function Name: _IsFullPath()
    ; Description: Internal Function.
    ; Parameter(s): $path - a zip path
    ; Requirement(s): none.
    ; Return Value(s): success - True.
    ; failure - False.
    ; Author(s): torels_
    ;
    ;===============================================================================
    Func _IsFullPath($path)
    if StringInStr($path,":\") then
    Return True
    Else
    Return False
    EndIf
    Endfunc

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

    ;===============================================================================
    ;
    ; Function Name: _Hide()
    ; Description: Internal Function.
    ; Parameter(s): none
    ; Requirement(s): none.
    ; Return Value(s): none.
    ; Author(s): torels_
    ;
    ;===============================================================================
    Func _Hide()
    If ControlGetHandle("[CLASS:#32770]", "", "[CLASS:SysAnimate32; INSTANCE:1]") <> "" And WinGetState("[CLASS:#32770]") <> @SW_HIDE Then ;The Window Exists
    $hWnd = WinGetHandle("[CLASS:#32770]")
    WinSetState($hWnd, "", @SW_HIDE)
    EndIf
    EndFunc

    [/autoit]


    Vielleicht reicht es ja

  • So ein Fall ist eingetreten, den ich nicht bedacht habe ^^
    Wenn $a_AArr[0] 2 ist, also nurnoch 2 Zeichen fehlen, dann kommt der Error

    [autoit]

    If $i < 3 and $a_AArr[0] > 2 Then
    If $a_AArr[$i] = "0" And $a_AArr[$i + 1] = "x" Then ContinueLoop
    If $a_AArr[$i] = "x" And $a_AArr[$i - 1] = "0" Then ContinueLoop
    EndIf

    [/autoit]

    Das sollte jetzt aber helfen.

    Ich bin jetzt bis Montag nicht mehr am PC, wenn noch was ist melde ich mich Montag