Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Bestimmten String zählen? (https://www.delphipraxis.net/68115-bestimmten-string-zaehlen.html)

MCXSC 24. Apr 2006 21:02


Bestimmten String zählen?
 
Hallo!

Wie kann ich in Delphi zählen, wie oft ein bestimmter String in einer StringList oder einem Memo-Feld vorkommt?

Hab über die Foren-Suche immer nur gefunden, wie mman ganz allgemein Wörter zählt (klärt mich auf wenn ich falsch liege)...

MCXSC

SirThornberry 24. Apr 2006 21:09

Re: Bestimmten String zählen?
 
ganz einfach:
Delphi-Quellcode:
var LText : String;
    LCount,
    LPos  : Integer;
begin
  LCount := 0;
  LText := Memo1.Lines.Text;
  LPos := PosEx('TeilString', LText, 1);
  while (LPos > 0) do
  begin
    inc(LCount);
    LPos := PosEx('TeilString', LText, LPos + 1);
  end;
  showmessage('Der String wurde ' + IntToStr(LCount) + ' mal gefunden.');
end;

MCXSC 24. Apr 2006 21:32

Re: Bestimmten String zählen?
 
Super, funktioniert einwandfrei...

Bis auf einen kleinen Fehler, was aber - denk ich mal - nicht am Code direkt liegt:

Wörter z.B. "Komödie" werden überhaupt nicht gefunden, was - ich denke mal - am Umlaut "ö" liegt? Wie kann es des beheben?

MCXSC

SirThornberry 24. Apr 2006 21:56

Re: Bestimmten String zählen?
 
eigentlich dürfte es keine Probleme mit "ö" etc. geben. Vielleicht hast du ja Probleme mit Groß-/Kleinschreibung. Sollte aber mit Ansilowercase/AnsiUppercase auch kein Problem sein.

MCXSC 24. Apr 2006 22:13

Re: Bestimmten String zählen?
 
Nee, daran liegt es nicht...

Ich denke mal es liegt an der Kodierung? Habe den text aus dem Memo-Feld vorher in einer XML-Datei gespeichert (verwende dazu die Unit OmniXML_MSXML). Kann es daran liegen?

//Edit: Okay, daran liegt es wahrscheinlich nicht, denn wenn ich die XML-Datei mit Notepad öffne, stet da auch "Komödie"...

Die Listen mit den Wörtern, die zu zählen sind, sind ja vorher aus der Datei herauskopiert worden, weshalb es nict an der Groß-/Kleinschreibung liegen dürfte...

SirThornberry 24. Apr 2006 22:17

Re: Bestimmten String zählen?
 
kannst du mal so eine Liste anhängen und angeben welches Wort gezählt werden soll? wie lädst du die Datei in die Stringlist? Mit LoadFromFile? Ist die Datei eventuell Unicode?

MCXSC 24. Apr 2006 22:23

Re: Bestimmten String zählen?
 
Also, lade es folgendermaßen (ich weiß: sehr unsauber :oops: ):

Delphi-Quellcode:
liste := tstringlist.create;
//Auslesen der zu suchenden Wörter
liste.Sort;
for i:=0 to liste.Count-1 do begin
LCount := 0;
ltext1 := tstringlist.create;
//Laden Textdatei in eine StringList
LText1.LoadFromFile(form1.datenbank_geladen_datei);
Ltext := LText1.Text;
puffer_test := '<genre1>'+liste[i]+'</genre1>';
LPos := PosEx(puffer_test, LText, 1);
while (LPos > 0) do begin
inc(LCount);
LPos := PosEx(puffer_test, LText, LPos + 1);
end;
//Dann würde die Ausgabe folgen
Zitat:

wie lädst du die Datei in die Stringlist? Mit LoadFromFile?
Ja... ^^

Zitat:

Ist die Datei eventuell Unicode?
Ehrlich gesagt: keine Ahnung... wie stelle ich das fest?

SirThornberry 24. Apr 2006 22:31

Re: Bestimmten String zählen?
 
du kannst es feststellen indem du die Datei mal mit Notepad öffnest und dann auf "Speichern unter" gehst. Dann zeigt es dir beim Typ an ob du es als ascii oder unii speicherst.

MCXSC 24. Apr 2006 22:32

Re: Bestimmten String zählen?
 
Da ist als Codierung "UTF-8" ausgewählt...

//Edit: Habe es jetzt mal noch mit ä und ü getestet... es liegt wahrscheinlich an den Umlauten, da diese auch nicht gefunden werden...

SirThornberry 24. Apr 2006 22:44

Re: Bestimmten String zählen?
 
echt komisch, ich hatte mit "ü", "ä" etc. nie probleme in verbindung mit pos, posex etc.


Alle Zeitangaben in WEZ +1. Es ist jetzt 13:04 Uhr.
Seite 1 von 2  1 2      

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