![]() |
DSharp - Data bindings, MVVM und mehr für Delphi 2010 und höher
Da das Thema DSharp nun doch des öfteren in diversen Threads auftaucht und dort dann oft bezüglich des eigentlichen Themas des Threads doch eher OT ist, mach ich hier mal den "offiziellen DP DSharp Diskussions Thread" auf ;)
Was ist eigentlich DSharp? Das D im Namen kommt natürlich von Delphi und das Sharp daher, da viele Konzepte aus der C# Welt stammen - und da die .Net Sprache von Embarcadero Prism heißt, war das noch nicht anderweitig belegt ;) Einen Großteil von DSharp macht das DataBinding aus. Ähnlich wie LiveBindings aber nicht so komplex und auf die Kernfunktionalitäten konzentriert. Und schon ab Delphi 2010 lauffähig - mit einigen wenigen Ausnahmen. Darauf aufbauend ist ein ![]() ![]() ![]() ![]() |
AW: DSharp - Data bindings, MVVM und mehr für Delphi 2010 und höher
Na da diskutier ich doch mit. Ist die MVVM Implementierung an eines der .NET MVVM Frameworks angelehnt? Wenn ja an welches? Ich finde ja Caliburn.Micro interessant.
EDIT: Nevermind, gerade den anderen Thread gelesen :D Zweite Frage: Warum spring4d als IOC-Container? Hattest du nicht eine MEF-Portierung in Arbeit? Kann man ja auch für IOC verwenden. |
AW: DSharp - Data bindings, MVVM und mehr für Delphi 2010 und höher
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) |
AW: DSharp - Data bindings, MVVM und mehr für Delphi 2010 und höher
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 :lol:
|
AW: DSharp - Data bindings, MVVM und mehr für Delphi 2010 und höher
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]); |
AW: DSharp - Data bindings, MVVM und mehr für Delphi 2010 und höher
Mannomann, da haste mich aber kalt erwischt - ich hasse dieses Stack und Registergefrickel. :oops:
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. |
AW: DSharp - Data bindings, MVVM und mehr für Delphi 2010 und höher
Zitat:
Danke für die schnelle Fehlerbereinigung. :thumb: |
AW: DSharp - Data bindings, MVVM und mehr für Delphi 2010 und höher
Zitat:
|
AW: DSharp - Data bindings, MVVM und mehr für Delphi 2010 und höher
Hallo Stevie,
habe gerade versucht Deine neuste Version zu compilieren, aber es kam der Fehler E2010 in DSharp.Bindings Zeile 305:
Delphi-Quellcode:
Ich nutze XE2 mit dem 2. Update.
if TryGetRttiType(AComponent.ClassInfo, LType) and (LType.IsInheritedFrom('TForm')<- hier
or LType.IsInheritedFrom('TFrame') or LType.IsInheritedFrom('TDataModule')) then begin LOwner := AComponent; end Liegt das an mir oder gibt es einen Fehler? Gruss Jens |
AW: DSharp - Data bindings, MVVM und mehr für Delphi 2010 und höher
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. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 21: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