Hallo, ich hab ein kleines Programm geschrieben und versuche es gerade etwas Benutzerfreundlicher zu machen. Ich lese aus einer config.ini Koordinaten und speichere sie einzeln in Variablen. Das sieht so aus:
In der config.ini
Code:
[Koordinaten]
TopX=100
TopY=115
Im Script
Code:
Global $x1 = IniRead("config.ini", "Koordinaten", "TopX", "0")
Global $x2 = IniRead("config.ini", "Koordinaten", "TopY", "0")
Dann verwende ich sie im Code an mehreren Stellen etwa so
Code:
$pos = PixelSearch ( $x1, $x2, $y1, $y2, $a, $b)
Wobei y1 und y2 weitere Koordinaten sind.
Um die config.ini nicht mit den ganzen Koordinaten zu überfluten würde ich sie lieber gleich paarweise einlesen und in arrays abspeichern.
In der config.ini
Code:
[Koordinaten]
Top=100, 115
Und im Script dementsprechend
Dann verwende ich sie im Code an mehreren Stellen etwa so
IniWrite('config.ini', 'Koordinaten', 'Top', '100, 115')
$split = StringSplit(IniRead('config.ini', 'Koordinaten', 'Top', ''), ', ', 3)
For $x In $split
ConsoleWrite($x & @CRLF)
Next
Besser wäre es aber komplett auf inis zu verzichten, da diese ineffizient sind.
Am Besten alles über einfache FileRead/Write Operationen handhaben und im Script mit einem kompletten "Config-Array" alles abdecken.
Beispiel:
Code:
Dim $config[10]=['Wert1','Wert2','Wert3','Wert4','Wert5','Wert6','Wert7','Wert8','Wert9','Wert10']
SaveConfig('config')
GetConfig('config')
Func SaveConfig($configName)
Local $data, $fileHandle = FileOpen($configName,2)
For $value In $config
$data &= $value&'|'
Next
FileWrite($fileHandle,StringTrimRight($data,1))
FileClose($fileHandle)
EndFunc
Func GetConfig($configName)
$config = StringSplit(FileRead($configName),'|',2)
EndFunc
Vermutlich kommen auch noch weitere Koordinaten dazu, und es werden mehr und mehr Einträge und Variablen. Deshalb wollte ich sie übersichtlicher gestalten, nämlich so:
Und wenn ich die Einträge jeweils in arrays einlese, dann bräuchte ich auch nur die Hälfte der Variablen. Nur ich weiß nicht wie ich diese comma-seperated values in einem array speichere.
Die Aufteilung sieht doch schon ganz gut aus. Was spricht denn dagegen das einfach alles in eine Variable zu lesen?
willst du kompfortabel auf die Werte zugreifen können, bietet sich in dem Fall eine einfache Enum Funktion an.
Beispiel:
Code:
Dim Enum $LifeX, $LifeY, $ManaX, $ManaY, $TopX, $TopY, $BotX, $BotY, $CharX, $CharY, $MobX, $MobY, $Color1, $Tollerance
Dim $config[14]
Mit $config[$LifeX] könnte dann z.B. der Wert von LifeX einfach angesprochen werden, mit $config[$ManaX] der entsprechende Wert von ManaX.
Das Prinzip ist, so hoffe ich, denkbar einfach verständlich.
Hiervon kann man dir nur arg abraten, da du die ohnehin schon ineffiziente und unkompfortable Ini Variante damit noch unübersichtlicher und ineffizienter machen würdest.
Einen minimalen Aufwand bekommst du natürlich wie bereits erwähnt nur mit direkten File-Operatonen hin.
Der von mir vorher gepostete Beispielcode würde sowohl für 10 Werte, als auch für 10000 Werte exakt gleich aussehen (zum Speichern 6 Zeilen, zum Lesen 1 Zeile), während du bei Nutzung der Ini Funktionen für jeden Wert zum lesen und auch schreiben jeweils eine Zeile bräuchtest.
Entsprechend wächst die Komplexität des Codes mit der Ini-Variante Linear um den Faktor 2, während sie mit File-Operationen statisch (unverändert) bliebe.
[FIX] If your Services at Server Patch Config Stay at Pause Read This. 09/05/2012 - Shaiya Private Server - 4 Replies Im sick of seeing posts about this,Ive spent like 3 hours trying to figure out the issue and this is what i did to fix the problem.
Go to your managment studio and connect to the database useing SQL authotication in the server name put "127.0.0.1" (without quote marks) after that use the Username Shaiya and the password Shaiya123 if all connects and everything is fine right click on the server and select "New Query" a new window will open inside the managment studio insert there the...
DB BOT not display skills, not read coordinates 02/16/2011 - SRO Private Server - 4 Replies I use the DB BOT 0.8.he doesn't show my skills, also don't read coordinates, and against monsters,
For such or 1.3a, I found that many people were such circumstance, who can tell me how to solve, thX!
:rtfm:
Array & IniWrite/Read 11/13/2010 - AutoIt - 6 Replies Hallo alle zusammen,
ehm mein Problem ist ich will in einem Spiel die Abgelaufenen Koordinaten abspeichern. Also wenn ich laufe soll angefangen werden die x&y Koordinaten abspeichern und dann diese immer in eine IniDatei speichern...
Wichtig ist auch noch das diese Ini Datei später ausgelesen wird und in Zwei ListViews gezeigt wird.
Aber es soll kein mindest laufen sein oder ein höchst laufen....
Damit meine ich das es egal ist wie viel ich laufe...
Danke...
config.pk read & editing HELP PLS 07/31/2008 - Kal Online - 5 Replies Hey guys im new here,
i wanna ask u how can i read the config.pk
and how to change something in it without seeing any sym.
pls tell me i wanna make a cd for Darkness v3.
Thanks at all
dear patrick