Entwickler-Ecke
Dateizugriff - INIs bearbeiten ohne Sektionen?
Majinor - Di 09.09.03 22:49
Titel: INIs bearbeiten ohne Sektionen?
Ahoi leuts,
ich progge staendig mal ein paar kleine Tools fuer einige exoten Games. Derzeit bin ich bei einem Game was sehr viel mit inis arbeitet damit andere Leute es leichter veraendern koennen.
Tjo leider gibts n kleines prob und zwar arbeitet das Game ohne Sektionen.
Also statt:
Quelltext
1: 2: 3:
| [Sektion1] Typ=123 Typ2=321 |
Sind ledeglich werte da
Wie kann ich jetzt die Werte in Delphi veraendern?
Delete - Di 09.09.03 23:12
Zeilenweise einlesen und die Werte selbst parsen (bspw. in eine Stringliste schieben, o.ä.). Die TIniFiles-Unit unterstützt IMHO eben nur das typische INI-Format mit Sektionen.
recall - Mi 10.09.03 01:43
hehe ist doch ultraleicht ;)
Mach eine neue Datei (Textfile).
Schreib [irgendwas] rein, dann kopierst du die Spieledatei in die neue Datei, jetzt hast du dein Sektion !
Jetzt an der Datei rumpfuschen (mit ini...)
Schließen, Zeile 2 bis Ende zurückkopieren, fertig !
Wahrscheinlich ist das aber genauso umständlich, wie das selber einlesen !
Nur du hast halt die Möglichkeiten von ini-files (sind ja nicht viele).
Viele Grüsse.
Delete - Mi 10.09.03 08:18
He, gute Idee, zu der mir doch gleich TMemIniFile (s. Delphi-Hilfe) einfällt.
cbs - Mi 10.09.03 09:30
huhu wiedermal
du kannst auch bei TStrings bleiben .. du ließt die ini in ein TStringList object ein und kannst dann mit der eigenschaft names und values auf die einträge zugreifen OHNE sektionen
property Names[Index: Integer]: string;
index ist die Zeile - 1 und gibt den bezeichner des eintrags zurück
property Values[const Name: string]: string;
name ist der (nur einmalvorkommende) bezeichner des eintrags und gibt desen wert zurück
z.B.
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15:
| var str: TStrings; begin str:= TStringList.Create; str.LoadFromFile('game.ini'); showmessage(str.Values[str.names[1]]); str.Free; end;
|
matze - Mi 10.09.03 13:34
das probelm dabei ist, dass values nur arbeitet wenn die zeile test=bla heisst. wenn die zeile test = bla ist geht das ganze schon nichtmehr. und wenn ein unser selber in der datei rumpfuscht, dann kann das schonmal passieren dass zwischen den worten und dem istgleich ein leerzeichen ist !!!
am besten routinen zum selber parsen schreiben !
cbs - Mi 10.09.03 18:51
| matze hat folgendes geschrieben: |
| das probelm dabei ist, dass values nur arbeitet wenn die zeile test=bla heisst. wenn die zeile test = bla ist geht das ganze schon nichtmehr |
also ich hab grad mal nen kleines test programm geschrieben und die sache mal ausprobiert.. der bezeichner als auch der wert wird korrekt wiedergegeben MIT leerzeichen
der bezeichner heißt dann eben 'test ' und der wert ' bla'
mag man die leerzeichen nicht haben trimt man das ganze eben mit
function Trim(const S: string): string;
die function entfernt alle leer- und steuerzeichen am anfang und ende des strings
| matze hat folgendes geschrieben: |
| am besten routinen zum selber parsen schreiben ! |
genau! und das is der erste schritt dazu -> sprich: der rest isn kinderspiel
matze - Mi 10.09.03 20:06
also bei mir (D5) geht das nicht, wenn vor und nach dem = keerzeichen sind !!! und die bekommst du mit trim nicht weg !!!
cbs - Mi 10.09.03 20:54
| matze hat folgendes geschrieben: |
| also bei mir (D5) geht das nicht |
hab das mit delphi 6 und 7 getestet.. damit gehts problemlos..
tjo wenn nich dann eben selbst die strings auseinanderpflücken.. aber das is ja auch net sooo schwierig da ja bezeichner und wert durch nur ein eindeutiges zeichen getrennt werden
@Majinor mit
function Pos(Substr: string; S: string): Integer;
kannst du nach dem istgleich pro string suchen und entsprechend den string vor und hinter dieser position in 2 strings aufteilen..
matze - Do 11.09.03 15:52
dann hab die das seit D5 geändert !!! fies :|
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!