AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi Textdatei durchsuchen (mit mehreren Ergebnissen)
Thema durchsuchen
Ansicht
Themen-Optionen

Textdatei durchsuchen (mit mehreren Ergebnissen)

Ein Thema von Gast · begonnen am 28. Aug 2005 · letzter Beitrag vom 30. Aug 2005
Antwort Antwort
Gast
(Gast)

n/a Beiträge
 
#1

Textdatei durchsuchen (mit mehreren Ergebnissen)

  Alt 28. Aug 2005, 10:53
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!

Geändert von Daniel (27. Mai 2021 um 18:39 Uhr)
  Mit Zitat antworten Zitat
tigerman33

Registriert seit: 30. Jul 2005
Ort: München
423 Beiträge
 
Delphi 2005 Professional
 
#2

Re: Textdatei durchsuchen (mit mehreren Ergebnissen)

  Alt 29. Aug 2005, 07:42
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. :
Christian
  Mit Zitat antworten Zitat
Gast
(Gast)

n/a Beiträge
 
#3

Re: Textdatei durchsuchen (mit mehreren Ergebnissen)

  Alt 29. Aug 2005, 15:13
Aber wie schaffe ich es, dass keine doppelten Steam IDs angezeigt werden ?
  Mit Zitat antworten Zitat
Benutzerbild von BrunoT
BrunoT

Registriert seit: 23. Jan 2003
Ort: Sandbeiendorf
360 Beiträge
 
Delphi 8 Professional
 
#4

Re: Textdatei durchsuchen (mit mehreren Ergebnissen)

  Alt 29. Aug 2005, 16:01
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:
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);
Ungetestet
Holger

EDV- Ende der Vernunft
Meine Calcedit-Kompo
  Mit Zitat antworten Zitat
Gast
(Gast)

n/a Beiträge
 
#5

Re: Textdatei durchsuchen (mit mehreren Ergebnissen)

  Alt 29. Aug 2005, 16:14
wie muss ich "gefunden" dnen definieren ?

Ich verwende keine Listbox sondern ein Memofeld, wie mache ich es da ?
  Mit Zitat antworten Zitat
shmia

Registriert seit: 2. Mär 2004
5.508 Beiträge
 
Delphi 5 Professional
 
#6

Re: Textdatei durchsuchen (mit mehreren Ergebnissen)

  Alt 29. Aug 2005, 16:27
Zitat von Tigerhead:
wie muss ich "gefunden" dnen definieren ?
Ich verwende keine Listbox sondern ein Memofeld, wie mache ich es da ?
Listbox.Items und Memo.Lines haben den gleichen Datentyp: TStrings.
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;
Andreas
  Mit Zitat antworten Zitat
Benutzerbild von BrunoT
BrunoT

Registriert seit: 23. Jan 2003
Ort: Sandbeiendorf
360 Beiträge
 
Delphi 8 Professional
 
#7

Re: Textdatei durchsuchen (mit mehreren Ergebnissen)

  Alt 30. Aug 2005, 06:45
Hi shima,

das kannte ich noch nicht:
 if liste.IndexOf(s) < 0 then man kann alt werden wie ´ne Kuh und lernt immer noch dazu!

schöne Lösung, gefällt mir
Holger

EDV- Ende der Vernunft
Meine Calcedit-Kompo
  Mit Zitat antworten Zitat
tigerman33

Registriert seit: 30. Jul 2005
Ort: München
423 Beiträge
 
Delphi 2005 Professional
 
#8

Re: Textdatei durchsuchen (mit mehreren Ergebnissen)

  Alt 30. Aug 2005, 07:47
Nur mal so interessehalber: Wie hast du denn sonst bis jetzt geprüft, ob ein Element schon Teil einer Liste war?
Christian
  Mit Zitat antworten Zitat
Benutzerbild von BrunoT
BrunoT

Registriert seit: 23. Jan 2003
Ort: Sandbeiendorf
360 Beiträge
 
Delphi 8 Professional
 
#9

Re: Textdatei durchsuchen (mit mehreren Ergebnissen)

  Alt 30. Aug 2005, 07:53
@tigerman33

zu Pascal- Zeiten war das ganze noch nicht so komfortabel und mit Stringlisten arbeite ich noch nicht so lange.

Zitat von BrunoT:

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:
Var
 gefunden:boolean;

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);
Ungetestet


Wissen ist Macht, nichts wissen macht nichts!
Holger

EDV- Ende der Vernunft
Meine Calcedit-Kompo
  Mit Zitat antworten Zitat
Antwort Antwort


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 19:50 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