Gegeben ist eine Textdatei, Es soll jetzt die Anzahl jedes Wortes ermittelt werden. Hat da jemand eine Idee, wie man da ansetzten könnte? Oder gar schon fertigen Quellcode parat?
So, selbst ist der einsame Programmierer
:
Delphi-Quellcode:
procedure Occurence(sl: TStrings; Text: String; var WordArray: TWordArray);
var
Loop: Cardinal;
FoundPos: Cardinal;
bFound: Boolean;
s: String;
Count: Cardinal;
begin
FoundPos := 0;
bFound := True;
Count := 0;
// Wortliste durchgehen
for Loop := 0 to sl.Count-1 do
begin
while bFound do
begin
// Wort aus Wortliste holen
s := sl.Strings[Loop];
// Kucken ob in Text vorhanden
FoundPos := NextPos(s, Text, FoundPos);
if FoundPos > 0 then // FoundPos > 0 -> Wort vorhanden, Wort zählen
Inc(Count)
else // nicht mehr vorhanden -> abbrechen
bFound := False;
end;
// WordArray Record füllen
WordArray[Loop].Word := sl.Strings[Loop];
WordArray[Loop].Count := Count;
writeln(WordArray[Loop].Word, WordArray[Loop].Count);
// Variablen zurücksetzen
Count := 0;
bFound := True;
end;
end;
sl ist die Liste mit Worten deren Häufigkeit ermittelt werden soll, Text der Text in dem die Worthäufigkeit ermittelt werden soll und WordArray sieht so aus:
Delphi-Quellcode:
TWordRec = record // zu jedem Wort gehört die Anzahl
Word: ShortString;
Count: Cardinal;
end;
TWordArray = array of TWordRec;
Muss natürlich vorher mit setlength auf die richtige Länge gesetzt werden.