AGB  ·  Datenschutz  ·  Impressum  







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

Datentyp von ListView Data prüfen

Ein Thema von Morphie · begonnen am 18. Aug 2011 · letzter Beitrag vom 18. Aug 2011
Antwort Antwort
Morphie

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

Datentyp von ListView Data prüfen

  Alt 18. Aug 2011, 09: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
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.537 Beiträge
 
Delphi 11 Alexandria
 
#2

AW: Datentyp von ListView Data prüfen

  Alt 18. Aug 2011, 09:54
Die Data-Eigenschaft ist vom Typ TCustomData(=Pointer) und nicht vom Typ TObject. Somit kannst Du nicht mit is oder as prüfen/casten. Du könntest höchstens nach einem gemeinsamen Vorfahren casten (zur Not TObject) und dann is anwenden. Ausprobiert habe ich das allerdings nicht, einen Versuch ist es aber IMO wert.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Benutzerbild von chaosben
chaosben

Registriert seit: 27. Apr 2005
Ort: Görlitz
1.358 Beiträge
 
Delphi XE2 Professional
 
#3

AW: Datentyp von ListView Data prüfen

  Alt 18. Aug 2011, 09:56
Du könntest höchstens nach einem gemeinsamen Vorfahren casten und dann is anwenden.
Genau so funktionierts.
Benjamin Schwarze
If I have seen further it is by standing on the shoulders of Giants. (Isaac Newton)
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.537 Beiträge
 
Delphi 11 Alexandria
 
#4

AW: Datentyp von ListView Data prüfen

  Alt 18. Aug 2011, 09:57
Also mal wieder im Blindflug ins Schwarze getroffen
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Morphie

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

AW: Datentyp von ListView Data prüfen

  Alt 18. Aug 2011, 09:59
Vielen Dank Genau das habe ich gesucht. Hätte ich auch selbst drauf kommen können...
  Mit Zitat antworten Zitat
Benutzerbild von chaosben
chaosben

Registriert seit: 27. Apr 2005
Ort: Görlitz
1.358 Beiträge
 
Delphi XE2 Professional
 
#6

AW: Datentyp von ListView Data prüfen

  Alt 18. Aug 2011, 10:16
Fein!

//OT:
Also mal wieder im Blindflug ins Schwarze getroffen
Benjamin Schwarze
If I have seen further it is by standing on the shoulders of Giants. (Isaac Newton)
  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 18:19 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