AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Array-Sortierung mit großen Zahlen - oder nich?
Thema durchsuchen
Ansicht
Themen-Optionen

Array-Sortierung mit großen Zahlen - oder nich?

Ein Thema von gdv · begonnen am 5. Dez 2006 · letzter Beitrag vom 5. Dez 2006
 
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#4

Re: Array-Sortierung mit großen Zahlen - oder nich?

  Alt 5. Dez 2006, 12:54
Herzlich willkommen in der Delphi-PRAXiS, Markus.

Die Zuordnung von Wort und Punktezahl kannst du auch ganz einfach mit der Allzweckwaffe TStringList machen. Die Punktezahl wird dabei einfach im Objects-Array der StringList mitgeführt.

Delphi-Quellcode:
procedure Analyze(const s: String; weight: Integer; words: TStringList);
var
  i, iStart, iWord: Integer;
  inWord: Boolean;
  sWord: String;
begin
  iStart := 0;
  for i := 1 to Succ(Length(s)) do
  begin
    inWord := (i <= Length(s))
        and (s[i] in ['a'..'z', 'A'..'Z', 'ä', 'ö', 'ü', 'Ä', 'Ö', 'Ü', 'ß']);
    if (iStart = 0) and inWord then iStart := i;
    if not inWord and (iStart > 0) then
    begin
      sWord := Copy(s, iStart, i - iStart);
      iStart := 0;
      iWord := words.IndexOf(sWord);
      if iWord <> -1
        then words.Objects[iWord] := Pointer(Integer(words.Objects[iWord]) + weight)
        else words.AddObject(sWord, Pointer(weight));
    end;
  end;
end;
Das Sortieren ist dann auch nicht sooo schwer:

Delphi-Quellcode:
function CompareInteger(i1, i2: Integer): Integer;
begin
  if i1 < i2 then Result := -1 else
  if i1 > i2 then Result := 1 else
  Result := 0;
end;

function CompareItems(list: TStringList; index1, index2: Integer): Integer;
begin
  Result := CompareInteger(Integer(list.Objects[index2]), Integer(list.Objects[index1]));
end;
Verwenden kannst du die Routinen dann so:

Delphi-Quellcode:
procedure TMainForm.AnalyzeButtonClick(Sender: TObject);
begin
  WordList.Clear;
  with WebBrowser.Document as IHTMLDocument2 do
  begin
    Analyze(title, 5, WordList);
    Analyze(body.innerText, 1, WordList);
  end;
  WordList.CustomSort(CompareItems);
  ShowRanking(WordList);
end;
Freundliche Grüße vom marabu
Angehängte Dateien
Dateityp: zip wb-analyze_184.zip (2,4 KB, 1x aufgerufen)
  Mit Zitat antworten Zitat
 


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 03:09 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz