ich habe die ganzen tage etwas zusammengeschustert, das mit hosts dateien nach squid kompatiblen dateien konvertieren soll.
eigentlich geht es auch, aber $avArray[$i] = StringReplace($avArray[$i], "127.0.0.1 ", "") macht zicken, wenn das array am ende ist.
es kommt dann:
$avArray[$i] = StringReplace($avArray[$i], "127.0.0.1 ", "")
^ ERROR
warum?
und warum wird mir der autoit code der hier im forums editor steht nichzt im post angezeigt?
ich habe die aktuelle version (hat noch den namen des ursprünglichen projekts) angefügt.
#region ;**** Directives created by AutoIt3Wrapper_GUI ****
#AutoIt3Wrapper_Outfile=host2squid.exe
#AutoIt3Wrapper_UseUpx=n
#AutoIt3Wrapper_Add_Constants=n
#AutoIt3Wrapper_Run_Tidy=y
#endregion ;**** Directives created by AutoIt3Wrapper_GUI ****
#include <Array.au3>
#include <File.au3>
#include <String.au3>
#include <ButtonConstants.au3>
#include <GUIConstantsEx.au3>
#include <ProgressConstants.au3>
#include <WindowsConstants.au3>
#include <Misc.au3>
AutoItSetOption("GUIOnEventMode", 1)
Global $avArray[1]
;~ Global $stringleft = ' ##['
;~ Global $stringleft2 = '## ['
;~ Global $stringright = ']' & @LF
;~ $stringclean = 0
#region ### START Koda GUI section ### Form=
$Form1 = GUICreate("host 2 squid", 464, 152, 192, 114)
GUISetOnEvent($GUI_EVENT_CLOSE, "CLOSEClicked")
$Progress1 = GUICtrlCreateProgress(24, 24, 425, 20)
$Open = GUICtrlCreateButton("Open", 40, 88, 60, 49)
GUICtrlSetOnEvent($Open, "Open")
$Download = GUICtrlCreateButton("Download", 100, 88, 60, 49)
GUICtrlSetOnEvent($Download, "Download")
$Save = GUICtrlCreateButton("Save", 297, 88, 120, 49)
GUICtrlSetState($Save, $GUI_DISABLE)
GUICtrlSetOnEvent($Save, "Save")
$Label1 = GUICtrlCreateLabel("", 170, 88, 120, 17)
$Label2 = GUICtrlCreateLabel("", 170, 108, 120, 17)
GUISetState(@SW_SHOW)
#endregion ### END Koda GUI section ###
While 1
Sleep(1000) ; Idle around
WEnd
Func CLOSEClicked()
Exit
EndFunc ;==>CLOSEClicked
Func Download()
Local $hDownload = InetGet("http://www.mvps.org/winhelp2002/hosts.txt", @ScriptDir & "\hosts.txt", 1, 1)
GUICtrlSetData($Label2, "Die Liste wird geladen")
Do
Local $aData = InetGetInfo($hDownload) ; Get all information.
GUICtrlSetData($Progress1, ($aData[0] / $aData[1]) * 100)
Until InetGetInfo($hDownload, 2) ; Check if the download is complete.
Local $aData = InetGetInfo($hDownload) ; Get all information.
InetClose($hDownload) ; Close the handle to release resources.
GUICtrlSetData($Label2, "Fertig Heruntergeladen")
#region --- CodeWizard generated code Start ---
;MsgBox features: Title=No, Text=Yes, Buttons=Yes and No, Icon=None
If Not IsDeclared("iMsgBoxAnswer") Then Local $iMsgBoxAnswer
$iMsgBoxAnswer = MsgBox(4, "Verarbeiten des Downloads?", "Bytes read: " & $aData[0] & @CRLF & _
"Size: " & $aData[1] & @CRLF & _
"Complete?: " & $aData[2] & @CRLF & _
"Successful?: " & $aData[3] & @CRLF)
Select
Case $iMsgBoxAnswer = 6 ;Yes
Global $file = @ScriptDir & "\hosts.txt"
Verarbeitung()
Case $iMsgBoxAnswer = 7 ;No
EndSelect
#endregion --- CodeWizard generated code Start ---
EndFunc ;==>Download
[/autoit][autoit][/autoit][autoit]Func Open()
Global $file = FileOpenDialog("", @HomeDrive, "host dateien(*.acl;*.txt)", 1)
If $file = -1 Then
MsgBox(0, "Error", "Unable to open file.")
Else
Verarbeitung()
EndIf
EndFunc ;==>Open
[/autoit][autoit][/autoit][autoit]Func Save()
$var = FileSaveDialog("", @HomeDrive, "acl datei(*.acl)", 16) & ".acl"
If @error Then
MsgBox(4096, "", "Save cancelled.")
Else
If FileExists($var) Then
If Not IsDeclared("iMsgBoxAnswer") Then Local $iMsgBoxAnswer
$iMsgBoxAnswer = MsgBox(4, "File Exists", "Overwrite?")
Select
Case $iMsgBoxAnswer = 6 ;Yes
_FileCreate($var)
FileOpen($var, 1)
$stringtofile = ""
GUICtrlSetData($Label2, "Die Liste wird gespeichert")
For $y = 0 To UBound($avArray) - 1
$stringtofile = $avArray[$y] & @CRLF
FileWrite($var, $stringtofile)
Next
FileClose($var)
GUICtrlSetData($Label2, "")
Case $iMsgBoxAnswer = 7 ;No
MsgBox(4096, "", "Save cancelled.")
EndSelect
EndIf
EndIf
EndFunc ;==>Save
Func Verarbeitung()
Global $avArray[1]
$stringleft = ' ##['
$stringleft2 = '#['
$stringleft3 = '# ['
$stringright = ']' & @LF
GUICtrlSetData($Progress1, 0)
GUICtrlSetState($Open, $GUI_DISABLE)
GUICtrlSetState($Download, $GUI_DISABLE)
_FileReadToArray($file, $avArray)
$zeilen = UBound($avArray)
GUICtrlSetData($Label2, "ESC zum abbrechen")
For $i = 1 To $zeilen - 1
If _IsPressed("1B") Then ExitLoop
$avArray[$i] = StringReplace($avArray[$i], "127.0.0.1 ", "")
If @error Then
EndIf
GUICtrlSetData($Progress1, ($i / $zeilen) * 100)
GUICtrlSetData($Label1, $i & " von " & $zeilen)
$stringclean = 0
$string = _StringBetween($avArray[$i], $stringleft, ""); $stringright)
If Not @error Then
$avArray[$i] = StringReplace($avArray[$i], $stringleft & $string[0], "")
EndIf
$string2 = _StringBetween($avArray[$i], $stringleft2, ""); $stringright)
If Not @error Then
$avArray[$i] = StringReplace($avArray[$i], $stringleft2 & $string2[0], "")
EndIf
$string3 = _StringBetween($avArray[$i], $stringleft3, ""); $stringright)
If Not @error Then
_ArrayDelete($avArray, $i)
$i = $i - 1
EndIf
Next
;~ $zeilen = _FileCountLines($file)
;~ GUICtrlSetData($Label2, "ESC zum abbrechen")
;~ For $i = 1 To $zeilen
;~ GUICtrlSetData($Progress1, ($i / $zeilen) * 100)
;~ $zeile = FileReadLine($file, $i)
;~ $zeile = StringReplace($zeile, "127.0.0.1 ", "")
;~ $stringclean = 0
;~ $string = _StringBetween($zeile, $stringleft, ""); $stringright)
;~ If Not @error Then
;~ $stringclean = StringReplace($zeile, $stringleft & $string[0], "")
;~ EndIf
;~ $string2 = _StringBetween($zeile, $stringleft2, ""); $stringright)
;~ If Not @error Then
;~ $stringclean = StringReplace($zeile, $stringleft2 & $string2[0], "")
;~ EndIf
;~ If StringIsAlNum($stringclean) = 0 Then
;~ If $stringclean <> "" Then _ArrayAdd($avArray, $stringclean)
;~ Else
;~ If $zeile <> "" Then _ArrayAdd($avArray, $zeile)
;~ EndIf
;~ GUICtrlSetData($Label1, $i & " von " & $zeilen)
;~ If _IsPressed("1B") Then ExitLoop
;~ Next
;~ GUICtrlSetData($Label2, "Die Liste wird bereinigt...")
;~ _ArrayUnique($avArray)
MsgBox(0, "", "27 zeilen löschen")
For $i = 1 To 27
_ArrayDelete($avArray, 0)
Next
;~ GUICtrlSetData($Label2, "")
_ArrayDisplay($avArray)
;~ FileClose($file)
;~ GUICtrlSetState($Open, $GUI_ENABLE)
;~ GUICtrlSetState($Download, $GUI_ENABLE)
;~ GUICtrlSetState($Save, $GUI_ENABLE)
EndFunc ;==>Verarbeitung