Hi epvp!
Gestern habe ich nach einem einfachen weg gesucht, eine *.ini Datei zu komprimieren, möglichst ohne irgendwelche Fremdprogramme zu benutzen, die ja zusätzlich Speicherplatz benötigen.
Das ist dann dabei rausgekommen:
Beim starten eures Programmes:
_Cab('ini.cab')
Beim beenden eures Programmes:
_Cab('ini.ini')
Es kann damit immer nur eine Datei komprimiert werden.
MfG
Gestern habe ich nach einem einfachen weg gesucht, eine *.ini Datei zu komprimieren, möglichst ohne irgendwelche Fremdprogramme zu benutzen, die ja zusätzlich Speicherplatz benötigen.
Das ist dann dabei rausgekommen:
Code:
#include-once ; #FUNCTION# ==================================================================================================================== ; Name ..........: _Cab ; Description ...: Compress/decompress ONE file. ; Syntax ........: _Cab($sFileIn[, $sFileOut = Default]) ; Parameters ....: $sFileIn - Input File ; $sFileOut - [optional] Output file ; ; If $sFileIn is a cab (compressed) file and $sFileOut = Default Then extract the file in the same directory as $sFileIn, with its compressed name. ; If $sFileIn is a cab (compressed) file and $sFileOut <> Default Then extract the file in $sFileOut ; If $sFileIn is an uncompressed file and $sFileOut = Default Then for example $sFileIn = Test.txt, $sFileOut = Test.cab (rename extension) ; If $sFileIn is an uncompressed file and $sFileOut <> Default Then save the compressed file under $sFileOut ; Return values .: None ; @error.: @error > 1 - $sFileIn is a directory ; @error.: @error > 2 - $sFileIn doesn't exist ; Author ........: Achat ; Modified ......: ; Remarks .......: ; Related .......: ; Link ..........: ; Example .......: No ; =============================================================================================================================== Func _Cab($sFileIn, $sFileOut = Default) If StringInStr(FileGetAttrib($sFileIn), 'D') Then Return SetError(1, 0, 0) If Not FileExists($sFileIn) Then Return SetError(2, 0, 0) If StringRegExpReplace($sFileIn, '.+\.(.+)', '\1') = 'cab' Then If IsKeyword($sFileOut) Then $sFileOut = StringRegExpReplace($sFileIn, '((.+)\\.+)', '\1') RunWait(@ComSpec & ' /c expand "' & $sFileIn & '" -r "' & $sFileOut & '"', @ScriptDir, @SW_HIDE) Else RunWait(@ComSpec & ' /c expand "' & $sFileIn & '" "' & $sFileOut & '"', @ScriptDir, @SW_HIDE) EndIf FileDelete($sFileIn) Else If IsKeyword($sFileOut) Then $sFileOut = StringRegExpReplace($sFileIn, '(.+\.).+', '\1cab') RunWait(@ComSpec & ' /c makecab "' & $sFileIn & '" "' & $sFileOut & '"', @ScriptDir, @SW_HIDE) FileDelete($sFileIn) EndIf EndFunc ;==>_Cab
_Cab('ini.cab')
Beim beenden eures Programmes:
_Cab('ini.ini')
Es kann damit immer nur eine Datei komprimiert werden.
MfG