AGB  ·  Datenschutz  ·  Impressum  







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

Delphi 10.1 Berlin

Ein Thema von Darlo · begonnen am 19. Apr 2016 · letzter Beitrag vom 24. Nov 2016
Antwort Antwort
Bambini
(Gast)

n/a Beiträge
 
#1

AW: Delphi 10.1 Berlin

  Alt 20. Apr 2016, 16:31
Standard-mäßig ist Weak-Ref nicht eingeschaltet..... Wie kommst du drauf? In der Doku steht es korrekt
Aber leider ist die Bedingung WEAKREF - entgegen der Docu - bei Win32 und Win64 immer gesetzt.
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#2

AW: Delphi 10.1 Berlin

  Alt 20. Apr 2016, 16:45
Aber muss die nicht auch gesetzt sein, denn ab 10.1 Berlin wird doch [weak] für Interfaces unterstützt.

Somit würde ich erwarten, dann WEAKREF und WEAKINTFREF auch unter Windows definiert sind. WEAKINSTREF allerdings nicht.

Und genau so isses auch, wie mein Super-Hyper-Wuppdi-Testprogramm zeigt
Delphi-Quellcode:
program Project1;

{$APPTYPE CONSOLE}
{$R *.res}

uses
  System.SysUtils;

begin
  {$IFDEF WEAKREF}
  WriteLn( 'WEAKREF' );
  {$ENDIF}
  {$IFDEF WEAKINSTREF}
  WriteLn( 'WEAKINSTREF' );
  {$ENDIF}
  {$IFDEF WEAKINTFREF}
  WriteLn( 'WEAKINTFREF' );
  {$ENDIF}
  ReadLn;
end.
Fazit: Die Dokumentation ist falsch!
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)

Geändert von Sir Rufo (20. Apr 2016 um 16:57 Uhr)
  Mit Zitat antworten Zitat
Bambini
(Gast)

n/a Beiträge
 
#3

AW: Delphi 10.1 Berlin

  Alt 20. Apr 2016, 16:50
Kleiner Nachtrag: Unter Win32 und win64 ist auch WEAKINTFREF - entgegen der Docu - gesetzt. Bei WEAKINSTREF passt es.
Das ist etwas schade, da man globale gesetzte DEFINE's nicht global UNDEF'en kann.
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#4

AW: Delphi 10.1 Berlin

  Alt 20. Apr 2016, 16:54
Kleiner Nachtrag: Unter Win32 und win64 ist auch WEAKINTFREF - entgegen der Docu - gesetzt. Bei WEAKINSTREF passt es.
Das ist etwas schade, da man globale gesetzte DEFINE's nicht global UNDEF'en kann.
Die müssen auch gesetzt sein, denn Delphi unterstützt nun auf jeder Plattform die Attribute unsafe, volatile und weak (weak für Interfaces).

siehe dazu http://docwiki.embarcadero.com/RADSt...terst.C3.BCtzt
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
Benutzerbild von MEissing
MEissing

Registriert seit: 19. Jan 2005
Ort: Egelsbach
1.384 Beiträge
 
Delphi 12 Athens
 
#5

AW: Delphi 10.1 Berlin

  Alt 20. Apr 2016, 16:57
Oder am Beispiel der Compiler Direktive WEAKREF:

Code:
Defined for compilers that can use weak references (the [weak] attribute).
*New* in XE4/iOS

FOR COMPILERS....
Matthias Eißing
cu://Matthias.Eißing.de [Embarcadero]
Kein Support per PN
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#6

AW: Delphi 10.1 Berlin

  Alt 20. Apr 2016, 17:09
Oder am Beispiel der Compiler Direktive WEAKREF:

Code:
Defined for compilers that can use weak references (the [weak] attribute).
*New* in XE4/iOS

FOR COMPILERS....
Was soll uns das jetzt sagen?

Fakt ist, dass unter Win32/Win64 für Interfaces das weak Attribut genutzt werden kann und es auch funktioniert. Also ist es doch nur konsequent, wenn dann auch die Compiler-Direktiven analog zur Funktion gesetzt sind.

Oder kriege ich hier jetzt nichts mehr mit?
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
Benutzerbild von MEissing
MEissing

Registriert seit: 19. Jan 2005
Ort: Egelsbach
1.384 Beiträge
 
Delphi 12 Athens
 
#7

AW: Delphi 10.1 Berlin

  Alt 20. Apr 2016, 17:13
Die Direktive ist (immer) gesetzt, wenn der Compiler das generell unterstützen kann....
Matthias Eißing
cu://Matthias.Eißing.de [Embarcadero]
Kein Support per PN
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: Delphi 10.1 Berlin

  Alt 20. Apr 2016, 17:16
Ich dachte auch irgendwo gelesen zu haben, daß das WEAK jetzt auch im windows-Compiler drin ist.
Aber dachte mir, daß sich das vorallem auf Interfaces bezieht, welche schon lange referenzgezählt sind.

Im Grunde wäre es schon nett, wenn man die Referenzzählung bei sowas einheitlich in allen Plattformen deaktivieren könnte. (vorallem für Kreuzreferenzen, damit da nichts ewig lebt)
Ein Therapeut entspricht 1024 Gigapeut.
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#9

AW: Delphi 10.1 Berlin

  Alt 20. Apr 2016, 17:22
Die Direktive ist (immer) gesetzt, wenn der Compiler das generell unterstützen kann....
Das ist mir klar ... aber die aktuelle Doku ist falsch
in Worten: falsch
in anderen Worten: nicht richtig

IST-Zustand (falsch in der Doku)
SymbolDCC32DCC64
AUTOREFCOUNTnot definednot defined
WEAKREFnot definednot defined
WEAKINSTREFnot definednot defined
WEAKINTFREFnot definednot defined

SOLL-Zustand (so müsste es in der Doku stehen)
SymbolDCC32DCC64
AUTOREFCOUNTnot definednot defined
WEAKREFDEFINEDDEFINED
WEAKINSTREFnot definednot defined
WEAKINTFREFDEFINEDDEFINED
Ich dachte auch irgendwo gelesen zu haben, daß das WEAK jetzt auch im windows-Compiler drin ist.
Aber dachte mir, daß sich das vorallem auf Interfaces bezieht, welche schon lange referenzgezählt sind.
Das geht ja jetzt auch unter Windows (Compiler DCC32/DCC64)
Delphi-Quellcode:
TBar = class
  [weak]
  FFoo: IFoo;
end;
Ich war ja nicht in Berlin, gebe aber gerne Nachhilfe was Delphi so an Neuerungen drin hat (für alle die in Berlin waren und es noch nicht wissen)
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)

Geändert von Sir Rufo (20. Apr 2016 um 17:26 Uhr)
  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:51 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz