Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi wie Konstanten optimal verwalten (https://www.delphipraxis.net/63517-wie-konstanten-optimal-verwalten.html)

dataspider 20. Feb 2006 08:20


wie Konstanten optimal verwalten
 
Hallo,

ich zerbreche mir gerade den Kopf, wie ich meine Feldnamen optimal verwalten kann.
Ich habe momentan eine Unit mit Konstanten für Feldnamen.
Delphi-Quellcode:
Const
  fn_Bez = 'bezeichnung';
  fn_name1 = 'name1';
  ...
Somit habe ich jetzt im Code irgendwo z.B. 20 mal FieldByName(fn_bez).AsString; stehen.
In die Exe wird dann 20 mal 'bezeichnung' eingetragen, da er ja Konstanten währen des Compilierens zieht.
Wie kann man das so optimieren, dass ich die Bezeichner nur einmal im Code habe und dann etwa:

Delphi-Quellcode:
  FieldByName(LoadFieldBez(@eine_Adresse)).AsString;
Ich dachte schon dran, auf Variablen umzustellen. Aber vielleicht gibt es noch eine saubere Lösung, ohne den Überblick zu verlieren.

Danke, Frank

marabu 20. Feb 2006 08:40

Re: wie Konstanten optimal verwalten
 
Hallo Frank,

hast du schon resourcestring anstelle von const erwogen?

Grüße vom marabu

dataspider 20. Feb 2006 08:47

Re: wie Konstanten optimal verwalten
 
Zitat:

Zitat von marabu
Hallo Frank,

hast du schon resourcestring anstelle von const erwogen?

Grüße vom marabu

Ja, hab ich. Mich stört nur, dass Resourcestrings IMHO doppelt so lang wie Strings sind.

Frank

himitsu 20. Feb 2006 11:51

Re: wie Konstanten optimal verwalten
 
Also ich denke nicht, daß es da 'ne bessere Lösung gibt.
Und ResourceString ja nur doppelt so lang, da es als WideString (Unicode) gespeichert wird, außerdem wird dann jedesmal LoadFromResource und eine WideToAnsi-Konvertierung durchgeführt, wenn irgendwo der benötigte Wert vorkommt.

Wenn du statt Konstanten auf Variablen umsteigst, dann liegt das zwar nur einmal in der Exe rum, aber du hast dann die ganzen Feldnamen auch noch ständig im RAM rumliegen.

Delphi-Quellcode:
Var
  fn_Bez: String = 'bezeichnung';
  fn_name1: String = 'name1';
  ...

Aber eigentlich war ich der Meinung, das der Delphi-Compiler die String-Konstanten besser verwaltet und wenn eine solche Konstannte mehrfach vorkommt diese auch nur einmal in der Exe abgespeichert wird.

marabu 20. Feb 2006 11:52

Re: wie Konstanten optimal verwalten
 
Frank, ein word pro character wird zunehmend Standard - du solltest dich daran nicht so stören. Außerdem verbessert sich deine Bilanz doch immer noch deutlich. Wer weiß welche Einsparpotentiale du noch entdeckst, wenn du weiter suchst.

Freundliche Grüße

marabu

dataspider 20. Feb 2006 16:04

Re: wie Konstanten optimal verwalten
 
Ich weiss zwar noch nicht sicher, wie ich weiter verfahre. Aber trotzden schon mal meinen Dank an marabu und himitsu für die Hilfe.

Cu, Frank

franktron 20. Feb 2006 16:44

Re: wie Konstanten optimal verwalten
 
Zitat:

Zitat von dataspider
Hallo,

ich zerbreche mir gerade den Kopf, wie ich meine Feldnamen optimal verwalten kann.
Ich habe momentan eine Unit mit Konstanten für Feldnamen.
Delphi-Quellcode:
Const
  fn_Bez = 'bezeichnung';
  fn_name1 = 'name1';
  ...
Somit habe ich jetzt im Code irgendwo z.B. 20 mal FieldByName(fn_bez).AsString; stehen.
In die Exe wird dann 20 mal 'bezeichnung' eingetragen, da er ja Konstanten währen des Compilierens zieht.
Wie kann man das so optimieren, dass ich die Bezeichner nur einmal im Code habe und dann etwa:

Danke, Frank

Das ist absuluter blödsinn hab gerade mal meine Exen durchsucht und da sind alle Consts nur einaml drin, obwohl ich diese min. 100-200 Mal aufrufe.

himitsu 20. Feb 2006 16:49

Re: wie Konstanten optimal verwalten
 
sag ich doch ... selbst bei doppelter Definition sollte es dann nur einmal drin sein :)

Delphi-Quellcode:
Const
  fn_Bez1 = 'bezeichnung';
  fn_Bez2 = 'bezeichnung';
  ...

dataspider 20. Feb 2006 17:06

Re: wie Konstanten optimal verwalten
 
Zitat:

Zitat von franktron
Zitat:

Zitat von dataspider
Hallo,

ich zerbreche mir gerade den Kopf, wie ich meine Feldnamen optimal verwalten kann.
Ich habe momentan eine Unit mit Konstanten für Feldnamen.
Delphi-Quellcode:
Const
  fn_Bez = 'bezeichnung';
  fn_name1 = 'name1';
  ...
Somit habe ich jetzt im Code irgendwo z.B. 20 mal FieldByName(fn_bez).AsString; stehen.
In die Exe wird dann 20 mal 'bezeichnung' eingetragen, da er ja Konstanten währen des Compilierens zieht.
Wie kann man das so optimieren, dass ich die Bezeichner nur einmal im Code habe und dann etwa:

Danke, Frank

Das ist absuluter blödsinn hab gerade mal meine Exen durchsucht und da sind alle Consts nur einaml drin, obwohl ich diese min. 100-200 Mal aufrufe.

Mal abgesehen von der Ausdrucksweise...
Ich habe ein Mini - Prog erzeugt mit einer Konstante:
Delphi-Quellcode:
Const
  sTest = 'Schraps hat den Hut verloren...';
Diese habe ich 3 mal im Code eingebunden.
In der EXE kann ich diese genau 3 mal finden.
Vielleicht ist ja Delphi 2005 schon intelligenter und Delphi7 hat noch Blödsinn produziert...

Cu, Frank


Alle Zeitangaben in WEZ +1. Es ist jetzt 09:18 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