AGB  ·  Datenschutz  ·  Impressum  







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

Wortliste erstellen

Ein Thema von Logic · begonnen am 4. Mär 2004 · letzter Beitrag vom 5. Mär 2004
Antwort Antwort
Benutzerbild von Logic
Logic

Registriert seit: 28. Nov 2003
132 Beiträge
 
Delphi 7 Personal
 
#1

Wortliste erstellen

  Alt 4. Mär 2004, 22:59
Hallo,

wie kann ich z.b. eine Datei auslesen und die Wörter dieser Datei anzeigen und auch anzeigen lassen wie oft sie benutzt wurden?

mfg
Thorsten
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.105 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: Wortliste erstellen

  Alt 4. Mär 2004, 23:12
Moin Thorsten,

such' hier doch mal nach Hier im Forum suchenWortliste, Hier im Forum suchenWorte zählen oder Hier im Forum suchenWörter zählen.
Das hatten wir vor kurzem erst ein paar Mal.
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#3

Re: Wortliste erstellen

  Alt 4. Mär 2004, 23:46
Mit explodeexplode und als Trennzeichen das Leerzeichen den Text zerlegen. Die wörter in eine sortierte Stringliste packen und so einstellen, dass Duplikate ignoriert werden und dann meine Prozedur anwenden:
Delphi-Quellcode:
{------------------------------------------------------------------------------}
{  Worthäufigkeit ermitteln                                                    }
{------------------------------------------------------------------------------}

procedure Occurence(sl: TStrings; Text: string; var WordArray: TWordArray);
var
  OuterLoop, InnerLoop: Cardinal;
  TextWordList: TStringDynArray;
  Count: Cardinal;
begin
  TextWordList := Explode(' ', Text);
  Count := 1;
  // Wortliste durchgehen
  for OuterLoop := 0 to sl.Count - 1 do
  begin
    for InnerLoop := 0 to Length(TextWordList) - 1 do
    begin
      if sl.Strings[OuterLoop] = TextWordList[InnerLoop] then
        inc(Count);
    end;
    WordArray[OuterLoop].Word := sl.Strings[OuterLoop];
    WordArray[OuterLoop].Count := Count;
    Count := 1;
    if bCancel = 1 then
      Break;
  end;
end;
TWordArray ist eine dynamisches Array vom Typ:
Delphi-Quellcode:
type
  TStringDynArray = array of string; // um Textzeile in Wörter-Array zu zerlegen
  TWordRec = record // zu jedem Wort gehört die Anzahl
    Word: ShortString;
    Count: Cardinal;
  end;
  TWordArray = array of TWordRec;
Im Feld Word sthet dann das Wort und im Feld Count die Häufigkeit.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von Jens Schumann
Jens Schumann

Registriert seit: 27. Apr 2003
Ort: Bad Honnef
1.644 Beiträge
 
Delphi 2009 Professional
 
#4

Re: Wortliste erstellen

  Alt 5. Mär 2004, 08:01
Moin Luckie,
Dein source wirft bei mir eine Verständnisfrage im Zusammenhang mit dyn. Array's auf.
Da ich grundsätzlich auf dyn. Array's verzichte bin ich hier nicht besonders fit.
Die Variable TextWordList ist so ein dyn Array. Mit TextWordList := Explode(' ', Text); speicherst Du in TextWordList eine Referenz auf ein in Explode erzeugtes dyn. Array (ist ja auch der Ergebnistype der Funktion). Jetzt belegen aber auch dyn. Array Arbeitsspeicher auf dem Heap. In der Hilfe steht, dass dyn. Array mit der Zuweisung von Nil freigegeben werden. Das fehlt in Deinem Code. Kann es auch sein das dyn. Array's automatisch freigegeben werden wenn der Gültigkeitsbereich der Variablen (hier: TextWordList) verlassen wird?
I come from outer space to save the human race
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#5

Re: Wortliste erstellen

  Alt 5. Mär 2004, 15:24
Ich habe es extra beobachtet im Taskmanger. Im original Code von Explode hier im Forum wird, das Array immer um 5 erhöht. Da ist mir bei eienm 1 MB Text selbst mit 1 GB RAM der Soeicher ausgegangen. Ich haeb dann Explode das Array immer um 1000 vergrößern lassen und da ging es dann. Da ist der Speicher der anwendung von 4 oder 5 Mb auf 9 MB hochgegangen aber danach wieder auf 4 oder 5 zurück. Das sind meiner Erfahrungen. Es scheint also zu gehen. Delphi gibt also die lokale Variable TextWordList, nach verlassen der Prozedur selbst wieder frei.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von Jens Schumann
Jens Schumann

Registriert seit: 27. Apr 2003
Ort: Bad Honnef
1.644 Beiträge
 
Delphi 2009 Professional
 
#6

Re: Wortliste erstellen

  Alt 5. Mär 2004, 15:34
Zitat von Luckie:
Delphi gibt also die lokale Variable TextWordList, nach verlassen der Prozedur selbst wieder frei.
Das hätte ich jetzt nicht erwartet.
I come from outer space to save the human race
  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 16:52 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