Autor Beitrag
gangasrotogati
Hält's aus hier
Beiträge: 10



BeitragVerfasst: Mo 02.06.08 13:26 
Ich möchte für eine Textdatei eine Tabelle erstellen, in der für jeden Buchstaben (Spalte 1) die Häufigkeit seines Auftretens in der Datei gezählt wird (Spalte 2).
Da es möglichst schnell gehen soll, kommt eine TStringList nicht in Frage - ich habe es deshalb mit der THash-Komponente von Ciaran McCreesh probiert:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
  strhash:= TIntegerHash.Create;
  try
    for i := 0 to length(datei_str) - 1 do
      strhash.Items[datei_str[i]]:= strhash.Items[datei_str[i]];

    strhash.Restart;
    while strhash.Next do begin     
      key_lst.Add(strhash.CurrentKey);
      val_lst.Add(strhash[strhash.CurrentKey]);
    end;
  finally
      strhash.Free;
  end;


Als Ergebnis dieser Prozedur erhalte ich tatsächlich die Listen von Schlüsseln (key_lst) und Werten (val_lst).
Leider dauert der Vorgang immer noch viel zu lange (mit einem vergleichbaren Python-Skript geht es in Sekundenschnelle - kommt aber als Alternative für das Gesamtprogramm nicht in Frage).
Könnte man es irgendwie schneller machen?

Moderiert von user profile iconAXMD: Delphi-Tags hinzugefügt
Moderiert von user profile iconAXMD: Topic aus Dateizugriff verschoben am Mo 02.06.2008 um 13:47
Moderiert von user profile iconNarses: Topic aus Algorithmen, Optimierung und Assembler (Delphi-Library) verschoben am Do 18.09.2008 um 19:36