anpera.net

anpera.net

experimental server @home
Aktuelle Zeit: Mo 09 Jun, 2025 20:16

Alle Zeiten sind UTC + 1 Stunde




Ein neues Thema erstellen Auf das Thema antworten  [ 6 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags: fscanf / sscanf
BeitragVerfasst: Mo 29 Jun, 2009 08:56 
Offline
Freak
Freak
Benutzeravatar

Registriert: Di 01 Mai, 2007 13:57
Beiträge: 1634
Wohnort: Dortmund.
Geschlecht: Männlich
LoGD: Lokal.
Skype: josh.hoiul
Hallo,

für mein Game, habe ich mir überlegt, die Waffen und Rüstungen von der Datenbank in eine Textdatei auszulagern.
Das ist natürlich kein Problem und habe es auch schon hinbekommen.
Allerdings, stört mich eine kleine Sache.
Undzwar:

Im Standart LotGD gibt es Waffen, die mehrere Wörter beinhalten.

z.B:

(Auszug aus der weapons.req)

$this->bbcode_second_pass_code('', '
19 1 4 990 Kleiner Ast
20 1 5 1575 Großer Ast
21 1 6 2250 Dick gepolsterter Kampfstab
22 1 7 2790 Duenn gepolsterter Kampfstab
23 1 8 3420 Hölzerne Fassdaube
24 1 9 4230 Hölzernes Übungsschwert
25 1 10 5040 Stumpfes Bronzekurzschwert
26 1 11 5850 Gut verarbeitetes Bronzekurzschwert
27 1 12 6840 Rostiges Stahlkurzschwert
28 1 13 8010 Stumpfes Stahlkurzschwert
29 1 14 9000 Scharfes Stahlkurzschwert
30 1 15 10350 Stahlkurzschwert eines Knappen')

Diese habe ich dann mit fscanf ausgelesen und so weiter und sofort.
Allerdings, stört mich die Sache, das man für jedes neue Wort ein neues %s braucht.

$this->bbcode_second_pass_code('', 'fscanf($data, '%u %u %u %u %s %s %s %s')):')

$this->bbcode_second_pass_code('', '%u > Id
%u > Level
%u > Damage
%u > Preis
%s > Name
%s > Name
%s > Name
%s > Name')

Gibt es eine möglichkeit, nur ein %s zu benutzen?
Habe schon eine andere Schreibweise versucht, allerdings klappt das auch nicht. Und ich finde es irgendwie unschicklich das so zu schreiben.. :(

Lg,
My.

_________________
Never change a running system. Bullshit! ;)


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: fscanf / sscanf
BeitragVerfasst: Mo 29 Jun, 2009 09:06 
Offline
Freak
Freak

Registriert: So 30 Okt, 2005 17:48
Beiträge: 1408
Wohnort: PB
Geschlecht: Männlich
LoGD: http://dav.blood-reaver.de/lotgd/
Warum so kompliziert? Du könntest auch ganz einfach auf das bewährte System "Comma Separated Values" (CSV) zurück greifen und deine Einträge mit Kommata Trennen. Anführungszeichen währen auch eine Idee.

Das ganze hätte auch den Vorteil, das du diese Listen dann beispielsweise mit Tabellenkalkulationsprogrammen bearbeiten (lassen) kannst. MySQL kann die dann übrigens auch lesen ;-)

Auric

_________________
Mehr oder minder inaktiv


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: fscanf / sscanf
BeitragVerfasst: Di 07 Jul, 2009 10:41 
Offline
Freak
Freak
Benutzeravatar

Registriert: Sa 15 Okt, 2005 14:06
Beiträge: 864
Geschlecht: Männlich
LoGD: http://shinobilegends.com
Zitat:
Die Funktion file() ist identisch mit readfile(), außer dass die eingelesene Datei als Array zurückgegeben wird. Jedes Feld des Arrays korrespondiert mit einer Zeile der Datei.


Und dann wie Auric sagt: CSV ... Leerzeichen geht bei Dir nicht ;) Wie soll er denn wissen ob Du 3 oder 10 Wörter hast für ne Waffe...

$zeileninhalt=explode(";",$zeile);

<... und schon hast alle Felder sortiert.

Jetzt nimmst noch ne erste Zeile für die Feldnamen... und voila...

_________________
Entwicklung Lotgd 1.2.2 +nb
1.2.1 +nb ist final

Bugreports/Testing erwünscht, http://nb-core.org

Wichtige Info für Programmierersucher:
viewtopic.php?f=34&t=4285


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: fscanf / sscanf
BeitragVerfasst: Di 07 Jul, 2009 12:02 
Offline
Marquis Pherae
Marquis Pherae

Registriert: Mi 09 Feb, 2005 16:01
Beiträge: 3925
Wohnort: Basel
Geschlecht: Männlich
Doch, Leerzeichen geht in diesem besonderen Fall auch, solange der Waffennamen am Schluss bleibt.
explode() akzeptiert hier einen dritten Parameter "int $limit", mit dem man hier in 5 Teile ($limit = 5) splitten könnte. Der 5te Teil beinhaltet dann den ganzen Rest, das noch nicht getrennt wurde.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: fscanf / sscanf
BeitragVerfasst: Sa 11 Jul, 2009 05:38 
Offline
Freak
Freak
Benutzeravatar

Registriert: Di 01 Mai, 2007 13:57
Beiträge: 1634
Wohnort: Dortmund.
Geschlecht: Männlich
LoGD: Lokal.
Skype: josh.hoiul
$this->bbcode_second_pass_code('', 'Strtr(DATA, SEARCH, REPLACE);')

Tut es dann auch :>

_________________
Never change a running system. Bullshit! ;)


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: fscanf / sscanf
BeitragVerfasst: So 12 Jul, 2009 14:53 
Offline
Freak
Freak

Registriert: So 30 Okt, 2005 17:48
Beiträge: 1408
Wohnort: PB
Geschlecht: Männlich
LoGD: http://dav.blood-reaver.de/lotgd/
StrTr ist aber doch nicht für das Parsen von Strings, sondern für deren Erstellung/Formatierung gedacht, oder bin ich jetzt falsch verbunden?

_________________
Mehr oder minder inaktiv


Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 6 Beiträge ] 

Alle Zeiten sind UTC + 1 Stunde


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 28 Gäste


Du darfst keine neuen Themen in diesem Forum erstellen
Du darfst keine Antworten zu Themen in diesem Forum erstellen
Du darfst deine Beiträge in diesem Forum nicht ändern
Du darfst deine Beiträge in diesem Forum nicht löschen
Du darfst keine Dateianhänge in diesem Forum erstellen

Suche nach:
Gehe zu:  
POWERED_BY
Deutsche Übersetzung durch phpBB.de
anpera.net - Impressum