AGB  ·  Datenschutz  ·  Impressum  







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

Tstringlist Länge ermitteln

Ein Thema von Ajin · begonnen am 8. Dez 2006 · letzter Beitrag vom 8. Dez 2006
Antwort Antwort
Ajin

Registriert seit: 23. Feb 2006
Ort: Mons
252 Beiträge
 
Delphi 2010 Professional
 
#1

Tstringlist Länge ermitteln

  Alt 8. Dez 2006, 09:02
Hallo DP User!

Ich wollte mir eine Funktion schreiben welche mir die Anzahl bestimmer Wörter in einer Textdatei Zeile ausgibt.

So sieht die Zeile der Datei aus:

Ich bin ein kleiner Mensch. Ein Apfel ist kein Mensch. Ein Hund ist auch kein Mensch

Ich möchte jetzt das Wort Mensch zählen.

Delphi-Quellcode:
////////////////////////////////////////////////////////////////////////////////
////
//// Anzahl Mensch im textfile
////
function anzahl_mensch: Integer;
var
 s: Tstrings;
 i, laenge, count, pos_mensch: integer;
Begin
 s := TStringList.Create;
 count := 0;
  try
   s.loadfromFile(meine_datei);
   //stringlist s nach Mensch durchsuchen
   for i := 0 to s.Count[i] - 1 do
   begin
      //--->> Position des gewünschten strings suchen
      pos_mensch := pos('Mensch', s.strings[i]);
      //--->> Position von Mensch gefunden
      if pos_mensch <> 0 then
      begin
        inc(count);
      end;
   end;//for
  Result := Count;
  Finally
   s.Free;
  End;
End;
s.count = die Anzahl der Zeilen. Da es nur eine Zeile ist kommt auch nur 1 x Mensch als result.
Ich möchte nun aber nicht die Anzahl der Zeilen durchsuchen, sondern die gesamte Zeile.
Ich dachte an die length Eigenschaft der Stringfunktionen aber das geht mit der Stringlist nicht.

Ich hab bestimmt irgendwas einfaches vergessen...
  Mit Zitat antworten Zitat
marabu

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

Re: Tstringlist Länge ermitteln

  Alt 8. Dez 2006, 09:11
Hallo Jaimy,

du darfst die Suche innerhalb der Zeile nicht nach dem ersten Vorkommen abbrechen:

Delphi-Quellcode:
function Occurs(const subStr, s: String): Integer;
var
  i: Integer;
begin
  Result := 0;
  i := 1;
  repeat
    i := PosEx(subStr, s, i);
    if i > 0 then
    begin
      Inc(Result);
      Inc(i, Length(subStr));
    end;
  until i = 0;
end;
Grüße vom marabu
  Mit Zitat antworten Zitat
Klaus01

Registriert seit: 30. Nov 2005
Ort: München
5.757 Beiträge
 
Delphi 10.4 Sydney
 
#3

Re: Tstringlist Länge ermitteln

  Alt 8. Dez 2006, 09:15
Guten Morgen,

pos_mensch := pos('Mensch', s.strings[i]);
liefert Dir nur die erste Position im String wo "Mensch" auftaucht.

Gibt Dir pos <> 0 aus solltest Du den String ändern, also mit delete oder copy
den ersten Mensch aus dem String entfernen und dann mit pos noch einmal suchen,
solange bis pos 0 ergibt.

Mit posex kannst Du auch arbeiten, dort kannst Du einen StartIndex angeben
ab wo gesucht werden soll dann brauchst Du nur den Index verschieben.

edit: da war der Achim mal wieder um Längen schneller und präzieser.

Grüße
Klaus
Klaus
  Mit Zitat antworten Zitat
Ajin

Registriert seit: 23. Feb 2006
Ort: Mons
252 Beiträge
 
Delphi 2010 Professional
 
#4

Re: Tstringlist Länge ermitteln

  Alt 8. Dez 2006, 09:54
Ergs.. klar man sollte die Suche auch weiterführen.

Ich danke euch für die Hinweise !!
P.S. Klaus mach dir nichts draus, die gute Absicht zählt!
  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 08:19 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