AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

wie trenne ich textzahlen??

Ein Thema von devilone · begonnen am 26. Apr 2006 · letzter Beitrag vom 27. Apr 2006
Antwort Antwort
Seite 1 von 2  1 2      
devilone

Registriert seit: 27. Jun 2004
18 Beiträge
 
#1

wie trenne ich textzahlen??

  Alt 26. Apr 2006, 12:08
hallo erstmal

habe folgendes problem..

ich habe eine datei, die einen ini änlichen aufbau hat
Delphi-Quellcode:
[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
diese datei lass ich mir in einer combobox und in einem valuelisteditor ausgeben .
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
  Mit Zitat antworten Zitat
Benutzerbild von Mavarik
Mavarik

Registriert seit: 9. Feb 2006
Ort: Stolberg (Rhld)
4.126 Beiträge
 
Delphi 10.3 Rio
 
#2

Re: wie trenne ich textzahlen??

  Alt 26. Apr 2006, 12:11
hmm

delete(S,1,length('[creature ')); ???
s := copy(S,1,pred(Pos(']',S)));

So?
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.136 Beiträge
 
Delphi 12 Athens
 
#3

Re: wie trenne ich textzahlen??

  Alt 26. Apr 2006, 12:14
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
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Benutzerbild von Mavarik
Mavarik

Registriert seit: 9. Feb 2006
Ort: Stolberg (Rhld)
4.126 Beiträge
 
Delphi 10.3 Rio
 
#4

Re: wie trenne ich textzahlen??

  Alt 26. Apr 2006, 12:22
Zitat von himitsu:
@Mavarik: eine Stringoperation reicht zu - wozu 2 (Delete+Copy), wenn copy vollkommen ausreichend ist
Klar gibt es 100 Möglichkeiten.

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
  Mit Zitat antworten Zitat
devilone

Registriert seit: 27. Jun 2004
18 Beiträge
 
#5

Re: wie trenne ich textzahlen??

  Alt 26. Apr 2006, 13:59
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..
  Mit Zitat antworten Zitat
Benutzerbild von Mavarik
Mavarik

Registriert seit: 9. Feb 2006
Ort: Stolberg (Rhld)
4.126 Beiträge
 
Delphi 10.3 Rio
 
#6

Re: wie trenne ich textzahlen??

  Alt 26. Apr 2006, 14:07
Zitat von devilone:
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:
...
  if (s <> '') and (s[1] = '[') and (s[Length(s)] = ']') then
    begin
     delete(s,1,1); // Auch doppelt, hier ist schon die [ weg
     delete(s,length(s),1); // Hier ist schon die ] weg
      delete(s,1,length('[creature')); // hier muss noch ein space mahr dran
     s:=copy(s,pred(pos(']',s))); // also ist Pos = 0
     vvvv.combobox1.Items.Add(s);
...
...

ich versteh das irgend wie nicht warum die liste jetzt leer ist..
Deswegen... siehe oben!

PS.: length('[creature ') kannst Du natürlich gegen 10 ersetzen...
Dachte du würdest da einen String angeben und keine Konstante
  Mit Zitat antworten Zitat
devilone

Registriert seit: 27. Jun 2004
18 Beiträge
 
#7

Re: wie trenne ich textzahlen??

  Alt 26. Apr 2006, 15:33
hmm irgendwie bin ich da zu duselig zu.. die liste bleibt immer noch leer..

ich habe hir doch die bedingung..
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];
  [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;
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..

i am not perfect..ich bin ein mensch...
  Mit Zitat antworten Zitat
Benutzerbild von Mavarik
Mavarik

Registriert seit: 9. Feb 2006
Ort: Stolberg (Rhld)
4.126 Beiträge
 
Delphi 10.3 Rio
 
#8

Re: wie trenne ich textzahlen??

  Alt 26. Apr 2006, 15:37
Zitat von devilone:
hmm irgendwie bin ich da zu duselig zu.. die liste bleibt immer noch leer..

ich habe hir doch die bedingung..
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];
  [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))); // <---- die ] ist doch weg!!!! Also ist POS 0!!!
     vvvv.combobox1.Items.Add(s);
      end;
  end;
end;
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..

i am not perfect..ich bin ein mensch...
  Mit Zitat antworten Zitat
devilone

Registriert seit: 27. Jun 2004
18 Beiträge
 
#9

Re: wie trenne ich textzahlen??

  Alt 26. Apr 2006, 15:50
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..
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#10

Re: wie trenne ich textzahlen??

  Alt 26. Apr 2006, 18:17
Hallo Teufel #1,

wenn du anstelle von TIniFile TMemIniFile verwendest, geht alles schneller und die Datei darf auch größer werden.

Delphi-Quellcode:
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;
Grüße vom marabu
  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 01:27 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