AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi Variablen doppelt (float und str) verwalten?
Thema durchsuchen
Ansicht
Themen-Optionen

Variablen doppelt (float und str) verwalten?

Ein Thema von cltom · begonnen am 18. Feb 2022 · letzter Beitrag vom 21. Feb 2022
 
cltom

Registriert seit: 22. Sep 2005
230 Beiträge
 
Delphi 12 Athens
 
#1

Variablen doppelt (float und str) verwalten?

  Alt 18. Feb 2022, 10:45
Delphi-Version: XE2
Hallo,

eine Stil- oder Effizienz-Frage und eigentlich ein klassisches Thema. Man hat einen Haufen Variablen in einer Klasse, vorwiegend double, integer, einige wenige Strings (hier nicht relevant). Für das User-Interface, die Ausgabe, etc. braucht man eine String-Version der Variablen. Also FloatToStr/F. Dazu noch eine Umwandlung von SI in die passende Einheit (die Variablen liegen alle in SI vor, das UI stellt dem User passende Einheiten zur Verfügung).

Im Grunde braucht es also sinngemäß so etwas:

  edt_Value.Text := FloatToStrF(RoundTo(ConvertFromSI(SomeClass.Value, SomeClass.TargetUnit), -2); Alles gut soweit.

Nun braucht man den oben erzeugten String (konvertiert und gerundet) an anderer Stelle nochmals, etwa in einem StringGrid.

So, jetzt stellt sich die Frage:

a) den gleichen Befehl von oben im Grunde rüberkopieren
b) den String einmal erstellen und als weitere Variable in der Klasse mitführen
c) eine eigene Klasse nur mit den Strings erzeugen
d) den String von dort kopieren, wo er schon erzeugt ist
e) für jede Variable eine eigene Funktion bauen, die sie als String zurückgibt.
f) die Königslösung: eine generelle Funktion bauen, die eine beliebige Variable als String zurückgibt

a) hat den augenscheinlichen Nachteil, dass Code vervielfacht wird. Da die Konvertierung von Einheiten über einen Datenbank-Zugriff geht, wird das auch etwas Performance kosten, weil mehrere hundert Zugriffe für alle Umrechnungsfaktoren aus der DB gelesen werden, und das dann eben zwei- oder mehrfach.
b) hat den (ebenso offensichtlichen) Nachteil, dass jede Variable zweifach erzeugt wird, einmal der Originalwert (double, integer), einmal seine nach SI konvertierte, gerundete string-Fassung und die Klasse recht aufgeblasen wird.
c) räumt den letzteren Nachteil auf und hat damit den Vorteil, dass ich das Objekt mit den Originaldaten übergeben kann.
d) funktioniert nicht, da nicht alle Variablen gleichzeit im UI verfügbar sind.
e) machbar, erscheint mir aber auch nicht beliebig elegant.
f) wär ideal, bloß wie? Der Funktion müsste man eine beliebige Variable übergeben können. Vielleicht übersehe ich was, aber ich seh nicht, wie das gehen sollte.

Habt ihr andere Idee? Danke im Voraus!

Geändert von cltom (18. Feb 2022 um 10:55 Uhr)
  Mit Zitat antworten Zitat
 


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 07:26 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