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
Seite 1 von 2  1 2      
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 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
 
#2

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
 
#3

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
Jens01

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

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

  Alt 3. Dez 2011, 14:55
habe clean.bat gemacht und der Fehler kommt hier :
and (LType.IsInheritedFrom('TForm')
Zitat:
[DCC Fehler] DSharp.Bindings.pas(305): E2010 Inkompatible Typen: 'TRttiType' und 'string'
[DCC Fehler] DSharp.Bindings.pas(306): E2010 Inkompatible Typen: 'TRttiType' und 'string'
[DCC Fehler] DSharp.Bindings.pas(306): E2010 Inkompatible Typen: 'TRttiType' und 'string'
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
 
#5

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

  Alt 3. Dez 2011, 15:09
IsInherited ist eine 2fach überladene Methode des TRttiType class helpers in the DSharp.Core.Reflection. Auf die Gefahr hin, mich zu wiederholen: stelle bitte sicher, dass du auch das DSharp.Core Package neu kompiliert hast und nicht irgendwo noch eine alte Version davon liegen hast. Der Fehler deutet darauf hin, dass die Überladung der Methode, welche ich am 6. November (r204) hinzugefügt habe, nicht gefunden wird.
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
 
#6

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

  Alt 3. Dez 2011, 15:12
Sorry, sorry....mein Fehler.
Aus irgendeinem Grund wurden nicht alle Dateien runtergeladen bzw aktualisiert.
Ich habe alles noch mal neu runtergeladen und es läuft!

Wenn ich Dich mal treffe, gebe ich nen Bier aus, okay?
Achtung: Bin kein Informatiker sondern komme vom Bau.

Geändert von Jens01 ( 3. Dez 2011 um 15:14 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Stevie
Stevie

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

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

  Alt 3. Dez 2011, 15:18
Sorry, sorry....mein Fehler.
Aus irgendeinem Grund wurden nicht alle Dateien runtergeladen bzw aktualisiert.
Ich habe alles noch mal neu runtergeladen und es läuft!

Wenn ich Dich mal treffe, gebe ich nen Bier aus, okay?
Ist doch kein Problem, dafür ist der Thread ja da - und jau, gute Idee
Stefan
“Simplicity, carried to the extreme, becomes elegance.” Jon Franklin

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

Registriert seit: 26. Nov 2003
Ort: Halle/Saale
4.358 Beiträge
 
Delphi 11 Alexandria
 
#8

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

  Alt 4. Dez 2011, 14:04
Nachdem ich beim ersten Versuch wegen diverser Probleme gescheitert bin habe ich heute in einem Testsystem noch einen weiteren Versuch unternommen (XE Prof).
Mein GData hat wieder angeschlagen. Da ich mit einem Testsystem arbeite, habe ich das mal ignoriert.


Hier meine Schritte und Probleme, falls jemand allein auch nicht zurande kam:

Ich habe folgende Ordner angelegt:

Projekte\DSharp
.\DelphiSorcery
.\DelphiSpring
.\VST

Dann TortoiseSVN installieren und für die o.g. Ordner über Rechtsklick/SVN Checkout die Projektdaten laden:
DelphiSorcery -> http://delphisorcery.googlecode.com/svn/trunk/
DelphiSpring -> http://delphi-spring-framework.googl...com/svn/trunk/
VST -> http://virtual-treeview.googlecode.com/svn/trunk/

Dann die Projekte erzeugen:


VST
===

Package erzeugen
C:\Users\as\Projekte\DSharp\vst\Packages\Delphi XE\VirtualTreesR.dproj

Bibliothekspfad hinzufügen:
C:\Users\as\Projekte\DSharp\vst\Common

Packages installieren
C:\Users\as\Projekte\DSharp\vst\Packages\Delphi XE\VirtualTreesD.dproj


DelphiSpring
============

Package erzeugen
C:\Users\as\Projekte\DSharp\delphispring\Packages\ DelphiXE\Spring.System.dproj
[DCC Warnung] Spring.System.dpk(50): W1006 Unit 'Spring.Reflection.ValueExpression' ist veraltet

Package erzeugen
C:\Users\as\Projekte\DSharp\delphispring\Packages\ DelphiXE\Spring.Core.dproj
[DCC Warnung] Spring.Core.dpk(35): W1007 Unit 'Spring.Configuration.ConfigurationProperty' ist experimentell
[DCC Warnung] Spring.Core.dpk(36): W1007 Unit 'Spring.Configuration.Node' ist experimentell
[DCC Warnung] Spring.Core.dpk(37): W1007 Unit 'Spring.Configuration' ist experimentell
[DCC Warnung] Spring.Core.dpk(39): W1007 Unit 'Spring.Configuration.Sources' ist experimentell
[DCC Warnung] Spring.Logging.LoggerManager.pas(39): W1007 Unit 'Spring.Configuration' ist experimentell

Ausführen
C:\Users\as\Projekte\DSharp\delphispring\Tests\Spr ing.Tests.dproj
[DCC Warnung] Spring.Tests.Reflection.pas(108): W1006 Unit 'Spring.Reflection.ValueExpression' ist veraltet
[DCC Warnung] Spring.Tests.Configuration.pas(32): W1007 Unit 'Spring.Configuration' ist experimentell
[DCC Warnung] Spring.Tests.Configuration.pas(53): W1007 Unit 'Spring.Configuration.Node' ist experimentell
[DCC Warnung] Spring.Tests.Configuration.pas(54): W1007 Unit 'Spring.Configuration.Sources' ist experimentell
[DCC Warnung] Spring.Tests.Configuration.pas(55): W1007 Unit 'Spring.Configuration.ConfigurationProperty' ist experimentell
[DCC Warnung] Spring.Tests.Logging.pas(7): W1007 Unit 'Spring.Configuration' ist experimentell
[DCC Warnung] Spring.Tests.Logging.pas(8): W1007 Unit 'Spring.Configuration.Sources' ist experimentell
[DCC Warnung] Spring.Logging.LoggerManager.pas(39): W1007 Unit 'Spring.Configuration' ist experimentell


DelphiSorcery
=============

Alle Packages erzeugen

Package installieren
C:\Users\as\Projekte\DSharp\delphisorcery\Packages \DelphiXE\dclDataBindings.dproj
C:\Users\as\Projekte\DSharp\delphisorcery\Packages \DelphiXE\dclDataBindingsVCL.dproj
C:\Users\as\Projekte\DSharp\delphisorcery\Packages \DelphiXE\dclTreeViewPresenter.dproj


=> Sampels\MVVM\Calculator

Bibliothekspfad hinzufügen:
C:\Users\as\Projekte\DSharp\delphispring\Library\D elphiXE\Debug

... OK


=> Sampels\MVVM\Explorer

Bibliothekspfad hinzufügen:
C:\Users\as\Projekte\DSharp\delphisorcery\Samples\ MVVM\Calculator\Debug\Win32

... [DCC Fataler Fehler] DSharp.Core.RegularExpressions.pas(93): F2051 Unit DSharp.Aspects.Weaver wurde mit einer unterschiedlichen Version von DSharp.Core.Reflection.TRttiTypeHelper.GetAttribut esOfType compiliert


=> Sampels\MVVM\ContactManager

Bibliothekspfad hinzufügen:
C:\Users\as\Projekte\DSharp\vst\Source


Fazit:
~~~~~~

Grundsätzlich hat die Installation so funktioniert.
Besonders hat mich (natürlich) das MVVM interessiert.
Die Beispiele muss ich mir noch in Ruhe anschauen. Der Explorer ließ sich jedoch nicht erzeugen.
Auf den ersten Blick konnte ich nicht nachvollziehen, wieviel Arbeit das Framework einem wirklich erspart - wie es also für das Erstellen eines neuen Projektes letztlich eingesetzt wird.
Hat man wirklich deutlich weniger Arbeit dadurch?

Soweit mein erster Eindruck. Mir fehlt noch etwas der Zugang. Ich muss mir dafür nochmal die Zeit nehmen.

Ein Video (notfalls auch in englisch) wäre m.E. ganz nett...
Miniaturansicht angehängter Grafiken
dsharpvirus.png  
Stahli
http://www.StahliSoft.de
---
"Jetzt muss ich seh´n, dass ich kein Denkfehler mach...!?" Dittsche (2004)

Geändert von stahli ( 4. Dez 2011 um 14:07 Uhr)
  Mit Zitat antworten Zitat
TiGü

Registriert seit: 6. Apr 2011
Ort: Berlin
3.079 Beiträge
 
Delphi 10.4 Sydney
 
#9

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

  Alt 4. Mär 2013, 12:34
Hallo Stevie,

ich habe mir am Freitag (1. März) die Sourcen für DSharp und Spring gezogen, um mir deine Lösungen für MVVM näher anzuschauen.
Auf den ersten Blick bin ich schwer begeistert.
Es ist geradezu Magie am Werk!

Aber das MVVM\Explorer Sample ist defekt.
Zuerst eine Kleinigkeit: Es fehlen die Verweise in der Projektdatei auf ..\..\..\Source\Aspects und ..\..\..\Source\Logging.
Auch andere Beispielprojekte haben nicht alle Suchpfade inkludiert.

Aber nun das Problem:
Beim Ausführen (mit XE3 Prof) kommt es zu einer Exception:
Code:
---------------------------
Debugger Exception Notification
---------------------------
Project Explorer.exe raised exception class $C0000096 with message 'privileged instruction at 0x024d37f0'.
---------------------------
Break  Continue  Help  
---------------------------
Ein Klick auf Break zeigt dann diesen Callstack:
Code:
:024637f0 
System.Rtti.RawInvoke(???,???)
System.Rtti.Invoke($95BCD4,((($95BBB0, Pointer($970F60) as IValueData, 80, 20048, 39341648, $2584E50, TClass($2584E50), 80, 20048, 39341648, 1,58916483213911e-37, 1,9437356727579e-316, 0,00000000014341e-4933, 39341648, 3934,1648, 39341648, 39341648, ($2584E50, nil), $2584E50)), (($959B14, TValueDataImpl($2463AA4) as IValueData, 0, 0, 0, nil, nil, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, (nil, nil), nil))),???,???,False)
System.Rtti.TRttiInstanceProperty.DoSetValue(???,$18FBC8)
System.Rtti.TRttiProperty.SetValue($2584E50,$18FBC8)
:00636fee TRttiPropertyHelper.SetValue + $26
DSharp.ComponentModel.Composition.SpringContainer.TPropertyInjectionWithDelegate.DoInject((($95BBB0, Pointer($970F60) as IValueData, 80, 20048, 39341648, $2584E50, TClass($2584E50), 80, 20048, 39341648, 1,58916483213911e-37, 1,9437356727579e-316, 3,72036854775808e+580, 39341648, 3934,1648, 39341648, 39341648, ($2584E50, nil), $2584E50)),(...))
:007985b1 TInjectionBase.Inject + $71
:007995e6 TReflectionComponentActivator.ExecuteInjections + $7E
:00799501 TReflectionComponentActivator.CreateInstance + $E1
:007bb8a2 TTransientLifetimeManager.GetInstance + $42
:007c86d4 TServiceResolver.DoResolve + $90
:007c8c11 TServiceResolver.Resolve + $151
:007c88a9 TServiceResolver.Resolve + $15
DSharp.ComponentModel.Composition.SpringContainer.TSpringContainer.Resolve($959970,'')
Explorer.{DSharp.PresentationModel.Bootstrapper}TBootstrapper<Interfaces.IMainViewModel>.GetInstance($959970,'')
Explorer.{DSharp.PresentationModel.Bootstrapper}@TBootstrapper`1.Create$553$ActRec<Interfaces.IMainViewModel>.$0$Body($959970,'')
Explorer.Composition.Get<Interfaces.IMainViewModel>('')
Explorer.Composition.Get<Interfaces.IMainViewModel>
Explorer.{DSharp.PresentationModel.Bootstrapper}@TBootstrapper`1.StartRuntime$556$ActRec<Interfaces.IMainViewModel>.$0$Body
Explorer.{DSharp.Core.Lazy}TLazy<Interfaces.IMainViewModel>.Initialize
Explorer.{DSharp.Core.Lazy}TLazy<Interfaces.IMainViewModel>.Invoke
Explorer.{DSharp.Core.Lazy}Lazy<Interfaces.IMainViewModel>.GetValue
Explorer.{DSharp.PresentationModel.Bootstrapper}TBootstrapper<Interfaces.IMainViewModel>.StartRuntime
Explorer.TApplicationVCLHelper.Start<Interfaces.IMainViewModel>
Explorer.Explorer
:766933aa kernel32.BaseThreadInitThunk + 0x12
:77839ef2 ntdll.RtlInitializeExceptionChain + 0x63
:77839ec5 ntdll.RtlInitializeExceptionChain + 0x36
Was in diese Zeile zeigt:
Delphi-Quellcode:
//System.Rtti Zeile 6914
@@skip_push:

      // Do call
      MOV EAX, [EBX].TParamBlock.RegEAX
      MOV EDX, [EBX].TParamBlock.RegEDX
      MOV ECX, [EBX].TParamBlock.RegECX
      CALL [EBP - 4]
      [B]MOV [EBX].TParamBlock.RegEAX, EAX[/B]
      MOV [EBX].TParamBlock.RegEDX, EDX

      MOVSX EAX, BYTE PTR [EBX].TParamBlock.PopFP
      INC EAX
      JNZ @@do_fp_pop
      NOP
      JMP @@done_fp_pop
Am Ende gibts noch Memory Leaks:
Code:
---------------------------
Unexpected Memory Leak
---------------------------
An unexpected memory leak has occurred. The unexpected small block leaks are:



1 - 12 bytes: TMoveArrayManager<DSharp.Core.MethodIntercept.TMethodIntercept> x 4, Unknown x 3

13 - 20 bytes: TMethodIntercept x 18

21 - 28 bytes: TMethodImplementation x 18, TVirtualInterface.Create$90$ActRec x 3, TInterfaceMethodInterceptor.Proxify$432$ActRec x 4, TWindowManager x 1

29 - 36 bytes: Unknown x 3

37 - 44 bytes: TObjectList<DSharp.Core.MethodIntercept.TMethodIntercept> x 4

53 - 60 bytes: TList<Interfaces.IWorkingAreaViewModel> x 1, TVirtualInterface x 4, TList<DSharp.Core.Validations.IValidationResult> x 3, Unknown x 3

109 - 116 bytes: TWorkingAreaViewModel x 1

117 - 124 bytes: TNavigationViewModel x 1, TMainViewModel x 1


---------------------------
OK  
---------------------------
  Mit Zitat antworten Zitat
TiGü

Registriert seit: 6. Apr 2011
Ort: Berlin
3.079 Beiträge
 
Delphi 10.4 Sydney
 
#10

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

  Alt 4. Mär 2013, 12:36
Nachtrag:
Das Erzeugen von FNavigation.Elements verursacht die Exception.

Delphi-Quellcode:
procedure TMainViewModel.SetWorkingAreas(const Value: TArray<IWorkingAreaViewModel>);
begin
  FWorkingAreas := Value;

  if Assigned(FNavigation) then
  begin
    FNavigation.Elements := TList<IWorkingAreaViewModel>.Create; //<--- hier
    FNavigation.Elements.AddRange(FWorkingAreas);
  end;
end;
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 20:54 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