![]() |
Heftige String Untersuchung!!! Need Help!
Hallo,
wie in meinem letzten Post erwähnt, bin ich dabei ein Game zu programmieren und habe Probleme die Entityliste aus der BSP Datei zu lesen.... Da ich darauf noch keine Antwort erhielt, versuche ich das Problem anders zu lösen: Ich kann die Liste in einen String einlesen, der Inhalt sieht dann so aus
Code:
das sind nun die gesammten Entity-Infos von einer kleinen map. Die einzelnen Entiies werden von den Klammern getrennt => diese map hat 3 Entities.
{
"classname" "worldspawn" } { "origin" "48 1320 24" "classname" "info_player_start" } { "classname" "info_null" "origin" "632 288 40" "targetname" "t1" } Wie untersuche ich nun den String und isoliere die Werte der einzelnen Parameter (wie z.B. classname vom 2. entity => info_player_start)? Schwierig wird die Sache auch dadurch, dass es sehr viel mehr als nur 3 Entities werden können und die Parameter (z.B. classname, origin und targetname) nicht immer in der gleichen Reihenfolge vorkommen.... Wie kann ich es realisieren, dass ich wenn ich die classname des Entities eingebe( z.B. info_null) dazu den passenden Origin erhalte? Da ich erst vor ein paar tagen auf delphi umgestiegen bin weiss ich gerade nicht recht wie anfangen.... :pale: :pale: :oops: THX Julian [edit=sakura] [code]Tags Mfg, sakura[/edit] |
Re: Heftige String Untersuchung!!! Need Help!
schau dir mal die funktion pos in der oh an, damit lässt sich schon einiges machen...
|
Re: Heftige String Untersuchung!!! Need Help!
erstmal herzlich willkommen in der Delphi-PRAXiS! :party:
Nun, womit hast du vor Delphi gearbeitet? Wie siehts mit den Sprachkenntnissen zu Pascal/Delphi aus? Du könntest den String abfahren und nach öffnenden und schließenden geschweiften Klammern suchen. Wenn du ein Stück gefunden hast, das in Klammern steht, dann könntest du diesen Teilstring an eine Unterfunktion geben, die dir diesen string weiter auswertet und irgendwo abspeichert (in Objekt, Array, ...) [edit] da war wohl jemand schneller Gruß, Christoph |
Re: Heftige String Untersuchung!!! Need Help!
thx!!
ich werde das mit den Klammern versuchen, dann ist das ganze schonmal in kleinere "Häppchen" zerlegt... Ach ja ich hab vorher VB :oops: benutzt, da war vieles so "leicht"... |
Re: Heftige String Untersuchung!!! Need Help!
wieviele parameter kommen den pro entity zusammen ?
und sind das immer die gleichen, auch wenn in einige nicht belegt sind? dann wäre es sinnvoll einen eigenen typ zu deklarieren und mit dem ein array benutzen z.b.:
Delphi-Quellcode:
type
tentity = record classname :string; origin :string; targetname:string; end; ... private entityinfo = array of tentity; ... procedure... ... setlength(entityinfo,3); entityinfo[2].classname:='info_null'; entityinfo[2].origin:='632 288 40'; entityinfo[2].targetname:='t1'; |
Re: Heftige String Untersuchung!!! Need Help!
Probiere es doch mit INI-Dateien:
Code:
[1]
classname=worldspawn [2] origin=48 1320 24 classname=info_player_start [3] classname=info_null origin=632 288 40 targetname=t1
Delphi-Quellcode:
uses
..., IniFiles; ... var i: Integer; ini: TIniFile; sections: TStringlist; classname: array of string; ... ... ini:=TInifile.Create('C:\Test\Orte.ini'); sections:=TStringlist.create; sections:=ini.readsections; setlength(classname,sections.count); for i:=0 to sections.count-1 do begin classname[i]:=ini.readstring(inttostr(i),'classname',''); ... end; ... |
Re: Heftige String Untersuchung!!! Need Help!
Zitat:
|
Re: Heftige String Untersuchung!!! Need Help!
thx für den Tipp mit dem record! Das is optimal! :thuimb:
|
Re: Heftige String Untersuchung!!! Need Help!
Was hälst du von einer Mischung von beiden? Verwalten mit records und speichern und lesen mit INI?
Delphi-Quellcode:
uses´
IniFiles; ... type tentity = record classname :string; origin :string; targetname:string; end; ... private entityinfo: array of tentity; ... procedure... var sections: TStringlist; ini: TIniFile; i: Integer; ... ini:=TInifile.Create('C:\Test\Orte.ini'); //lässt sich auch durch einen Befehl auf den EXE-Ordner fixieren sections:=TStringlist.create; sections:=ini.readsections; setlength(entityinfo,sections.count); for i:=0 to length(entityinfo)-1 do begin entityinfo[i].classname:=ini.Readstring(inttostr(i),'classname',''); entityinfo[i].origin:=ini.Readstring(inttostr(i),'origin',''); entityinfo[i].targetname:=ini.Readstring(inttostr(i),'targetname',''); end; |
Re: Heftige String Untersuchung!!! Need Help!
thx Rackergen2, genau so brauch ichs!!
Da muss ich ja fast nix selber machen :shock: :-D allerdings habe ich n Problem mit dieser Zeile:
Delphi-Quellcode:
muss das nicht so heißen:
sections:=ini.readsections;
Delphi-Quellcode:
Anders gehts bei mir mal nicht.
ini.readsections(sections);
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:52 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz