AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Algorithmen, Datenstrukturen und Klassendesign Delphi Dependency Injection - Ein paar allgemeine Fragen
Thema durchsuchen
Ansicht
Themen-Optionen

Dependency Injection - Ein paar allgemeine Fragen

Ein Thema von Dawn87 · begonnen am 10. Jun 2014 · letzter Beitrag vom 11. Jun 2014
Antwort Antwort
Benutzerbild von himitsu
himitsu

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

AW: Dependency Injection - Ein paar allgemeine Fragen

  Alt 10. Jun 2014, 23:42
(noch gibt es das nicht, aber in Zukunft plane ich eine automatische Registrierung aller Typen, die mit entsprechenden Attributen versehen sind)
Sowas wollte ich mir ja grade basteln und bin dann voll in den Bugs gelandet, welche natürlich erst später gegen Geld behoben wurden.
Ein Therapeut entspricht 1024 Gigapeut.
  Mit Zitat antworten Zitat
Benutzerbild von Stevie
Stevie

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

AW: Dependency Injection - Ein paar allgemeine Fragen

  Alt 11. Jun 2014, 00:17
(noch gibt es das nicht, aber in Zukunft plane ich eine automatische Registrierung aller Typen, die mit entsprechenden Attributen versehen sind)
Sowas wollte ich mir ja grade basteln und bin dann voll in den Bugs gelandet, welche natürlich erst später gegen Geld behoben wurden.
Und welche Bugs sollen das sein?
Stefan
“Simplicity, carried to the extreme, becomes elegance.” Jon Franklin

Delphi Sorcery - DSharp - Spring4D - TestInsight
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: Dependency Injection - Ein paar allgemeine Fragen

  Alt 11. Jun 2014, 07:11
Daß diese Attribute nicht funktionieren? Es gibt, nach nicht erkennbaren Mustern, Fehler in der RTTI, welche beim Auflisten der Attribute (GetAttributes) zu Exceptions/Zugriffsverletzungen führen und es sich somit keine Attribute auslesen lassen.
In XE6 geht es scheinbar, zumindestens die paar Fälle, welche ich testen konnte.

Das ToString der TRttiIndexedProperty ist ebenfalls defekt, aber das konnte ich durch manuelles Auslesen abfangen und so wichtig sind diese Strings auch nicht unbedingt, weswegen es kaum auffällt.
Ein Therapeut entspricht 1024 Gigapeut.

Geändert von himitsu (11. Jun 2014 um 07:15 Uhr)
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.880 Beiträge
 
Delphi 11 Alexandria
 
#4

AW: Dependency Injection - Ein paar allgemeine Fragen

  Alt 11. Jun 2014, 07:14
Hast Du die Fehler gemeldet? Bzw. gibt es schon Einträge in QC?
Markus Kinzler
  Mit Zitat antworten Zitat
mquadrat

Registriert seit: 13. Feb 2004
1.113 Beiträge
 
Delphi XE2 Professional
 
#5

AW: Dependency Injection - Ein paar allgemeine Fragen

  Alt 11. Jun 2014, 07:15
Also ich hatte mit GetAttributes bisher keine Probleme (XE2). Bringt dir natürlich nichts
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: Dependency Injection - Ein paar allgemeine Fragen

  Alt 11. Jun 2014, 07:35
Nee, die Fehler sind ja scheinbar schon behoben und glaubt denn wirklich jemand, daß es für XE3/XE4 noch Bugfixes geben wird?

Ich hab den Code noch drin, und hab das Schritt für Schritt aktiviert und diesesmal knallte es gleich bei der zweiten Verwendung.
Das ändert sich gern mal und es ist nicht erkennbar, warum/wann es passiert ... ist fast wie bei den erühmten Internen-Compiler-Fehlern, welche auch mal verschwinden, wenn man irgendwo eine Leerzeile einfügt.


Delphi-Quellcode:
// Kurzfassung, ohne Dokumentation und so

{$IF CompilerVersion < 27}  // kann auch 26 (XE5) sein, aber das konnte ich nicht testen
  {$DEFINE SCHROTTIGERTTI}
{$IFEND}

type
  EOTAException = class(ENonAIRException);

  OTAIntfAttribute = class(TCustomAttribute);
  NoOTAIntfAttribute = class(TCustomAttribute)
    ExternalIntf: Boolean;
    constructor Create(ExternalIntf: Boolean=False);
  end;
  TOTARegisterMode = (AsClass, AsComponent, NoIconComponent);
  OTARegisterAttribute = class(TCustomAttribute) // RegisterClass, RegisterComponent, RegisterNoIcon
    Mode: TOTARegisterMode;
    constructor Create(AsClass: Boolean=False); overload;
    constructor Create(Mode: TOTARegisterMode); overload;
  end;
  OTAPropCatAttribute = class(TCustomAttribute) // SetPropertyCategory
    Category, Properties: string;
    constructor Create(Category: string; Properties: string);
  end;
  ROAttribute = class(TCustomAttribute);
Und da, wo es knallt, ist nichtmal etwas "Schlimmes" bei:
Delphi-Quellcode:
type
  {$IFNDEF SCHROTTIGERTTI}[NoOTAIntf, OTARegister]{$ENDIF}
  TOTAModuleEvents = class(TOTABase)
  end;
Wenn ich das auskommentiere, dann knallt es irgendwann später irgendwo und manchmal meistens gehen genau solche Zeilen problemlos durch.

Anfangs dachte ich, das liegt eventuell an den Parametern oder dem überladenen Consructor, aber selbst wo ich die mal alle ausgbaut hatte und es Ohne versuchte, da knallte es irgendwann dennoch wieder.



Also, ich hab's noch nicht aufgegeben, aber aktuell ist es für mich leider nicht nutzbar und nach mehreren Tagen genervtem Rumprovieren hatte ich's dann einfach vor'm Compiler versteckt.
Ein Therapeut entspricht 1024 Gigapeut.

Geändert von himitsu (11. Jun 2014 um 09:19 Uhr) Grund: weil ich es kann
  Mit Zitat antworten Zitat
Dawn87

Registriert seit: 15. Feb 2007
Ort: Lüdenscheid
189 Beiträge
 
Delphi XE5 Professional
 
#7

AW: Dependency Injection - Ein paar allgemeine Fragen

  Alt 11. Jun 2014, 08:39
Vielen Dank für die Antwort.

Ich werde heute Abend ein wenig Zeit in meinem Demo-Projekt verbringen. Die Links und die Stichworte helfen mir vermutlich erstmal weiter.

Grüße
  Mit Zitat antworten Zitat
Benutzerbild von Stevie
Stevie

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

AW: Dependency Injection - Ein paar allgemeine Fragen

  Alt 11. Jun 2014, 09:15
Dass GetAttributes manchmal nix ausliest, hatte ich schonmal. Allerdings hatte dies letztlich auf Multithreading in Verbindung mit Modulen laden/entladen zu tun, da dort eine raise condition auftritt (gibt's auch einen schönen Kommentar in der Rtti.pas zu)
Wie wäre es mal mit einem SSCCE zu dem Problem? Stückweise unkompilierbarer Samplecode hilft da nicht weiter.
Übrigens, schau mal ob du irgendwo die $RTTI direktive nutzt. Das kann nämlich dazu führen, dass Attribute nicht ausgelesen werden können.
Stefan
“Simplicity, carried to the extreme, becomes elegance.” Jon Franklin

Delphi Sorcery - DSharp - Spring4D - TestInsight

Geändert von Stevie (11. Jun 2014 um 09:19 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 15:56 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