AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

Interface freigeben?

Ein Thema von Angel4585 · begonnen am 19. Mai 2009 · letzter Beitrag vom 19. Mai 2009
Antwort Antwort
Angel4585

Registriert seit: 4. Okt 2005
Ort: i.d.N.v. Freiburg im Breisgau
2.199 Beiträge
 
Delphi 2010 Professional
 
#1

Interface freigeben?

  Alt 19. Mai 2009, 10:22
Hallo,

ich hatte Probleme mit der TXMLDocument Komponente, da ich keinen Owner für diese habe.
Jetzt verwende ich das IXMLDocument, was ja so wie ich das sehe ein Interface ist.
Muss man das garnicht irgendwie freigeben oder so?

Martin Weber
Ich bin ein Rüsselmops
  Mit Zitat antworten Zitat
Benutzerbild von sirius
sirius

Registriert seit: 3. Jan 2007
Ort: Dresden
3.443 Beiträge
 
Delphi 7 Enterprise
 
#2

Re: Interface freigeben?

  Alt 19. Mai 2009, 10:27
Nein muss man nicht. Wird genauso freigegeben wie ein String oder ein dynamisches Array.
Dieser Beitrag ist für Jugendliche unter 18 Jahren nicht geeignet.
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.269 Beiträge
 
Delphi 10.4 Sydney
 
#3

Re: Interface freigeben?

  Alt 19. Mai 2009, 10:44
Hallo,

du kannst die Variable zwar NIL setzen.
aber richtig frei wird sie erst, wenn der Scope
(die Prozedur, in der die Variable definiert ist),
verlassen wird.

Man sollte Interface-Variablen deshalb immer lokal definieren.


Heiko
Heiko
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

Re: Interface freigeben?

  Alt 19. Mai 2009, 10:55
hmmm, in Delphi dacht ich, würde das freigegeben, wenn keine "Variable" mehr darauf verweißt?
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Benutzerbild von Stevie
Stevie

Registriert seit: 12. Aug 2003
Ort: Soest
4.007 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#5

Re: Interface freigeben?

  Alt 19. Mai 2009, 10:56
Zitat von hoika:
du kannst die Variable zwar NIL setzen.
aber richtig frei wird sie erst, wenn der Scope
(die Prozedur, in der die Variable definiert ist),
verlassen wird.
Das stimmt so nicht.
Sofern Referenzzählung implementiert ist, dekrementiert das setzen einer Interface variablen den Referenzcounter. Erreicht dieser 0, wird das Objekt, welches das Interface implementiert und ursprünglich erzeugt wurde, freigegeben.
Stefan
“Simplicity, carried to the extreme, becomes elegance.” Jon Franklin

Delphi Sorcery - DSharp - Spring4D - TestInsight
  Mit Zitat antworten Zitat
quendolineDD

Registriert seit: 19. Apr 2007
Ort: Dresden
781 Beiträge
 
Turbo Delphi für Win32
 
#6

Re: Interface freigeben?

  Alt 19. Mai 2009, 10:57
Jap. Man kann die Autoreferenzierung auch selber umgehen. ABer da muss man IMHO genau wissen, das man die nicht mehr braucht. Gab auch einige Beiträge zu dem Thema hier im Forum.
Lars S.
Wer nicht mit der Zeit geht, geht mit der Zeit.
  Mit Zitat antworten Zitat
Benutzerbild von sirius
sirius

Registriert seit: 3. Jan 2007
Ort: Dresden
3.443 Beiträge
 
Delphi 7 Enterprise
 
#7

Re: Interface freigeben?

  Alt 19. Mai 2009, 11:06
Zitat von hoika:
Hallo,

du kannst die Variable zwar NIL setzen.
aber richtig frei wird sie erst, wenn der Scope
Nö, wenn sie auf nil gesetzt wird, wird automatisch _Release aufgerufen. Das führt u.U. zur Freigabe (wenn die Variable die einzige Referenz war)
Dieser Beitrag ist für Jugendliche unter 18 Jahren nicht geeignet.
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.269 Beiträge
 
Delphi 10.4 Sydney
 
#8

Re: Interface freigeben?

  Alt 19. Mai 2009, 11:48
Hallo,

ja, bei Excel ist das aber etwas anders (OK, es ging nicht um Excel ...).
Es gab vor kurzem hier einen Thread bezüglich OLE-Automation
und dann Öffnen der erzeugten Excel-Datei (ebenfalls per OLE).

Klappt nicht (habe ich selber am eigenen Leib erlebt),
wenn beides in einer einzigen Routine erfolgt.

Lagere ich das Erzeugen und Anzeigen in 2 Routinen aus,
jeweils mit eigenen lokalen Interface-Variablem,
klappt es.


Heiko
Heiko
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 16:47 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