AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Delphi Classe/Interface aus WinProc aufrufen

Classe/Interface aus WinProc aufrufen

Ein Thema von EWeiss · begonnen am 14. Sep 2017 · letzter Beitrag vom 14. Sep 2017
Antwort Antwort
Seite 4 von 4   « Erste     234
Benutzerbild von stahli
stahli

Registriert seit: 26. Nov 2003
Ort: Halle/Saale
4.336 Beiträge
 
Delphi 11 Alexandria
 
#31

AW: Classe/Interface aus WinProc aufrufen

  Alt 14. Sep 2017, 20:48
Wenn alle!!! Referenzen auf das Interface nil sind geht der Referenz Zähler auf 0 und das darunter liegende Objekt wird freigegeben.
Noch genauer wäre: "... wenn alle Referenzen auf das InterfaceObject Nil sind ..."

Das ist zum Verständnis vielleicht wichtig, da wir hier schon so lange um den Brei herum reden.
Wenn ein Objekt 5 Interfaces unterstützt und 3 Interfaces je einer Interfacevariablen zugewiesen sind, ist der RefCounter des Objektes = 3.
Stahli
http://www.StahliSoft.de
---
"Jetzt muss ich seh´n, dass ich kein Denkfehler mach...!?" Dittsche (2004)
  Mit Zitat antworten Zitat
Fritzew

Registriert seit: 18. Nov 2015
Ort: Kehl
678 Beiträge
 
Delphi 11 Alexandria
 
#32

AW: Classe/Interface aus WinProc aufrufen

  Alt 14. Sep 2017, 20:51
Noch genauer wäre: "... wenn alle Referenzen auf das InterfaceObject Nil sind ..."
Oder so
Fritz Westermann
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#33

AW: Classe/Interface aus WinProc aufrufen

  Alt 14. Sep 2017, 21:06
Zitat:
das widerspricht allem was mit Interfaces zu tun hat.
Aber das ist was man mir hier verklickert.

Ich suche das jetzt raus.
Zitat:
•Niemals eine Referenz auf das Objekt behalten und nutzen! Immer nur mit dem Interface arbeiten. Schon gar nicht das Objekt mit Free freigeben und damit allen Interfaces unter dem Allerwertesten wegziehen. Das gibt sehr schöne Fehler...
Free ist für mich das gleiche wie als wenn ich das Interface auf NIL setze. Darf man aber anscheinend nicht.

Dann tue ich folgendes..
Delphi-Quellcode:
  // TODO
FillChar(SkinPopUpMenu, SizeOf(SkinPopUpMenu), 0);

  if not Assigned(SkinPopUpMenu) then
    PopUpCallback(OnPopupDestroyed);
Hier setze ich alle variablen auf 0, NIL oder wie auch immer danach ist mein Interface NIL (Da keine Variable mehr in gebrauch ist.)
Darf man aber anscheinend auch nicht.

Und ja ich weis das man eine Variable direkt auf Nil setzen kann wäre es nicht so dann sollte man es direkt lassen.
Aber da hat man mir dann wieder zwischen gepfuscht mit der Meldung nein man darf kein Interface selbst auf NIL setzen.
SkinPopUpMenu := Nil;
Ehrlich keine Ahnung was das noch soll.
Wie man es macht, macht man es falsch.

Hätte man mich nicht so irritiert mit den Referenz Zähler dann hätte ich schon lange einfach vor

PopUpCallback(OnPopupDestroyed);

Einfach

SkinPopUpMenu := Nil;

gesetzt und fertig.
Wäre ja nicht das erste mal das ich eine Variable auf NIL setze LOL.

Zitat:
Noch genauer wäre: "... wenn alle Referenzen auf das InterfaceObject Nil sind ..."
Sorry! Das ist genau mein Problem jeder sagt was anderes...
Mich interessiert das überhaupt nicht ob der Zähler 0 oder auf 3 steht.

Mich interessiert nur eins kann ich mein Interface selbst auf NIL setzen oder nicht.

Dann wäre meine Lösung diese
Delphi-Quellcode:
  SkinPopUpMenu := nil;
  PopUpCallback(OnPopupDestroyed);
und fertig .. alles so wie gehabt. (Bei normalen Classen)


gruss

Geändert von EWeiss (14. Sep 2017 um 21:10 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von stahli
stahli

Registriert seit: 26. Nov 2003
Ort: Halle/Saale
4.336 Beiträge
 
Delphi 11 Alexandria
 
#34

AW: Classe/Interface aus WinProc aufrufen

  Alt 14. Sep 2017, 21:11
Genau so ist es korrekt. Berichte mal, ob dann alles funktioniert.

Wenn Du mit Interfaces incl. Referenzzählung arbeitest, dann nie bei dem Objekt hinter dem Interface Free aufrufen!
Immer nur Interfacevariablen Nil zuweisen.
Bei der letzten Nil-Zuweisung wird Free automatisch ausgeführt. Dafür ist die Referenzzählung da.

Wie schon mal gesagt: "InterfaceObject.Free" ist etwas völlig anderes als "MyInterfaceVariable := Nil"
Stahli
http://www.StahliSoft.de
---
"Jetzt muss ich seh´n, dass ich kein Denkfehler mach...!?" Dittsche (2004)
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#35

AW: Classe/Interface aus WinProc aufrufen

  Alt 14. Sep 2017, 21:14
Genau so ist es korrekt. Berichte mal, ob dann alles funktioniert.

Wenn Du mit Interfaces incl. Referenzzählung arbeitest, dann nie bei dem Objekt hinter dem Interface Free aufrufen!
Immer nur Interfacevariablen Nil zuweisen.
Bei der letzten Nil-Zuweisung wird Free automatisch ausgeführt. Dafür ist die Referenzzählung da.

Wie schon mal gesagt: "InterfaceObject.Free" ist etwas völlig anderes als "MyInterfaceVariable := Nil"
Da muss ich nichts berichten das funktioniert hat immer schon.
Warum auch nicht.
Ich habe mich hier einfach nur verrückt machen lassen weil entschuldige kein Angriff gegen irgend jemanden jeder etwas anderes gesagt hat.

Zitat:
Wie schon mal gesagt: "InterfaceObject.Free" ist etwas völlig anderes als "MyInterfaceVariable := Nil"
Ok das war wohl das Missverständnis warum das jetzt so ausgeartet ist.


gruss
  Mit Zitat antworten Zitat
Benutzerbild von stahli
stahli

Registriert seit: 26. Nov 2003
Ort: Halle/Saale
4.336 Beiträge
 
Delphi 11 Alexandria
 
#36

AW: Classe/Interface aus WinProc aufrufen

  Alt 14. Sep 2017, 21:19
Du hast das m.E. nur falsch verstanden. Ist auch kein Vorwurf.

Ich habe auch Interfaces schon eine Weile genutzt, bis ich die Zusammenhänge wirklich verstanden habe.
Jetzt ist mir gar nicht klar, was daran so schwierig war.

Auch durch so eine Diskussion hier festigt man die eigenen Kenntnisse.
Insofern profitieren hier alle.
Stahli
http://www.StahliSoft.de
---
"Jetzt muss ich seh´n, dass ich kein Denkfehler mach...!?" Dittsche (2004)
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#37

AW: Classe/Interface aus WinProc aufrufen

  Alt 14. Sep 2017, 21:24
Ich denke da ich kein Informatiker bin .. ist es mir auch nicht so geläufig die richtigen Ausdrücke für ein Problem zu definieren.
Auf Grund dessen entstehen die Probleme mit denen ich zu kämpfen habe. (siehe Spaghetti Code) usw... für mich stellt dann so etwas einen Angriff gegen meine Person dar.

Ich bin ja nicht blöd.. hab ich wohl schon bewiesen aber mir fehlt es halt an den Dingen die ein Informatiker als selbstverständlich voraussetzt.
Aber das muss man nicht alles wissen.

PS:
EurekaLog ist ein mächtiges Werkzeug Habe mal die 30Tage Test Version versucht.
Feines Teil.

gruss

Geändert von EWeiss (14. Sep 2017 um 21:30 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von stahli
stahli

Registriert seit: 26. Nov 2003
Ort: Halle/Saale
4.336 Beiträge
 
Delphi 11 Alexandria
 
#38

AW: Classe/Interface aus WinProc aufrufen

  Alt 14. Sep 2017, 21:41
Wir helfen uns ja hier gegenseitig und freiwillig.
Persönliche Angriffe gibt es ja hier zum Glück so gut wie nicht - ist ja leider selten im Netz, dass es so freundlich zugeht.

Insofern muss man nur versuchen, nicht aneinander vorbei zu reden.

An Dich der Tipp: Es wäre vielleicht etwas geordneter zugegangen, wenn Du die Probleme und Fragen präziser formuliert hättest.
Wobei mir auch klar ist, dass das manchmal nicht so einfach ist, wenn man die Zusammenhänge noch nicht richtig einordnen kann.

Geht ja fast jedem so.
Stahli
http://www.StahliSoft.de
---
"Jetzt muss ich seh´n, dass ich kein Denkfehler mach...!?" Dittsche (2004)
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#39

AW: Classe/Interface aus WinProc aufrufen

  Alt 14. Sep 2017, 22:07
Zitat:
An Dich der Tipp: Es wäre vielleicht etwas geordneter zugegangen, wenn Du die Probleme und Fragen präziser formuliert hättest.
Korrekt..
Nur. Ich bin Hobbykoch und da kennt man auch nicht jede Apfelsorte

So sieht s jetzt aus und ist gut genug für mich.

gruss

Geändert von EWeiss (11. Jul 2019 um 16:48 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von stahli
stahli

Registriert seit: 26. Nov 2003
Ort: Halle/Saale
4.336 Beiträge
 
Delphi 11 Alexandria
 
#40

AW: Classe/Interface aus WinProc aufrufen

  Alt 14. Sep 2017, 22:32
Also die Optik entschädigt jede Mühe. Das hast Du echt drauf.
Stahli
http://www.StahliSoft.de
---
"Jetzt muss ich seh´n, dass ich kein Denkfehler mach...!?" Dittsche (2004)
  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 08:43 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