Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Heftige String Untersuchung!!! Need Help! (https://www.delphipraxis.net/26189-heftige-string-untersuchung-need-help.html)

Doener 19. Jul 2004 21:49


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:
{
"classname" "worldspawn"
}
{
"origin" "48 1320 24"
"classname" "info_player_start"
}
{
"classname" "info_null"
"origin" "632 288 40"
"targetname" "t1"
}
das sind nun die gesammten Entity-Infos von einer kleinen map. Die einzelnen Entiies werden von den Klammern getrennt => diese map hat 3 Entities.

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]

ibp 19. Jul 2004 21:57

Re: Heftige String Untersuchung!!! Need Help!
 
schau dir mal die funktion pos in der oh an, damit lässt sich schon einiges machen...

ripper8472 19. Jul 2004 22:00

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

Doener 19. Jul 2004 22:06

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

ibp 19. Jul 2004 22:27

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';

Rackergen2 19. Jul 2004 23:04

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;
...

dizzy 19. Jul 2004 23:42

Re: Heftige String Untersuchung!!! Need Help!
 
Zitat:

Zitat von Rackergen2
Probiere es doch mit INI-Dateien

...oder XML

Doener 20. Jul 2004 12:19

Re: Heftige String Untersuchung!!! Need Help!
 
thx für den Tipp mit dem record! Das is optimal! :thuimb:

Rackergen2 20. Jul 2004 15:46

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;

Doener 20. Jul 2004 16:19

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:
sections:=ini.readsections;
muss das nicht so heißen:
Delphi-Quellcode:
ini.readsections(sections);
Anders gehts bei mir mal nicht.


Alle Zeitangaben in WEZ +1. Es ist jetzt 05:52 Uhr.
Seite 1 von 2  1 2      

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