AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Projekte DSharp - Data bindings, MVVM und mehr für Delphi 2010 und höher
Thema durchsuchen
Ansicht
Themen-Optionen

DSharp - Data bindings, MVVM und mehr für Delphi 2010 und höher

Ein Thema von Stevie · begonnen am 18. Nov 2011 · letzter Beitrag vom 6. Feb 2015
Antwort Antwort
Benutzerbild von Stevie
Stevie

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

AW: DSharp - Data bindings, MVVM und mehr für Delphi 2010 und höher

  Alt 21. Nov 2011, 10:01
Der Spring DI Container ist weiterentwickelt, als der MEF Prototyp (der ja auch nicht von mir selbst entwickelt war, sondern den ich nur etwas modifiziert hatte).

Daher habe ich mich entschieden, diesen zu verwenden, da er alle Features hat, die ich benötige (die Sache mit dem Rad neu erfinden und so)
Die Schnittstelle von DSharp (der TSpringContainer) stellt genau die Funktionalität bereit, die auch der MEF Prototyp hatte (Import/ Export Attribute, Lazy initialization)
Stefan
“Simplicity, carried to the extreme, becomes elegance.” Jon Franklin

Delphi Sorcery - DSharp - Spring4D - TestInsight
  Mit Zitat antworten Zitat
mquadrat

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

AW: DSharp - Data bindings, MVVM und mehr für Delphi 2010 und höher

  Alt 21. Nov 2011, 10:15
Macht Sinn. Wenn es über einen Adapter läuft umso besser. Ich bin bei Spring4D aktuell noch nicht so sicher, wo bei denen die Reise hin geht. Ich hoffe mal, ich habe zwischen den Jahren Zeit mich da mal wieder umfassend drum zu kümmern. Aktuell läuft mal wieder die "Ich habe noch Budget gefunden, das weg muss" Rally
  Mit Zitat antworten Zitat
BlackSeven

Registriert seit: 25. Sep 2004
79 Beiträge
 
Delphi XE7 Professional
 
#3

AW: DSharp - Data bindings, MVVM und mehr für Delphi 2010 und höher

  Alt 22. Nov 2011, 15:26
Es kommt zu einer Zugriffsverletzung, wenn folgender Eventhandler hinzugefügt wird:

TEventTest = procedure(const AInterface: IInterface; var AKey: Word; var AKeyChar: WideChar; AShift: TShiftState) of object;

Delphi-Quellcode:

type

  TEventTest = procedure(const AInterface: IInterface; var AKey: Word; var AKeyChar: WideChar; AShift: TShiftState) of object;

  TForm1 = class(TForm)
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
  private

    _EventTest : TEvent<TEventTest>;

    procedure ProcessEventTest(const AInterface: IInterface; var AKey: Word; var AKeyChar: WideChar; AShift: TShiftState);

  public

  end;

var
  Form1: TForm1;

implementation


{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var

  Key : Word;
  KeyChar : WideChar;

begin

  _EventTest.EventHandler.Add(Self.ProcessEventTest);

  Key := 0;
  KeyChar := 'K';

  _EventTest.Invoke(nil, Key, KeyChar, []);

end;

procedure TForm1.ProcessEventTest(const AInterface: IInterface; var AKey: Word; var AKeyChar: WideChar; AShift: TShiftState);
begin

end;

Fehler tritt in Unit DSharp.Core.Events.pas in Zeile 247 auf:

Delphi-Quellcode:

  TValue.Make(Pointer(PNativeInt(@Params.Stack[LOffset])^),
    FParameters[i].ParamType.Handle, LArgs[i + 1]);
  Mit Zitat antworten Zitat
Benutzerbild von Stevie
Stevie

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

AW: DSharp - Data bindings, MVVM und mehr für Delphi 2010 und höher

  Alt 22. Nov 2011, 19:17
Mannomann, da haste mich aber kalt erwischt - ich hasse dieses Stack und Registergefrickel.
Keine Ahnung, warum ich die Parameter auf dem Stack falsch herum durchgegangen bin.

Fixed in r242

P.S.:
Unter XE und eher wird das übrigens vor die Wand klatschen.
Fälschlicherweise wird dort in der ObjAuto.pas für Sets eine Größe von -1 zurückgeliefert und daher stimmt die Stacksize nicht.
Das kann man durch ein const vor dem Set Parameter lösen. In XE2 ist dieser Bug behoben.
Stefan
“Simplicity, carried to the extreme, becomes elegance.” Jon Franklin

Delphi Sorcery - DSharp - Spring4D - TestInsight

Geändert von Stevie (22. Nov 2011 um 19:22 Uhr)
  Mit Zitat antworten Zitat
BlackSeven

Registriert seit: 25. Sep 2004
79 Beiträge
 
Delphi XE7 Professional
 
#5

AW: DSharp - Data bindings, MVVM und mehr für Delphi 2010 und höher

  Alt 22. Nov 2011, 19:51
Zitat:
ich hasse dieses Stack und Registergefrickel
Ich auch.

Danke für die schnelle Fehlerbereinigung.
  Mit Zitat antworten Zitat
Benutzerbild von Stevie
Stevie

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

AW: DSharp - Data bindings, MVVM und mehr für Delphi 2010 und höher

  Alt 1. Dez 2011, 23:09
Unter XE und eher wird das übrigens vor die Wand klatschen.
Fälschlicherweise wird dort in der ObjAuto.pas für Sets eine Größe von -1 zurückgeliefert und daher stimmt die Stacksize nicht.
Das kann man durch ein const vor dem Set Parameter lösen. In XE2 ist dieser Bug behoben.
Dank Andreas wird jetzt die entsprechende Routine für 2010 und XE zur Laufzeit gepatcht, so dass dieser Fehler nicht mehr auftritt.
Stefan
“Simplicity, carried to the extreme, becomes elegance.” Jon Franklin

Delphi Sorcery - DSharp - Spring4D - TestInsight
  Mit Zitat antworten Zitat
Jens01

Registriert seit: 14. Apr 2009
674 Beiträge
 
#7

AW: DSharp - Data bindings, MVVM und mehr für Delphi 2010 und höher

  Alt 3. Dez 2011, 13:35
Hallo Stevie,

habe gerade versucht Deine neuste Version zu compilieren, aber es kam der Fehler E2010 in DSharp.Bindings Zeile 305:
Delphi-Quellcode:
if TryGetRttiType(AComponent.ClassInfo, LType) and (LType.IsInheritedFrom('TForm')<- hier
    or LType.IsInheritedFrom('TFrame') or LType.IsInheritedFrom('TDataModule')) then
  begin
    LOwner := AComponent;
  end
Ich nutze XE2 mit dem 2. Update.
Liegt das an mir oder gibt es einen Fehler?

Gruss Jens
Achtung: Bin kein Informatiker sondern komme vom Bau.
  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: DSharp - Data bindings, MVVM und mehr für Delphi 2010 und höher

  Alt 3. Dez 2011, 14:37
Ich wüsste spontan nicht, was an dieser Zeile einen Fehler bringen sollte. Stelle bitte sicher, dass alle Source Dateien auf dem aktuellen Stand sind. Bei einem Update empfielt es sich außerdem, die dcu Dateien im Libraries\<Delphi Version> Ordner zu löschen (manuell oder über das Ausführen der clean.bat) und alle Packages zu builden und nicht nur kompilieren. Im Normalfall sollte aber ein Öffnen der BuildPackages.groupproj und ein Build all genügen.

Sollte der Fehler dann noch bestehen, bitte mal die komplette Meldung posten, E2010 sagt mir nur, inkompatible Typen, aber nich welche Stelle genau innerhalb dieser Zeile.
Stefan
“Simplicity, carried to the extreme, becomes elegance.” Jon Franklin

Delphi Sorcery - DSharp - Spring4D - TestInsight

Geändert von Stevie ( 3. Dez 2011 um 14:44 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 09:24 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