Einzelnen Beitrag anzeigen

Morphie

Registriert seit: 27. Apr 2008
Ort: Rahden
630 Beiträge
 
#1

Datentyp von ListView Data prüfen

  Alt 18. Aug 2011, 10:50
Hi,

ich befülle zur Laufzeit eine ListView mit Benutzern (TUser) und Gruppen (TGroup):
Delphi-Quellcode:
...
  for i := 0 to Core.Groups.Count - 1 do
  begin
    Item := ListView1.Items.Add;
    Item.Data := Core.Groups[i];
    Item.Caption := Core.Groups[i].Name;
    Item.ImageIndex := 1;
  end;
  ...
  for i := 0 to Core.Users.Count - 1 do
  begin
    Item := ListView1.Items.Add;
    Item.Data := Core.Users[i];
    Item.Caption := Core.Users[i].Name;
    Item.ImageIndex := 0;
  end;
Wie kann ich jetzt feststellen, was für ein Datentyp hinter "Data" steckt?
Ich würde gerne den Is-Operator dafür verwenden, allerdings schmeißt Delphi eine Fehlermeldung:
Code:
E2015 Operator ist auf diesen Operandentyp nicht anwendbar
Delphi-Quellcode:
if (Item.Data is TUser) then
...
Muss ich Data noch irgendwie Casten oder so? Ich habe mit Pointer-Arithmetik noch nicht so viel zutun gehabt...
Oder muss ich wirklich den Umweg über einen "gemeinsamen" Record/Klasse gehen?
in etwa so:
Delphi-Quellcode:
TItemTypen = (itUser, itGroup);
  TItemTyp = record
    Data: Pointer;
    Typ: TItemTypen;
  end;
  Mit Zitat antworten Zitat