![]() |
AW: [XE2] Live Bindings
Also ich finde die Bindings auch sehr interessant. Fragt sich wie dann mit DB-Bindings und Performance aussieht. Ich habe mal das Notify nahezu komplett debugged - da werden ja für ein Binding gefühlte 10.000 Zeilen Sourcecode durchlaufen bis er beim RTTI ankommt.
|
AW: [XE2] Live Bindings
Na ja, je komfortabler und flexibler ein Framework zu benutzen ist, um so mehr muss dieses ja auch selbst durchführen und berücksichtigen. Das sieht man ja auch schon an der Benutzung der RTTI.
Und wenn man ein Observer-Pattern o.ä. selbst realisiert erzeugt das ja auch einigen Code, der abgearbeitet werden muss. Ich wäre da bezüglich der Perfomance nicht so pessimistisch. Aber Du kannst ja mal dynamisch 100 Controls erzeugen und verbinden... (und vor allem Dein D7 im Profil ersetzen ;-)) EDIT: Da stellt sich mir noch die Frage, wie Controls bei LiveBinding reagieren, die sich in geschlossenen Formularen oder ausgeblendeten TabSheets o.ä. befinden. Befassen dies sich mit der Werteaktualisierung? In meiner Lösung werden die Controls nur auf invalidate gesetzt und holen sich die neuen Werte, wenn sie neu gezeichnet werden. Das heißt, nicht sichtbare Controls kümmern sich nicht um neue Daten. |
AW: [XE2] Live Bindings
Zitat:
|
AW: [XE2] Live Bindings
Das Problem hat überhaupt nix mit Bindings zu tun sondern mit dem schrottigen TSpinEdit (nicht umsonst befindet sich diese Komponente unter Samples). Schau dir GetValue an und du weißt, warum dort ne Exception kommt, wenn der Text leer ist. Nur der Author selber weiß wahrscheinlich, warum er dort nicht StrToIntDef benutzt hat (vielleicht gabs das damals noch nicht). Dieser Fehler würde auch kommen, wenn du im OnChange ganz einfach
Delphi-Quellcode:
geschrieben hättest.
Label1.Top := SpinEdit1.Value
Nachtrag: Die Exception wird sogar geraised, wenn du einfach den Text im SpinEdit löschst und dann mit Pfeil hoch oder runter änderst. (GetValue wird getriggert) |
AW: [XE2] Live Bindings
Ich hab das
![]() |
AW: [XE2] Live Bindings
Zitat:
|
AW: [XE2] Live Bindings
Hab mal nen
![]() |
AW: [XE2] Live Bindings
... wobei es da vielleicht doch logischer wäre, auf einen Leerstring zu prüfen und dann MinValue zuzuweisen. Wenn jedoch "Müller" eingegeben wird, macht eine "ordentliche" Exception ja schon Sinn...
(soll aber zu dem Thema dann auch wieder reichen) |
AW: [XE2] Live Bindings
Zitat:
|
AW: [XE2] Live Bindings
Ich hab jetzt mal einen simplen Performancetest mit Bindung eines Label an ein Edit gemacht. Erwartungsgemäß ist das LiveBinding ca. 60 mal langsamer als eine direkte Zuweisung der Eigenschaften. Keine schlechte Leistung, wenn man bedenkt wieviel Code dafür durchlaufen wird.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:10 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