Da mir zurzeit auffällt das viele probleme mit dem schreiben bzw. lesen von ini's haben, dachte ich mir ich schreibe hier ein kleines tutorial wie man ini benutzt.
ich weiß da gibt es schon eins von shadow992 (bester mann ), aber ich versuche hier nur spezifiesch auf ini's einzugehen!
Nun stellt sich die erste frage, was ist denn eine ini datei?
hier ein auszug von dem was in wikipedia steht:
so das ganze mal auf deutsch:Quote:
Eine Initialisierungsdatei (kurz INI-Datei) ist eine Textdatei, die z. B. unter Windows zum Ablegen von Programmeinstellungen (z. B. Position des Programmfensters) verwendet wird. Bei erneutem Aufruf des Programms werden die Programmeinstellungen eingelesen, um den Zustand vor dem letzten Schließen wieder einzunehmen.
Eine INI-Datei kann in Sektionen unterteilt werden, welche mit eckigen Klammern umschlossen sein müssen.
Informationen werden als Schlüssel mit zugehörigem Wert abgespeichert bzw. ausgelesen.
Bei dem Erstellen einer INI-Datei sind folgende Regeln zu beachten:
Jede Sektion darf nur einmal vorkommen.
Jeder Schlüssel darf nur einmal je Sektion vorkommen.
Kommentare werden mit einem ";" eingeleitet.
Auf Werte wird mittels Sektion und Schlüssel zugegriffen.
Kommentare dürfen nicht direkt hinter einem Schlüssel stehen.
Leerzeichen und Anführungszeichen werden von verschiedenen Programmen teilweise unterschiedlich behandelt.
Es gibt Dateien mit nahezu demselben Aufbau, die sich lediglich durch folgende Merkmale unterscheiden:
Andere (z. B. conf und cfg) oder fehlende Dateiendung
Einleitung von Kommentaren mit einem anderen Zeichen (z. B. "#").
nach dem diese frage beantwortet ist befassen wir uns nun damit wie man eine ini datei anlegt. autoit bietet die möglichkeit ohne das umständliche _FileCreate (benötigt #Include <File.au3>) eine ini datei anzulegen, dies geschieht so: IniWrite("NAME DER DATEI.ini", "SEKTION", "WERT", "ERGEBNISS")Quote:
eine ini datei dient dazu schlüssel bzw. werte die ihr auslest zu speichern und bei bedarf abzurufen, ini dateien kann man mit config dateien vergleichen. Ini dateien sind wie folgt aufgebaut:
[Sektion]
WERT=ERGEBNISS
das was hinter dem = steht ist der ausgelesene wert in dem fall das ERGEBNISS.
Folgendes beispiel wird für leute die sich mit autoit gut auskennen kopfschmerzen verursachen da es etwas umständlich ist.
nehmen wir mal an ihr wollt einen text aus einer inputbox auslesen, dann gehen wir so vor:
jetzt nehmen wir mal an jemand schreibt in diese inputbox "test" und diesen input wollen wir auslesen.Quote:
$Input1 = GUICtrlCreateInput("Text", 40, 56, 177, 21)
so jetzt haben wir die inputbox ausgelesen, aber noch nicht in eine .ini abgelegt, dies tuen wir nun:Quote:
$read1=GUICtrlRead($Input1)
so damit sieht unser script nun so aus:Quote:
IniWrite("beispiel.ini","texte","say1", $read1)
jetzt nehmen wir an ihr wollt diesen text per tastendruck senden:Quote:
$Input1 = GUICtrlCreateInput("Text", 40, 56, 177, 21)
$read1=GUICtrlRead($Input1)
IniWrite("beispiel.ini","texte","say1", $read1)
so nun haben wir den wert ausgelesen, die "" geben an das diese stelle ausgelesen werden soll.Quote:
$text1=IniRead("beispiel.ini","texte","say1", "")
in diesem beispiel ist die taste zum senden des textes F2
$text1 = die variable des auslesens.Quote:
HotKeySet("{F2}", "_say1")
Func _say1()
Send($text1)
EndFunc
bis hierhin würde der code nun so aussehen:
wenn ihr in einem gui eine inputbox habt und diese einfach und ohne großen schnickschnack auslesen wollt könnt ihr das wie folgt tuen:Quote:
$Input1 = GUICtrlCreateInput("Text", 40, 56, 177, 21)
$read1=GUICtrlRead($Input1)
IniWrite("beispiel.ini","texte","say1", $read1)
$text1=IniRead("beispiel.ini","texte","say1", "")
HotKeySet("{F2}", "_say1")
Func _say1()
Send($text1)
EndFunc
PHP Code:
#include <GUIConstantsEx.au3>
$Form1 = GUICreate("test", 175, 133, 192, 124)
$Input1 = GUICtrlCreateInput("Input1", 16, 16, 137, 21)
$Button1 = GUICtrlCreateButton("Save", 32, 56, 105, 41)
GUISetState(@SW_SHOW)
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
Case $Button1
$read1=GUICtrlRead($Input1)
iniwrite("beispiel.ini","texte","say1", $read1)
HotKeySet("{F2}", "_say1")
Func _say1()
$text1=IniRead("beispiel.ini","texte","say1", "")
Send($text1)
EndFunc
EndSwitch
WEnd
ich hoffe ich habe euch nun die grundlagen des ini lesens & schreibens nahe gebracht, fragen und verbesserungsvorschläge bitte direkt in den thread schreiben, bitte keine spamms.
auf anfrage von MaroX59 behandel ich noch kurz das crypten von texten zahlen passwörtern etc.
der befehl zum verschlüssen von daten ist: _StringEncrypt.
_StringEncrypt wird verwendet um dateien zu verschlüsseln und gleichzeit um diese wieder "lesbar" (zu entschlüsseln) zu machen.
wenn man eine datei verschlüsseln will funktioniert das wie folgt (ich zeige dies anhand unseres beispiels):
_StringEncrypt(1, VARIABLE/TEXT WO VERSCHLÜSSELT WERDEN SOLL, PASSWORT, 1) die 1 zu beginn gibt an das encrypted wird, eine 0 würde decrypt signalisieren, die 1 zum schluss gibt die "stärke" der verschlüsselung an.
wenn wir das ganze also wieder lesen wollen müssten wir einfach die 1 mit der 0 tauschen.:
_StringEncrypt(0, VARIABLE/TEXT WO ENTSCHLÜSSELT WERDEN SOLL, PASSWORT, 1)
das ganze in unserem beispiel miteingebunden würde so aussehen:
PHP Code:
#include <GUIConstantsEx.au3>
#include <String.au3> ;wird für das en bzw. decrypten benötigt
$Form1 = GUICreate("test", 175, 133, 192, 124)
$Input1 = GUICtrlCreateInput("Input1", 16, 16, 137, 21)
$Button1 = GUICtrlCreateButton("Save", 32, 56, 105, 41)
GUISetState(@SW_SHOW)
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
Case $Button1
$read1=GUICtrlRead($Input1)
$crypt1=_StringEncrypt(1, $read1, "das ist mein password", 1)
iniwrite("beispiel.ini","texte","say1", $crypt1)
HotKeySet("{F2}", "_say1")
Func _say1()
$text1=IniRead("beispiel.ini","texte","say1", "")
$decrypt1=_StringEncrypt(0, $text1, "das ist mein password", 1)
Send($decrypt1)
EndFunc
EndSwitch
WEnd
Extra1:
Falls ihr nicht immer wieder einen neuen wert für die inputbox anlegen wollt könnt ihr auch einfach den vorhanden wert aus der .ini auslesen!
dafür müssen wir aber zuerst aus der .ini lesen:
doch wie ihr wisst ist dieser text encryptet, also müssen wir ihn zuerst decrypten, das tuen wir dann so:Quote:
$inputini1=IniRead("beispiel.ini", "texte", "say1", "")
das ganze zusammengepackt im gui sieht dann so aus:Quote:
$inputinidecrypt1=_StringEncrypt(0, $inputini1, "das ist mein password", 1)
PHP Code:
#include <GUIConstantsEx.au3>
#include <String.au3> ;wird für das en bzw. decrypten benötigt
$Form1 = GUICreate("test", 175, 133, 192, 124)
$inputini1=IniRead("beispiel.ini", "texte", "say1", "") ;lesen aus der ini
$inputinidecrypt1=_StringEncrypt(0, $inputini1, "das ist mein password", 1) ; die in der ini geschrieben datei ist encryptet als müssen wir sie decrypten
$Input1 = GUICtrlCreateInput($inputinidecrypt1, 16, 16, 137, 21)
$Button1 = GUICtrlCreateButton("Save", 32, 56, 105, 41)
GUISetState(@SW_SHOW)
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
Case $Button1
$read1=GUICtrlRead($Input1)
$crypt1=_StringEncrypt(1, $read1, "das ist mein password", 1)
iniwrite("beispiel.ini","texte","say1", $crypt1)
HotKeySet("{F2}", "_say1")
Func _say1()
$text1=IniRead("beispiel.ini","texte","say1", "")
$decrypt1=_StringEncrypt(0, $text1, "das ist mein password", 1)
Send($decrypt1)
EndFunc
EndSwitch
WEnd
PHP Code:
#include <GUIConstantsEx.au3>
#include <String.au3> ;wird für das en bzw. decrypten benötigt
$Form1 = GUICreate("test", 175, 133, 192, 124)
$inputini1 = IniRead("beispiel.ini", "texte", "say1", "") ;lesen aus der ini
$inputinidecrypt1 = _StringEncrypt(0, $inputini1, "das ist mein password", 1) ; die in der ini geschrieben datei ist encryptet als müssen wir sie decrypten
$Input1 = GUICtrlCreateInput($inputinidecrypt1, 16, 16, 137, 21)
$Button1 = GUICtrlCreateButton("Save", 32, 56, 105, 41)
GUISetState(@SW_SHOW)
HotKeySet("{F2}", "_say1")
Func _say1()
$text1 = IniRead("beispiel.ini", "texte", "say1", "")
$decrypt1 = _StringEncrypt(0, $text1, "das ist mein password", 1)
Send($decrypt1)
EndFunc ;==>_say1
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
Case $Button1
$read1 = GUICtrlRead($Input1)
$crypt1 = _StringEncrypt(1, $read1, "das ist mein password", 1)
IniWrite("beispiel.ini", "texte", "say1", $crypt1)
EndSwitch
WEnd
rächtschraibfähler könnt ihr behalten.