Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi nach String suchen und den nachfolgenden String verwenden (https://www.delphipraxis.net/79934-nach-string-suchen-und-den-nachfolgenden-string-verwenden.html)

Matthias123 31. Okt 2006 13:41


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!

Klaus01 31. Okt 2006 13:44

Re: nach String suchen und den nachfolgenden String verwende
 
Name Rang
Johannes 48
Thomas 64
Peter 2

sollte in etwas so gehen

Delphi-Quellcode:
rang:=copy(string,pos(' ',string)+1,length(string));
Grüße
Klaus

Matthias123 31. Okt 2006 14:14

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;

Klaus01 31. Okt 2006 14:24

Re: nach String suchen und den nachfolgenden String verwende
 
Delphi-Quellcode:
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;
ein wenig umgebaut, unter der Annahme das der Name und Rang in einer Zeile stehen und
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

malo 31. Okt 2006 14:31

Re: nach String suchen und den nachfolgenden String verwende
 
Zitat:

Zitat von Matthias123
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

Du könntest uns auch sagen welche Fehler auftreten :)

Hawkeye219 31. Okt 2006 14:47

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-Referenz durchsuchenTStrings.Values der Stringliste nutzen:

Delphi-Quellcode:
var
  sl : TStringList;
  Rang : Integer;
begin
  sl := TStringList.Create;
  sl.LoadFromFile('C:\Platz.txt');
  Rang := StrToIntDef(sl.Values['Hans Peter'], -1);
  sl.Free;
end;
Ab Delphi 2005 ist das Trennzeichen frei wählbar (NameValueSeparator).

Gruß Hawkeye

Matthias123 31. Okt 2006 15:01

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 18:51 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