![]() |
Tstringlist Länge ermitteln
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:
s.count = die Anzahl der Zeilen. Da es nur eine Zeile ist kommt auch nur 1 x Mensch als result.
////////////////////////////////////////////////////////////////////////////////
//// //// 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; 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... :gruebel: |
Re: Tstringlist Länge ermitteln
Hallo Jaimy,
du darfst die Suche innerhalb der Zeile nicht nach dem ersten Vorkommen abbrechen:
Delphi-Quellcode:
Grüße vom marabu
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; |
Re: Tstringlist Länge ermitteln
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 |
Re: Tstringlist Länge ermitteln
Ergs.. klar man sollte die Suche auch weiterführen. :wall:
Ich danke euch für die Hinweise !! P.S. Klaus mach dir nichts draus, die gute Absicht zählt! :xmas: |
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:52 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