Thanx a lot, boys !
Gruß
Thanx a lot, boys !
Gruß
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ß
Vielen Dank für die Hilfe, AspirinJunkie, ich werde es mal mit den Windowsvariablen probieren.
ZitatDeswegen 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...
ZitatAuß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ß
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ß
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
Sorry, das Script ist schon ziemlich zerhackt, durch die ganzen Versuche...
_ArrayDelete($arFile, $i) ; -> warum?
[/autoit]
Ich wollte versuchen den ganzen Array zu durch suchen und die unnötigen Einträge mit
_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...
#include <File.au3>
#include <String.au3>
#include <Array.au3>
$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)
Dim $arFile, $str, $v, $tmp
Dim $pfadRead = FileOpen("D:\Eigene Dateien\Register-1.reg", 0)
Dim $pfadWrite = FileOpen("Temp.txt", 2)
Dim $oldline = "w"
$result = FileOpen(@MyDocumentsDir & "\RegScript.txt", 2)
[/autoit] [autoit][/autoit] [autoit]While 1
$line = FileReadLine($pfadRead)
If @error = -1 Then ExitLoop
Local $sPattern, $vResult
$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)
FileClose("Temp1.txt")
FileClose($pfadRead)
Exit
1ooo Dank nochmal an dich, BugFix !
Deine Lehrstunden in Sachen Arrays waren nicht Fruchtlos !!! :kiss:
Gruß
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() !
Global $regsource
Global $regdest
Global $file
Global $RegScript
Global $UnRegScript
Global $msg, $line, $keyname, $value, $value1, $value2, $filename
#include <File.au3>
#include <String.au3>
#include <Array.au3>
#include <GuiConstants.au3>
; GUI Reg2Au3 Converter
GUICreate("Reg2Au3 Converter", 392, 316, -1, -1, BitOR($WS_OVERLAPPEDWINDOW, $WS_CLIPSIBLINGS))
$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)
$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)
$Button_Start = GUICtrlCreateButton("&Start", 280, 240, 80, 20)
$Button_Beenden = GUICtrlCreateButton("&Beenden", 280, 280, 80, 20)
GUISetState()
GUICtrlSetState($SameFile, $GUI_DISABLE)
GUICtrlSetState($OwnFile, $GUI_DISABLE)
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
Exit
[/autoit] [autoit][/autoit] [autoit]; Funktion .reg zu .au3
Func Register()
$file = FileOpen($regsource, 0)
$RegScript = FileOpen($regdest, 2)
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
$RegASCI = StringReplace(FileGetShortName($regsource), ".reg", ".old")
RunWait(@ComSpec & " /c type " & FileGetShortName($regsource) & ">" & $RegASCI, @MyDocumentsDir)
FileCopy($RegASCI, $regsource, 1)
FileDelete($RegASCI)
While 1
$line = FileReadLine($file)
If @error = -1 Then ExitLoop
Local $sPattern, $vResult, $clip, $clip1
$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,
$dec = Dec($hex)
$value2 = StringRegExpReplace($line, "=dword:" & $hex, ', "REG_DWORD", "' & $dec)
FileWriteLine($RegScript, "RegWrite(" & $keyname & "," & $value2 & '")')
EndIf
WEnd
EndFunc ;==>Register
[/autoit] [autoit][/autoit] [autoit]; Funktion Unregister
[/autoit] [autoit][/autoit] [autoit]Func Unregister()
; aktuelle Prod oder Beta benutzen
Dim $arFile, $write, $tmp, $last
If _FileReadToArray($regsource, $arFile) = 0 Then
MsgBox(0, 'Achtung', "Datei konnte nicht eingelesen werden!")
Exit
EndIf
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
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
Gruß
@Bug_Fix
==> Subscript used with non-Array variable.:
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... :
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
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
[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
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.:
@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 !
=============
Vielen Dank an dich, ich werde versuchen dein Script einzubauen !
Gruß
p.s. Im Moment versuche ich es so, aber ohne nennenswerten Erfolg
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
???
$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
; 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)
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:
Local $vResult, $vRes, $Unkeyname
$file = FileOpen($regsource, 0)
if @error = 1 Then MsgBox(0,"error", "error")
While 1
$line = FileReadLine($file)
$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
WEnd
[/autoit]1ooo Dank, Eddy ! Ich werd's gleich einmal ausprobieren...
...to be continued...
Edit:
Jau, das war's... , 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...
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.
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 !
ZitatHi,
in dem du
[*Spoiler][*/Spoiler] ohne die * schreibst.
So long,
Mega
Herauskommen soll ein .au3-Script welches die .reg-Dateieinträge übernimmt, also in AutoIt-Code (RegWrite("...";) umschreibt.
Beispiel: s. Anhang !
Gruß
Salute,
ich möchte gern .reg Dateien auslesen und in .au3, d.h. in ein AutoIt Script konvertieren.
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:
; GUI Reg2Au3 Converter
Global $regsource
Global $regdest
#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)
$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
Exit
[/autoit] [autoit][/autoit] [autoit]; Funktion .reg zu .au3
Func Register()
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
; 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
While 1
$line = FileReadLine($file)
If @error = -1 Then ExitLoop
Local $sPattern, $vResult, $clip, $clip1
$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
FileClose($file)
FileClose($RegScript)
EndFunc
[/autoit]Vielen Dank Leutz, das wird mir weiterhelfen !!!
Gruß :party3:
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ß
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ß
Ja ich bin's nochmal...,
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