AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Suchfunktion Ergebnis der Suchanfrage

Ergebnis der Suchanfrage


Datum des Suchindex: Heute, 04:47

Parameter dieser Suchanfrage:

Suche in Thema: Object (Interface) <> nil
Suche alle Beiträge, die von "stahli" geschrieben wurden
• Suchmethode: "Suche nach allen Begriffen"
• Nach Datum (firstpost) sortiert
• Zeige Treffer als Beiträge
Zeige 9 von insges. 9 Treffern
Suche benötigte 0.001s

Es liegen Ergebnisse in folgenden Bereichen vor:

  • Forum: Programmieren allgemein

    AW: Object (Interface) <> nil

      Delphi
      by stahli, 11. Sep 2017
    Ok, Hauptsache es funktioniert. :thumb:
  • Forum: Programmieren allgemein

    AW: Object (Interface) <> nil

      Delphi
      by stahli, 11. Sep 2017
    :thumb:

    Jetzt könntest Du ggf. noch ohne den Callback auskommen.
    Du bekommst ja jetzt im destructor mit, dass das Objekt freigegeben wird.
    Jetzt könntest Du auch dort PopUpMenu := nil; ausführen.

    Ist aber Geschmacksache und würde sofort nicht mehr funktionieren, wenn durch Änderungen am Projekt irgendwann doch noch irgendwo eine Referenz auf das Objekt hängen würde.
  • Forum: Programmieren allgemein

    AW: Object (Interface) <> nil

      Delphi
      by stahli, 11. Sep 2017
    Du darfst das Objekt nicht freigeben, solange noch darauf oder auf seine Schnittstellen zugegriffen werden kann.

    Also Du hast z.B.
    myObj := TMyObj.Create;
    myIntf1 := myObj;
    myIntf2 := myObj;


    Wenn Du TMyObj von TInterfacedObj ableitest, wird die automatische Referenzzählung unterstützt.
    Wenn Du jetzt
  • Forum: Programmieren allgemein

    AW: Object (Interface) <> nil

      Delphi
      by stahli, 11. Sep 2017
    Ok, dann nur mal als Hinweis, falls Du das mal noch versuchen willst:

    Du könntest von TInterfacedObject ableiten.
    Dann wird das Objekt freigegeben, wenn die letzte Referenz darauf wegfällt.

    Oder Du könntest es so lassen und selbst Free aufrufen.

    Beides würde halt ein Speicherleck vermeiden.
  • Forum: Programmieren allgemein

    AW: Object (Interface) <> nil

      Delphi
      by stahli, 11. Sep 2017
    Ok, fein.
    Wenn es so klappt, ist es schön.
    Ich will auch nicht nochmal zur Verwirrung beitragen, aber vielleicht kannst Du mal noch nach zwei Dingen schauen:

    Hast Du Deine Klasse von TInterfacedPersistent abgeleitet oder von TInterfacedObject?
    Wird Dein Destructor des Objektes irgendwann aufgerufen?

    Ich vermute, dass Dein Objekt aktuell nicht freigegeben wird. Das wäre nicht unbedingt...
  • Forum: Programmieren allgemein

    AW: Object (Interface) <> nil

      Delphi
      by stahli, 11. Sep 2017
    Im Destructor muss man natürlich inherited aufrufen.
    Ich finde das übersichtlicher, diesen auch zu überschreiben wenn man Konstruktoren definiert (ist aber nur Gewohnheitssache).
    Aber Du kannst halt einen Haltepunkt setzten und sehen, ob das Objekt überhaupt freigegeben wird und wann.


    Zu den Objekten und Interfaces, schau mal, ob Dir das zum Verständnis hilft:...
  • Forum: Programmieren allgemein

    AW: Object (Interface) <> nil

      Delphi
      by stahli, 11. Sep 2017
    In jedem Fall würde ich den Destructor an Deiner Stelle überschreiben.
    Du musst ja darin neben dem inherited nichts tun und Du musst ja Free auch nicht aufrufen, aber so kannst Du bei Bedarf mal einen Haltepunkt setzen und sehen, ob und wann Dein Objekt wirklich freigegeben wird (einfach nur zur Ablaufkontrolle).

    Und Du solltest m.E. auch nicht davon sprechen, ob ein Objekt oder Interface =...
  • Forum: Programmieren allgemein

    AW: Object (Interface) <> nil

      Delphi
      by stahli, 11. Sep 2017
    Um hier helfen zu können, müsste erst mal klar sein, wer das erstelle Objekt auf Nil setzt.
    Das ist letztlich schon die falsche Beschreibung. Ein Objekt kann nicht auf Nil gesetzt werden. Dieses kann man höchstens freigeben (also dessen Speicherbereich wiederverwendbar machen).
    Eine Variable kann man auf Nil setzen.

    Willst Du also erkennen, ob das Objekt freigegeben wurde oder ob eine...
  • Forum: Programmieren allgemein

    AW: Object (Interface) <> nil

      Delphi
      by stahli, 11. Sep 2017
    Ich habe jetzt Dein Problem und den Hintergrund der Frage nicht eindeutig verstanden.

    Wenn Du von TInterfacedPersistent ableitest, gibt es jedenfalls keine Referenzählung und keine automatische Freigabe des Objektes.

    Wenn Du eine Referenzzählung benutzt, also z.B.

    Var1 := O;
    Var2 := O;
    Var3 := O;


URL zu dieser Suchanfrage:

https://www.delphipraxis.net/dp_search.php?do=usersearch&search_username=stahli&search_exact_username=1&search_sortby=dateline&search_resulttype=post&search_matchmode=0&searchthreadid=193802
Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:59 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