![]() |
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; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:10 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