Hallo erstmal an alle ![]()
Also, ich habe derzeit einige Probleme, und ich peil im Moment einfach nicht warum das nicht klappt. ![]()
Ich fange mal mit dem ersten an:
Ich muss/kann/will in der Schule ein Referat über AutoIt halten. Meine Lehrerin hat noch nie davon gehört und wollte deswegen gerne etwas sehen. Tja, und ich soll ein einfaches Beispielskript schreiben. Ich dachte mir halt, dass ich eine sich immer wieder wiederholende Textausgabe schreiben könnte. Das ganze Skript habe ich mal hier, ich weis, die Namen der Variablen sind etwas ungünstig gewählt, aber sie tun ihren Zweck.^^:
Spoiler anzeigen
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
#Region ### START Koda GUI section ### Form=C:\Users\sie\Desktop\Programmierzeug\Skripte\Referat - Textausgabe.kxf
$Form1_1 = GUICreate("Textausgabe by Kevin Soldner", 420, 235, 218, 152)
$Group1 = GUICtrlCreateGroup("Texteinstellungen", 8, 16, 401, 185)
$Text1 = GUICtrlCreateLabel("1. Text", 24, 40, 60, 17)
$Text2 = GUICtrlCreateLabel("2. Text", 24, 72, 60, 17)
$Text3 = GUICtrlCreateLabel("3. Text", 24, 104, 60, 17)
$Text4 = GUICtrlCreateLabel("4. Text", 24, 136, 60, 17)
$Text5 = GUICtrlCreateLabel("5. Text", 24, 168, 60, 17)
$Ltext1 = GUICtrlCreateInput("", 96, 40, 97, 21)
$Ltext2 = GUICtrlCreateInput("", 96, 72, 97, 21)
$Ltext3 = GUICtrlCreateInput("", 96, 104, 97, 21)
$Ltext4 = GUICtrlCreateInput("", 96, 136, 97, 21)
$Ltext5 = GUICtrlCreateInput("", 96, 168, 97, 21)
$Zeitlabel1 = GUICtrlCreateLabel("1. Zeit", 200, 40, 59, 17)
$Zeitlabel2 = GUICtrlCreateLabel("2. Zeit", 200, 72, 59, 17)
$Zeitlabel3 = GUICtrlCreateLabel("3. Zeit", 200, 104, 59, 17)
$Zeitlabel4 = GUICtrlCreateLabel("5. Zeit", 200, 136, 59, 17)
$Zeitlabel5 = GUICtrlCreateLabel("5. Zeit", 200, 168, 59, 17)
$Zeit1 = GUICtrlCreateInput("", 272, 40, 113, 21)
$Zeit2 = GUICtrlCreateInput("", 272, 72, 113, 21)
$Zeit3 = GUICtrlCreateInput("", 272, 104, 113, 21)
$Zeit4 = GUICtrlCreateInput("", 272, 136, 113, 21)
$Zeit5 = GUICtrlCreateInput("", 272, 168, 113, 21)
GUICtrlCreateGroup("", -99, -99, 1, 1)
$Datei = GUICtrlCreateMenu("Datei")
$Config = GUICtrlCreateMenu("Speichern/Laden", $Datei)
$save = GUICtrlCreateMenuItem("Speichern", $Config)
$load = GUICtrlCreateMenuItem("Laden", $Config)
$End = GUICtrlCreateMenuItem("Beenden", $Datei)
$Extras = GUICtrlCreateMenu("Extras")
$Ueber = GUICtrlCreateMenuItem("Über", $Extras)
Dim $Form1_1_AccelTable[1][2] = [["!+{HOME}", $save]]
GUISetAccelerators($Form1_1_AccelTable)
#EndRegion ### END Koda GUI section ###
HotKeySet ( "{F3}", "Start")
HotKeySet ( "{ESC}", "Stopp")
;Variablen global setzen
Global $Ltext1
Global $Ltext2
Global $Ltext3
Global $Ltext4
Global $Ltext5
Global $Zeit1
Global $Zeit2
Global $Zeit3
Global $Zeit4
Global $Zeit5
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE ;GUI schließen
Exit
Case $Save ;Texteinstellungen speichern
IniWrite ( "Settings.ini", "Texteinstellungen", "Ltext1", $Ltext1)
IniWrite ( "Settings.ini", "Texteinstellungen", "Ltext2", $Ltext2)
IniWrite ( "Settings.ini", "Texteinstellungen", "Ltext3", $Ltext3)
IniWrite ( "Settings.ini", "Texteinstellungen", "Ltext4", $Ltext4)
IniWrite ( "Settings.ini", "Texteinstellungen", "Ltext5", $Ltext5)
IniWrite ( "Settings.ini", "Texteinstellungen", "Zeit1", $Zeit1)
IniWrite ( "Settings.ini", "Texteinstellungen", "Zeit2", $Zeit2)
IniWrite ( "Settings.ini", "Texteinstellungen", "Zeit3", $Zeit3)
IniWrite ( "Settings.ini", "Texteinstellungen", "Zeit4", $Zeit4)
IniWrite ( "Settings.ini", "Texteinstellungen", "Zeit5", $Zeit5)
Case $Load ;Texteinstellungen laden
$Ltext1 = IniRead ( "Settings.ini", "Texteinstellungen", "Ltext1", "")
$Ltext2 = IniRead ( "Settings.ini", "Texteinstellungen", "Ltext2", "")
$Ltext3 = IniRead ( "Settings.ini", "Texteinstellungen", "Ltext3", "")
$Ltext4 = IniRead ( "Settings.ini", "Texteinstellungen", "Ltext4", "")
$Ltext5 = IniRead ( "Settings.ini", "Texteinstellungen", "Ltext5", "")
$Zeit1 = IniRead ( "Settings.ini", "Texteinstellungen", "Zeit1", "")
$Zeit2 = IniRead ( "Settings.ini", "Texteinstellungen", "Zeit2", "")
$Zeit3 = IniRead ( "Settings.ini", "Texteinstellungen", "Zeit3", "")
$Zeit4 = IniRead ( "Settings.ini", "Texteinstellungen", "Zeit4", "")
$Zeit5 = IniRead ( "Settings.ini", "Texteinstellungen", "Zeit5", "")
Case $End ;Programm beenden
Exit
Case $Ueber ;Aboutfenster öffnen
#include <ButtonConstants.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
#Region ### START Koda GUI section ### Form=
$About = GUICreate("About", 380, 206, 302, 218)
GUISetIcon("D:\006.ico")
$GroupBox1 = GUICtrlCreateGroup("", 8, 8, 369, 153)
$Image1 = GUICtrlCreatePic("About.jpg", 16, 24, 201, 73, BitOR($SS_NOTIFY,$WS_GROUP,$WS_CLIPSIBLINGS))
$ALabel1 = GUICtrlCreateLabel("KevKevs Beispielskript", 224, 24, 148, 17, $WS_GROUP)
$ALabel2 = GUICtrlCreateLabel("Alle Änderungen vorbehalten", 224, 48, 141, 17, $WS_GROUP)
$ALabel4 = GUICtrlCreateLabel("Dieses Produkt ist weltweit urheberrechtlich geschützt ... nicht. :D", 16, 136, 313, 17, $WS_GROUP)
$ALabel3 = GUICtrlCreateLabel("Copyright Kevin Soldner", 16, 112, 216, 17, $WS_GROUP)
GUICtrlCreateGroup("", -99, -99, 1, 1)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
GUIDelete ()
EndSwitch
WEnd
EndSwitch
WEnd
Func Stopp ()
Exit
EndFunc
Func Start ()
While True
Send ($Ltext1)
Send ("{Enter}")
Sleep ($Zeit1)
Send ($Ltext2)
Send ("{Enter}")
Sleep ($Zeit2)
Send ($Ltext3)
Send ("{Enter}")
Sleep ($Zeit3)
Send ($Ltext4)
Send ("{Enter}")
Sleep ($Zeit4)
Send ($Ltext5)
Send ("{Enter}")
Sleep ($Zeit5)
WEnd
EndFunc
Ich will also einfach eine Funktion, in der ich in einem Textprogramm (z.B. Word) eine sich immer wieder wiederholende Folge von Zeichen einträgt. Das klappt auch alles wunderbar, bis auf die Ausgabe und das Ini.Read. Bei der Ausgabe kann ich eingeben was ich will, er ignoriert es einfach und trägt mir stur die Zahlen 3, 5, 7, 9, 11 ein, und die Zeitausgabe beachtet er auch nicht. Wenn ich dann die Einstellungen speichere (auch wenn nichts drinsteht), steht in der .ini 3, 5, 7, 9, 11 drin, das was ich reinschreibe wird beflissen ignoriert. Seltsam ist nur, dass wenn ich das ganze ohne Koda, sondern mit InputBox und so mache, das er dann alles so macht wie ich es sage, aber ich will eben eine GUI haben ... das Skript muss meine Lehrerin schon bisschen beeindrucken, da kann ich nich mit ein paar MsgBoxen und InputBoxen kommen. ![]()
Das IniRead macht er einfach nicht, da hat er offenbar keine Lust dazu.
Das dritte Problem wäre beim Do - Until befehl. Das Skript habe ich ohne Koda gemacht, dehalbt etwas andere Namen:
[autoit]HotKeySet ( "{F3}", "Start")
HotKeySet ( "{ESC}", "Stopp")
Global $Zext = InputBox ( "KevKevs Textausgabe", "Hier Text eingeben")
Global $Zeit = InputBox ( "KevKevs Textausgabe", "Hier den Abstand zwischen den Texten Millisekunden!)")
Do
If NOT ($Zeit >1 OR < 1) Then
MSgBox (64, "Error", "Nur Zahlen im Abstandsfeld eingeben!")
$Zeit = InputBox ( "KevKevs Textausgabe", "Hier den Abstand zwischen den Texten. (In Millisekunden!)")
Else
Sleep (1)
EndIf
Until $Zeit >1 OR < 1
Das soll ne Errormeldung darstellen. Er soll überprüfen, ob in der Variable $Zeit nur Zahlen enthalten sind. Wenn nicht, soll der Benutzer es noch einmal eingeben, wenn schon soll er nix machen. Ich wusste aber nich wie man überprüft, ob nur Zahlen enthalten sind, deswegen auf diese eher unschickliche Methode die nicht funktioniert. Außerdem bringt er mir die Message Box nur einmal, danach nicht mehr, heist beim zweiten mal kann man auch buchstaben eingeben, die werden dann eben als 0 gewertet.
Hoffe ihr könnt mir helfen, der 1er würde meinem Notenspiegel nicht schaden. ![]()
Und eine Frage habe ich noch bezüglich einer Pause - wie macht man das? ![]()
Func Stopp ()
Exit
EndFunc
Bis jetzt kann ich es nur so machen, aber dann beendet er das Programm ja komplett und ich muss es neustarten. Kann man auch einfach das Skript unterbrechen und später weiter ausführen?
Ich weis, viele viele Fragen, aber es eilt nicht, ich muss es erst am Mittwoch halten. ![]()
Gruß Kevin alias DoF (nicht Doof :D)