![]() |
nach String suchen und den nachfolgenden String verwenden
Hallo, ich möchte die in einer Textdatei abgespeicherten Daten zu den Ranglisten in meinem Programm verwenden.
abgespeichert sind sie in der Textdatei folgendermaßen: Name Rang Johannes 48 Thomas 64 Peter 2 . . usw. ich möchte jetzt zB. Peters Rang ausgeben. Wie mache ich das? (Habe eine halbe Stunde Beiträge über "string[pos]" und ähnliches gelesen, bin aber nicht klüger geworden) Danke für Eure Hilfe! |
Re: nach String suchen und den nachfolgenden String verwende
Name Rang
Johannes 48 Thomas 64 Peter 2 sollte in etwas so gehen
Delphi-Quellcode:
Grüße
rang:=copy(string,pos(' ',string)+1,length(string));
Klaus |
Re: nach String suchen und den nachfolgenden String verwende
hi klaus,
danke für die schnelle Antwort, leider funktioniert es irgendwie nicht. Ich stell mal die Prozedur rein. Bei "pos:= ..usw" kommen drei Fehlermeldungen und bei rang:= .. ebenfalls
Delphi-Quellcode:
procedure TForm1.Button4Click(Sender: TObject);
var sl: TStringlist; position: Byte; rang: string; begin sl:=TStringList.create; sl.loadfromFile('C:\Platz.txt'); pos := sl.strings.indexof('Peter'); rang := sl.Strings[pos][' ',string)+1,length(string)); // position := pos(Form1.Caption, sl); // position ist nun 13 button4.Caption := sl.string[pos]; sl.free; end; |
Re: nach String suchen und den nachfolgenden String verwende
Delphi-Quellcode:
ein wenig umgebaut, unter der Annahme das der Name und Rang in einer Zeile stehen und
procedure TForm1.Button4Click(Sender: TObject);
var sl: TStringlist; position: Byte; rang: string; s :String; i:Byte; begin sl:=TStringList.create; sl.loadfromFile('C:\Platz.txt'); for i:=0 to sl.count -1 do begin s:=sl[i]; if pos('Peter',s) <> 0 then rang:=copy(s,pos(' ',s)+1,length(s)); // tu was mit dem Rang end; // button4.Caption := sl.string[pos]; sl.free; end; durch ein Leerzeichen getrennt sind. sl.IndexOF liefert nur eine Position wenn der gesamte String übereinstimmt, mit einem Teilstring wie z.B. Peter funktioniert das nicht. pos ist eine Funktion welche die Position eines Teilstring in einem String zurückgibt. Grüße Klaus |
Re: nach String suchen und den nachfolgenden String verwende
Zitat:
|
Re: nach String suchen und den nachfolgenden String verwende
Hallo Matthias123,
kannst du den Aufbau der Textdatei ändern? Ich würde dir zu einem anderen Trennzeichen raten, um eventuelle Fehler zu vermeiden. Wie gehst du beispielsweise mit Doppelnamen um, die nicht durch einen Bindestrich verbunden sind ("Hans Peter")? Wenn du als Trennzeichen das "=" nimmst, kannst du die Eigenschaft ![]()
Delphi-Quellcode:
Ab Delphi 2005 ist das Trennzeichen frei wählbar (NameValueSeparator).
var
sl : TStringList; Rang : Integer; begin sl := TStringList.Create; sl.LoadFromFile('C:\Platz.txt'); Rang := StrToIntDef(sl.Values['Hans Peter'], -1); sl.Free; end; Gruß Hawkeye |
Re: nach String suchen und den nachfolgenden String verwende
Klaus01, es funkioniert DANKE! Ich dachte schon das wird nie was. Ich werds mir merken Hawkeye219! Die Textdatei kann ich nach meinen Wünschen gestalten, also wäre es gut möglich.
Also schönen Feiertag an alle. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:15 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 by Thomas Breitkreuz