Autor Beitrag
Majinor
Hält's aus hier
Beiträge: 7

Win XP, SuSE Linux 8.1
D3 Prof, D6 Pers
BeitragVerfasst: Di 09.09.03 22:49 
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:
ausblenden Quelltext
1:
2:
3:
[Sektion1]
Typ=123
Typ2=321

Sind ledeglich werte da
ausblenden Quelltext
1:
2:
Typ=123
Typ2=321


Wie kann ich jetzt die Werte in Delphi veraendern?
MathiasSimmack
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 449



BeitragVerfasst: 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.
MathiasSimmack
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Mi 10.09.03 08:18 
He, gute Idee, zu der mir doch gleich TMemIniFile (s. Delphi-Hilfe) einfällt.
cbs
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 207
Erhaltene Danke: 1



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

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
// Inhalt der Ini
// Zeile 1: Top=1
// Zeile 2: Left=5
// Zeile 3: progName=test

var str: TStrings;
begin
  str:= TStringList.Create;
  str.LoadFromFile('game.ini');
  // wert von eintrag 2 anzeigen
  showmessage(str.Values[str.names[1]]);
  str.Free;
end;

// ausgabe: 5
matze
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 4613
Erhaltene Danke: 24

XP home, prof
Delphi 2009 Prof,
BeitragVerfasst: 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 !

_________________
In the beginning was the word.
And the word was content-type: text/plain.
cbs
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 207
Erhaltene Danke: 1



BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 4613
Erhaltene Danke: 24

XP home, prof
Delphi 2009 Prof,
BeitragVerfasst: 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 !!!

_________________
In the beginning was the word.
And the word was content-type: text/plain.
cbs
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 207
Erhaltene Danke: 1



BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 4613
Erhaltene Danke: 24

XP home, prof
Delphi 2009 Prof,
BeitragVerfasst: Do 11.09.03 15:52 
dann hab die das seit D5 geändert !!! fies :|

_________________
In the beginning was the word.
And the word was content-type: text/plain.