AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi Heftige String Untersuchung!!! Need Help!
Thema durchsuchen
Ansicht
Themen-Optionen

Heftige String Untersuchung!!! Need Help!

Ein Thema von Doener · begonnen am 19. Jul 2004 · letzter Beitrag vom 21. Jul 2004
Antwort Antwort
Seite 1 von 2  1 2      
Doener

Registriert seit: 19. Jul 2004
7 Beiträge
 
#1

Heftige String Untersuchung!!! Need Help!

  Alt 19. Jul 2004, 21:49
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....

THX
Julian

[edit=sakura] [code]Tags Mfg, sakura[/edit]
  Mit Zitat antworten Zitat
Benutzerbild von ibp
ibp

Registriert seit: 31. Mär 2004
Ort: Frankfurt am Main
1.511 Beiträge
 
Delphi 7 Architect
 
#2

Re: Heftige String Untersuchung!!! Need Help!

  Alt 19. Jul 2004, 21:57
schau dir mal die funktion pos in der oh an, damit lässt sich schon einiges machen...
  Mit Zitat antworten Zitat
ripper8472

Registriert seit: 17. Aug 2003
275 Beiträge
 
#3

Re: Heftige String Untersuchung!!! Need Help!

  Alt 19. Jul 2004, 22:00
erstmal herzlich willkommen in der Delphi-PRAXiS!

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
Christoph
char l[]="\xd6N\x96\xa6\xe6\xce.\xa6\xe4\xce\x04N\x86\xae\ xce\xfc",I,*i=l-1;for(;I=3,*i
++;){while(*i=*i&~(1<<I|1<<7-I)|(*i&1<<I)<<7-2*I|(*i&1<<7-I)>>7-2*I,I--);}puts(l);
  Mit Zitat antworten Zitat
Doener

Registriert seit: 19. Jul 2004
7 Beiträge
 
#4

Re: Heftige String Untersuchung!!! Need Help!

  Alt 19. Jul 2004, 22:06
thx!!
ich werde das mit den Klammern versuchen, dann ist das ganze schonmal in kleinere "Häppchen" zerlegt...
Ach ja ich hab vorher VB benutzt, da war vieles so "leicht"...
  Mit Zitat antworten Zitat
Benutzerbild von ibp
ibp

Registriert seit: 31. Mär 2004
Ort: Frankfurt am Main
1.511 Beiträge
 
Delphi 7 Architect
 
#5

Re: Heftige String Untersuchung!!! Need Help!

  Alt 19. Jul 2004, 22:27
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';
  Mit Zitat antworten Zitat
Rackergen2

Registriert seit: 13. Jul 2004
99 Beiträge
 
Delphi 7 Enterprise
 
#6

Re: Heftige String Untersuchung!!! Need Help!

  Alt 19. Jul 2004, 23:04
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;
...
  Mit Zitat antworten Zitat
Benutzerbild von dizzy
dizzy

Registriert seit: 26. Nov 2003
Ort: Lünen
1.932 Beiträge
 
Delphi 7 Enterprise
 
#7

Re: Heftige String Untersuchung!!! Need Help!

  Alt 19. Jul 2004, 23:42
Zitat von Rackergen2:
Probiere es doch mit INI-Dateien
...oder XML
Fabian K.
INSERT INTO HandVonFreundin SELECT * FROM Himmel
  Mit Zitat antworten Zitat
Doener

Registriert seit: 19. Jul 2004
7 Beiträge
 
#8

Re: Heftige String Untersuchung!!! Need Help!

  Alt 20. Jul 2004, 12:19
thx für den Tipp mit dem record! Das is optimal!
  Mit Zitat antworten Zitat
Rackergen2

Registriert seit: 13. Jul 2004
99 Beiträge
 
Delphi 7 Enterprise
 
#9

Re: Heftige String Untersuchung!!! Need Help!

  Alt 20. Jul 2004, 15:46
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;
  Mit Zitat antworten Zitat
Doener

Registriert seit: 19. Jul 2004
7 Beiträge
 
#10

Re: Heftige String Untersuchung!!! Need Help!

  Alt 20. Jul 2004, 16:19
thx Rackergen2, genau so brauch ichs!!
Da muss ich ja fast nix selber machen
allerdings habe ich n Problem mit dieser Zeile:
sections:=ini.readsections; muss das nicht so heißen:
ini.readsections(sections); Anders gehts bei mir mal nicht.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:58 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz