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. Greenhorn

Beiträge von Greenhorn

  • Frage zu Arrays...

    • Greenhorn
    • 26. Januar 2007 um 22:32

    Thanx a lot, boys !

    Gruß

  • Frage zu Arrays...

    • Greenhorn
    • 26. Januar 2007 um 21:49

    Moin,

    ich habe da mal eine Frage zu Arrays...

    Wieviel Substrings kann ein eindimensionales Array beinhalten [?] :irre:

    Ich erhalte manchmal diese Fehlermeldung ==> Array variable has incorrect number of subscripts or subscript dimension range exceeded.:

    Nun weiß ich nicht ob es an dem einen oder dem anderen Fall liegt...


    Gruß

  • PfadMacros in "au3.properties" ???

    • Greenhorn
    • 25. Januar 2007 um 17:05

    Vielen Dank für die Hilfe, AspirinJunkie, ich werde es mal mit den Windowsvariablen probieren.

    Zitat

    Deswegen könnte man auch ein Start-Skript schreiben welches lediglich vor dem Aufruf von Scite noch den Pfad zu AutoIt aus der Registry ausliest (HKEY_LOCAL_MACHINE\SOFTWARE\AutoIt v3\AutoIt - InstallDir) und in die au3.properties einträgt.

    Genau das ist das Problem..., ich weiß nicht genau ob ich die Möglichkeit habe die au3,properties zu ändern.
    Mein Arbeitskollege hat ein Tool um Programme zu "virtualisieren", d.h. die Programme werden in eine .exe gepackt und laufen nur im Arbeitsspeicher und müssen nicht auf einen Datenträger entpackt werden.
    Nun weiß ich nicht, ob ich die Dateien in der "Virtual.exe" verändern kann...

    Zitat

    Außerdem laufen nicht alle AutoIt-Extras unter Scite da sie nicht immer mit Umgebungsvariablen umgehen können (OpenInclude z.B.).

    Auf das Problem mit dem \Include Pfad bin ich auch schon gestoßen und habe dafür ein entsprechendes RegWrite-Script geschrieben, genauso für die anderen Registryeinträge.


    Gruß

  • PfadMacros in "au3.properties" ???

    • Greenhorn
    • 25. Januar 2007 um 02:02

    Ich möchte diese Zeile ungefähr so anpassen.


    au3.properties
    # SciTE settings for AutoIt v3
    #
    # jos van der Zande jvdzande@yahoo.com
    #

    # *** Specify here your AutoIt program directory ***
    autoit3dir=c:\program files\autoit3
    autoit3dir=@WorkingDir & "\autoit3"

    file.patterns.au3=*.au3
    filter.au3=AutoIt (au3)|*.au3|
    lexer.$(file.patterns.au3)=au3

    # Editor settings
    use.monospaced=1
    save.session=1


    Oder anders gesagt, ich habe SciTE und AutoIt auf einem USB Stick und nun muß ich die au3.properties anpassen, damit SciTE weiß wo \Autoit3 sich befindet.
    Jetzt habe ich aber nicht die Möglichkeit die au3.properties schreibend zu verändern, also beim Start von USB-SciTE & Autoit kann ich nicht per Script, oder wie auch immer, die "autoit3dir=c:\program files\autoit3" umschreiben.

    Meine Frage ist nun kann ich die Zeile bzw. die Pfadangabe irgendwie Laufwerksunabhängig gestalten durch Macros oder so...


    Gruß

  • PfadMacros in "au3.properties" ???

    • Greenhorn
    • 24. Januar 2007 um 22:47

    Gruß zuvor,

    ich habe da eine Frage zu den "au3.properties" in SciTE.

    Wenn ich in den "au3.properties" für SciTE den Autoitpfad durch @WorkingDir & "\Autoit3" ersetze, nimmt SciTE dann das Macro an, oder muß ich WindowsMacros verwenden, oder passiert dann rein gar nichts ? :irre:

    Ich möchte gern den Autoit3-Pfad in den "au3.properties" auf @WorkingDir setzen, habe jedoch nicht die Möglichkeit bei jedem Programmstart durch ein Script die "au3.properties" zu ändern => brauche also ein Macro oder so was da der Autoit3-Pfad variabel sein soll...


    Greetz

  • "Zeilen vergleichen"

    • Greenhorn
    • 23. Januar 2007 um 20:40

    Sorry, das Script ist schon ziemlich zerhackt, durch die ganzen Versuche... :rolleyes:


    [autoit]

    _ArrayDelete($arFile, $i) ; -> warum?

    [/autoit]


    Ich wollte versuchen den ganzen Array zu durch suchen und die unnötigen Einträge mit

    [autoit]

    _ArrayDelete

    [/autoit]

    llöschen, dann mit

    [autoit]

    _FileWriteFromArray

    [/autoit]

    schreiben...
    Aber wie gesagt, ziemlich durchenander im Moment.

    Gruß


    Edit:

    Juhuuuuuu ! :party3: :party4: :party3:

    Habe es so hinbekommen, dass ich damit erstmal etwas anfangen kann...

    Spoiler anzeigen
    [autoit]


    #include <File.au3>
    #include <String.au3>
    #include <Array.au3>

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

    $RegASCI = StringReplace(FileGetShortName("D:\Eigene Dateien\Register-1.reg"), ".reg", ".old")
    RunWait(@ComSpec & " /c type " & FileGetShortName("D:\Eigene Dateien\Register-1.reg") & ">" & $RegASCI, @MyDocumentsDir)
    FileCopy($RegASCI, "D:\Eigene Dateien\Register-1.reg", 1)
    FileDelete($RegASCI)

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

    Dim $arFile, $str, $v, $tmp
    Dim $pfadRead = FileOpen("D:\Eigene Dateien\Register-1.reg", 0)
    Dim $pfadWrite = FileOpen("Temp.txt", 2)
    Dim $oldline = "w"

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

    $result = FileOpen(@MyDocumentsDir & "\RegScript.txt", 2)

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

    While 1
    $line = FileReadLine($pfadRead)
    If @error = -1 Then ExitLoop

    Local $sPattern, $vResult

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

    $sPattern = "[][]"
    $vResult = StringRegExp($line, $sPattern, 1)
    If @extended Then
    $keyname = StringRegExpReplace($line, $sPattern, "")
    FileWriteLine($pfadWrite, $keyname)
    EndIf
    WEnd
    FileClose($pfadWrite)
    If _FileReadToArray("Temp.txt", $arFile) = 0 Then
    MsgBox(0, 'Achtung', "Datei konnte nicht eingelesen werden!")
    Exit
    EndIf
    For $i = 1 To UBound($arFile)-1
    $tmp = $arFile[$i]
    $tmp1 = $tmp & "\"
    $Pos = _ArraySearch ($arFile, $tmp1, 0, 0, 0, True)
    Select
    Case $Pos = -1
    Sleep(0)
    Case Else
    If $tmp1 = "\" Then ExitLoop
    $v = _ArrayDelete($arFile, $Pos)
    $i = $i-1
    EndSelect
    Next
    _ArrayDelete($arFile, 0)
    _FileWriteFromArray("Temp1.txt", $arFile)

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

    FileClose("Temp1.txt")
    FileClose($pfadRead)
    Exit

    [/autoit]

    1ooo Dank nochmal an dich, BugFix !

    Deine Lehrstunden in Sachen Arrays waren nicht Fruchtlos !!! :kiss:


    Gruß

  • "Zeilen vergleichen"

    • Greenhorn
    • 23. Januar 2007 um 16:10

    Moin BugFix,

    erstmal vielen, vielen Dank für die aktive Unterstützung ! ! !

    Die Fehlermeldung ==> Array variable has incorrect number of subscripts or subscript dimension range exceeded.: ist in Zeile 14 mit dem erten vorkommen von $str[0] !

    Hab's zerst ohne eigene Variablen getestet, da kam die Fehlermeldung auch schon...


    Für einen besseren Überblick hier mal das Gesamtwerk...
    Das Problemkind ist die Func Unregister() !

    Spoiler anzeigen
    [autoit][/autoit] [autoit][/autoit] [autoit]

    Global $regsource
    Global $regdest
    Global $file
    Global $RegScript
    Global $UnRegScript
    Global $msg, $line, $keyname, $value, $value1, $value2, $filename

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

    #include <File.au3>
    #include <String.au3>
    #include <Array.au3>
    #include <GuiConstants.au3>

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

    ; GUI Reg2Au3 Converter
    GUICreate("Reg2Au3 Converter", 392, 316, -1, -1, BitOR($WS_OVERLAPPEDWINDOW, $WS_CLIPSIBLINGS))

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

    $Group_1 = GUICtrlCreateGroup("", 10, 20, 370, 150)
    $Label_1 = GUICtrlCreateLabel("Quelldatei auswählen", 30, 50, 140, 20)
    $Input_1 = GUICtrlCreateInput("", 30, 70, 200, 20)
    $Button_1 = GUICtrlCreateButton("&Durchsuchen...", 260, 70, 100, 20)
    $Label_2 = GUICtrlCreateLabel("Zieldatei auswählen", 30, 110, 120, 20)
    $Input_2 = GUICtrlCreateInput("", 30, 130, 200, 20)
    $Button_2 = GUICtrlCreateButton("&Durchsuchen...", 260, 130, 100, 20)

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

    $Unreg = GUICtrlCreateCheckbox("UnRegScript erstellen", 20, 180)

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

    $SameFile = GUICtrlCreateRadio('In "RegScript.au3" schreiben', 20, 220)
    $OwnFile = GUICtrlCreateRadio('"UnRegScript.au3" erstellen', 20, 250)

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

    $Button_Start = GUICtrlCreateButton("&Start", 280, 240, 80, 20)
    $Button_Beenden = GUICtrlCreateButton("&Beenden", 280, 280, 80, 20)

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

    GUISetState()
    GUICtrlSetState($SameFile, $GUI_DISABLE)
    GUICtrlSetState($OwnFile, $GUI_DISABLE)

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

    While 1

    $msg = GUIGetMsg()
    Select
    Case $msg = 0
    ContinueLoop
    Case $msg = $Button_1
    $regsource = FileOpenDialog("Registrierungsdatei wählen", @MyDocumentsDir, "(*.reg)", 1 + 4)
    ControlSetText("Reg2Au3 Converter", "", $Input_1, $regsource)
    Case $msg = $Button_2
    DestDir()
    If @error Then MsgBox(4096, "", "Save cancelled.")
    Case $msg = $Unreg
    If GUICtrlRead($Unreg) = $GUI_CHECKED Then
    GUICtrlSetState($SameFile, $GUI_ENABLE)
    GUICtrlSetState($OwnFile, $GUI_ENABLE)
    Endif

    Case $msg = $SameFile
    If GUICtrlRead($SameFile) = $GUI_CHECKED Then $UnRegScript = FileOpen($regdest, 1)
    Case $msg = $OwnFile
    If GUICtrlRead($OwnFile) = $GUI_CHECKED Then
    $array = StringSplit($regdest, "\")
    _ArrayPop($array)
    $string = _ArrayToString($array, "\", 1)
    $UnRegScript = FileOpen($string & "\UnRegScript.au3", 2)
    EndIf
    Case $msg = $Button_Start
    If GUICtrlRead($Unreg) = $GUI_CHECKED Then
    Register()
    Unregister()
    Else
    Register()
    EndIf
    FileClose($file)
    FileClose($RegScript)
    FileClose($UnRegScript)
    Case $msg = $Button_Beenden
    Exit
    Case $msg = $GUI_EVENT_CLOSE
    ExitLoop
    Case Else
    ;;;
    EndSelect
    WEnd

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

    Exit

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

    ; Funktion .reg zu .au3
    Func Register()

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

    $file = FileOpen($regsource, 0)
    $RegScript = FileOpen($regdest, 2)

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

    If $file = -1 Then
    MsgBox(0, "Error", "Unable to open .reg file.")
    Exit
    ElseIf $RegScript = -1 Then
    MsgBox(0, "Error", "Unable to open RegScript.au3.")
    Exit
    Else
    If $file = -1 And $RegScript = -1 Then
    MsgBox(0, "Error", "Unable to open any file.")
    Exit
    EndIf
    EndIf

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

    $RegASCI = StringReplace(FileGetShortName($regsource), ".reg", ".old")
    RunWait(@ComSpec & " /c type " & FileGetShortName($regsource) & ">" & $RegASCI, @MyDocumentsDir)
    FileCopy($RegASCI, $regsource, 1)
    FileDelete($RegASCI)

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

    While 1
    $line = FileReadLine($file)
    If @error = -1 Then ExitLoop
    Local $sPattern, $vResult, $clip, $clip1

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

    $sPattern = "[][]"
    $vResult = StringRegExp($line, $sPattern, 1)
    If @extended Then
    $keyname = StringRegExpReplace($line, $sPattern, '"')
    FileWriteLine($RegScript, "RegWrite(" & $keyname & ")")
    EndIf

    $sPattern = "(@=)"
    $vResult = StringRegExp($line, $sPattern, 1)
    If @extended Then
    $clip = StringRegExpReplace($line, $sPattern, "")
    $clip_0 = StringRegExpReplace($clip, "\\" & '"', "")
    $value = StringRegExpReplace($clip_0, "\\\\", "\\", 0)
    FileWriteLine($RegScript, "RegWrite(" & $keyname & ', "", "REG_SZ", ' & $value & ")")
    EndIf

    $sPattern = '("=")'
    $vResult = StringRegExp($line, $sPattern, 1)
    If @extended Then
    $clip_1 = StringRegExpReplace($line, '"="', '", "REG_SZ", "')
    $value1 = StringRegExpReplace($clip_1, "\\\\", "\\", 0)
    FileWriteLine($RegScript, "RegWrite(" & $keyname & "," & $value1 & ")")
    EndIf
    $sPattern = "(=dword:)"
    $vResult = StringRegExp($line, $sPattern, 1)
    If @extended Then
    $hex = StringRight($line, 8)
    $dec = Dec($hex)
    $value2 = StringRegExpReplace($line, "=dword:" & $hex, ', "REG_DWORD", "' & $dec)
    FileWriteLine($RegScript, "RegWrite(" & $keyname & "," & $value2 & '")')
    EndIf
    WEnd

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

    EndFunc ;==>Register

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

    ; Funktion Unregister

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

    Func Unregister()

    ; aktuelle Prod oder Beta benutzen

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


    Dim $arFile, $write, $tmp, $last

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


    If _FileReadToArray($regsource, $arFile) = 0 Then
    MsgBox(0, 'Achtung', "Datei konnte nicht eingelesen werden!")
    Exit
    EndIf

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

    For $i = 1 To UBound($arFile)
    $tmp = $arFile[$i]
    If StringInStr($arFile[$i], "[") Then
    $tmp1 = _StringBetween($tmp, "[", "]")
    $last1 = _StringBetween($last, "[", "]")

    If StringInStr($tmp1, $last1) Then
    $last = $arFile[$i]
    _ArrayDelete($arFile, $i)

    Else
    If Not StringInStr($tmp1, $last1) Then
    FileWriteLine($UnRegScript, $arFile[$i])
    $last = $arFile[$i]

    EndIf
    EndIf
    EndIf

    Next
    FileClose($UnRegScript)
    Exit

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

    EndFunc ;==>Unregister

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

    ; Funktion Zieldatei
    Func DestDir()
    ; option 2 = dialog remains until valid path/file selected
    $regdest = FileSaveDialog("Zielpfad wählen", @MyDocumentsDir, "Scripts (*.aut;*.au3)", 2, "RegScript.au3")
    $check = StringRegExp($regdest, "(.au3)", 1)
    ; Dateiendung .au3 anhängen
    Select
    Case @error = 0
    if @extended then ControlSetText("Reg2Au3 Converter", "", $Input_2, $regdest)
    Case @error = 1
    ControlSetText("Reg2Au3 Converter", "", $Input_2, $regdest & ".au3")
    EndSelect
    EndFunc

    [/autoit]

    :rofl:


    Gruß

  • "Zeilen vergleichen"

    • Greenhorn
    • 23. Januar 2007 um 00:50

    @Bug_Fix


    ==> Subscript used with non-Array variable.:


    ;(

  • "Zeilen vergleichen"

    • Greenhorn
    • 22. Januar 2007 um 18:28

    Hi @all,

    zur Zeit versuche ich mich hiermit etwas zu werden, jedoch schreibt er als Ergebnis alle Zeilen, also auch die, welche ich nicht sehen möchte... :

    Spoiler anzeigen
    [autoit]

    Dim $arFile, $write, $tmp, $last

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


    If _FileReadToArray($regsource, $arFile) = 0 Then
    MsgBox(0, 'Achtung', "Datei konnte nicht eingelesen werden!")
    Exit
    EndIf

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

    For $i = 1 To UBound($arFile)
    $tmp = $arFile[$i]
    If StringInStr($arFile[$i], "[") Then
    $tmp1 = _StringBetween($tmp, "[", "]")
    $last1 = _StringBetween($last, "[", "]")

    If StringInStr($tmp1, $last1) Then
    $last = $arFile[$i]
    _ArrayDelete($arFile, $i)

    Else
    If Not StringInStr($tmp1, $last1) Then
    FileWriteLine($UnRegScript, $arFile[$i])
    $last = $arFile[$i]

    EndIf
    EndIf
    EndIf

    Next

    [/autoit]
    Spoiler anzeigen
    [autoit]


    [HKEY_LOCAL_MACHINE\SOFTWARE\AutoIt v3] ; => o.k. will ich haben
    [HKEY_LOCAL_MACHINE\SOFTWARE\AutoIt v3\AutoIt] ; => NEIN will ich nicht haben
    [HKEY_LOCAL_MACHINE\SOFTWARE\Classes\AutoIt3Script] ; => o.k.
    [HKEY_LOCAL_MACHINE\SOFTWARE\Classes\AutoIt3Script\DefaultIcon] ; => NEIN
    [HKEY_LOCAL_MACHINE\SOFTWARE\Classes\AutoIt3Script\Shell] ; => NEIN
    [HKEY_LOCAL_MACHINE\SOFTWARE\Classes\AutoIt3Script\Shell\Compile] ; => NEIN
    [HKEY_LOCAL_MACHINE\SOFTWARE\Classes\AutoIt3Script\Shell\Compile\Command] ; => NEIN
    [HKEY_LOCAL_MACHINE\SOFTWARE\Classes\AutoIt3Script\Shell\Compile with Options] ; => NEIN
    [HKEY_LOCAL_MACHINE\SOFTWARE\Classes\AutoIt3Script\Shell\Compile with Options\Command] ; => NEIN
    [HKEY_LOCAL_MACHINE\SOFTWARE\Classes\AutoIt3Script\Shell\Edit] ; => NEIN
    [HKEY_LOCAL_MACHINE\SOFTWARE\Classes\AutoIt3Script\Shell\Edit\Command] ; => NEIN
    [HKEY_LOCAL_MACHINE\SOFTWARE\Classes\AutoIt3Script\Shell\Open] ; => NEIN
    [HKEY_LOCAL_MACHINE\SOFTWARE\Classes\AutoIt3Script\Shell\Open\Command] ; => NEIN
    [HKEY_LOCAL_MACHINE\SOFTWARE\Classes\AutoIt3Script\Shell\Run] ; => NEIN
    [HKEY_LOCAL_MACHINE\SOFTWARE\Classes\AutoIt3Script\Shell\Run\Command] ; => NEIN
    [HKEY_LOCAL_MACHINE\SOFTWARE\Classes\AutoIt3Script\Shell\Tidy] ; => NEIN
    [HKEY_LOCAL_MACHINE\SOFTWARE\Classes\AutoIt3Script\Shell\Tidy\Command] ; => NEIN
    [HKEY_LOCAL_MACHINE\SOFTWARE\Classes\AutoIt3XScript] ; => o.k.
    [HKEY_LOCAL_MACHINE\SOFTWARE\Classes\AutoIt3XScript\DefaultIcon] ; => NEIN
    [HKEY_LOCAL_MACHINE\SOFTWARE\Classes\AutoIt3XScript\Shell] ; => NEIN
    [HKEY_LOCAL_MACHINE\SOFTWARE\Classes\AutoIt3XScript\Shell\Run] ; => NEIN
    [HKEY_LOCAL_MACHINE\SOFTWARE\Classes\AutoIt3XScript\Shell\Run\Command] ; => NEIN
    [HKEY_LOCAL_MACHINE\SOFTWARE\Classes\AutoItX3.Control] ; => o.k.
    [HKEY_LOCAL_MACHINE\SOFTWARE\Classes\AutoItX3.Control\CLSID] ; => NEIN
    [HKEY_LOCAL_MACHINE\SOFTWARE\Classes\AutoItX3.Control\CurVer] ; => NEIN
    [HKEY_LOCAL_MACHINE\SOFTWARE\Classes\AutoItX3.Control.1] ; => o.k.
    [HKEY_LOCAL_MACHINE\SOFTWARE\Classes\AutoItX3.Control.1\CLSID] ; => NEIN
    [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\AutoIt3.exe]
    [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\Aut2Exe.exe] ; => NEIN
    [HKEY_CURRENT_USER\Software\Classes\Applications\AutoIt3.exe] ; => o.k.
    [HKEY_CURRENT_USER\Software\Classes\Applications\AutoIt3.exe\shell] ; => NEIN
    [HKEY_CURRENT_USER\Software\Classes\Applications\AutoIt3.exe\shell\open] ; => NEIN
    [HKEY_CURRENT_USER\Software\Classes\Applications\AutoIt3.exe\shell\open\command] ; => NEIN
    [HKEY_CURRENT_USER\Software\AutoIt v3] ; => o.k.
    [HKEY_CURRENT_USER\Software\AutoIt v3\AU3Info] ; => NEIN
    [HKEY_CURRENT_USER\Software\AutoIt v3\Aut2Exe] ; => NEIN
    [HKEY_CURRENT_USER\Software\AutoIt v3\Exe2Aut] ; => NEIN

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

    Als Anfänger ist es ziemlich schwer das ganze zu verstehen, daher wäre ich für weitere Tips dankbar !

    Gruß

    p.s. Der Compiler führt das Programm aus zeigt aber eine Fehlermeldung bei beenden:
    ==> Array variable has incorrect number of subscripts or subscript dimension range exceeded.:

  • "Zeilen vergleichen"

    • Greenhorn
    • 21. Januar 2007 um 20:50

    @th.meger

    Zeit ist Wurscht => nur das Ergebnis zählt !!!

    Ich möchte nur die Hauptschlüssel in eine Datei schreiben, nicht die SubKeys !

    Es soll praktisch so aussehen

    [HKEY_LOCAL_MACHINE\SOFTWARE\AutoIt v3] => wird in Datei geschrieben

    [HKEY_LOCAL_MACHINE\SOFTWARE\AutoIt v3\AutoIt] => wird ignorriert, nicht geschrieben

    [HKEY_LOCAL_MACHINE\SOFTWARE\Classes\AutoIt3Script] => wird in Datei geschrieben

    [HKEY_LOCAL_MACHINE\SOFTWARE\Classes\AutoIt3Script\DefaultIcon] => wird ignorriert, nicht geschrieben

    [HKEY_LOCAL_MACHINE\SOFTWARE\Classes\AutoIt3Script\Shell] => wird ignorriert, nicht geschrieben

    [HKEY_LOCAL_MACHINE\SOFTWARE\Classes\AutoItX3.Control] => wird in Datei geschrieben

    [HKEY_LOCAL_MACHINE\SOFTWARE\Classes\AutoItX3.Control.1] => wird in Datei geschrieben

    Alle anderen Zeilen die nicht "[" und "]" sollen auch ignorriert werden !

    =============

    BugFix

    Vielen Dank an dich, ich werde versuchen dein Script einzubauen ! ;)

    Gruß

    p.s. Im Moment versuche ich es so, aber ohne nennenswerten Erfolg

    Spoiler anzeigen
    [autoit]


    Local $vResult, $vRes, $Unkeyname, $NewLine
    $OldLine = "W"
    $file = FileOpen($regsource, 0)
    if @error = 1 Then MsgBox(0,"error", "error")

    While 1
    $line = FileReadLine($file)

    $sPattern = "[][]"
    $vResult = StringRegExp($line, $sPattern, 1)
    If @extended Then
    $vRes = StringRegExp($line, $OldLine, 1)
    Select
    Case @error = 1
    $Unkeyname = StringRegExpReplace($line, $sPattern, "")
    $NewLine = StringSplit($Unkeyname, "\")
    $OldLine = $NewLine[UBound($NewLine) -1]
    FileWriteLine($UnRegScript, 'RegDelete("' & $Unkeyname & '")')
    Case @error = 0
    EndSelect
    EndIf


    WEnd

    [/autoit]
  • Textzeile auslesen und ins clipboard kopieren ?

    • Greenhorn
    • 21. Januar 2007 um 19:15

    ???


    Spoiler anzeigen
    [autoit]

    $file = FileOpen("test.txt", 0)

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

    ; Check if file opened for reading OK
    If $file = -1 Then
    MsgBox(0, "Error", "Unable to open file.")
    Exit
    EndIf

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

    ; Read in lines of text until the EOF is reached
    While 1
    $line = FileReadLine($file)
    If @error = -1 Then ExitLoop
    ClipGet($line)
    Sleep(60000)
    Wend
    MsgBox(64, "Dateiende", "Alle Zeilen eingelesen")
    FileClose($file)

    [/autoit]
  • "Zeilen vergleichen"

    • Greenhorn
    • 21. Januar 2007 um 17:41

    Salve,

    ich möchte aus einer Datei Zeilen einlesen und wenn die Zeile bestimmte Zeichen wie z.B. "[][]" enthält, dann soll der Zeileninhalt mit dem Inhalt der zuvor eingelesenen Zeile mit den Zeichen "[][]" verglichen werden. (Falls zuvor schon eine Zeile mit den Zeichen "[][]" eingelesen wurde.)

    Beispiel:

    Zeile 1: Hallo Welt ! => Zeile ignorieren, nächste Zeile einlesen

    Zeile 2: [D:\Programme\AutoIt3] => Zeile in Datei schreiben

    Zeile 3: [D:\Programme\AutoIt3\SciTE] => Zeile ignorieren, wenn Zeile 3 Zeile 2 beinhaltet

    Zeile 4: [D:\Programme\Schnulli] => Zeile wird in Datei geschrieben


    So soll der Ablauf sein, aber ich kriege es einfach nicht hin..., bei meinem Script wird eine Endlosschleife erzeugt , schon beim lesen, es wird nichts geschrieben ! :irre:

    Spoiler anzeigen
    [autoit]


    Local $vResult, $vRes, $Unkeyname
    $file = FileOpen($regsource, 0)
    if @error = 1 Then MsgBox(0,"error", "error")

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

    While 1
    $line = FileReadLine($file)

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

    $sPattern = "[][]"
    $vResult = StringRegExp($line, $sPattern, 1)
    Select
    Case @error = 0
    If @extended Then
    $vCompare1 = StringRegExpReplace(StringRegExpReplace($line, $sPattern, ""), "\\", "")
    $vCompare2 = StringRegExpReplace(StringRegExpReplace($Unkeyname, '"', ""), "\\", "")
    $vRes = StringRegExp($vCompare1, $vCompare2, 1)
    Select
    Case @error = 1
    $Unkeyname = StringRegExpReplace($line, $sPattern, '"')
    FileWriteLine($UnRegScript, "RegDelete(" & $Unkeyname & ")")
    Case @error = 0
    EndSelect
    EndIf
    Case @error = 1
    EndSelect

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

    WEnd

    [/autoit]
  • ".reg to .au3" - Problem

    • Greenhorn
    • 18. Januar 2007 um 18:26

    1ooo Dank, Eddy ! Ich werd's gleich einmal ausprobieren... :D

    ...to be continued...


    Edit:
    Jau, das war's... :klatschen:, da wäre ich von allein glaube ich nie drauf gekommen :hammer: !

    Muchas Gracias compadre !


    Gruß

    p.s. sollte ich das Script einigermaßen Erträglich zum Laufen bringen, werde ich es noch mal hier reinstellen...

  • ".reg to .au3" - Problem

    • Greenhorn
    • 17. Januar 2007 um 00:21

    O.K., ich möchte aus Registrierungsdateien (*.reg) die Registrierungsdaten auslesen und in ein Autoitscript einfügen..., als fertigen RegWrite(...) Befehl.

    Die Registry Einträge brauche ich um Proggies portable, also Stickware, zu gestalten.
    Daher möchte ich gerne die Registry Einträge in's AutoIt Script einbauen, damit ich keine .reg Dateien zum registrieren benutzen muss.

    In meinem Beispiel funzt es auch, aber bei anderen .reg Dateien wird halt nur 'ne leere .au3 Datei erzeugt.

    Nun weiß ich nicht wo der Fehler in meinem "Filter" ist, oder ob ich ihn anders strukturieren muss..., oder..., wie gesagt ich bin noch in der Lernphase mit AutoIt.

    Kann mir jemand 'nen Tip geben ob ich die richtige Richtung eingeschlagen habe, oder ob das ganze anders aufbauen sollte...


    Gruß

    Edit:
    snoozer

    Fast richtig, mein Bester..., bis zum Wiederherstellen der .reg Datei !

    Ich möchte die Registrierungseinträge nicht mit der .reg Datei vornehmen, sondern mit dem AutoIt Script !
    "Warum führt er die .reg Datei nicht einfach mit ShellExecute aus...?", werdet ihr euch vielleicht fragen !?
    Nun, ich möchte möglichst ohne Fremddateien auskommen, der Übersicht wegen, ...ist eigentlich auch erstmal nur 'n Versuch.

    Mein Problem ist jetzt, einen Filter zu programmieren der nur die benötigten Zeichen ins AutoIt Script kopiert..., oder eben die überflüssigen Zeichen aus dem String filtert.
    :rolleyes:


    Edit 2:
    Noch mal 'ne kleine Frage nebenbei..., wie erstelle ich einen Post hier im Board bei dem der Code versteckt ist und man ihn mit diesem Button öffnen kann ?


    @ th.meger Vielen Dank !

    Zitat

    Hi,

    in dem du

    [*Spoiler][*/Spoiler] ohne die * schreibst.

    So long,

    Mega

  • ".reg to .au3" - Problem

    • Greenhorn
    • 16. Januar 2007 um 23:42

    Herauskommen soll ein .au3-Script welches die .reg-Dateieinträge übernimmt, also in AutoIt-Code (RegWrite("...";) umschreibt.

    Beispiel: s. Anhang !


    Gruß

    Dateien

    test.reg.txt 643 Byte – 370 Downloads
  • ".reg to .au3" - Problem

    • Greenhorn
    • 16. Januar 2007 um 20:09

    Salute,

    ich möchte gern .reg Dateien auslesen und in .au3, d.h. in ein AutoIt Script konvertieren.:rofl:

    Das klappt mit meiner "test.reg" Datei auch schon ganz gut, aber wenn ich nun eine andere .reg Datei konvertieren möchte, dann wird nur ein leeres "RegScript.au3" erstellt...:irre:

    Was mache ich falsch...?

    Bin noch Anfänger..., aber hier mal das Script:

    Spoiler anzeigen
    [autoit]

    ; GUI Reg2Au3 Converter
    Global $regsource
    Global $regdest

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

    #include <GuiConstants.au3>

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

    GuiCreate("Reg2Au3 Converter", 392, 316,-1, -1 , BitOR($WS_OVERLAPPEDWINDOW, $WS_CLIPSIBLINGS))

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

    $Group_1 = GuiCtrlCreateGroup("", 10, 20, 370, 150)
    $Label_1 = GuiCtrlCreateLabel("Quelldatei auswählen", 30, 50, 140, 20)
    $Input_1 = GuiCtrlCreateInput("", 30, 70, 200, 20)
    $Button_1 = GuiCtrlCreateButton("&Durchsuchen...", 260, 70, 100, 20)
    $Label_2 = GuiCtrlCreateLabel("Zieldatei auswählen", 30, 110, 120, 20)
    $Input_2 = GuiCtrlCreateInput("", 30, 130, 200, 20)
    $Button_2 = GuiCtrlCreateButton("&Durchsuchen...", 260, 130, 100, 20)

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

    $Button_OK = GuiCtrlCreateButton("&OK", 280, 280, 80, 20)

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

    GuiSetState()
    While 1
    $msg = GuiGetMsg()
    Select
    Case $msg = 0
    ContinueLoop
    Case $msg = $Button_1
    $regsource = FileOpenDialog("Registrierungsdatei wählen", @MyDocumentsDir, "(*.reg)", 1+4)
    ControlSetText("Reg2Au3 Converter", "", $Input_1, $regsource)
    Case $msg = $Button_2
    $regdest = FileSaveDialog( "Zielpfad wählen", @MyDocumentsDir, "Scripts (*.aut;*.au3)", 2, "RegScript.au3")
    ControlSetText("Reg2Au3 Converter", "", $Input_2, $regdest)
    ; option 2 = dialog remains until valid path/file selected
    If @error Then MsgBox(4096,"","Save cancelled.")
    Case $msg = $Button_OK
    Register()
    Case $msg = $GUI_EVENT_CLOSE
    ExitLoop
    Case Else
    ;;;
    EndSelect
    WEnd

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

    Exit

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

    ; Funktion .reg zu .au3
    Func Register()

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

    Local $file = FileOpen($regsource, 0)
    Local $RegScript = FileOpen($regdest, 2) ; which is similar to 2 + 8 (erase + create dir)
    Local $line, $keyname, $value, $value1, $value2

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

    ; Check if file opened for reading OK
    If $file = -1 Then
    MsgBox(0, "Error", "Unable to open .reg file.")
    Exit
    ElseIf $RegScript = -1 Then
    MsgBox(0, "Error", "Unable to open RegScript.au3.")
    Exit
    Else
    If $file = -1 And $RegScript = -1 Then
    MsgBox(0, "Error", "Unable to open any file.")
    Exit
    EndIf
    EndIf

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

    While 1
    $line = FileReadLine($file)
    If @error = -1 Then ExitLoop
    Local $sPattern, $vResult, $clip, $clip1

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

    $sPattern = "[][]"
    $vResult = StringRegExp($line, $sPattern, 1)
    If @extended Then
    $keyname = StringRegExpReplace($line, $sPattern, '"')
    FileWriteLine($RegScript, "RegWrite(" & $keyname & ")")
    EndIf
    ; Success. Pattern matched. $vResult matches @Extended
    $sPattern = "(@=)"
    $vResult = StringRegExp($line, $sPattern, 1)
    If @extended Then
    $clip = StringRegExpReplace($line, $sPattern, "")
    $value = StringRegExpReplace($clip, "\\\\", "\\", 0)
    FileWriteLine($RegScript, "RegWrite(" & $keyname & ', "", "REG_SZ", ' & $value & ")")
    EndIf
    $sPattern = '("=")'
    $vResult = StringRegExp($line, $sPattern, 1)
    If @extended Then
    $clip1 = StringRegExpReplace($line, "=", ', "REG_SZ", ')
    $value1 = StringRegExpReplace($clip1, "\\\\", "\\", 0)
    FileWriteLine($RegScript, "RegWrite(" & $keyname & "," & $value1 & ")")
    EndIf
    $sPattern = "(=dword:)"
    $vResult = StringRegExp($line, $sPattern, 1)
    If @extended Then
    $value2 = StringRegExpReplace($line, "=dword:", ', "REG_DWORD", "')
    FileWriteLine($RegScript, "RegWrite(" & $keyname & $value2 & '")')
    EndIf
    WEnd

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

    FileClose($file)
    FileClose($RegScript)

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

    EndFunc

    [/autoit]
  • "\\" mit StringRegExpReplace

    • Greenhorn
    • 16. Januar 2007 um 16:20

    Vielen Dank Leutz, das wird mir weiterhelfen !!!

    Gruß :party3:

  • "\\" mit StringRegExpReplace

    • Greenhorn
    • 16. Januar 2007 um 15:50

    Hi,

    ich möchte gerne aus einem String die Zeichenfolge \\ (Doppelbackslash) durch einen einfachen Backslash ersetzen... :irre:

    Kann mir jemand mit Rat weiterhelfen, bitte ?


    Gruß

  • Andere Dateien "mitkompilieren"...

    • Greenhorn
    • 29. Dezember 2006 um 17:56

    Also gut, genaueres..., ich möchte ein Programm "portable" machen..., noch genauer -> ich möchte AutoIt "portable" machen.

    Jetzt hätte ich natürlich gern das ganze als eine .exe gepackt. Dabei soll aber die Ordnerstruktur erhalten bleiben.

    Mit FileInstall muss ich es ja auch wieder entpacken, damit wäre der portable-Effekt ja weg, da ich es dann ja letztlich doch irgendwohin entpacken/installieren muss.

    Versteht ihr was ich meine..., ich möchte das ganze in eine Art Setup.exe packen, die aber nichts irgendwohin installiert, sondern lokal vom USB-Stick läuft...

    Gruß

  • Andere Dateien "mitkompilieren"...

    • Greenhorn
    • 29. Dezember 2006 um 02:16

    Ja ich bin's nochmal..., :klatschen:

    mal angenommen ich hätte Dateien die ich mit meinem Script steuern möchte, also ein paar .exe's, .dll's, .ini's, usw. ...

    Ist es möglich diese Dateien in mein Projekt mit einzubinden, dass ich am Schluß eine Kompilierte .exe habe ? :irre:

    Ich weiß, ich weiß <"Der kann wieder fragen stellen...[Blockierte Grafik: http://xs310.xs.to/xs310/06525/kotz.gif] >

    Wisst ihr wie und/oder womit ich so etwas realisieren könnte ?


    Greetz

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™