![]() |
wie trenne ich textzahlen??
hallo erstmal
habe folgendes problem.. ich habe eine datei, die einen ini änlichen aufbau hat
Delphi-Quellcode:
diese datei lass ich mir in einer combobox und in einem valuelisteditor ausgeben .
[creature 0]
name=Spawn Point (Only GM can see it) faction=35 level=255 money=-1 attack=2000 2200 bounding_radius=1.5 combat_reach=2.25 damage=0 2 maxhealth=56 model=262 size=0.5 type=1 maxmana=0 ............................. [creature 5655765767] name=Einstiegspunkt faction=35 level=255 money=-1 attack=2000 2200 bounding_radius=1.5 combat_reach=2.25 damage=0 2 maxhealth=56 model=262 size=0.5 type=1 maxmana=0 Und zwar so das die secktion in der combobox aufgelistet wir und die secktionsschlüssel in dem valuelisteditor. jetzt möchte ich aber das ich die zahle/n( [creatur 0] ),in z.b. einem Label oder so ausgegeben werden ohne das Creatur davor.... wie mache ich das am besten?? würde mich über hilfe freuen |
Re: wie trenne ich textzahlen??
hmm
delete(S,1,length('[creature ')); ??? s := copy(S,1,pred(Pos(']',S))); So? |
Re: wie trenne ich textzahlen??
da gibt es erstmal POS, dann moch POSEX und COPY würde dir eventuell auch noch helfen ^^
- leerzeichen zuchen, oder was auch immer (halt das Zeichen vor der Zahl, oder auch das erste Zeichen der zahl suchen) - ']' suchen - und per copy den Teil dazwischen kopieren [add] Roter Kasten, wo bleibst du? @Mavarik: eine Stringoperation reicht zu - wozu 2 (Delete+Copy), wenn copy vollkommen ausreichend ist |
Re: wie trenne ich textzahlen??
Zitat:
Dadurch das Copy(S,1 ist aber Pos immer richtig, sonst müsste man beim 2. Pos wieder die Startpos abziehen... 2. Wonach willst Du suchen für den Anfang der Zahl? Nach ' '? Es könne aber auch eine Bezeichnung mit [New Creature 2938] geben.... Oder so . Blub bla red raus.... Frank |
Re: wie trenne ich textzahlen??
ja das sieht schon gut aus ..:-)
aber jetzt ist mein valuelisteditor leer.. und das soll nicht sein..wo ist den hier mein fehler...
Delphi-Quellcode:
...
procedure analysiere(datei:string);
begin sl:=tstringlist.Create; sl.LoadFromFile('creatures.scp'); sl.SaveToFile(extractfilepath(paramstr(0))+'Creatures.scp.temp'); for i:=0 to sl.Count-1 do begin s:=sl.Strings[i]; if (s <> '') and (s[1] = '[') and (s[Length(s)] = ']') then begin delete(s,1,1); delete(s,length(s),1); delete(s,1,length('[creature')); s:=copy(s,pred(pos(']',s))); vvvv.combobox1.Items.Add(s); end; end; end; procedure sectionlesen(section:string); begin sl:=tstringlist.Create; ini.ReadSection(section,sl); for i:=0 to sl.Count-1 do begin tLabel.ClassName; vvvv.ValueListEditor1.InsertRow(sl[i],ini.ReadString(section,sl[i],''),true); end; end; procedure Tvvvv.ComboBox1Change(Sender: TObject); begin if Valuelisteditor1.RowCount >= 1 then begin valuelisteditor1.Strings.Clear; begin sectionlesen(combobox1.Items[combobox1.itemindex]); end; label1.Caption:=valuelisteditor1.Values['name']; label2.Caption:=combobox1.Text; end; end; ich versteh das irgend wie nicht warum die liste jetzt leer ist.. |
Re: wie trenne ich textzahlen??
Zitat:
PS.: length('[creature ') kannst Du natürlich gegen 10 ersetzen... Dachte du würdest da einen String angeben und keine Konstante |
Re: wie trenne ich textzahlen??
hmm irgendwie bin ich da zu duselig zu.. die liste bleibt immer noch leer..
ich habe hir doch die bedingung..
Delphi-Quellcode:
wie sage ich ihm das jetzt das er nur das Creatur aus der [Creatur 8767] entfernt, weil die [ ] nimt er ja weg..aber den rest gerade auch..
procedure analysiere(datei:string);
begin sl:=tstringlist.Create; sl.LoadFromFile('creatures.scp'); sl.SaveToFile(extractfilepath(paramstr(0))+'Creatures.scp.temp'); for i:=0 to sl.Count-1 do begin s:=sl.Strings[i]; [b]if (s <> '') and (s[1] = '[') and (s[Length(s)] = ']') then[/b] begin delete(s,1,1); delete(s,length(s),1); delete(s,1,length('[creature')); s:=copy(s,pred(pos(']',s))); vvvv.combobox1.Items.Add(s); end; end; end; i am not perfect..ich bin ein mensch... |
Re: wie trenne ich textzahlen??
Zitat:
|
Re: wie trenne ich textzahlen??
ja..in der combobox ist das ja auch richtig..
er zählt nur noch die nummern auf , aber der valuelisteditor bleibt leer.. und das ist mein problem jetzt, da ich ja den inhalt für den valuelisteditor aus der combobox auslese.. und den inhalt des valuelisteditors in label ausgebe.. siehe zweiten post.. |
Re: wie trenne ich textzahlen??
Hallo Teufel #1,
wenn du anstelle von TIniFile TMemIniFile verwendest, geht alles schneller und die Datei darf auch größer werden.
Delphi-Quellcode:
Grüße vom marabu
type
TDemoForm = class(TForm) ActionPanel: TPanel; StatusBar: TStatusBar; Button: TButton; ValueListEditor: TValueListEditor; ComboBox: TComboBox; procedure FormCreate(Sender: TObject); procedure FormDestroy(Sender: TObject); procedure ButtonClick(Sender: TObject); procedure ComboBoxChange(Sender: TObject); private mif: TMemIniFile; end; var DemoForm: TDemoForm; implementation {$R *.dfm} uses StrUtils; procedure TDemoForm.FormCreate(Sender: TObject); begin mif := TMemIniFile.Create('c:\daten\dp\creatures.ini'); end; procedure TDemoForm.FormDestroy(Sender: TObject); begin mif.Free; end; function After(const S, Pattern: String): String; var i: Integer; begin i := Pos(Pattern, S); if i = 0 then Result := '' else Result := Copy(S, i + Length(Pattern), Length(S)); end; procedure TDemoForm.ButtonClick(Sender: TObject); var s: TStrings; i: Integer; begin with ComboBox do begin mif.ReadSections(Items); for i := 0 to Pred(Items.Count) do Items[i] := After(Items[i], 'creature '); end; end; procedure TDemoForm.ComboBoxChange(Sender: TObject); begin mif.ReadSectionValues('creature ' + ComboBox.Text, ValueListEditor.Strings); end; |
Re: wie trenne ich textzahlen??
hmm wofür hast du das : Items[i] := After(Items[i], 'creature '); deklariert??
da jault der bei mir rum.. |
Re: wie trenne ich textzahlen??
Durch diese Zeile in der Schleife wird 'creature ' aus dem section name entfernt, damit nur die Nummer in der ComboBox angezeigt wird.
marabu |
Re: wie trenne ich textzahlen??
ja..ist klar, aber der jault rum das er After nicht kennt..
|
Re: wie trenne ich textzahlen??
Bringe es (After) "ihm" doch einfach bei - den Code dafür habe ich dir ja mitgegeben.
marabu |
Re: wie trenne ich textzahlen??
und wie .. ich bin noch nicht so gut in dem ganzen..
|
Re: wie trenne ich textzahlen??
es sollte eigentlich funktionieren wenn Du den Code
in den Implementation teil der Unit kopierst. So wie es marabu in seinem Beispiel auch hat. Grüße Klaus |
Re: wie trenne ich textzahlen??
Du könntest die Funktion After() aus meinem Beitrag #10 einfach an den Beginn des implementation Abschnitts der Unit kopieren, in der du die Funktion benutzen möchtest.
marabu |
Re: wie trenne ich textzahlen??
ja... danke jetzt hat es geklapt..
wie schaffe ich es jetzt das ich das jetzt 4mal in einer form habe , also in einem fenster.. und daie auch gleichzeitig nutzen kann.. |
Re: wie trenne ich textzahlen??
Was willst du denn viermal auf deiner Form haben? Den ValueListEditor? Das wird nicht besonders gut aussehen und ist doch auch garnicht nötig.
marabu |
Re: wie trenne ich textzahlen??
die combobox..aber mit mitverschiedenen daten,weil ich habe volgendes vor
1.laden der datei in die combobox1 und valuelisteditor1 ///erledigt 2.aus der combobox den zahlenwert in ein label1 ausgeben, aus dem valuelisteditor einen eintrag in labeb2 ausgeben ///erledigt 3.label1 über button1.cklick in ein listbox eintragen ////erledigt so jetzt solten sich 1,2,3 wiederholen, aber mit einer anderen datei, in einer neuen combobox und valuelisteditor. weil ,ich habe 3 verschiedene datein , 1und2 mit ca. 2,6-14mb und die 3 mit ca. max 40 mb in der datei1 und 2 enthalten sind, aber nicht in dem selben aufbau wie in datei 1 und 2 . daher brauche ich die werte die ich oben extrahiere aus datei 1 und 2, um aus datei 3 die einträge in eine vierte datei zu exportieren. in datei 3 sind noch werte drin die ich gerne noch in eine 5 datei extrahieren möchte um dadurch noch einen filter zu generieren, um sie so zu nutzen wie in schritt 1,2,3.. hier mal die aufbauten der dateien
Delphi-Quellcode:
so das man dann entweder nach z.b Creatur/map/creaturmap.save* erhält.[creature 38] ///////////////aus datei 1///////////////// suchwert für datei 3 SPAWN=38 name=Defias Thug flags1=080000 faction=17 level=3..4 money=3..7 attack=1970 2167 bounding_radius=0.312 combat_reach=2.25 damage=4 5 equipmodel=0 7487 2 7 1 13 3 0 0 0 loottemplate=38 maxhealth=89 model=5035 model1=5036 speed=0.92 type=7 maxmana=0 [gameobj 80] ///////////////aus datei 2/////////////////suchwert für datei 3 ENTRY=80 name=Old Coast Road type=5 sound1=1 sound0=1 flags=00 loot=4918 99.9365 model=22 [OBJECT] //////////////////////////aus datei 3 ///////////// GUID=0150AF TYPE=3 FLAGS=080000000 ENTRY=1 MODEL=262 LEVEL=255 MAP=1 XYZ=3305.462891 -256.660431 125.954506 1.848397 MAXHEALTH=9999 SIZE=0.500000 FACTION=35 SPAWNTIME=180 230 SPAWNDIST=20.000000 25.000000 SPAWN=38 1 [OBJECT] //////////////////////aus datei 3////////// GUID=011F77 TYPE=5 ENTRY=80 MODEL=22 XYZ=-9979.133789 1007.325378 32.758778 0.099154 GTYPE=5 ROTATION=0.100685 -0.025144 0.052291 0.993225 /////////////////////////////////////datei 4 soll so aus sehen///////////////////////// [an morgen] map=1 [mittendrin] map=485 //////////////so das in datei 5 das so aus sieht//////////////////////// [OBJECT] GUID=0DD000000DD49D915 TYPE=3 LINK=01B5FD ENTRY=3103 MODEL=1940 LEVEL=5 MAP=1 XYZ=-1451.774902 -5255.200195 -1.923091 4.724797 MAXHEALTH=334 MAXPOWERS=220 0 0 0 0 DAMAGE=0 8.000000 12.000000 DELAY=1910 2101 SPEED=0.530000 SIZE=0.550000 RADIUS=0.191400 REACH=2.190000 FACTION=129 CTYPE=7 [OBJECT] GUID=011F72 TYPE=5 ENTRY=177365 MODEL=4713 MAP=1 XYZ=-1922.371948 1808.765991 66.760757 -2.426008 GTYPE=10 ROTATION=0.000000 0.000000 0.936672 -0.350207 *die dateien haben im 1und 2 fall die endung .scp und die 3 .save und was auch noch sein muss ist, das sektionen gezählt werden
Delphi-Quellcode:
und das muss in der 6 zeile der datei stehen..
[OBJECTS]
total=123023 ich weis das wird nicht einfach, aber ist halt ne herausvorderung und ne gute sache zum lernen.. hoffe trotzdessen das ihr mir helft.. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:48 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