+1 800 256 3608 (toll-free in North America) or +49 7531 90 60 10| service@combit.com

Performance - Druck - Variablen

components
(Peter Nomden) #1

Hallo Leute,

mir ist aufgefallen, dass Variablen mehrfach übergeben/angefordert werden. Wenn ich raten soll, wird pro Seite einmal “OnDefinedVariables” von der VCL-Komponente (Delphi) aufgerufen. Nun habe ich allerdings Variablen die eindeutig sind (bei mir alle Variablen). Der Holen der Variablen scheint mir verschenkte Zeit zu sein. Es würde reichen, wenn die Daten einmalig übergeben werden. Zum einen kostet das “Umschalten” zwischen der Delphi-Anwendung und dem Druckmodul (DLL) sicherlich Zeit und Ressourcen. Zum Anderen kostet das Holen der Werte um sie an die DLL zu übergeben (egal ob errechnete Werte oder Zugriff auf Datenbank) Zeit. Ähnlich läuft es mit benutzerdefinierten Variablen. Als Beispiel nehme ich mal die Ermittlung des Alters. Ich habe hier eine benutzerdefinierte Variable “Alter” angelegt. Die benutzerdefinierte Variable ruft hier eine eigens registrierte Funktion “GetAlter(Geburtstag [Datum])” auf. Nun wird das Alter an 5-6 Stellen angedruckt und für jede Anzeige wird erneut meine Funktion zur Ermittlung des Alters “GetAlter” aufgerufen.
Meine Frage ist nun: Gibt es einen Weg das zu verhindern? Kann man benutzerdefinierte so definieren, dass deren “Wert” nur einmalig ermittelt wird? Oder ist gar die Vorgehensweise falsch, so dass “benutzerdefinierte Variablen” für so etwas gar nicht gedacht sind?

Vielen Dank schonmal für die Zeit!

MfG Peter Nomden

(combit Support - Patrick Preuschoff) #2

Legitimerweise können sich Variablen 1x pro Seite ändern. Wenn Sie wissen, dass der gleiche Wert behalten werden kann, so würden Sie die Variable nur einmalig anmelden, da wir Inhalte nicht wieder löschen und diese so auf allen Folgeseiten ausgegeben werden können und Sie das gewünschte Verhalten erreichen.

(Peter Nomden) #3

Danke schonmal für die Info!
Gibt es auch eine Lösung für die “Benutzervariablen” (im Designer (Ver.24) auf dem Reiter “Projekt”)? Wie gesagt sorgt jeder Aufruf auf den verschiedenen Seiten dafür, dass die Werte neu ermittelt werden, was bei umfangreichen Projekten schnell die Druckperformance beeinflussen kann. (Ich beziehe mich hierbei darauf, dass eigene Funktionen registriert wurden und diese dann ja aufgerufen werden) Bisher beschwert sich zwar noch kein Kunde, aber ich würde gerne wissen “wie es richtig geht”, “bevor es zu spät ist”.

Vielen Dank schonmal und liebe Grüße aus dem Norden
Peter Nomden

(combit Support - Patrick Preuschoff) #4

Ob die Werte dann konstant bleiben oder nicht hängt von Ihrer Funktion ab - das kann LL nicht wissen. Ich würde Ihnen empfehlen, die Rückgabewerte für gegebene Parameter auf Applikationsseite zu cachen, wenn sie wissen, dass sich diese nicht ändern werden. So können Sie die Berechnung dann auf 1x beschränken, der Aufruf der Berechnungsfunktion selber kostet nur ein paar Taktzyklen.

Gruß zurück aus dem Süden :slight_smile: .