Der Pfad wurde nicht richtig erkannt, nen @Scriptdir davor und es hat geklappt, danke (Y)
Beiträge von Introser
-
-
Hallo, ich will per Makrotaste mein Script starten, also ich weise der Taste die verknüpfung zu xyz.au3 zu, funktioniert bei mir alles wunderbar, habe W7, 64bit und eine Logitech Tastatur.
Auf nem anderen Rechner funktioniert dies aber eben nicht, dort habe ich das Problem, dass ich, wenn ich die Verknüpfung einstelle und auf die Makrotaste drücke, dass sich der ScriptEditor öffnet. Also SCite
Der Rechner nutzt W8,64bit und ne Razor tastatur. Ich habe dann das Standardprogramm geändert auf die AutoIt3_x64.exe geändert und siehe da, die Tastatur führt das Programm aus, anstatt den Editor zu öffnen.
Nun habe ich das Script erweitert mit #include <File.au3> und diese Befehle werden nicht ausgeführt.Siehe z.b. hier:
[autoit]#include <File.au3>
[/autoit][autoit][/autoit][autoit]
dim $a
_FileReadToArray("settings.txt",$a)msgbox(1,"",""&$a[1])
[/autoit]die settings.txt ist vorhanden, aber wenn ich nun per Makrotaste das Script ausführe sagt er:
$a[1]^Error
Error: Subscript used on non-accessible variable.Führe ich das Script per doppelklick aus, funktioniert es ganz normal. Ändere ich das Standartprogramm zurück, dann öffnet sich wieder der Scite Editor.
Hat einer Idee woran es liegen kann? Ich schätze auf die Razortastatur bzw deren Treiber, dass die das Script iwie komisch ausführt und deswegen alles nicht funktioniert oder kann es doch wo anders dran liegen?
Gruß Introser
-
Wieso soll das nicht sinnvoll sein?!
Gerade im Gegenteil, es ist NÖTIG! Damit reduziert sich der Aufwand für das Betriebssystem und vor allem für den Programmierer enorm.
Egal was du machst, die Datei wird sowieso gelesen und nach einer Änderung idR komplett neu geschrieben.
Dann kannst du das auch BEWUSST selbst machen und verstehst, was abläuft....
Für einen Programmieranfänger ist es sowieso sinnvoll, einfache Funktionen zu verwenden. Mit dem Hintergrund, dass "komplizierte" Funktionen und UDF´s sowieso auf die einfachen Funktionen aufbauen!Naja, ich hatte gedacht, dass ich die Datei komplett lösche und dann eine neue txt erstelle und dort die neuen configs rein schreibe und ich glaube das ist aufwendiger, da ich ja eine Datei lösche und erstelle und nicht nur neu schreibe.
Und viel mehr bringen tut es mir doch auch nicht oder?
Beim löschen und neu erstellen würde ich einfach die Datei in ein Array einlesen, die zeile suchen und ändern und dann das Array in die neue Datei schreiben, vom Versteheneffekt etc ist es für mich das gleiche.
Aber hat sich ja jetzt erledigt, vielen dank für eure umfangreiche Hilfe -
Ouh, das ist natürlich um einiges umfangreicher als FileWriteToLine.
Da ich ja nun erst nach einigem suchen die Funktion FileWriteToLine gefunden habe wollte ich fragen, ob es iwo ne Dokumentation gibt, wo immer alle Funktionen der verschiedenen au3 Dateien sthenen, in diesem Fall alle funktionen der <File.au3>, normalerweise benutze ich immer z.b. sowas https://www.autoitscript.com/autoit3/docs/f…leWriteLine.htm und da stehen unten ja die restlichen Funktionen, aber z.b. FileWriteToLine nicht, obwohl das in der <File.au3> ja vorhanden ist. Gibt es da ne umfangreichere Dok?
-
Habe ich schon gefunden, aber auch hier, FileWriteLine hängt nur hinten an und ersetzt nicht
edit: Habe nun den Passendenbefehl gefunden, der eine Zeile ersetzt:
_FileWriteToLine , damit ersetzt man die ganze zeile.
Dir vielen Dank für deine hilfe
-
Hey, ich hab 2 kleine Fragen, die erste hat was mit Txt Dateien zu tun.
Ich hab in einem Ordner mehrere Scripte die alle auf eine Settings.txt zugreifen sollen, diese Datei soll aber auch von den Scripten geändert werden können, heißt ich führe ein Script aus und das ändert was in der textdatei.
Den passenden Befehl fürs ändern finde ich aber nicht, bisher habe ich nur welche gefunden, die Datensätze hinten dran hängen, aber die alten stehen lassen. dass wil ich nicht.
Also bräuchte ich ein Befehl, der eine Zeile ersetzt oder eine Zeile löschen kann, denn jedes mal die txt zu löschen und neu zu erstellen sehe ich irgendwie nicht als sehr sinnvoll ein.edit: 2 Frage selbst beantwortet
Vielen Dank schonmal für die Antworten
Gruß Introser
-
Klappt leider nicht, kriege dann die Fehlermeldung, die ich auch kriege, wenn ich einfach per Doppelklick starte, also mit x64.
Außerdem ist N nicht default? Also standard? finde ich zumindest bei der Description von den Wrapper Klassen. Aber auch mit Y funktioniert es nichtEdit: Was ich gerade probiert habe:
die Standard .exe von autoit3_x64.exe auf autoit3.exe umgelgt und siehe da, es klappt. Das problem nun ist, dass das typische Symbol von Autoit verschwindet sowie die weiteren Optionen beim rechtsklick darauf, das ist natürlich nicht so schön... -
Hallo, ich baue mir zurzeit ein Script mit ImageSearch und habe nun nach längeren Tüffteln es ans laufen gebracht, problem ist, ich muss es immer mit Rechtsklick-> Run with x86 starten, da x64 nicht funktioniert. Ich besitze ein 64bit System.
Da ich zurzeit viel am testen bin muss ich oft die Datei ausführen und es nervt jedesmal mit rechtsklick zu starten anstatt ein Doppelklick.
Nun meine Frage, kann ich iwo einstellen, dass automatisch mit x86 gestartet wird?
Zu ner x86 .exe konvertieren ist keine Lösung, da ich wie gesagt viel teste und so immer Code ändere und nicht jedesmal neu konvertieren willEine x86 .exe habe ich in dem Autoit Ordner auch nicht gefunden, sodass man die au3 Datei damit hätte starten können. Eine weitere Idee habe ich nicht, ihr evtl?
Gruß Introser
-
Heyho, ich habe ein Script geschrieben, welches von den Makrotasten auf meiner tastatur gestartet wird, da ingame die Hotkeys irgendwie nicht wollen.
Nun will ich ein 2. Script schreiben, was auch wieder über die Makrotasten gestartet werden soll, welches das erste Programm beendet.
Hat wer ne Idee, wie ich das machen kann??MfG
Introser
-
Achso, hab mir die funktion auch angeguckt und eig gedacht, da da schon die abfrage drin ist, aber danke!
werde es nachher mal einbauen und dann sollte es funktionieren, danke! -
Okay danke, liegt es jetzt daran, das $time nicht richtig gesplitted wird oder liegt es daran das der return von _TimeSync nicht das richtige Format hat?
Nur so interresehalber. -
Heyho, ich hab ein Script, welches auf einen Zeitserver zugreift und dort die Zeitausliest, dieses habe ich hier gefunden:
[ gelöst ] OnlineCheck und GetOnlineTime ...
Dort der Beitrag von Oscar, vorletzter.Dieses benutze ich nun, da ich aber nicht das Datum, sondern nur die Zeit brauche, splitte ich das den return:
[autoit]func zeit()
[/autoit]
$time = _TimeSync()
$split1 = StringSplit($time," ")
return ($split1[2])
EndFuncder return von _TimeSync sieht so aus: 1900/01/01 00:00:00
Dadurch habe ich nur noch die Zeit die ich brauche!Nun habe ich aber das Problem, dass mit manchmal diese fehlermeldung kommt:
return($split1[2])
return(^ERRORError: Array variable has incorrect number of subscripts or subscript dimension range exceeded.
Die fehlermeldung kommt immer nach unterschiedlichen zeiten!
mal direkt nach 2 sekunden, mal erst nach 10s oder auch mal erst nach 5 minuten...ich habe mich schon gefragt was es sein könnte und komme eig nur auf den Schluss das $Split1[2] leer ist bzw nicht existiert, da das Prog iwie nicht richtig splittet oder das Datum in nem falschem Format ankommt und so nicht gesplittet wird...
Könnte es das Problem sein? oder ein anderes?
und wenn es dies sein sollte, wie kann man das ändern?
kann evtl wer das Programm von Oscar so verändern, dass nur noch die Zeit als return ausgegeben wird?
bin noch ziemlich neu in Autoit und hab daher kp davon