1. Dashboard
  2. Mitglieder
    1. Letzte Aktivitäten
    2. Benutzer online
    3. Team
    4. Mitgliedersuche
  3. Forenregeln
  4. Forum
    1. Unerledigte Themen
  • Anmelden
  • Registrieren
  • Suche
Alles
  • Alles
  • Artikel
  • Seiten
  • Forum
  • Erweiterte Suche
  1. AutoIt.de - Das deutschsprachige Forum.
  2. Mitglieder
  3. subzero007

Beiträge von subzero007

  • Treeview und Ini

    • subzero007
    • 30. September 2009 um 15:47

    hey,

    ja das hat mir gefehlt und wie mache ich dann die abfrage anschliessend ini lesen" Richtigen eintrag finden" ?
    Und an zur quelle den ordner kopieren ?

  • Fehlermeldung bei falschen Password

    • subzero007
    • 30. September 2009 um 14:46

    Hey,
    schau dir mal in der hilfe.

    [autoit]

    DriveMapAdd

    [/autoit]

    an.

  • Treeview und Ini

    • subzero007
    • 30. September 2009 um 14:28

    bin ja schonmal weiter gekommen aber jetzt geht es garnicht mehr weiter??

    So sieht jetzt meine Gui aus:
    Der Inhalt kann nicht angezeigt werden, da er nicht mehr verfügbar ist.

    Jeztz möchte ich mein Button wieder herstellen aktivieren um einen Bestimmten order wieder an die stelle zu kopieren wo er auch her kam

    ich habe in jedem Verzeichnis eine ini die So aussieht:

    [Quelle-Ziele]
    C:\filemon=C:\backupordner\25.09.2009
    C:\cisco=C:\backupordner\25.09.2009
    C:\Forms=C:\backupordner\25.09.2009

    Wie kann ich das jetzt meiner Treeview folgendes mitgeben also makieren und dann wiederherstellen " Dircopy Ziele, quelle" kann mir jemand helfen?

    Hier mein Aktueller Code:

    Spoiler anzeigen
    [autoit]

    #include <ButtonConstants.au3>
    #include <DateTimeConstants.au3>
    #include <EditConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <ListViewConstants.au3>
    #include <StaticConstants.au3>
    #include <TabConstants.au3>
    #include <TreeViewConstants.au3>
    #include <WindowsConstants.au3>
    #include <GuiListView.au3>
    #include <File.au3>
    #include <Constants.au3>
    #include <Date.au3>
    #include <array.au3>
    #include<GuiTreeView.au3>

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

    Local $arCheckBox[7]
    Global $ini = @SystemDir & '\save.ini'
    Global $path = @SystemDir & '\lastsave'
    Global $hfile = @SystemDir & '\lastsave.log'
    Global $line
    Global $width = 918, $height = 600

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

    $Form1 = GUICreate("Sicherung", 918, 600, 219, 121)
    $Tab1 = GUICtrlCreateTab(16, 24, 873, 560)
    GUICtrlSetResizing(-1, $GUI_DOCKWIDTH + $GUI_DOCKHEIGHT)
    $TabSheet1 = GUICtrlCreateTabItem("Backup")
    $arCheckBox[6] = GUICtrlCreateCheckbox("Montag", 24, 361, 57, 17)
    GUICtrlSetFont(-1, 8, 400, 0, "Arial")
    $arCheckBox[5] = GUICtrlCreateCheckbox("Dienstag", 88, 361, 57, 17)
    GUICtrlSetFont(-1, 8, 400, 0, "Arial")
    $arCheckBox[4] = GUICtrlCreateCheckbox("Mittwoch", 152, 361, 65, 17)
    GUICtrlSetFont(-1, 8, 400, 0, "Arial")
    $arCheckBox[3] = GUICtrlCreateCheckbox("Donnerstag", 224, 361, 73, 17)
    GUICtrlSetFont(-1, 8, 400, 0, "Arial")
    $arCheckBox[2] = GUICtrlCreateCheckbox("Freitag", 304, 361, 57, 17)
    GUICtrlSetFont(-1, 8, 400, 0, "Arial")
    $arCheckBox[1] = GUICtrlCreateCheckbox("Samstag", 368, 361, 57, 17)
    GUICtrlSetFont(-1, 8, 400, 0, "Arial")
    $arCheckBox[0] = GUICtrlCreateCheckbox("Sonntag", 432, 361, 65, 17)
    GUICtrlSetFont(-1, 8, 400, 0, "Arial")

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

    $Time = GUICtrlCreateDate('15:00', 24, 393, 70, 21, $DTS_TIMEFORMAT)
    ;GUICtrlCreateDate('00:00:00', 10, 10, 100, 30, $DTS_TIMEFORMAT)
    $DTM_SETFORMAT_ = 0x1032
    $style = "HH:mm"
    GUICtrlSendMsg($Time, $DTM_SETFORMAT_, 0, $style)

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

    $hListView = GUICtrlCreateListView("Quelle|Ziel", 24, 73, 850, 246)
    GUICtrlSendMsg(-1, $LVM_SETCOLUMNWIDTH, 0, 420)
    GUICtrlSendMsg(-1, $LVSCW_AUTOSIZE_USEHEADER, 1, 420)

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

    $hListView1 = GUICtrlCreateListView("Quelle|Ziel", 24, 420, 850, 150)
    GUICtrlSendMsg($hListView1, $LVM_SETCOLUMNWIDTH, 0, 420)
    GUICtrlSendMsg($hListView1, $LVSCW_AUTOSIZE_USEHEADER, 1, 420)

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

    GUICtrlSendMsg(-1, 0x101E, 0, 50)
    GUICtrlSetFont(-1, 8, 400, 0, "Arial")
    $add = GUICtrlCreateButton("+", 24, 321, 75, 25)
    GUICtrlSetFont(-1, 20, 400, 0, "Arial")
    $del = GUICtrlCreateButton("-", 104, 321, 75, 25)
    GUICtrlSetFont(-2, 20, 400, 0, "Arial")
    $Task_Plannen = GUICtrlCreateButton("Task_Planen", 100, 390, 75, 25)
    $Save = GUICtrlCreateButton("Save-Settings", 800, 49, 75, 25)

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

    GUICtrlSetFont(-1, 8, 400, 0, "Arial")
    $Quelle = GUICtrlCreateLabel("Quelle", 24, 49, 34, 17)
    GUICtrlSetFont(-1, 8, 400, 0, "Arial")
    $Sichern = GUICtrlCreateButton("Sichern", 184, 321, 75, 25)
    GUICtrlSetFont(-1, 15, 400, 0, "Arial")

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

    $TabSheet2 = GUICtrlCreateTabItem("Restore")
    $Input2 = GUICtrlCreateInput("Input2", 31, 81, 760, 22)
    GUICtrlSetFont(-1, 8, 400, 0, "Arial")
    $Restore_Ordner = GUICtrlCreateLabel("Restore_Ordner", 24, 57, 79, 17)
    GUICtrlSetFont(-1, 8, 400, 0, "Arial")
    $Quellpfadzeigen = GUICtrlCreateButton("Quellpfadzeigen", 800, 129, 83, 25)
    GUICtrlSetFont(-1, 8, 400, 0, "Arial")
    $hTreeView = GUICtrlCreateTreeView(31, 137, 760, 410)
    GUICtrlSetFont(-1, 8, 400, 0, "Arial")
    $Wiederherstellen = GUICtrlCreateButton("Wiederherstellen", 800, 353, 83, 25)
    GUICtrlSetFont(-1, 8, 400, 0, "Arial")
    $suchenBackup = GUICtrlCreateButton("...", 800, 81, 30, 25)
    GUICtrlSetFont(-1, 8, 400, 0, "Arial")
    $list = GUICtrlCreateButton("List", 835, 81, 30, 25)
    GUICtrlSetFont(-1, 8, 400, 0, "Arial")

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

    $Verfuegbare_sicherungen = GUICtrlCreateLabel("Verfuegbare_sicherungen", 48, 113, 126, 17)
    GUICtrlSetFont(-1, 8, 400, 0, "Arial")
    $Offnen = GUICtrlCreateButton("Offnen", 800, 321, 83, 25)
    GUICtrlSetFont(-1, 8, 400, 0, "Arial")
    Global $hFiles = GUICtrlCreateCheckbox('inkl. Dateien', $width - 100, 10, 80, 16)
    Global $bFiles = False

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

    GUICtrlCreateTabItem("")
    GUISetState(@SW_SHOW)

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

    If FileExists(@ScriptDir & '\save.ini') Then
    $ini = IniRead(@ScriptDir & '\save.ini', "Wochentag", "tage", 0)
    $bordner = IniRead(@ScriptDir & '\save.ini', "Last-Restore-Ordner", "Pfad", 0)
    If Not $bordner = "" Then GUICtrlSetData($Input2, $bordner)
    For $i = 6 To 0 Step -1
    If BitAND($ini, 2 ^ $i) Then
    GUICtrlSetState($arCheckBox[$i], $GUI_CHECKED)
    EndIf
    Next
    Local $aData = IniReadSection(@ScriptDir & '\save.ini', "Quelle-Ziele")

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

    ; _ArrayDisplay($aData)
    For $i = 1 To UBound($aData) - 1
    GUICtrlCreateListViewItem($aData[$i][0] & "|" & $aData[$i][1], $hListView)
    Next
    EndIf
    #EndRegion ### END Koda GUI section ###

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

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE

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

    Exit
    Case $add
    $sfolder = FileSelectFolder("Wählen den zu Sichernden Ordner:", 'c:')

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

    ;if @error Then Return
    $dfolder = FileSelectFolder("Wählen Sie den Ziel Ordner:", 'c:')
    GUICtrlCreateListViewItem($sfolder & '|' & $dfolder, $hListView)
    ;if @error Then Return
    $hWnd = $hListView
    If FileExists($path & ".log") Then FileDelete($path & ".log")
    FileWrite($path & ".log", _GUICtrlListView_Export($hWnd, 1, ','))

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

    Case $del
    _GUICtrlListView_DeleteItemsSelected($hListView)
    $hWnd = $hListView
    If FileExists($path & ".log") Then FileDelete($path & ".log")
    FileWrite($path & ".log", _GUICtrlListView_Export($hWnd, 1, ','))
    Case $Sichern
    _iniwrite()
    _xcopy()
    Case $Task_Plannen
    _iniwrite()
    Case $Save
    _iniwrite()
    Case $suchenBackup
    $source_path = FileSelectFolder("Wählen den zu BackupOrdner:", 'c:')
    If Not $source_path = "" Then GUICtrlSetData($Input2, $source_path)
    IniWrite(@ScriptDir & '\save.ini', 'Last-Restore-Ordner', 'Pfad', $source_path)
    log_ini_treeview()
    Case $list
    log_ini_treeview()

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

    EndSwitch
    WEnd

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

    Func log_ini_treeview()

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

    $source_path = GUICtrlRead($Input2)
    $searchstring = "log.ini" ; z.B. "crash20060905.txt"
    $n = 0 ; Anzahl der kopierten Dateien
    $FolderList = _FileListToArray($source_path & '\', "*", 2) ; Flag 2 = nur Ordner
    If (Not IsArray($FolderList)) And (@error = 1) Then
    MsgBox(0, "", "Keine Ordner gefunden.")
    Exit
    EndIf
    For $i = 1 To $FolderList[0]
    $FileList = _FileListToArray($source_path & '\' & $FolderList[$i])
    If IsArray($FileList) Then
    ; _ArrayDisplay($FileList)
    $spath = $source_path & '\' & $FolderList[$i] & '\'
    If FileExists($source_path & '\' & $FolderList[$i] & '\log.ini') Then
    Local $aCount = _GUICtrlTreeView_CreateDirectory($hTreeView, $spath, $bFiles)
    EndIf
    EndIf
    Next

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

    EndFunc ;==>log_ini_treeview

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

    ;===============================================================================
    ; Function Name: _GUICtrlTreeView_CreateDirectory($hTreeView, $sPath, $bFiles)
    ; Description:: erstellt ein TreeView mit Verzeichnissen (+Dateien)
    ; Parameter(s): $hTreeView = ControlID/Handle des TreeViews
    ; $sPath = Verzeichnispfad, der dargestellt werden soll
    ; $bFiles = True = auch Dateien anzeigen, False = nur Verzeichnisse
    ; Requirement(s): #include<GuiTreeView.au3>
    ; Return Value(s): Array mit Anzahl der Verzeichnisse=[0] und Dateien=[1]
    ; 0 und @error = 1, wenn der Pfad nicht existiert bzw. kein Verzeichnis ist
    ; 0 und @error = 2, wenn das FileSystemObject nicht erstellt werden konnte
    ; Author(s): Oscar (http://www.autoit.de)
    ;===============================================================================
    Func _GUICtrlTreeView_CreateDirectory($hTreeView, $spath, $bFiles = False)
    Local $hFileItem, $FolderColor = 0x0000FF, $Folder, $aCount[2] = [0, 0]
    If Not StringInStr(FileGetAttrib($spath), 'D') Then Return SetError(1, 0, 0)
    $spath = FileGetLongName($spath)
    Local $oFSO = ObjCreate('Scripting.FileSystemObject')
    If @error Then Return SetError(2, 0, 0)
    _GUICtrlTreeView_BeginUpdate($hTreeView)
    ; _GUICtrlTreeView_DeleteAll(GUICtrlGetHandle($hTreeView))
    Local $hTreeViewItem = GUICtrlCreateTreeViewItem($spath, $hTreeView)
    GUICtrlSetColor(-1, $FolderColor)
    _GUICtrlTreeView_SetIcon($hTreeView, $hTreeViewItem, 'shell32.dll', 0)
    $Folder = $oFSO.GetFolder($spath)
    _CreateDirectoryRecursive($hTreeView, $Folder, $hTreeViewItem, $bFiles, $aCount)
    If $bFiles Then
    For $Files In $Folder.Files
    $hFileItem = GUICtrlCreateTreeViewItem($Files.Name, $hTreeViewItem)
    $aCount[1] += 1
    Next
    EndIf
    _GUICtrlTreeView_SetIcon($hTreeView, $hTreeViewItem, 'shell32.dll', 3, 2)
    _GUICtrlTreeView_SetIcon($hTreeView, $hTreeViewItem, 'shell32.dll', 110, 4)
    _GUICtrlTreeView_EndUpdate($hTreeView)
    GUICtrlSetState($hTreeViewItem, $GUI_EXPAND)
    $oFSO = ''
    Return $aCount
    EndFunc ;==>_GUICtrlTreeView_CreateDirectory

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

    Func _CreateDirectoryRecursive($hTreeView, $Folder, $ItemOld, $bFiles, ByRef $aCount)
    Local $hFolderItem, $hFileItem, $FolderColor = 0x0000FF
    For $Subfolder In $Folder.SubFolders
    $hFolderItem = GUICtrlCreateTreeViewItem($Subfolder.Name, $ItemOld)
    GUICtrlSetColor(-1, $FolderColor)
    _GUICtrlTreeView_SetIcon($hTreeView, $hFolderItem, 'shell32.dll', 3, 2)
    _GUICtrlTreeView_SetIcon($hTreeView, $hFolderItem, 'shell32.dll', 110, 4)
    $aCount[0] += 1
    _CreateDirectoryRecursive($hTreeView, $Subfolder, $hFolderItem, $bFiles, $aCount)
    If $bFiles Then
    For $Files In $Subfolder.Files
    $hFileItem = GUICtrlCreateTreeViewItem($Files.Name, $hFolderItem)
    $aCount[1] += 1
    Next
    EndIf
    Next
    EndFunc ;==>_CreateDirectoryRecursive

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

    Func _iniwrite()
    ;FileDelete($ini)
    IniDelete(@ScriptDir & '\save.ini', 'Quelle-Ziele')

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

    Local $checked = 0
    For $i = 0 To 6
    If BitAND(GUICtrlRead($arCheckBox[$i]), $GUI_CHECKED) Then
    $checked = BitOR($checked, 2 ^ $i)
    EndIf
    Next
    For $i = 0 To _GUICtrlListView_GetItemCount($hListView) - 1;hier zählst du die einträge
    $var1 = _GUICtrlListView_GetItemText($hListView, $i, 0)
    $var2 = _GUICtrlListView_GetItemText($hListView, $i, 1)
    ;IniWrite('save.ini', 'Backup', 'Quelle'&$i, $var1)
    ;IniWrite('save.ini', 'Backup', 'Ziel'&$i, $var2)
    ;IniWrite('save.ini', 'Quelle-Ziele', $var1&$i, $var2&$i)
    IniWrite(@ScriptDir & '\save.ini', 'Quelle-Ziele', $var1, $var2)
    Next
    ; Next
    IniWrite(@ScriptDir & '\save.ini', 'Wochentag', 'tage', $checked)
    ;MsgBox(0, "", $Time)
    ;IniWrite('save.ini', 'Startzeit', 'Uhr', GUICtrlRead($Time))
    IniWrite(@ScriptDir & '\save.ini', 'Startzeit', 'Uhr', StringReplace(GUICtrlRead($Time), ':', ''))
    EndFunc ;==>_iniwrite

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

    Func _iniread()
    #cs Muster-INI
    [sicherung]
    tage=42
    #ce
    ; 2 + 8 + 32 = Mo/Mi/Fr

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

    ; aus INI lesen
    Local $savedays = IniRead(@ScriptDir & '\save.ini', 'sicherung', 'tage', 0)

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

    ; prüfen ob aktueller Tag für Sicherung vorgesehen ist
    If BitAND($savedays, 2 ^ (@WDAY - 1)) Then
    ; starte Sicherung
    EndIf
    EndFunc ;==>_iniread

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

    Func _GUICtrlListView_Export($hWnd, $exType = 0, $Delim = Default) ; $exType=0 Array / $exType=1 String
    If Not IsHWnd($hWnd) Then $hWnd = GUICtrlGetHandle($hWnd)
    Local $row = _GUICtrlListView_GetItemCount($hWnd)
    If $exType Then
    If $Delim <> Default Then Local $oldDelim = Opt('GUIDataSeparatorChar', $Delim)
    Local $sOut = ''
    For $i = 0 To $row - 1
    $sOut &= _GUICtrlListView_GetItemTextString($hWnd, $i) & @CRLF
    Next
    If $Delim <> Default Then Opt('GUIDataSeparatorChar', $oldDelim)
    Return $sOut
    EndIf
    Local $col = _GUICtrlListView_GetColumnCount($hWnd)
    Local $aOut[$row][$col]
    If $col = 1 Then
    ReDim $aOut[$row]
    For $i = 0 To UBound($aOut) - 1
    $aOut[$i] = _GUICtrlListView_GetItemText($hWnd, $i)
    Next
    Return $aOut
    EndIf
    For $i = 0 To UBound($aOut) - 1
    For $j = 0 To UBound($aOut, 2) - 1
    $aOut[$i][$j] = _GUICtrlListView_GetItemText($hWnd, $i, $j)
    Next
    Next
    Return $aOut
    EndFunc ;==>_GUICtrlListView_Export

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

    Func _Load() ; Datenbank-Datei laden
    _GUICtrlListView_DeleteAllItems($hListView) ; Das Handle eben noch bestimmen (s. Anfang des Threads)

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

    Local $sItem
    ; $FileOpenDialog = FileOpenDialog("Pc Liste Wählen", @ScriptDir & "\", "Pc Liste (*.txt;*.csv)", 1 + 4)
    Local $hfile = FileOpen(@ScriptDir & '\lastsave.log', 0) ; Datei zum lesen öffnen
    If $hfile <> -1 Then ; wenn das öffnen erfolgreich war, dann...
    _GUICtrlListView_BeginUpdate($hListView) ; Listview sperren
    While True ; Endlosschleife
    $sItem = FileReadLine($hfile) ; Zeile aus der Datei lesen
    If @error Then ExitLoop ; wenn das Ende der Datei erreicht ist, dann Endlosschleife verlassen
    GUICtrlCreateListViewItem($sItem, $hListView) ; mit den eingelesenen Daten einen neuen Listview-Eintrag erstellen
    WEnd
    _GUICtrlListView_EndUpdate($hListView) ; Listview wieder freigeben
    FileClose($hfile) ; Datei schließen
    EndIf
    EndFunc ;==>_Load

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

    Func CopyWithProgress($srcDir, $destDir)
    $date = _DateTimeFormat(_NowCalc(), 2)
    If StringRight($srcDir, 1) = "\" Then $srcDir = StringLeft($srcDir, StringLen($srcDir) - 1)
    If StringRight($destDir, 1) <> "\" Then $destDir = $destDir & "\"
    If Not FileExists($destDir) Then DirCreate($destDir)
    ;$srcSize = DirGetSize($srcDir, 1)
    ;$1_percent = $srcSize[0] / 100
    ;Run('XCOPY "'& $srcDir & '" "' & $destDir & '" /D /S /E /V /C /H /R /O /Y')
    $lastpath = StringTrimLeft($srcDir, StringInStr($srcDir, "\", "", -1))
    ; $TSDIS = Run(@ComSpec & " /c " & @SystemDir & '\xcopy ' & $srcDir & ' ' & $destDir & $lastpath & '\ /D /S /E /V /C /H /R /Y', "", @SW_HIDE)
    Run(@ComSpec & " /c " & @SystemDir & '\xcopy "' & $srcDir & '" "' & $destDir & $date & '\' & $lastpath & '\" /D /S /E /V /C /H /R /Y /F >' & @ScriptDir & '\xcopy.txt', "", @SW_SHOW)
    $winpos = WinGetPos("Sicherung")
    Sleep(1000)
    While ProcessExists("xcopy.exe")
    ToolTip('Bitte warten........' & @CRLF & 'copy läuft....' & @CRLF & $srcDir & ' ' & $destDir & $lastpath & $date, $winpos[0] + $winpos[2] / 2, $winpos[1] + $winpos[3] / 3) ; sollte mittig zur Gui stehen, oder?
    Sleep(100) ; hatte ich vergessen um CPU runterzufahren....
    WEnd
    ToolTip('')
    _FileReadToArray(@ScriptDir & "\xcopy.txt", $line)
    For $i = 1 To UBound($line) - 1
    $line[$i] = StringReplace($line[$i], ' -> ', '|') ; der String wird ersetzt durch den String mit der Eingabe
    GUICtrlCreateListViewItem($line[$i], $hListView1)
    Next
    ;FileDelete (@Scriptdir & "\xcopy.txt")
    Local $aData = IniReadSection(@ScriptDir & "\save.ini", "Quelle-Ziele")
    ; _ArrayDisplay($aData)
    For $i = 1 To UBound($aData) - 1
    IniWrite($destDir & $date & '\Log.ini', 'Quelle-Ziele', $aData[$i][0], $aData[$i][1] & '\' & $date)
    ConsoleWrite($destDir & $date & '\' & $lastpath & '\Log.ini')
    Next
    EndFunc ;==>CopyWithProgress

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

    Func _xcopy()
    For $i = 0 To _GUICtrlListView_GetItemCount($hListView) - 1;hier zählst du die einträge
    $var1 = _GUICtrlListView_GetItemText($hListView, $i, 0)
    $var2 = _GUICtrlListView_GetItemText($hListView, $i, 1)
    CopyWithProgress($var1, $var2)
    ;IniWrite(@ScriptDir & '\Log.ini', 'Quelle-Ziele', $var1, $var2)

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

    Next

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

    EndFunc ;==>_xcopy

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

    Func _format()

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

    Dim $sFilePath = @ScriptDir & '\lastsave.log'
    Dim $outFile = @ScriptDir & '\lastsave.log'
    Dim $aArray
    _FileReadToArray($sFilePath, $aArray) ; datei in Array lesen

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

    For $i = 1 To $aArray[0] ; zeilenweise durchgehen

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

    $aArray[$i] = StringReplace($aArray[$i], ',', '|') ; der String wird ersetzt durch den String mit der Eingabe
    Next

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

    If FileExists($outFile) Then FileDelete($outFile) ; falls Ausgabedatei bereits vorhanden - löschen
    _FileWriteFromArray($outFile, $aArray, 1) ; vom Array in Ausgabedatei schreiben

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

    EndFunc ;==>_format

    [/autoit]

    Dateien

    treeview.JPG 52,82 kB – 0 Downloads
  • Script funktioniert nur im debugmodus Einzelschritt

    • subzero007
    • 29. September 2009 um 17:24

    ich dachte du kannst die exe garnicht starten ja habe den gleichen fehler wie du
    Sorry wegen der verwirrung ;(

  • Treeview und Ini

    • subzero007
    • 29. September 2009 um 17:20

    Hey,

    Ich wollte euch mal mein Sichrungstoll Vorstellen und gleich mit meinem neuen Problem bekannt machen und um eure Hilfe bitten.

    Hinzufügen und entfernen Funktioniert
    Sichern Funktioniert
    Ini wegschreiben funktioniert

    task funktion bin noch beim srvany "fast fertig"

    Jetzt geht es zu meinem Problem Restore:

    So sieht meine Verzeichnis Struktur aus:

    \%backupordner%\aktuellesdatum\log.ini
    \%backupordner%\aktuellesdatum\ordner1
    \%backupordner%\aktuellesdatum\ordner2
    \%backupordner%\aktuellesdatum\ordner3

    \%backupordner%\aktuellesdatum\log.ini
    \%backupordner%\aktuellesdatum\ordner1
    \%backupordner%\aktuellesdatum\ordner2
    \%backupordner%\aktuellesdatum\ordner3


    jetzt will ich alle ordner die im %backupordner% liegen in der Treeview Darstellen die eine Log.ini im root Verzeichnis haben.

    so sieht meine log.ini aus:

    [Quelle-Ziele]
    c:\apps\test=f:\backup\29.09.2009
    c:\apps\test2=f:\backup\29.09.2009
    c:\apps\test3=f:\backup\29.09.2009
    c:\apps\test4=f:\backup\29.09.2009
    c:\apps\test5=f:\backup\29.09.2009


    Jetzt zu meinem Problem
    1.wie mache ich das alle order in einer Treeview darzustellen die eine log.ini im root verzeichnis haben "\%backupordner%\aktuellesdatum\" darzustellen?
    2.Wie mache er dann den Ordner den ich anklicke das er dann die ini einliest damit er die daten,
    wieder dort hin kopiert woher die auch kamen also an die quelle:

    Spoiler anzeigen
    [autoit]

    #include <ButtonConstants.au3>
    #include <DateTimeConstants.au3>
    #include <EditConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <ListViewConstants.au3>
    #include <StaticConstants.au3>
    #include <TabConstants.au3>
    #include <TreeViewConstants.au3>
    #include <WindowsConstants.au3>
    #include <GuiListView.au3>
    #include <File.au3>
    #include <Constants.au3>
    #include <Date.au3>
    #include <array.au3>

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

    Local $arCheckBox[7]
    Global $ini = @SystemDir & '\save.ini'
    Global $path = @SystemDir & '\lastsave'
    Global $hfile = @SystemDir & '\lastsave.log'
    Global $line

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

    $Form1 = GUICreate("Sicherung", 918, 600, 219, 121)
    $Tab1 = GUICtrlCreateTab(16, 24, 873, 560)
    GUICtrlSetResizing(-1, $GUI_DOCKWIDTH + $GUI_DOCKHEIGHT)
    $TabSheet1 = GUICtrlCreateTabItem("Backup")
    $arCheckBox[6] = GUICtrlCreateCheckbox("Montag", 24, 361, 57, 17)
    GUICtrlSetFont(-1, 8, 400, 0, "Arial")
    $arCheckBox[5] = GUICtrlCreateCheckbox("Dienstag", 88, 361, 57, 17)
    GUICtrlSetFont(-1, 8, 400, 0, "Arial")
    $arCheckBox[4] = GUICtrlCreateCheckbox("Mittwoch", 152, 361, 65, 17)
    GUICtrlSetFont(-1, 8, 400, 0, "Arial")
    $arCheckBox[3] = GUICtrlCreateCheckbox("Donnerstag", 224, 361, 73, 17)
    GUICtrlSetFont(-1, 8, 400, 0, "Arial")
    $arCheckBox[2] = GUICtrlCreateCheckbox("Freitag", 304, 361, 57, 17)
    GUICtrlSetFont(-1, 8, 400, 0, "Arial")
    $arCheckBox[1] = GUICtrlCreateCheckbox("Samstag", 368, 361, 57, 17)
    GUICtrlSetFont(-1, 8, 400, 0, "Arial")
    $arCheckBox[0] = GUICtrlCreateCheckbox("Sonntag", 432, 361, 65, 17)
    GUICtrlSetFont(-1, 8, 400, 0, "Arial")

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

    $Time = GUICtrlCreateDate('15:00', 24, 393, 70, 21, $DTS_TIMEFORMAT)
    ;GUICtrlCreateDate('00:00:00', 10, 10, 100, 30, $DTS_TIMEFORMAT)
    $DTM_SETFORMAT_ = 0x1032
    $style = "HH:mm"
    GUICtrlSendMsg($Time, $DTM_SETFORMAT_, 0, $style)

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

    $hListView = GUICtrlCreateListView("Quelle|Ziel", 24, 73, 850, 246)
    GUICtrlSendMsg(-1, $LVM_SETCOLUMNWIDTH, 0, 420)
    GUICtrlSendMsg(-1, $LVSCW_AUTOSIZE_USEHEADER, 1, 420)

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

    $hListView1 = GUICtrlCreateListView("Quelle|Ziel", 24, 420, 850, 150)
    GUICtrlSendMsg($hListView1, $LVM_SETCOLUMNWIDTH, 0, 420)
    GUICtrlSendMsg($hListView1, $LVSCW_AUTOSIZE_USEHEADER, 1, 420)

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

    GUICtrlSendMsg(-1, 0x101E, 0, 50)
    GUICtrlSetFont(-1, 8, 400, 0, "Arial")
    $add = GUICtrlCreateButton("+", 24, 321, 75, 25)
    GUICtrlSetFont(-1, 20, 400, 0, "Arial")
    $del = GUICtrlCreateButton("-", 104, 321, 75, 25)
    GUICtrlSetFont(-2, 20, 400, 0, "Arial")
    $Task_Plannen = GUICtrlCreateButton("Task_Planen", 100, 390, 75, 25)
    $Save = GUICtrlCreateButton("Save-Settings", 800, 49, 75, 25)

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

    GUICtrlSetFont(-1, 8, 400, 0, "Arial")
    $Quelle = GUICtrlCreateLabel("Quelle", 24, 49, 34, 17)
    GUICtrlSetFont(-1, 8, 400, 0, "Arial")
    $Sichern = GUICtrlCreateButton("Sichern", 184, 321, 75, 25)
    GUICtrlSetFont(-1, 15, 400, 0, "Arial")

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

    $TabSheet2 = GUICtrlCreateTabItem("Restore")
    $Input2 = GUICtrlCreateInput("Input1", 31, 81, 760, 22)
    GUICtrlSetFont(-1, 8, 400, 0, "Arial")
    $Restore_Ordner = GUICtrlCreateLabel("Restore_Ordner", 24, 57, 79, 17)
    GUICtrlSetFont(-1, 8, 400, 0, "Arial")
    $Quellpfadzeigen = GUICtrlCreateButton("Quellpfadzeigen", 800, 129, 83, 25)
    GUICtrlSetFont(-1, 8, 400, 0, "Arial")
    $TreeView1 = GUICtrlCreateTreeView(31, 137, 760, 241)
    GUICtrlSetFont(-1, 8, 400, 0, "Arial")
    $Wiederherstellen = GUICtrlCreateButton("Wiederherstellen", 800, 353, 83, 25)
    GUICtrlSetFont(-1, 8, 400, 0, "Arial")
    $Button1 = GUICtrlCreateButton("suchen", 800, 81, 83, 25)
    GUICtrlSetFont(-1, 8, 400, 0, "Arial")
    $Verfuegbare_sicherungen = GUICtrlCreateLabel("Verfuegbare_sicherungen", 48, 113, 126, 17)
    GUICtrlSetFont(-1, 8, 400, 0, "Arial")
    $Offnen = GUICtrlCreateButton("Offnen", 800, 321, 83, 25)
    GUICtrlSetFont(-1, 8, 400, 0, "Arial")
    GUICtrlCreateTabItem("")
    GUISetState(@SW_SHOW)

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

    If FileExists(@ScriptDir & '\save.ini') Then
    $ini = IniRead(@ScriptDir & '\save.ini', "Wochentag", "tage", 0)
    For $i = 6 To 0 Step -1
    If BitAND($ini, 2 ^ $i) Then
    GUICtrlSetState($arCheckBox[$i], $GUI_CHECKED)
    EndIf
    Next
    Local $aData = IniReadSection(@ScriptDir & '\save.ini', "Quelle-Ziele")
    ; _ArrayDisplay($aData)
    For $i = 1 To UBound($aData) - 1
    GUICtrlCreateListViewItem($aData[$i][0] & "|" & $aData[$i][1], $hListView)
    Next
    EndIf
    #EndRegion ### END Koda GUI section ###

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

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE

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

    Exit
    Case $add
    $sfolder = FileSelectFolder("Wählen den zu Sichernden Ordner:", 'c:')

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

    ;if @error Then Return
    $dfolder = FileSelectFolder("Wählen Sie den Ziel Ordner:", 'c:')
    GUICtrlCreateListViewItem($sfolder & '|' & $dfolder, $hListView)
    ;if @error Then Return
    $hWnd = $hListView
    If FileExists($path & ".log") Then FileDelete($path & ".log")
    FileWrite($path & ".log", _GUICtrlListView_Export($hWnd, 1, ','))

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

    Case $del
    _GUICtrlListView_DeleteItemsSelected($hListView)
    $hWnd = $hListView
    If FileExists($path & ".log") Then FileDelete($path & ".log")
    FileWrite($path & ".log", _GUICtrlListView_Export($hWnd, 1, ','))
    Case $Sichern
    _iniwrite()
    _xcopy()
    Case $Task_Plannen
    _iniwrite()
    Case $Save
    _iniwrite()

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

    EndSwitch
    WEnd

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

    Func _iniwrite()
    ;FileDelete($ini)
    IniDelete(@ScriptDir & '\save.ini', 'Quelle-Ziele')

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

    Local $checked = 0
    For $i = 0 To 6
    If BitAND(GUICtrlRead($arCheckBox[$i]), $GUI_CHECKED) Then
    $checked = BitOR($checked, 2 ^ $i)
    EndIf
    Next
    For $i = 0 To _GUICtrlListView_GetItemCount($hListView) - 1;hier zählst du die einträge
    $var1 = _GUICtrlListView_GetItemText($hListView, $i, 0)
    $var2 = _GUICtrlListView_GetItemText($hListView, $i, 1)
    ;IniWrite('save.ini', 'Backup', 'Quelle'&$i, $var1)
    ;IniWrite('save.ini', 'Backup', 'Ziel'&$i, $var2)
    ;IniWrite('save.ini', 'Quelle-Ziele', $var1&$i, $var2&$i)
    IniWrite(@ScriptDir & '\save.ini', 'Quelle-Ziele', $var1, $var2)
    Next
    ; Next
    IniWrite(@ScriptDir & '\save.ini', 'Wochentag', 'tage', $checked)
    ;MsgBox(0, "", $Time)
    ;IniWrite('save.ini', 'Startzeit', 'Uhr', GUICtrlRead($Time))
    IniWrite(@ScriptDir & '\save.ini', 'Startzeit', 'Uhr', StringReplace(GUICtrlRead($Time), ':', ''))
    EndFunc ;==>_iniwrite

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

    Func _iniread()
    #cs Muster-INI
    [sicherung]
    tage=42
    #ce
    ; 2 + 8 + 32 = Mo/Mi/Fr

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

    ; aus INI lesen
    Local $savedays = IniRead(@ScriptDir & '\save.ini', 'sicherung', 'tage', 0)

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

    ; prüfen ob aktueller Tag für Sicherung vorgesehen ist
    If BitAND($savedays, 2 ^ (@WDAY - 1)) Then
    ; starte Sicherung
    EndIf
    EndFunc ;==>_iniread

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

    Func _GUICtrlListView_Export($hWnd, $exType = 0, $Delim = Default) ; $exType=0 Array / $exType=1 String
    If Not IsHWnd($hWnd) Then $hWnd = GUICtrlGetHandle($hWnd)
    Local $row = _GUICtrlListView_GetItemCount($hWnd)
    If $exType Then
    If $Delim <> Default Then Local $oldDelim = Opt('GUIDataSeparatorChar', $Delim)
    Local $sOut = ''
    For $i = 0 To $row - 1
    $sOut &= _GUICtrlListView_GetItemTextString($hWnd, $i) & @CRLF
    Next
    If $Delim <> Default Then Opt('GUIDataSeparatorChar', $oldDelim)
    Return $sOut
    EndIf
    Local $col = _GUICtrlListView_GetColumnCount($hWnd)
    Local $aOut[$row][$col]
    If $col = 1 Then
    ReDim $aOut[$row]
    For $i = 0 To UBound($aOut) - 1
    $aOut[$i] = _GUICtrlListView_GetItemText($hWnd, $i)
    Next
    Return $aOut
    EndIf
    For $i = 0 To UBound($aOut) - 1
    For $j = 0 To UBound($aOut, 2) - 1
    $aOut[$i][$j] = _GUICtrlListView_GetItemText($hWnd, $i, $j)
    Next
    Next
    Return $aOut
    EndFunc ;==>_GUICtrlListView_Export

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

    Func _Load() ; Datenbank-Datei laden
    _GUICtrlListView_DeleteAllItems($hListView) ; Das Handle eben noch bestimmen (s. Anfang des Threads)

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

    Local $sItem
    ; $FileOpenDialog = FileOpenDialog("Pc Liste Wählen", @ScriptDir & "\", "Pc Liste (*.txt;*.csv)", 1 + 4)
    Local $hfile = FileOpen(@ScriptDir & '\lastsave.log', 0) ; Datei zum lesen öffnen
    If $hfile <> -1 Then ; wenn das öffnen erfolgreich war, dann...
    _GUICtrlListView_BeginUpdate($hListView) ; Listview sperren
    While True ; Endlosschleife
    $sItem = FileReadLine($hfile) ; Zeile aus der Datei lesen
    If @error Then ExitLoop ; wenn das Ende der Datei erreicht ist, dann Endlosschleife verlassen
    GUICtrlCreateListViewItem($sItem, $hListView) ; mit den eingelesenen Daten einen neuen Listview-Eintrag erstellen
    WEnd
    _GUICtrlListView_EndUpdate($hListView) ; Listview wieder freigeben
    FileClose($hfile) ; Datei schließen
    EndIf
    EndFunc ;==>_Load

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

    Func CopyWithProgress($srcDir, $destDir)
    $date = _DateTimeFormat(_NowCalc(), 2)
    If StringRight($srcDir, 1) = "\" Then $srcDir = StringLeft($srcDir, StringLen($srcDir) - 1)
    If StringRight($destDir, 1) <> "\" Then $destDir = $destDir & "\"
    If Not FileExists($destDir) Then DirCreate($destDir)
    ;$srcSize = DirGetSize($srcDir, 1)
    ;$1_percent = $srcSize[0] / 100
    ;Run('XCOPY "'& $srcDir & '" "' & $destDir & '" /D /S /E /V /C /H /R /O /Y')
    $lastpath = StringTrimLeft($srcDir, StringInStr($srcDir, "\", "", -1))
    ; $TSDIS = Run(@ComSpec & " /c " & @SystemDir & '\xcopy ' & $srcDir & ' ' & $destDir & $lastpath & '\ /D /S /E /V /C /H /R /Y', "", @SW_HIDE)
    Run(@ComSpec & " /c " & @SystemDir & '\xcopy "' & $srcDir & '" "' & $destDir & $date & '\' & $lastpath & '\" /D /S /E /V /C /H /R /Y /F >' & @ScriptDir & '\xcopy.txt', "", @SW_SHOW)
    $winpos = WinGetPos("Sicherung")
    Sleep(1000)
    While ProcessExists("xcopy.exe")
    ToolTip('Bitte warten........' & @CRLF & 'copy läuft....' & @CRLF & $srcDir & ' ' & $destDir & $lastpath & $date, $winpos[0] + $winpos[2] / 2, $winpos[1] + $winpos[3] / 3) ; sollte mittig zur Gui stehen, oder?
    Sleep(100) ; hatte ich vergessen um CPU runterzufahren....
    WEnd
    ToolTip('')
    _FileReadToArray(@ScriptDir & "\xcopy.txt", $line)
    For $i = 1 To UBound($line) - 1
    $line[$i] = StringReplace($line[$i], ' -> ', '|') ; der String wird ersetzt durch den String mit der Eingabe
    GUICtrlCreateListViewItem($line[$i], $hListView1)
    Next
    ;FileDelete (@Scriptdir & "\xcopy.txt")
    Local $aData = IniReadSection(@ScriptDir & "\save.ini", "Quelle-Ziele")
    ; _ArrayDisplay($aData)
    For $i = 1 To UBound($aData) - 1
    IniWrite($destDir & $date & '\Log.ini', 'Quelle-Ziele', $aData[$i][0], $aData[$i][1] & '\' & $date)
    ConsoleWrite($destDir & $date & '\' & $lastpath & '\Log.ini')
    Next
    EndFunc ;==>CopyWithProgress

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

    Func _xcopy()
    For $i = 0 To _GUICtrlListView_GetItemCount($hListView) - 1;hier zählst du die einträge
    $var1 = _GUICtrlListView_GetItemText($hListView, $i, 0)
    $var2 = _GUICtrlListView_GetItemText($hListView, $i, 1)
    CopyWithProgress($var1, $var2)
    ;IniWrite(@ScriptDir & '\Log.ini', 'Quelle-Ziele', $var1, $var2)

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

    Next

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

    EndFunc ;==>_xcopy

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

    Func _format()

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

    Dim $sFilePath = @ScriptDir & '\lastsave.log'
    Dim $outFile = @ScriptDir & '\lastsave.log'
    Dim $aArray
    _FileReadToArray($sFilePath, $aArray) ; datei in Array lesen

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

    For $i = 1 To $aArray[0] ; zeilenweise durchgehen

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

    $aArray[$i] = StringReplace($aArray[$i], ',', '|') ; der String wird ersetzt durch den String mit der Eingabe
    Next

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

    If FileExists($outFile) Then FileDelete($outFile) ; falls Ausgabedatei bereits vorhanden - löschen
    _FileWriteFromArray($outFile, $aArray, 1) ; vom Array in Ausgabedatei schreiben

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

    EndFunc ;==>_format

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

    Func _GetFilesFolder_Rekursiv($sPath, $sExt='*', $iDir=-1, $iRetType=0, $sDelim='0')
    Global $oFSO = ObjCreate('Scripting.FileSystemObject')
    Global $strFiles = ''
    Switch $sDelim
    Case '1'
    $sDelim = @CR
    Case '2'
    $sDelim = @LF
    Case '3'
    $sDelim = ';'
    Case '4'
    $sDelim = '|'
    Case Else
    $sDelim = @CRLF
    EndSwitch
    If ($iRetType < 0) Or ($iRetType > 1) Then $iRetType = 0
    If $sExt = -1 Then $sExt = '*'
    If ($iDir < -1) Or ($iDir > 1) Then $iDir = -1
    _ShowSubFolders($oFSO.GetFolder($sPath),$sExt,$iDir,$sDelim)
    If $iRetType = 0 Then
    Local $aOut
    $aOut = StringSplit(StringTrimRight($strFiles, StringLen($sDelim)), $sDelim, 1)
    If $aOut[1] = '' Then
    ReDim $aOut[1]
    $aOut[0] = 0
    EndIf
    Return $aOut
    Else

    Return StringTrimRight($strFiles, StringLen($sDelim))
    EndIf
    EndFunc

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

    Func _ShowSubFolders($Folder, $Ext='*', $Dir=-1, $Delim=@CRLF)
    If Not IsDeclared("strFiles") Then Global $strFiles = ''
    If ($Dir = -1) Or ($Dir = 0) Then
    For $file In $Folder.Files
    If $Ext <> '*' Then
    If StringRight($file.Name, StringLen($Ext)) = $Ext Then
    $strFiles &= $file.Path & $Delim
    EndIf
    Else
    $strFiles &= $file.Path & $Delim
    EndIf
    Next
    EndIf
    For $Subfolder In $Folder.SubFolders
    If ($Dir = -1) Or ($Dir = 1) Then $strFiles &= $Subfolder.Path & '\' & $Delim
    _ShowSubFolders($Subfolder, $Ext, $Dir, $Delim)
    Next
    EndFunc

    [/autoit]

    Viellen dank jetzt schon für die vorschläge:


    Danke
    SubZero

  • ini im Unterordner auslesen und Verarbeiten

    • subzero007
    • 29. September 2009 um 16:15

    Hey,

    du hast es ja hier sehr gut beschrieben aber verstehen tue ich es nicht ???

    Auch einige Funktionen liefern von Haus aus ein 2-D Array zurück.

    Nehmen wir als Bsp. IniReadSection("filename", "section")
    So sieht unsere INI-Datei aus:

    [sektion]
    schluesselA=1
    schluesselB=2
    schluesselC=3
    schluesselD=4

    Jetzt lesen wir die Sektion ein:

    #include <array.au3>
    Dim $val ; Variable für Array deklarieren
    $val = IniReadSection($pathINI, "sektion") ; Sektion einlesen
    If (Not IsArray($val)) Then ; Wenn zurückgegebene Variable kein Array ist
    MsgBox(0, '', 'INI-Sektion konnte nicht gelesen werden')
    Exit
    EndIf
    _ArrayDisplay($val, 'Inhalt INI-Sektion: [sektion]') ; eingelesenes Array anzeigen

    Schauen wir uns den Inhalt des Array an:

    $val[0][0] = 4 ; Anzahl der eingelesenen Schlüssel-Wert Paare

    $val[1][0] = 'schluesselA' ; Name des Schlüssels
    $val[1][1] = 1 ; Wert des Schlüssels

    $val[2][0] = 'schluesselB'
    $val[2][1] = 2

    $val[3][0] = 'schluesselC'
    $val[3][1] = 3

    $val[4][0] = 'schluesselD'
    $val[4][1] = 4

    Möchte ich jetzt auf den Wert von 'schluesselC' zugreifen, muß ich das Array nach dem Schlüssel durchsuchen und mir den zugehörigen Wert ausgeben lassen:

    Dim $SuchWert, $SuchSchluessel = 'schluesselC'
    For $i = 1 To UBound($val) -1
    If $val[$i][0] = $SuchSchluessel Then
    $SuchWert = $val[$i][1]
    ExitLoop
    EndIf
    Next
    MsgBox(0, '', 'gesuchter Wert ist: ' & $SuchWert)

    Ich vergleiche also in jedem Element des Array ob der enthaltene Schlüsselname (Position[n][0]) mit meinem gesuchten Namen übereinstimmt.
    Wird der Schlüssel gefunden, lese ich den zugehörigen Wert aus (Position[n][1]).

    ?(?(?(?(

  • Script funktioniert nur im debugmodus Einzelschritt

    • subzero007
    • 29. September 2009 um 16:05

    Beim mir funktionierts ??
    Was kriegst du den für einen fehler?

  • ini im Unterordner auslesen und Verarbeiten

    • subzero007
    • 29. September 2009 um 15:48

    Das steht in der hilfe:
    Die Anzahl der zurückgegebenen Elemente steht in $result[0][0]. Wenn ein @error auftaucht, wird kein Array erstellt.

    Jetzt bin ich ganz verwirt und das ist auch falsch ??

    [autoit]

    #include <array.au3>

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

    $array_Inis = _GetFilesFolder_Rekursiv ( @ScriptDir , 'log.ini',0 )
    ;~ _ArrayDisplay ( $array_Inis )
    For $i = 1 To UBound ( $array_Inis )-1

    $a = IniReadSection ( $array_Inis[$i], 'Quelle-Ziele' )
    _ArrayDisplay ($a)

    ;$a = 'c:\0rdner1=\\server\share\28.09.2009\ordner1'
    ;~ $a = 'c:\0rdner1=\\server\share\blub\28.09.2009\ordner1' ; auch längere Pfade möglich

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

    $date = StringRegExp($a[$i][0], '\d{2}\.\d{2}\.\d{4}', 1)
    $date = $date[$i][0] & '|'

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

    $local = StringLeft($a[$i][0], StringInStr($a[$i][0], '=')-1) & '|'

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

    $server = StringRegExp($a[$i][0], '(\\\\\w+\\)(\w+\\)+', 2)
    $server = $server[$i][0]

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

    $string = $date[$i][0] & $local[$i][0] & $server[$i][0]

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

    ConsoleWrite($string[$i][0] & @CRLF)

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


    Next

    [/autoit]

    ?(?(?(?(

  • ini im Unterordner auslesen und Verarbeiten

    • subzero007
    • 29. September 2009 um 15:27

    Hey Nuts,

    kannst du dir mal meinen beitrag "12" anschauen verstehe den fehler nicht ?

  • ini im Unterordner auslesen und Verarbeiten

    • subzero007
    • 29. September 2009 um 15:24

    Bitte nicht lachen und nicht fertig machen erklären wäre mir lieber ;) und mir nicht meine mehr als 400 beiträge vorwerfen ;)


    Das ist auch falsch aber was?

    [autoit]

    #include <array.au3>

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

    $array_Inis = _GetFilesFolder_Rekursiv ( @ScriptDir , 'log.ini',0 )
    ;~ _ArrayDisplay ( $array_Inis )
    For $i = 1 To UBound ( $array_Inis )-1

    $a = IniReadSection ( $array_Inis[$i], 'Quelle-Ziele' )
    _ArrayDisplay ($a)

    ;$a = 'c:\0rdner1=\\server\share\28.09.2009\ordner1'
    ;~ $a = 'c:\0rdner1=\\server\share\blub\28.09.2009\ordner1' ; auch längere Pfade möglich

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

    $date = StringRegExp($a[$i][$i], '\d{2}\.\d{2}\.\d{4}', 1)
    $date = $date[0] & '|'

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

    $local = StringLeft($a[$i][$i], StringInStr($a[$i][$i], '=')-1) & '|'

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

    $server = StringRegExp($a[$i][$i], '(\\\\\w+\\)(\w+\\)+', 2)
    $server = $server[0]

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

    $string = $date & $local & $server

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

    ConsoleWrite($string & @CRLF)

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


    Next

    [/autoit]
  • ini im Unterordner auslesen und Verarbeiten

    • subzero007
    • 29. September 2009 um 15:11

    Nein so weit komme ich
    Array display klappt:
    Der Inhalt kann nicht angezeigt werden, da er nicht mehr verfügbar ist.

    und kriege anschliessend diesen fehler:

    ==> Array variable has incorrect number of subscripts or subscript dimension range exceeded.:
    $date = StringRegExp($a[$i], '\d{2}\.\d{2}\.\d{4}', 1)
    $date = StringRegExp(^ ERROR

    ???

    Bilder

    • array.JPG
      • 29,07 kB
      • 274 × 486
  • ini im Unterordner auslesen und Verarbeiten

    • subzero007
    • 29. September 2009 um 14:44

    Was mache ich falsch ?

    [autoit]

    #include <array.au3>

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

    $array_Inis = _GetFilesFolder_Rekursiv ( @ScriptDir , 'log.ini',0 )
    ;~ _ArrayDisplay ( $array_Inis )
    For $i = 1 To UBound ( $array_Inis )-1

    $a = IniReadSection ( $array_Inis[$i], 'Quelle-Ziele' )
    _ArrayDisplay ($a)

    ;$a = 'c:\0rdner1=\\server\share\28.09.2009\ordner1'
    ;~ $a = 'c:\0rdner1=\\server\share\blub\28.09.2009\ordner1' ; auch längere Pfade möglich

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

    $date = StringRegExp($a[$i], '\d{2}\.\d{2}\.\d{4}', 1)
    $date = $date[0] & '|'

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

    $local = StringLeft($a[$i], StringInStr($a[$i], '=')-1) & '|'

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

    $server = StringRegExp($a[$i], '(\\\\\w+\\)(\w+\\)+', 2)
    $server = $server[0]

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

    $string = $date & $local & $server

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

    ConsoleWrite($string & @CRLF)

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


    Next

    [/autoit]

    Würde mich sehr darüber freuen wenn mir jemand erklären würde was ich falsch mache damit ich es mal verstehe
    ?(?(?(?(?(

  • ini im Unterordner auslesen und Verarbeiten

    • subzero007
    • 29. September 2009 um 14:16

    ja ne ist klar,

    StringRegExp ist für mich immer noch ein buch mit 7 siegeln nur nur StringRegExp :(

    Aber das wird noch ;)

  • ini im Unterordner auslesen und Verarbeiten

    • subzero007
    • 29. September 2009 um 13:26

    Ok das krige ich jetzt hin

    noch eine letzte frage habe ich:
    Wie kann ich aus dem:

    c:\0rdner1=\\server\share\28.09.2009\ordner1

    Das machen ?

    28.09.2009|c:\0rdner1|\\server\share\

    Danke
    SubZero

  • ini im Unterordner auslesen und Verarbeiten

    • subzero007
    • 29. September 2009 um 12:49

    Danke,

    es ist nur im ersten odner eine ini
    \\server\share\28.09.2009\log.ini
    \\server\share\27.09.2009\log.ini
    \\server\share\26.09.2009\log.ini
    \\server\share\25.09.2009\log.ini

    Wie mache ich das und
    wie kann ich dann aus dem ergebnis:
    Log.ini enthalten oder nicht und anschliessen log.ini lesen und folgende Listview items erstellen?

    Datum|Quelle|Backupordner
    28.09.2009|c:\0rdner1|\\server\share\

    Das ist mein Problem ?(

  • ini im Unterordner auslesen und Verarbeiten

    • subzero007
    • 29. September 2009 um 12:16

    Hey,

    ich habe ein Problem habe folgende ordner struktur

    \\server\share\28.09.2009\ordner1
    \\server\share\28.09.2009\ordner2
    \\server\share\28.09.2009\ordner3
    \\server\share\28.09.2009\ordner4
    \\server\share\28.09.2009\ordner5
    \\server\share\28.09.2009\log.ini

    \\server\share\27.09.2009\ordner1
    \\server\share\27.09.2009\ordner2
    \\server\share\27.09.2009\ordner3
    \\server\share\27.09.2009\ordner4
    \\server\share\27.09.2009\ordner5
    \\server\share\27.09.2009\log.ini


    habe jeweils im ordern "\\server\share\%datum_der_sicherung%\" eine log.ini die so aussieht:

    [Quelle-Ziele]
    c:\0rdner1=\\server\share\28.09.2009\ordner1
    c:\0rdner2=\\server\share\28.09.2009\ordner2
    c:\0rdner3=\\server\share\28.09.2009\ordner3
    c:\0rdner4=\\server\share\28.09.2009\ordner4
    c:\0rdner5=\\server\share\28.09.2009\ordner5


    Ich möchte in einer GUI den Ordner:
    \\server\share\ angeben und er soll in dann in aller ordner gucken wo eine log.ini ist,
    wenn eine Log.ini enthalten dann ein Listview item erstellen.


    Der listview eintrag sollte so ausehen:
    Datum|Quelle|Backupordner
    28.09.2009|c:\0rdner1|\\server\share\


    eine idee wie ich das machen kann?

    Danke und Gruß
    SubZero

  • $LVM_SETCOLUMNWIDTH

    • subzero007
    • 29. September 2009 um 09:57

    Hey,

    was mache ich falsch
    die erste Listview ist Optimal aufgeteilt die Zweite nicht?


    [autoit]

    $hListView = GUICtrlCreateListView("Quelle|Ziel", 24, 73, 850, 246)
    GUICtrlSendMsg(-1, $LVM_SETCOLUMNWIDTH, 0, 420)
    GUICtrlSendMsg(-1, $LVM_SETCOLUMNWIDTH, 1, 420)

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

    $hListView1 = GUICtrlCreateListView("Quelle|Ziel", 24, 420, 850, 150)
    GUICtrlSendMsg(-1, $LVM_SETCOLUMNWIDTH, 0, 420)
    GUICtrlSendMsg(-1, $LVM_SETCOLUMNWIDTH, 1, 420)

    [/autoit]


    Danke
    Subzero

  • log datei in echtzeit in listview einlesen

    • subzero007
    • 28. September 2009 um 17:25

    Also müsste eigentlci so gehen oder:

    [autoit]

    Opt("GUIDataSeparatorChar","->")

    [/autoit]

    aber egal habe jetzt mein text formatiert geht auch so
    danke für die unterstützung

  • log datei in echtzeit in listview einlesen

    • subzero007
    • 28. September 2009 um 16:50

    GUIDataSeparatorChar Legt das Trennzeichen für Teildaten fest, die mit GUICtrlSetData gesetzt werden.
    Das Standardzeichen ist '|'.

    Und wie kann man das festlegen ??

  • log datei in echtzeit in listview einlesen

    • subzero007
    • 28. September 2009 um 16:28

    finde in der hilfe nichts wie mache ich das ?

Spenden

Jeder Euro hilft uns, Euch zu helfen.

Download

AutoIt Tutorial
AutoIt Buch
Onlinehilfe
AutoIt Entwickler
  1. Datenschutzerklärung
  2. Impressum
  3. Shoutbox-Archiv
Community-Software: WoltLab Suite™