![]() |
Textdatei durchsuchen (mit mehreren Ergebnissen)
Hallo,
ich habe vor eine bestimmte Text-Datei zu durchsuchen nach Steam IDs. Diese müssen 2 mal : beinhalten und das klappt auch alles soweit.
Delphi-Quellcode:
procedure TForm1.FormCreate(Sender: TObject);
function CountOfChar(s:string;AChar:Char):integer; var _i : integer; begin Result := 0; for _i := 1 to Length(s) do begin if s[_i] = AChar then inc(Result); end; end; begin Reg := TRegistry.Create; Reg.RootKey := HKEY_LOCAL_MACHINE; Reg.OpenKey('SOFTWARE\Valve\Steam',FALSE); Path := reg.ReadString('InstallPath'); sl := TStringList.Create; sl.LoadFromFile(Path+'/Steam.log'); sl.CaseSensitive := FALSE; for line := 0 to sl.Count -1 do begin la := Pos(' for ',sl.Strings[line]); if la <> 0 then begin s := Copy(sl.Strings[line],la+5,length(sl.Strings[line])-la+5); if Pos(' ',s) = 0 then // prüft ob s leerzeichen hat if CountOfChar(s,':') = 2 then // Steam Id muss zwei : haben Edit1.Text := s; end; end; end; Doch in dieser Datei stehen auch mal 5 Steam IDs drin und wie schaffe ich es nun, dass alle verschiedenen STeam IDs ausgelesen werden ? Wäre cool wenn mir jemand helfen würde ;) Grüße! |
Re: Textdatei durchsuchen (mit mehreren Ergebnissen)
Deinem Code nach zu urteilen würde ich sagen:
Auslesen müsste er doch alle, nur angezeigt wird halt immer nur die letzte. Dann müsstest du vielleicht mit einer ListBox arbeiten oder so. :coder: : |
Re: Textdatei durchsuchen (mit mehreren Ergebnissen)
Aber wie schaffe ich es, dass keine doppelten Steam IDs angezeigt werden ?
|
Re: Textdatei durchsuchen (mit mehreren Ergebnissen)
Hi,
mit einer For- Schleife durch die listbox gehen und nur dann add aufrufen, wenn der String noch nicht in der Listbox ist. mfg BrunoT
Delphi-Quellcode:
Ungetestet
gefunden:=false;
For i:=0 to Listbox.Items.Count-1 do if Listbox.Items[i]=s then gefunden:=True; If not gefunden then Listbox.Items.add(s); |
Re: Textdatei durchsuchen (mit mehreren Ergebnissen)
wie muss ich "gefunden" dnen definieren ?
Ich verwende keine Listbox sondern ein Memofeld, wie mache ich es da :( ? |
Re: Textdatei durchsuchen (mit mehreren Ergebnissen)
Zitat:
Also wird so programmiert, dass man Listbox oder Memofeld Ratz-Fatz austauschen kann:
Delphi-Quellcode:
var
liste: TStrings; begin liste := Memo1.Lines; // oder liste := ListBox1.Items; .... for line := 0 to sl.Count -1 do begin la := Pos(' for ',sl.Strings[line]); if la <> 0 then begin s := Copy(sl.Strings[line],la+5,length(sl.Strings[line])-la+5); if Pos(' ',s) = 0 then // prüft ob s leerzeichen hat if CountOfChar(s,':') = 2 then // Steam Id muss zwei : haben begin if liste.IndexOf(s) < 0 then // ist s schon in Liste liste.Add(s); // nein: also dazu end; end; end; |
Re: Textdatei durchsuchen (mit mehreren Ergebnissen)
Hi shima,
das kannte ich noch nicht: :gruebel:
Delphi-Quellcode:
man kann alt werden wie ´ne Kuh und lernt immer noch dazu! :???:
if liste.IndexOf(s) < 0 then
schöne Lösung, gefällt mir |
Re: Textdatei durchsuchen (mit mehreren Ergebnissen)
Nur mal so interessehalber: Wie hast du denn sonst bis jetzt geprüft, ob ein Element schon Teil einer Liste war? :gruebel:
|
Re: Textdatei durchsuchen (mit mehreren Ergebnissen)
@tigerman33
zu Pascal- Zeiten war das ganze noch nicht so komfortabel und mit Stringlisten arbeite ich noch nicht so lange. Zitat:
Wissen ist Macht, nichts wissen macht nichts! :chat: |
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:09 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