|
You last visited: Today at 10:45
Advertisement
AutoIt Problem: -Ini-
Discussion on AutoIt Problem: -Ini- within the AutoIt forum part of the Coders Den category.
04/04/2010, 22:08
|
#1
|
elite*gold: 0
Join Date: Apr 2010
Posts: 244
Received Thanks: 24
|
AutoIt Problem: -Ini-
Schönen, guten Abend!
Ich wollte hier einmal mein kleines Problem zu AutoIt, genau zu den Ini's posten.
In der SuFu habe ich zwar schon ähnliche Themen dazu gefunden, aber geholfen haben sie alle nix.
Also, ich habe hier z.b. eine Form:
PHP Code:
#include <GUIConstants.au3>
#Region ### START Koda GUI section ### Form= $Form1 = GUICreate("Form1", 343, 199, 193, 125) $Input1 = GUICtrlCreateInput("", 8, 8, 137, 21) $Checkbox1 = GUICtrlCreateCheckbox("Checkbox1", 8, 48, 97, 17) $Radio1 = GUICtrlCreateRadio("Radio1", 8, 80, 113, 17) $Slider1 = GUICtrlCreateSlider(0, 112, 150, 37) GUICtrlSetLimit(-1, 100, 90) GUICtrlSetData(-1, 90) $Combo1 = GUICtrlCreateCombo("1", 8, 160, 145, 25) GUICtrlSetData(-1, "2|3") $Button1 = GUICtrlCreateButton("Speichern", 176, 24, 153, 145, 0) GUICtrlSetFont(-1, 14, 800, 0, "Arial") GUISetState(@SW_SHOW) #EndRegion ### END Koda GUI section ###
While 1 $nMsg = GUIGetMsg() Switch $nMsg Case $GUI_EVENT_CLOSE Exit
EndSwitch WEnd
In dieser Form befinden sich:
-Input
-Checkbox
-Radio
-Slider
-Combo
-Und ein Speicher-Button
Man soll jetzt auf der Form alles einstellen, wie man will, z.b. Checkbox anklicken, in das Input "hallo" schreiben, den Slider in die Mitte schieben, etc.
Wenn man dann auf Speichern klickt und die Form schließ und ein andermal wieder öffnet, soll alles so sein, wie man es eingestellt hat. Also die Checkbox soll noch gecheckt sein, im Input soll noch "hallo" stehen, etc.
Wie genau müsste der Code dazu jetzt aussehen?
Danke im Vorraus, euer Lukas!
|
|
|
04/04/2010, 22:48
|
#2
|
elite*gold: 1
Join Date: Oct 2008
Posts: 1,078
Received Thanks: 276
|
Schau dir mal dazu GUICtrlRead, IniWrite und co. an
PHP Code:
IniWrite ( "test.ini", "", "Input", GUICtrlRead ( $Input1 )) IniWrite ( "test.ini", "", "Slider", GUICtrlRead ( $Slider1)) ... ;----------- GUICtrlSetData ( $Input1, IniRead ( "test.ini", "", "Input", "")) ...
Falls du was Fortgeschrittenes probieren möchtest kannst du die einzelnen ControlIDs in nem Array speichern und das alles mit ner For Schleife auslesen/füllen (falls du nicht im Ansatz verstehst was ich hier grade von mir geb machs lieber auf die einfache Tour, auch wenn dir so ne Menge mehr Schreibarbeit blüht^^)
|
|
|
04/05/2010, 00:48
|
#3
|
elite*gold: 0
Join Date: Apr 2010
Posts: 244
Received Thanks: 24
|
Quote:
Originally Posted by .nAno
Schau dir mal dazu GUICtrlRead, IniWrite und co. an
PHP Code:
IniWrite ( "test.ini", "", "Input", GUICtrlRead ( $Input1 )) IniWrite ( "test.ini", "", "Slider", GUICtrlRead ( $Slider1)) ... ;----------- GUICtrlSetData ( $Input1, IniRead ( "test.ini", "", "Input", "")) ...
Falls du was Fortgeschrittenes probieren möchtest kannst du die einzelnen ControlIDs in nem Array speichern und das alles mit ner For Schleife auslesen/füllen (falls du nicht im Ansatz verstehst was ich hier grade von mir geb machs lieber auf die einfache Tour, auch wenn dir so ne Menge mehr Schreibarbeit blüht^^)
|
und wie genau muss das in verbindung mit dem speicher-button aussehen?
PHP Code:
#include <GUIConstants.au3>
#Region ### START Koda GUI section ### Form= $Form1 = GUICreate("Form1", 343, 199, 193, 125) $Input1 = GUICtrlCreateInput("", 8, 8, 137, 21) $Checkbox1 = GUICtrlCreateCheckbox("Checkbox1", 8, 48, 97, 17) $Radio1 = GUICtrlCreateRadio("Radio1", 8, 80, 113, 17) $Slider1 = GUICtrlCreateSlider(0, 112, 150, 37) GUICtrlSetLimit(-1, 100, 90) GUICtrlSetData(-1, 90) $Combo1 = GUICtrlCreateCombo("1", 8, 160, 145, 25) GUICtrlSetData(-1, "2|3") $Button1 = GUICtrlCreateButton("Speichern", 176, 24, 153, 145, 0) GUICtrlSetFont(-1, 14, 800, 0, "Arial") GUISetState(@SW_SHOW) #EndRegion ### END Koda GUI section ###
While 1 $nMsg = GUIGetMsg() Switch $nMsg Case $GUI_EVENT_CLOSE Exit Case $Button1 IniWrite ( "test.ini", "", "Input", GUICtrlRead ( $Input1 )) IniWrite ( "test.ini", "", "Input", GUICtrlRead ( $Checkbox1 )) IniWrite ( "test.ini", "", "Input", GUICtrlRead ( $Radio1 )) IniWrite ( "test.ini", "", "Input", GUICtrlRead ( $Slider1 )) IniWrite ( "test.ini", "", "Input", GUICtrlRead ( $Combo1 )) ;................................................................. GUICtrlSetData ( $Input1, IniRead ( "test.ini", "", "Input", "")) GUICtrlSetData ( $Checkbox1, IniRead ( "test.ini", "", "Input", "")) GUICtrlSetData ( $Radio1, IniRead ( "test.ini", "", "Input", "")) GUICtrlSetData ( $Slider1, IniRead ( "test.ini", "", "Input", "")) GUICtrlSetData ( $Combo1, IniRead ( "test.ini", "", "Input", "")) EndSwitch WEnd
??
|
|
|
04/05/2010, 00:55
|
#4
|
elite*gold: 1
Join Date: Oct 2008
Posts: 1,078
Received Thanks: 276
|
nicht ganz, der 2. Teil dient dazu die Daten wieder aufzurufen nachdem das Programm wieder geschlossen wurde
|
|
|
04/05/2010, 01:15
|
#5
|
elite*gold: 0
Join Date: Apr 2010
Posts: 244
Received Thanks: 24
|
Quote:
Originally Posted by .nAno
nicht ganz, der 2. Teil dient dazu die Daten wieder aufzurufen nachdem das Programm wieder geschlossen wurde
|
könntest du nicht vllt. mal einfach den ganzen, fertigken code hier posten, oder machste das nicht?
weil wenn ich den 2. teil weiter nach oben schiebe, habe ich das problem, dass sich die texte aller variablen(checkbox, radio...) zur zahl verändernd, die ich bei der combo ausgewählt habe..
|
|
|
04/05/2010, 09:37
|
#6
|
elite*gold: 1
Join Date: Oct 2008
Posts: 1,078
Received Thanks: 276
|
jetz seh ichs erst: du hast die Key Namen alle auf "Input" gesetzt, das müssen natürlich unterschiedliche sein (so wie's oben in meinem Beispiel steht^^)
Das solltest du auch noch so hinbekommen :P
|
|
|
04/05/2010, 12:46
|
#7
|
elite*gold: 0
Join Date: Nov 2007
Posts: 81
Received Thanks: 33
|
Wenn ich .nAno weiter erläutern darf
Code:
IniWrite ( "test.ini", "", "Input", GUICtrlRead ( $Input1 ))
IniWrite ( "test.ini", "", "Checkbox", GUICtrlRead ( $Checkbox1 ))
IniWrite ( "test.ini", "", "Radio", GUICtrlRead ( $Radio1 ))
IniWrite ( "test.ini", "", "Slider", GUICtrlRead ( $Slider1 ))
IniWrite ( "test.ini", "", "Combo", GUICtrlRead ( $Combo1 ))
Eine Ini ist so aufgebaut.
[section]
[key1] -> [Wert]
[key2] -> [Wert]
[key3] -> [Wert]
Schauen wir uns den Befehl also genauer an
IniWrite ( "test.ini", "", "Input", GUICtrlRead ( $Input1 ))
1ster Parameter : Name der Ini datei , nicht weiter wichtig
2ter PArameter : Section der Ini
Eine ini kann mehrere Sections haben um Daten zu verschiedenen Kategorien voneinander zu trennen.
3ter Parameter : Key , ein Key kann einen Wert speichern aber nicht zweimal in derselben Section vorkommen.
Bei dir hast du immer denselben Key genommen, aber ein Key kann nur einen Wert speichern
In meinem Code haben die Slider Combos usw alle einen eigenen Key in der Ini und so sollte es auch sein
4ter Parameter : Der Wert der in dem Key gespeichert wird.
Und nun zum Abrufen, das machen wir am Anfang, wenn die Gui erstellt wird.
Code:
if fileexists("test.ini") then
$text = iniread("test.ini","","Input","")
$Input1 = GUICtrlCreateInput($text, 8, 8, 137, 21)
else
$Input1 = GUICtrlCreateInput("", 8, 8, 137, 21)
endif
if fileexists("test.ini") then
Die test.ini gibt es nur wenn schonmal auf speichern gedrückt wurde.
$text = iniread("test.ini","","Input","")
Dann können wir auch den gespeicherten Text auslesen
Wichtig ist hierbei der key Input, in den der Text für den Input ja gespeichert wurde.
$Input1 = GUICtrlCreateInput($text, 8, 8, 137, 21)
Nun erstellen wir den Input und als Inhalt den ausgelesen Text
else
$Input1 = GUICtrlCreateInput("", 8, 8, 137, 21)
endif
Wenn die test.ini noch nicht erstellt wurde, also noch nicht gepseichert wurde, dann erstellen wir ein leeres Input.
|
|
|
04/05/2010, 13:50
|
#8
|
elite*gold: 0
Join Date: Apr 2010
Posts: 244
Received Thanks: 24
|
Quote:
Originally Posted by .nAno
jetz seh ichs erst: du hast die Key Namen alle auf "Input" gesetzt, das müssen natürlich unterschiedliche sein (so wie's oben in meinem Beispiel steht^^)
Das solltest du auch noch so hinbekommen :P
|
ok danke, mein script sieht jetzt so aus:
PHP Code:
#include <GUIConstants.au3> #Region ### START Koda GUI section ### Form= $Form1 = GUICreate("Form1", 343, 199, 193, 125) $Input1 = GUICtrlCreateInput("", 8, 8, 137, 21) $Checkbox1 = GUICtrlCreateCheckbox("Checkbox1", 8, 48, 97, 17) $Radio1 = GUICtrlCreateRadio("Radio1", 8, 80, 113, 17) $Slider1 = GUICtrlCreateSlider(0, 112, 150, 37) GUICtrlSetLimit(-1, 100, 90) GUICtrlSetData(-1, 90) $Combo1 = GUICtrlCreateCombo("1", 8, 160, 145, 25) GUICtrlSetData(-1, "2|3") $Button1 = GUICtrlCreateButton("Speichern", 176, 24, 153, 145, 0) GUICtrlSetFont(-1, 14, 800, 0, "Arial") GUISetState(@SW_SHOW) #EndRegion ### END Koda GUI section ### GUICtrlSetData ( $Input1, IniRead ( "test.ini", "", "Input", "")) GUICtrlSetData ( $Checkbox1, IniRead ( "test.ini", "", "Checkbox", "")) GUICtrlSetData ( $Radio1, IniRead ( "test.ini", "", "Radio", "")) GUICtrlSetData ( $Slider1, IniRead ( "test.ini", "", "Slider", "")) GUICtrlSetData ( $Combo1, IniRead ( "test.ini", "", "Combo", "")) While 1 $nMsg = GUIGetMsg() Switch $nMsg Case $GUI_EVENT_CLOSE Exit Case $Button1 IniWrite ( "test.ini", "", "Input", GUICtrlRead ( $Input1 )) IniWrite ( "test.ini", "", "Checkbox", GUICtrlRead ( $Checkbox1 )) IniWrite ( "test.ini", "", "Radio", GUICtrlRead ( $Radio1 )) IniWrite ( "test.ini", "", "Slider", GUICtrlRead ( $Slider1 )) IniWrite ( "test.ini", "", "Combo", GUICtrlRead ( $Combo1 )) EndSwitch WEnd
jetzt taucht wieder das prob. auf, dass sich die texte der checkbox/radio/usw. verändern und die combo völlig leer ist???
hier einfachmal ein bild dazu:
außerdem wird auch nur das, was im input steht gespeichert.
ich möchte mich jetzt schonmal für meine "dummheit" entschuldigen, aber mit den ini's hatte ich schon immer probleme
|
|
|
04/05/2010, 14:04
|
#9
|
elite*gold: 1
Join Date: Oct 2008
Posts: 1,078
Received Thanks: 276
|
dafür kannst du bestimmte befehle benutzen (--> siehe Help Datei )
|
|
|
04/05/2010, 14:25
|
#10
|
elite*gold: 0
Join Date: Apr 2010
Posts: 244
Received Thanks: 24
|
Quote:
Originally Posted by .nAno
dafür kannst du bestimmte befehle benutzen (--> siehe Help Datei )
|
hmm, bringt mich jetzt nicht unbedingt viel weiter
|
|
|
04/05/2010, 14:47
|
#11
|
elite*gold: 1
Join Date: Oct 2008
Posts: 1,078
Received Thanks: 276
|
Help Datei rufst du mit F1 im SciTe Fenster auf, aber wenn du die nicht findest:
Mit der Combo könnte das so aussehn:
PHP Code:
$comboData = IniRead ( "test.ini", "", "Combo", "ComboName") ... GuiCtrlCreateCombo ( $comboData, ... ) GuiCtrlSetData ( -1, ...)
GuiCtrlUpdate sollte bei Radio und Checkbox besser klappen
|
|
|
04/05/2010, 15:05
|
#12
|
elite*gold: 0
Join Date: Apr 2010
Posts: 244
Received Thanks: 24
|
Quote:
Originally Posted by .nAno
Help Datei rufst du mit F1 im SciTe Fenster auf, aber wenn du die nicht findest:
Mit der Combo könnte das so aussehn:
PHP Code:
$comboData = IniRead ( "test.ini", "", "Combo", "ComboName") ... GuiCtrlCreateCombo ( $comboData, ... ) GuiCtrlSetData ( -1, ...)
GuiCtrlUpdate sollte bei Radio und Checkbox besser klappen
|
|
|
|
04/05/2010, 22:04
|
#13
|
elite*gold: 1
Join Date: Oct 2008
Posts: 1,078
Received Thanks: 276
|
sry, aber
wenn du keinen Plan von AutoIT/dem Syntax hast schau dir bitte noch einmal die Grundlagen an
2 Zeilen Code und 2 unnötige Fehler die man mit nen bisschen Denken hätte finden müssen...
|
|
|
04/05/2010, 22:06
|
#14
|
elite*gold: 1
Join Date: Feb 2009
Posts: 1,726
Received Thanks: 729
|
lol
Du hast nicht wirklich die ... mitgeschrieben oder?
|
|
|
04/06/2010, 14:01
|
#15
|
elite*gold: 0
Join Date: Apr 2010
Posts: 244
Received Thanks: 24
|
Quote:
Originally Posted by General Desert
lol
Du hast nicht wirklich die ... mitgeschrieben oder?
|
lol
das is mir klar, aber wenn ich die teile weg mache, kommt ein neuer fehler...
aber egal, lasst es einfach und closen pls
PS: ich sagte jetzt closen, also auch pls nix mehr schreiben
|
|
|
All times are GMT +2. The time now is 10:45.
|
|