AGB  ·  Datenschutz  ·  Impressum  







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

Bestimmten String zählen?

Ein Thema von MCXSC · begonnen am 24. Apr 2006 · letzter Beitrag vom 25. Apr 2006
Antwort Antwort
Seite 1 von 2  1 2      
MCXSC
(Gast)

n/a Beiträge
 
#1

Bestimmten String zählen?

  Alt 24. Apr 2006, 21:02
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
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#2

Re: Bestimmten String zählen?

  Alt 24. Apr 2006, 21:09
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;
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
MCXSC
(Gast)

n/a Beiträge
 
#3

Re: Bestimmten String zählen?

  Alt 24. Apr 2006, 21:32
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
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#4

Re: Bestimmten String zählen?

  Alt 24. Apr 2006, 21:56
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.
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
MCXSC
(Gast)

n/a Beiträge
 
#5

Re: Bestimmten String zählen?

  Alt 24. Apr 2006, 22:13
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...
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#6

Re: Bestimmten String zählen?

  Alt 24. Apr 2006, 22:17
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?
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
MCXSC
(Gast)

n/a Beiträge
 
#7

Re: Bestimmten String zählen?

  Alt 24. Apr 2006, 22:23
Also, lade es folgendermaßen (ich weiß: sehr unsauber ):

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?
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#8

Re: Bestimmten String zählen?

  Alt 24. Apr 2006, 22:31
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.
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
MCXSC
(Gast)

n/a Beiträge
 
#9

Re: Bestimmten String zählen?

  Alt 24. Apr 2006, 22:32
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...
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#10

Re: Bestimmten String zählen?

  Alt 24. Apr 2006, 22:44
echt komisch, ich hatte mit "ü", "ä" etc. nie probleme in verbindung mit pos, posex etc.
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 15:13 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