Hi Alina,
erst mal vielen Dank. Es ist schon okay das Urheberrecht zu wahren.
Vielen Dank nochmals und einen schönen Tag.
Michael
Hi Alina,
erst mal vielen Dank. Es ist schon okay das Urheberrecht zu wahren.
Vielen Dank nochmals und einen schönen Tag.
Michael
Hallo Alina,
Hört sich interessant an. Hast du den geheimnissvollen Gönner schon gefunden. Hast Du diese Datei noch und könntest Du Sie mir zur Verfügung stellen. Suche gerade alles an Informationen über Autoit zusammen was sich finden läßt.
Vielen Dank.
Michael
Hallo Andy,
genau so wie Du es oben beschrieben hast. Habe es soweit auch lauffähig bekommen. Es gibt zwar sicher noch einiges an Verbeserungspotential und mein Code gleicht auch eher einem Sphaghetti als einem Programm, aber dafür lerne ich ja auch noch. Im nächsten Schritt möchte ich das Ganze noch ein wenig hübsch machen und vielleicht eine GUI implementieren.
Dank Blubbstar habe ich das Ganze zum Laufen bekommen. Vielen Dank nochmals. Die anderen Hinweise waren auch recht hilfreich für mich.
Ich sehe ein das ich noch viel lernen muss. Auch finde ich es recht mühseelig den Code zu debuggen.
P.S Wie kann ich mich hier im Forum nützlich machen. Würde gerne irgendwie dazu beitragen.
Meine ursprüngliche Frage ist vollumfassend beantwortet. Wie setzte ich das Ganze nun auf gelöst.
Gruß Michael
Hallo zusammen,
erst einmal vielen Dank für die vielen Antworten und anschaulichen Beispiele. Bisher habe ich es noch nicht geschafft das Ganze umzusetzen.
Auf dem ersten Blick sieht aber der Beitrag von Blubbstar wie für mich gemacht aus.
Auch die Geschichte mit der ausgelagerten Funktion finde ich toll auch wenn ich mich momentan noch nicht so sicher im Umgang mit Funktionen bin.
Auch an Alina recht herzlichen Dank. In der Tat tue ich mich recht schwer in der Bestimmung der korrekten Column im Array. Hoffe ich werde das bald begreifen und dann sicher einsetzten.
Wie gesagt bin ich noch ganz am Anfang mitt Autoit. Habe in der Vergangenheit viel mit Batch, VBS und VBA gemacht, aber Autoit und dessen Einsatzmöglichkeiten haben mich schier umgehauen.
Wenn man erst einmal das Potential von Autoit erfasst hat, scheint es kaum noch Beschränkungen der Möglichkeiten zu geben.
Andy, danke auch für Deine Antwort. Die Dateien, die ich für XBMC benötige sind eigentlich recht einfach gestrickt.
Wichtig ist dazu das der Serienordner einen aussagekräftigen Namen hat. z.B Monk.
Dann sollten die Unterordner z.B Staffel 01 bzw Season 01 heißen.
Die Dateien in den Unterordner heißen dann meist: S01E01.mp4.
Um ein wenig mehr Übersicht zu haben, habe ich an mich aber den Anspruch diese z.B Monk-S01-E01-Mr Monk und das Attentat Teil 1.mp4 zu nennen um diese auch mal gezielt z.B an meiner WD Box abzuspielen, die nicht über Scrapper verfügt, die sich anhand der Dateinamen die Informationen aus dem Internet ziehen.
Auch Danke für den Tip mit der SQL-Lite Datenbank Andy. War mir gar nicht bewußt das es so einfach sein kann eine Datenbank unter Autoit zu erstellen und mein Respekt gegenüber Autoit ist gerade ein wenig mehr
gewachsen.
Also Euch allen erst einmal vielen Dank. Werde nachher mal schauen ob ich das umgesetzt bekomme und Euch auf dem Laufendem halten.
Hallo,
kann mich gar nicht mehr daran erinnern wann ich mich hier angemeldet habe, aber seit einiger Zeit bin ich wieder mit Autoit unterwegs und schlage mich so durch.
Nun habe ich begonnen mich mit Array zu beschäftigen und mir auch die Hilfe und diverse Tutorials dazu angeschaut und ich denke mir auch recht gut verstanden.
Folgendes Projekt habe ich mir derzeit vorgenommen:
Ich habe sehr viele Serien, die sich im Lauf der Jahre angesammelt haben. Diese möchte ich nun vernünftig benamen und in Staffel Ordner sortieren, so dass ich diese vernünftigt mit XBMC nutzen kann.
Fertige Lösungen kann ich dazu nicht finden, also dachte ich mir ich versuche es mal mit AutoIT.
Als Grundlage habe ich z.B einen Ordner mit allen Folgen einer Serie.
Des Weiteren ein Textfile mit dem folgendem Aufbau:
Monk/1/1/Mr Monk und das Attentat Teil 1
Monk/1/2/Ist in Episode 1 enthalten
Monk/1/3/Mr Monk und die Hellseherin
Monk/1/4/Mr Monk gegen die Qualle
Monk/1/5/Mr Monk auf dem Rummelplatz
Monk/1/6/Mr Monk in der Anstalt
Monk/1/7/Mr Monk und ein Milliardaer auf Abwegen
Monk/1/8/Mr Monk und Monica
Monk/1/9/Mr Monk und der Marathon Mann
Monk/1/10/Mr Monk macht Urlaub
Monk/1/11/Mr Monk und das Erdbeben
Monk/1/12/Mr Monk und Willie Nelson
Monk/1/13/Mr Monk im Flugzeug
Monk/2/1/Mr Monk geht wieder zur Schule
Monk/2/2/Mr Monk faehrt nach Mexiko
usw.
Dieses Textfile lese ich in ein Array ein als Delimiter verwende ich "/" und mit ArrayDisplay bekomme ich folgendes Ergebnis
Nun möchte ich das Array durchsuchen um die Dateien im Ordner der Festplatte umzubennen.
Als Ergebnis möchte ich z.b den Namen der 12. Folge der ersten Staffel bekommen.
"Mr Monk und Willie Nelson"
Irgendwie verstehe ich die Suche aber nicht so recht.
Hier mal der Part mit der Suche des Quelltextes
[autoit]$aResult = _ArrayFindAll($aText,$Staffel,0,0,1,0,1)
; hier durchsuche ich das Array nach der Staffel
_ArrayDisplay($aResult,"Ergebnis der Suche in $aText")
; hier durchsuche ich das Array nach der Folge 12
$aResult2 = _ArrayFindAll($aResult,"12",0,0,1,0,2)
_ArrayDisplay($aResult2,"Ergebnis der Suche in $aResult2")
Das erste _ArrayDisplay liefert mir folgendes zurück:
Das 2. dann
Letzendlich bleiben von allen Folgen nur eine über, aber wie komme ich nun an den Namen der Folge und wie schreibe ich diese an in eine Stringvariable, so dass ich diese für das folgende Umbenennen der Datei nutzen kann.
Müsste dazu ja ermitteln welche Zeile im ursprünglichen Array den Namen der gewünschten Folge beinhaltet und im Anschluss
dann den Namen aus dem Feld auslesen oder?
Hoffe ich habe mein Problem verständlich geschildert und ihr könnt mir in irgendeiner Form Tips geben.
Vielen Dank bereits im Voraus.
Hallo,
würde mich freuen wenn ich vielleicht als Newbie in der Scene auch mal helfen kann:
; Hier wird die Mailserver.ini in die ComboBox ausgelesen
$mailserver = "mailserver.ini"
_FileReadToArray($mailserver, $Eingabe)
; Diese Schleife wird durchlaufen bis die letze Zeile in der Combobox eingelesen wurde
For $i = 1 To $Eingabe[0]
_GUICtrlComboBoxEx_AddString($Combo1, $Eingabe[$i])
Next
; Hiermit wird die Vorgabe der Combobox auf den ersten Eintrag festgelegt
_GUICtrlComboBoxEx_SetCurSel($Combo1, 0)
Hoffe das hilft Dir weiter und führt zum gewünschten Erfolg. Bei mir funktioniert es einwandfrei.
Hallo Community,
erst mal vielen Dank für Euren zahlreichen Tips. Habe das ein oder andere bereits erfolgreich umgesetzt und nun wieder neue Probleme mit dem ganzen. Dies ist mein erstes Mal das ich mich Arrays arbeite und vielleicht denke ich nur ein wenig zu kompliziert oder ich versuche was unmögliches.
Hier mal mein bisheriger Code.
#cs Aufbau der Datei template_notes.ini im templates
[Notes]
KitType=1
KeyFilename
CertificateExpChecked
MailFile
Location
MailServer
#ce
#cs Aufbau der ViewServerPath.csv im templates Ordner
Dummyserver1/Test/DE - Mail;Dummyserver1;test/mail
Dummyserver1/Test/DE - Mail1;Dummyserver1;test/mail1
Dummyserver1/Test/DE - Mail2;Dummyserver1;test/mail2
Dummyserver1/Test/DE - Mail3;Dummyserver1;test/mail3
Dummyserver1/Test/DE - Mail4;Dummyserver1;test/mail4
Dummyserver1/Test/DE - Mail5;Dummyserver1;test/mail5
Dummyserver2/Test/DE - Mail;Dummyserver2;test/mail
Dummyserver2/Test/DE - Mail1;Dummyserver2;test/mail1
Dummyserver2/Test/DE - Mail2;Dummyserver2;test/mail2
Dummyserver2/Test/DE - Mail3;Dummyserver2;test/mail3
Dummyserver2/Test/DE - Mail4;Dummyserver2;test/mail4
Dummyserver2/Test/DE - Mail5;Dummyserver2;test/mail5
Dummyserver3/Test/DE;Dummyserver3;prod/mail1
Dummyserver4/Test/DE;Dummyserver4;prod/mail2
Dummyserver5/Test/DE;Dummyserver5;prod/mail3
Dummyserver6/Test/DE;Dummyserver6;prod/mail4
Dummyserver7/Test/DE;Dummyserver7;prod/mail5
Dummyserver8/Test/DE;Dummyserver8;prod/mail6
Dummyserver9/Test/DE;Dummyserver9;prod/mail7
Dummyserver10/Test/DE;Dummyserver10;prod/mail8
#ce
; Includes definieren
#include <File.au3>
#include <GuiComboBoxEx.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
#include <array.au3>
; Hauptprogramm aufrufen
_Main()
; Hier beginnt das Hauptprogramm
Func _Main()
; Variablen deklarieren
Dim $answer
Dim $answer1
Dim $Eingabe
Dim $file
Dim $fileNew
Dim $i
Dim $line
Dim $iMailServerPath
Dim $arMailServerPath[50][3]
Dim $MailServerPath
Dim $MailView
Dim $MailServer
Dim $MailPath
Dim $Combo1
Dim $mailanswer
Dim $a
Dim $MailServer
Dim $mailserveranswer
; Hier beginnt die Definition der Gui des Programmes
$Form1 = GUICreate("", 630, 370, 192, 114)
$Label1 = GUICtrlCreateLabel("Geben Sie hier die Notes UserID ein", 8, 110, 175, 17)
$Input1 = GUICtrlCreateInput("emustermann", 8, 125, 617, 21)
$Label2 = GUICtrlCreateLabel("Geben Sie den kompletten Vor- und Zunamen des Anwenders ein", 8, 155, 314, 17)
$Input2 = GUICtrlCreateInput("Elke Mustermann", 8, 170, 617, 21)
$Label3 = GUICtrlCreateLabel("Wählen Sie hier den Mailserver aus", 8, 200, 171, 17)
$Combo1 = GUICtrlCreateCombo("Dummyserver", 8, 215, 617, 325)
$Label4 = GUICtrlCreateLabel("Hier wird der Pfad zum Mailfile angezeigt !", 8, 245, 252, 17)
$Input3 = GUICtrlCreateInput("", 8, 260, 617, 21)
$Button1 = GUICtrlCreateButton("INI erstellen", 8, 290, 289, 73, $WS_GROUP)
$Button2 = GUICtrlCreateButton("Programm beenden", 336, 290, 289, 73, $WS_GROUP)
GUISetState(@SW_SHOW)
; Hier wird die Mailserver.ini in die ComboBox ausgelesen
$iMailServerPath = "templates\ViewServerPath.csv"
If (Not IsArray($iMailServerPath)) And (@error = 1) Then
MsgBox(0, "", "ViewServerPath.csv wurde nicht gefunden.")
Exit
EndIf
_FileReadToArray($iMailServerPath, $arMailServerPath)
; Diese Schleife wird durchlaufen bis die letze Zeile in der Combobox eingelesen wurde
For $i = 1 To UBound($arMailServerPath) - 1
$arMailServer = StringSplit($arMailServerPath[$i], ";", 1)
GUICtrlSetData($Combo1, $arMailServer[1])
; Hiermit wird die Vorgabe der Combobox auf den ersten Eintrag festgelegt
; GUICtrlSetData($Combo1, "Dummyserver")
$arMailPath = StringSplit($arMailServerPath[$i], ";", 1)
GUICtrlSetData($Input3, $arMailPath[3])
Next
Do
$msg = GUIGetMsg()
Switch $msg
Case $Combo1
GUICtrlSetData($Input3, GUICtrlRead($Combo1))
Case $Button1
_Button1()
Case $Button2
_Button2()
EndSwitch
Until $msg = $GUI_EVENT_CLOSE
EndFunc ;==>_Main
Func _Button1()
MsgBox(0, "Button1", "Button 1 wurde gedrückt", 2)
; Noch nicht weiter definiert
EndFunc ;==>_Button1
Func _Button2()
; MsgBox(0, "Button2", "Button 2 wurde gedrückt", 2)
Exit
EndFunc ;==>_Button2
Die notwendigen Dateien, die in dem Skriptunterordner templates liegen soll habe ich in das Script eingebunden.Als erstes ist dies mein erster Versuch eine CSV Datei in ein Array und dann weiter in eine Combobox einzulesen. Muss die CSV Datei irgendeinen bestimmten Separator haben. In ihr wurden jeweils die Ansicht, der hinterlegte Server und der Pfad zum Mailfile hinterlegt und mit Semikolons getrennt.
Das Programm soll die CSV Datei in ein mehrdimensionelles Array lesen und dann soll der jeweils erste Eintrag (Ansicht) in die Combobox geladen werden. Als Standardeintrag soll in der Combobox dann der erste Eintrag hinterlegt sein. Desweiteren soll in der Inputbox $Input3 dann der richte Mailpaf aus der CSV Datei hinterlegt werden. Das funktioniert aber noch nicht. Desweiteren soll die Möglichkeit bestehen bei Änderung der Comboboxauswahl die Inputbox Input3 zu ändern und diese soll auch evtl händisch änderbar sein.
Bei Druck auf Button1 (INI erstellen) soll dann überprüft werden was in der Combobox (Ansicht)ausgewählt wurde und der entsprechende Server im Array in eine Variablen hinterlegt werden. Desweitern soll der Mailpfad aus $Input3 in einer weiteren Variablen zugewiesen werden (hierbei ist wichtig das dieser evtl händisch geändert werden kann.)
Die Frage ist nun was ich falsch mache. Bin für positive Kritik gerne zu haben. Blicke es derzeit noch nicht besser, habe auch schon viel dazu gelernt und erfreue mich jeden Tag aufs neue über diese tolle Möglichkeiten der Programmierung.
Danke für Eurer Feedback
Hallo danke erstmals,
kann dazu noch kein Script posten, weil es noch nicht wirklich existiert. Das letzte Beispiel kommt aber schon nahe an das gewünschte ran.
Ich möchte quasi abfangen wenn ich in der Combobox eine Änderung gemacht (z.B. durch runterklappen des Dropdowns und selektieren eines Eintrages) habe und diesen Wert dann in der Inputbox anzeigen.
Hoffe das bringt ein wenig mehr Klarheit in die Angelegenheit. Vielen Dank bereits im Voraus für Eure Hilfe
Hallo zusammen,
nachdem die SuFu versagt hat, hier nun mein Problem.
Ich habe ein Gui, in der sich eine ComboBox befindet. Wenn sich der Inhalt dieser durch Auswahl ändernt möchte ich die Gui bzw eine Inputbox aktualisieren.
Wie fange ich dieses Ereignis der ComboBox Änderung ab?
Hallo Community,
erst mal vielen Dank an Raupi und Andy. Durch Eure Tips und Tricks habt ihr mir sehr weitergeholfen. Danke auch dafür das es dieses Forum gibt und danke auch an die Entwickler von AutoIt, die bewiesen haben, das auch mit einer nur ein paar MB großen Programmiersprache großes zu Bewegen ist. Bin fasziniert was alles mit Autoit möglich ist und habe als erstes mal meine VB.NET Express Umgebung deinstalliert und meine Festplatte somit um einige GB erleichtert. Werde in Zukunft noch weitere Projekte mit AutoIT in Angriff nehmen und freue mich auf die Zusammenarbeit mit Euch.
Super, weiter so. Es lebe AutoIT
P.S. Das Thema kann als gelöst betrachtet werden oder kann ich das selber irgendwie als gelöst markieren. Danke
Hallo Raupi,
hier mal der komplette Source. Ist mein erstes Gui Projekt und ich denke mir manches geht sicherlich wesentlich einfacher. Für konstruktive Kritik bin ich gerne zu haben, denn nur so kann man was lernen.
Mußte vorher aus Grund von Datenschutz die Template Dateien ein wenig ändern. Source im Anhang. Bild der Gui habe ich weggelassen da für das Problem nicht relevant.
Danke für Deine Hilfe
P.S. Wie füge ich den Source hier direkt in das Posting ein?
Hallo erstmal vielen Dank. Habe es erneut probiert und mit folgenden Zeilen landet nun das richtige Ergebnis in meiner Ausgabedatei:
; Ermittelt den Itemtext
_GUICtrlComboBoxEx_GetItemText($Combo1, 0, $answer)
$line = ("Server=" & $answer)
FileWriteLine($fileNew, $line)
Versuche ich das nun aber folgendermaßen zu vereinfachen so erhalte ich in meiner Ausgabedatei nicht wie gewünscht den Servernamen, sondern nur die Zahl 36. Was ist da verkehrt?
$line = ("Server=" & _GUICtrlComboBoxEx_GetItemText($Combo1, 1, $answer))
FileWriteLine($fileNew, $line)
Danke für Eure Hilfe
Hallo Community,
nachdem ich den letzen Eintrag erstellt habe, kam dann letztendlich doch eine Lösung. Finde die geht aber irgendwie von hinten durch die Brust. Kann man das nicht noch irgendwie vereinfachen?
Case $line = ("Server")
$x = _GUICtrlComboBoxEx_GetCurSel($Combo1)
$answer = _GUICtrlComboBoxEx_GetItem ($Combo1, $x)
msgbox(0,"",$answer[0])
Denke mir das das auch über einen Einzeiler funktionieren sollte oder irre ich mich da?
Danke für Eure Hilfe
Hallo Community,
habe erst vor kurzen Zeit die Macht von Autoit endeckt und mittlerweile einige kleinere Projekte umgesetzt. Unter anderem die Sicherung und Wiederherstelllung von Outlock, Outlock Express und Mozilla Firefox. Mir war dabei wichtig mehr über die Registry und Filebefehle zu lernen.
Nun arbeite ich derzeit an meinem ersten Gui Projekt und bin an meine Grenzen gestoßen obwohl das Programm bereits lief und ich mir leider mit Tidy irgendwie den Source versaut habe.
Hier nun der relevante Sourcecode für das Problem:
In meiner Gui erstelle ich mit
$Combo1 = _GUICtrlComboBoxEx_Create ($Form1,"", 8, 256, 617, 325,BitOR($CBS_DROPDOWNLIST, $CBS_AUTOHSCROLL))
; Hier wird die Server.ini in die ComboBox ausgelesen
$mailserver = @ScriptDir & "\Server.ini"
_FileReadToArray ($Server, $Eingabe)
; Diese Schleife wird durchlaufen bis die letze Zeile in der Combobox eingelesen wurde
For $i = 1 To $Eingabe [0]
_GUICtrlComboBoxEx_AddString($Combo1, $Eingabe[$i])
Next
; Hiermit wird die Vorgabe der Combobox auf den ersten Eintrag festgelegt
_GUICtrlComboBoxEx_SetCurSel($Combo1, 0)
Bis hierhin funktioniert alles bestens. Die Gui wird aufgebaut und die Server aus der Ini Datei komplett eingelesen und danach in der Gui der erste Eintrag aktiv in der Combobox angezeigt. Das Problem was sich nun zeigt ist es den ausgewählten Eintrag aus der ComboBox auszulesen. Es ist mir zwar gelungen den Index des Elementes auszulesen aber womit lese ich den Eintrag der hinter dem Index hinterlegt ist aus.
Hier mal der Rest des Sourcecodes:
Case $line = ("Server")
$x = _GUICtrlComboBoxEx_GetCurSel($Combo1)
msgbox (0,"Ihre Auswahl",$x)
Hier bekomme ich nun den Index als Zahl zurückgeliefert aber jegliche Versuche den Eintrag mit
Nun zu meiner Frage: Wie lese ich den Eintrag zum Index korrekt aus.
Danke für Eure Hilfe