AGB  ·  Datenschutz  ·  Impressum  







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

Weak-Referenzen im Windows

Ein Thema von himitsu · begonnen am 27. Mai 2020 · letzter Beitrag vom 28. Mai 2020
Antwort Antwort
Benutzerbild von himitsu
himitsu

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

Weak-Referenzen im Windows

  Alt 27. Mai 2020, 21:42
Delphi-Version: 10.4 Sydney
Wurde das jetzt erst repariert, oder geht das schon länger?
[EDIT] im 10.3.3 geht es auch schon.

Weiß zufällig wann das repariert wurde?
Hatte es damals, vor vielen Jahren ausprobiert und gefrusstet die letzten Jahre sinnlos ersatzweise weiterhin böse in Pointer gecastet.

War jetzt wieder auf die Idee gekommen, da in 10.4 das Speichermanagement etwas geändert wurde.
> unified memory management

Als ich es das letzte Mal versuchte, da ging es nur im NextGen und der Windows-Compiler hatte das [Weak] einfach so und ohne Warnung ignoriert.
Delphi-Quellcode:
type
  TTest = class(TInterfacedObject)
    destructor Destroy; override;
  end;

destructor TTest.Destroy;
begin
  ShowMessage('bin weg');
  inherited;
end;

procedure TForm2.FormCreate(Sender: TObject);
var
  I1: IInterface;
  [Weak] I2: IInterface;
begin
  I1 := TTest.Create;
  I2 := I1;
  I1 := nil; // hier wird das Interface/Objekt freigegeben und I2 auf NIL gesetzt
  if Assigned(I2) then
    ShowMessage('och nö');
end;


PS: die Klassenverfollständigung mag keine Attribute.

Delphi-Quellcode:
type
  TTest = class(TInterfacedObject)
    destructor Destroy; override; // hier der Cursor und Strg+Shift+C
  end;

procedure TForm2.FormCreate(Sender: TObject);
var
  I1: IInterface;
  [Weak] I2: IInterface;
begin
  I1 :=
end;
und raus kommt das
Delphi-Quellcode:
type
  TTest = class(TInterfacedObject)
    destructor Destroy; override;
  end;

procedure TForm2.FormCreate(Sender: TObject);
var
  I1: IInterface;
  [Weak] I2: IInterface;
{ TTest }

destructor TTest.Destroy;
begin

  inherited;
end;

begin
  I1 :=
end;
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

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

AW: Weak-Referenzen im Windows

  Alt 27. Mai 2020, 22:49
Wurde das jetzt erst repariert, oder geht das schon länger?
[EDIT] im 10.3.3 geht es auch schon.
TInstItem.ClearWeakRefs, in dem die Weak-Referenzen auf nil gesetzt werden, ist zumindest in den letzten Versionen unverändert geblieben (wie übrigens der größte Teil der System Unit).
Sebastian Jänicke
Alle eigenen Projekte sind eingestellt, ebenso meine Homepage, Downloadlinks usw. im Forum bleiben aktiv!
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: Weak-Referenzen im Windows

  Alt 28. Mai 2020, 00:22
Im NextGen (Android) ging es damals (2013 ... man, schon wieder lange her) ja schon, aber im Windows-Compiler wurde es Anfangs scheinbar nicht implementiert, oder es gab einen Bug.

Für TObject war es ja sowieso nicht drin, da das nur im NextGen wie ein Interface reagierte,
aber als ich versuchte das für IInterface zu benutzen, da reagierte Win32 mit und ohne [Weak] gleich/unverändert.

Aber da das Feature ja für ARC erfunden wurde, war es irgendwie "verständlich", dass es im WindowsCompiler nicht ging und ich hatte nicht wieder danacht gesehn, dazumal ich auch nichts wieder drüber zu hören war, dass/ob sich was geändert hat.
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.
  Mit Zitat antworten Zitat
Benutzerbild von Stevie
Stevie

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

AW: Weak-Referenzen im Windows

  Alt 28. Mai 2020, 10:06
https://blog.marcocantu.com/blog/201...eferences.html
Stefan
“Simplicity, carried to the extreme, becomes elegance.” Jon Franklin

Delphi Sorcery - DSharp - Spring4D - TestInsight
  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 16:18 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