Einzelnen Beitrag anzeigen

alzaimar
(Moderator)

Registriert seit: 6. Mai 2005
Ort: Berlin
4.956 Beiträge
 
Delphi 2007 Enterprise
 
#4

Re: Mehrere Farben vergleichen

  Alt 24. Dez 2007, 10:17
Du benötigst einen Container, bei dem Du nach einem TColor (=Cardinal)-Schlüssel suchen kannst. Du kannst eine TStringList bzw. eine THashedStringlist verwenden. Der Schlüssel ist dann IntToStr (MyColor). Die Objects-Eigenschaft misbrauchst du als Zähler. Anschließend sortierst Du nach Integer (Objects[*]) und -bupps- hast Du deine Häufigkeitsverteilung.

Delphi-Quellcode:
Procedure CountColor (aColor : TColor; aList : TStringList);
Var
  sKey : String;
  i : Integer;

Begin
  sKey := IntToStr (aColor);
  i := aList.IndexOf (sKey);
  If i=-1 Then
    i := aList.Add (sKey, Pointer (1))
  Else
    aList.Objects[i] := Pointer (Integer (aList.Objects[i]) + 1);
End;

function CompareObjects (List: TStringList; Index1, Index2: Integer): Integer;
Begin
  Result := Integer (List.Objects[Index2]) - Integer(List.Objects[Index1]);
End;

Procedure SortByIntegerObject (aList : TStringList);
Begin
  aList.CustomSort (CompareObjects);
End;
"Wenn ist das Nunstruck git und Slotermeyer? Ja! Beiherhund das Oder die Flipperwaldt gersput!"
(Monty Python "Joke Warefare")
  Mit Zitat antworten Zitat