AGB  ·  Datenschutz  ·  Impressum  







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

Generische TList mit IInterface verwenden

Ein Thema von TheFrog · begonnen am 21. Aug 2017 · letzter Beitrag vom 23. Aug 2017
Antwort Antwort
TheFrog

Registriert seit: 24. Mär 2009
145 Beiträge
 
Delphi 11 Alexandria
 
#1

Generische TList mit IInterface verwenden

  Alt 21. Aug 2017, 19:30
Delphi-Version: 10 Seattle
Hallo zusammen,

ich stehe gerade etwas auf dem Schlauch mit generischen Listen!

Ich habe derzeit folgende Deklaration:

FList: TList<IMyInterface>;

D.h. diese generische Liste soll Items vom Typ IMyInterface aufnehmen.

Frage:
Wird beim Einfügen eines neuen Items mittels FList.Add() der ReferenceCount des eingefügten Items erhöht oder nicht?

Ist vielleicht die TList nicht geeignet im Zusammenhang mit Interfaces?

Vielen Dank, Hans.
  Mit Zitat antworten Zitat
Aviator

Registriert seit: 3. Jun 2010
1.611 Beiträge
 
Delphi 10.3 Rio
 
#2

AW: Generische TList mit IInterface verwenden

  Alt 21. Aug 2017, 19:48
Doch klar kannst du damit Interface Instanzen speichern. Die gehen auch nicht verloren, wenn sonst keine Referenz darauf zeigt.

Zur Not mach dir eine Funktion in das Interface, die dir den Reference Count ausgibt. Dann solltest du Gewissheit haben.
  Mit Zitat antworten Zitat
TheFrog

Registriert seit: 24. Mär 2009
145 Beiträge
 
Delphi 11 Alexandria
 
#3

AW: Generische TList mit IInterface verwenden

  Alt 21. Aug 2017, 20:03
Danke für die Antwort!

Ich habe mal den RefCount wie vorgeschlagen ausgegeben, nachdem ich Items eingefügt habe. Dieser ist wirklich > 0.

War mir nicht wirklich sicher, da ich im Internet nichts Aussagekräftiges dazu gefunden habe.
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.648 Beiträge
 
Delphi 11 Alexandria
 
#4

AW: Generische TList mit IInterface verwenden

  Alt 21. Aug 2017, 20:54
Intern benutzt eine TList<T> ein array of T. Das ist alles typsicher, nicht wie früher bei TList mit Casts, so dass alle Typen auch korrekt behandelt werden.
Sebastian Jänicke
AppCentral
  Mit Zitat antworten Zitat
TiGü

Registriert seit: 6. Apr 2011
Ort: Berlin
3.070 Beiträge
 
Delphi 10.4 Sydney
 
#5

AW: Generische TList mit IInterface verwenden

  Alt 22. Aug 2017, 15:25
Ich will ja nicht stänkern, aber hätte man das nicht durch simples Debuggen auch rausfinden können? F7 sei als magische Taste genannt (Debug-DCU-Option eingeschaltet natürlich).
  Mit Zitat antworten Zitat
TheFrog

Registriert seit: 24. Mär 2009
145 Beiträge
 
Delphi 11 Alexandria
 
#6

AW: Generische TList mit IInterface verwenden

  Alt 23. Aug 2017, 10:29
Hätte man vielleicht rausfinden können ....

Habe mir bei der Frage nichts gedacht ... wenn jemand auf sowas schon mal gestoßen ist, dann ist es mit Ja oder Nein beantwortet.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#7

AW: Generische TList mit IInterface verwenden

  Alt 23. Aug 2017, 10:39
Die normale TList ist nur eine Liste mit saudoofen Pointern.
Die generische TList<> kennt den Typ, hat statt dem Pointer einen passenden Speicher und verwaltet die einzelnen Felder so, wie eine ganz normale Variable dieses Typs,
und beim Ein-/Auslesen wird die Speicherverwaltung und auch sowas wie eine Referenzzählung automatisch korrekt behandelt.
Wie bereits erwähnt, wird intern ein array of TDeinType verwendet.
$2B or not $2B

Geändert von himitsu (23. Aug 2017 um 12:33 Uhr)
  Mit Zitat antworten Zitat
TheFrog

Registriert seit: 24. Mär 2009
145 Beiträge
 
Delphi 11 Alexandria
 
#8

AW: Generische TList mit IInterface verwenden

  Alt 23. Aug 2017, 10:49
Danke!
  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 05:56 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