Register for your free account! | Forgot your password?

Go Back   elitepvpers > Coders Den > AutoIt
You last visited: Today at 10:58

  • Please register to post and access all features, it's quick, easy and FREE!

Advertisement



[TuT] Ini lesen & schreiben

Discussion on [TuT] Ini lesen & schreiben within the AutoIt forum part of the Coders Den category.

Reply
 
Old   #1
 
bladerofdarknes's Avatar
 
elite*gold: 0
Join Date: Mar 2008
Posts: 1,524
Received Thanks: 285
[TuT] Ini lesen & schreiben

Hallo liebe Com,

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:

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. "#").
so das ganze mal auf deutsch:

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.
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")

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:

Quote:
$Input1 = GUICtrlCreateInput("Text", 40, 56, 177, 21)
jetzt nehmen wir mal an jemand schreibt in diese inputbox "test" und diesen input wollen wir auslesen.

Quote:
$read1=GUICtrlRead($Input1)
so jetzt haben wir die inputbox ausgelesen, aber noch nicht in eine .ini abgelegt, dies tuen wir nun:

Quote:
IniWrite("beispiel.ini","texte","say1", $read1)
so damit sieht unser script nun so aus:
Quote:
$Input1 = GUICtrlCreateInput("Text", 40, 56, 177, 21)
$read1=GUICtrlRead($Input1)
IniWrite("beispiel.ini","texte","say1", $read1)
jetzt nehmen wir an ihr wollt diesen text per tastendruck senden:

Quote:
$text1=IniRead("beispiel.ini","texte","say1", "")
so nun haben wir den wert ausgelesen, die "" geben an das diese stelle ausgelesen werden soll.
in diesem beispiel ist die taste zum senden des textes F2

Quote:
HotKeySet("{F2}", "_say1")
Func _say1()
Send($text1)
EndFunc
$text1 = die variable des auslesens.

bis hierhin würde der code nun so aussehen:

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
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:

PHP Code:

#include <GUIConstantsEx.au3>


$Form1 GUICreate("test"175133192124)
$Input1 GUICtrlCreateInput("Input1"161613721)
$Button1 GUICtrlCreateButton("Save"325610541)
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"175133192124)
$Input1 GUICtrlCreateInput("Input1"161613721)
$Button1 GUICtrlCreateButton("Save"325610541)
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:

Quote:
$inputini1=IniRead("beispiel.ini", "texte", "say1", "")
doch wie ihr wisst ist dieser text encryptet, also müssen wir ihn zuerst decrypten, das tuen wir dann so:

Quote:
$inputinidecrypt1=_StringEncrypt(0, $inputini1, "das ist mein password", 1)
das ganze zusammengepackt im gui sieht dann so aus:

PHP Code:
#include <GUIConstantsEx.au3>
#include <String.au3>              ;wird für das en bzw. decrypten benötigt

$Form1 GUICreate("test"175133192124)
$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($inputinidecrypt1161613721)
$Button1 GUICtrlCreateButton("Save"325610541)
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 
ich habe das ganze mal geordnet und besser/richtig angeordnet! hier eine "patent" lösung:

PHP Code:
#include <GUIConstantsEx.au3>
#include <String.au3>              ;wird für das en bzw. decrypten benötigt

$Form1 GUICreate("test"175133192124)
$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($inputinidecrypt1161613721)
$Button1 GUICtrlCreateButton("Save"325610541)
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.
bladerofdarknes is offline  
Thanks
5 Users
Old 06/26/2010, 14:37   #2
 
elite*gold: 184
Join Date: Nov 2009
Posts: 158
Received Thanks: 43
Du bist mir vieleicht einer ne halbe stunde nachdem endlich alle probleme bei meinem script bezüglich ini lesen und schreiben weg sind bekommst aber thxs^^
Syst3m Down is offline  
Thanks
1 User
Old 06/26/2010, 14:39   #3
 
bladerofdarknes's Avatar
 
elite*gold: 0
Join Date: Mar 2008
Posts: 1,524
Received Thanks: 285

na sorry aber du warst jetzt der ausschlaggebende :P
bladerofdarknes is offline  
Old 06/26/2010, 14:51   #4
 
elite*gold: 184
Join Date: Nov 2009
Posts: 158
Received Thanks: 43
Is ja egal naja obwohl etwas gibt es was schön wäre wenn du mal zeigen würdest wie man das gleich mit der crypt funktion verschlüsselt^^ genau das fehlt bei mir noch^^
Syst3m Down is offline  
Old 06/26/2010, 15:03   #5
 
PenGuin :O's Avatar
 
elite*gold: 2
Join Date: Mar 2008
Posts: 1,778
Received Thanks: 1,222
blade bitte achte auf deine Variablen. Die sind so dermaßén schlecht gewählt...

mit $read1, $read2 kann keiner was anfangen, wenn er dein Source betrachtet. Nenn doch die Variablen so was sie machen + einen Zusatz.

Besser wäre zum Beispiel um Settings auszulesen:

$sReadSet

Das s steht für String, dann weiß man direkt, dass es ein String wird. Da AutoIt Variablen für alles hat, nicht so wie bei C++, sollte man darauf schon achten, und direkt festlegen, was die Variable sei soll.
So schreibt man "i" für integer, "a" für Array etc..

ReadSet sollte dann read settings bedeuten.

1. Ist das einfacher für dich, du musst nicht immer suchen, welches read 1...143248 nun wofür war, sondern siehst schon direkt an der Variable, was sie beinhaltet.
PenGuin :O is offline  
Old 06/26/2010, 15:12   #6
 
bladerofdarknes's Avatar
 
elite*gold: 0
Join Date: Mar 2008
Posts: 1,524
Received Thanks: 285
ja ist mir bewusst, aber ich denke mal das jeder weiss das man in autoit jede $ÖOIHNÖOAINFOF verwenden kann solang sie deklariert ist

ps: das mit dem crypt mach ich noch geschwind
bladerofdarknes is offline  
Old 06/26/2010, 15:19   #7
 
PenGuin :O's Avatar
 
elite*gold: 2
Join Date: Mar 2008
Posts: 1,778
Received Thanks: 1,222
Du verstehst es nicht oder?
Klar kann man jede Variable nutzen ,es geht aber um die Lesbarkeit und das direkte Wissen, was die Variable macht und was sie beinhaltet.
Was ist wohl schöner?
$read1...10 zu haben und immer nachschauen zu müssen, was alles beinhaltet.
oder direkt in die Variable ihren nutzen mit string, int, array Vorsatz?
PenGuin :O is offline  
Old 06/26/2010, 15:22   #8
 
bladerofdarknes's Avatar
 
elite*gold: 0
Join Date: Mar 2008
Posts: 1,524
Received Thanks: 285
was verstehst du eigentlich an memory editing nicht? ist doch simpel.
naja ich hab jetzt keinen nerv für deine "flames" mach du's wie du willst und ich tu meins, verbesserungsvorschläge sind nett, aber das geht ja schon in richtung flame
bladerofdarknes is offline  
Old 06/26/2010, 15:24   #9
 
PenGuin :O's Avatar
 
elite*gold: 2
Join Date: Mar 2008
Posts: 1,778
Received Thanks: 1,222
Naja ist doch so, du hast doch meinen Post mit den Variablen nicht verstanden oder?
Memory Editing hab ich noch nie behandelt, nur das kannst du bei Variablen leider nicht sagen.
Außerdem hast du noch in einer PN gesagt, dass du dir das einmal angeschaut hast, es aber zu schwer war.
Ich will dich nicht flamen... Meine Begründung ist im anderen Thread.
WAs spricht dagegen einfach grundlegende Dinge anzunehmen?

Mal so als Frage: Willst du ernsthaft mit AutoIt programmieren, oder willst du nur vermeindlichen Leuten zeigen, die es nicht können, was du kannst, obwohl es nicht das beste ist?
PenGuin :O is offline  
Old 06/26/2010, 15:31   #10
 
bladerofdarknes's Avatar
 
elite*gold: 0
Join Date: Mar 2008
Posts: 1,524
Received Thanks: 285
muss ich mich ernsthaft auf dein niveau herunterbegeben?
ich kann sicherlich noch lange nicht alles, doch wieso soll ich nicht jemandem helfen wenn ich sein problem gefunden habe, bzw verstehe wie es funktioniert?
so keine lust mehr zu schreiben, ich mach geschwind das _StringEncrypt
bladerofdarknes is offline  
Old 06/26/2010, 15:34   #11
 
PenGuin :O's Avatar
 
elite*gold: 2
Join Date: Mar 2008
Posts: 1,778
Received Thanks: 1,222
Naja ich kann sicherlich auch noch lange nicht alles, doch wieso sollte ich dir nicht helfen, wenn ich dein Problem in den Sources gefunden habe, und dir helfen kann?
Ich an deiner Stelle würde die Hilfe annehmen, aber gut, mir ist es egal, meine Meinung hast du und ich bin sicher nicht der einzige, der sagen würde, dass deine Sources schlecht sind und der Source im Startpost von dem anderen Thread noch nichtmal funktionierte.
PenGuin :O is offline  
Old 06/26/2010, 15:41   #12
 
bladerofdarknes's Avatar
 
elite*gold: 0
Join Date: Mar 2008
Posts: 1,524
Received Thanks: 285
dann spamm mich nicht voll, bei mir am pc und am laptop gings, außerdem sende ich das ganze jetzt kurz an einen bekannten der wird das dann mal ausprobieren..
schreibe dann das ergebniss rein

€: mit der compilierten datei ging es nicht, aber mit der .au3 <.<
bladerofdarknes is offline  
Old 01/31/2011, 12:30   #13
 
merlin22081995's Avatar
 
elite*gold: 0
Join Date: Feb 2010
Posts: 18
Received Thanks: 1
ich weiß das ich eigl viel zu spät schreibe aber ich wollte doch mal darauf hinweisen dass HotKeySet direkt nach $nMsg = GUIGetMsg() kommt




#include <GUIConstantsEx.au3>
#include <String.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()
HotKeySet("{F2}", "_say1")
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


So stimmt es und klappt es!!
bei mir hatte es vorher nicht funktioniert!
merlin22081995 is offline  
Old 01/31/2011, 21:03   #14
 
AutoitScript's Avatar
 
elite*gold: 0
Join Date: Nov 2010
Posts: 74
Received Thanks: 24
Kleine Theoriefrage: warum klappts andersrum nicht? Kann ich nicht verstehen :s
AutoitScript is offline  
Old 01/31/2011, 21:17   #15
 
omer36's Avatar
 
elite*gold: 0
Join Date: Mar 2009
Posts: 2,317
Received Thanks: 1,254
merlin22081995
was schreibst du eig? haste mal dein teil getested?

wie es bladerofdarknes gepostet hatt (der letzte teil) ist es schon richtig
omer36 is offline  
Reply

« Decompilen | zahl »

Similar Threads Similar Threads
[VB.NET][TuT] Sequenziell eine Datei lesen und schreiben
02/26/2010 - Coding Tutorials - 0 Replies
Die Projekt Datei ist schon mit Visual Basic 2008 benutzbar. ================================================= === In diesem Tutorial zeige ich euch, wie wir aus einer datei lesen und diese schreiben. =================================== =================================== •Was wir brauchen - Label1 (BackColor = Control, BorderStyle = Fixed3D, AutoSize = False) - Label2 (Text = Nr)
Bot schreiben
02/02/2010 - General Coding - 29 Replies
Hallo zusammen, ich würde mir ein tutorial wünschen in dem beschrieben wird wie man für ein browsergame einen bot schreibt. ich meine jetzt nicht in richtung autoit sondern ein standalone clien in delphi;c;vb oder auch sonst irgentwas. bin sehr interessiert so etwas zu lernen und auszuprobieren. hab ja schon oft gehört das es kein problem sein soll sonen bot zu erstellen weils sicherheitslücken gibt oder sonst irgentwas. würde sicherlich auch vielen anderen usern helfen. fals falsches forum...
SUCHE HILFE!!!! bitte lesen & was dazu schreiben
01/15/2010 - Metin2 Private Server - 2 Replies
Hallo Leudz Ich habe immer noch mein Prob mit der dt. exe für meinen hamachi p-server, es will mir einfach nicht gelingen und desshalb bitte ich euch, mir zu helfen! meine Hamachi Nr: 5.245.94.170 brauche dt. exe für 2007 Ordner
[How-To] Schreiben
11/16/2009 - Tutorials - 29 Replies
Füa alle die nischt schreibän könnän! (Hassche esch mitt Maus zu schreibän >_<) http://img163.imageshack.us/img163/8284/taschtatu rrtut.png ISCH HOFFÄ ESCH HATT EUSCH GEHOLFFÄN!!!11
ein fb lesen, aber verschwindet nicht beim lesen?!!??! Òo
01/03/2009 - Metin2 - 4 Replies
hi leute ich suche den fb bug wer interresiert ist sein fb bug gegen meine bugs zu tauschen: -handels bug -pm bug -biologen bug -schmied bug und stein einfüge bug wenn ihr wollt kann ich auch alle bugs tasuchen gg fb bug!!!!



All times are GMT +2. The time now is 10:58.


Powered by vBulletin®
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
SEO by vBSEO ©2011, Crawlability, Inc.
This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.

Support | Contact Us | FAQ | Advertising | Privacy Policy | Terms of Service | Abuse
Copyright ©2024 elitepvpers All Rights Reserved.