Delphi-PRAXiS
Seite 3 von 3     123   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi "E2283: Zu viele lokale Konstanten. Verwenden Sie kürzere Prozeduren" Fehler (https://www.delphipraxis.net/158048-e2283-zu-viele-lokale-konstanten-verwenden-sie-kuerzere-prozeduren-fehler.html)

Patito 8. Feb 2011 08:31

AW: "E2283: Zu viele lokale Konstanten. Verwenden Sie kürzere Prozeduren" Fehler
 
Vermutlich wird jeder String vom Compiler erst mal komprimiert,
und das geht eben besser wenn man nur einen großen String hat.

Taucht jeder Buchstabe einzeln in einer Add-Zeile auf, gäbe es ja praktisch gar keine Möglichkeit etwas zu komprimieren. Dass man das Limit mit einem einzelnen längeren String erst später erreicht ist dann eigentlich logisch.

Das Limit an sich ist aber so oder so zum kotzen.
Ich erinnere mich dunkel, dass ich mal eine Unit, in der es darum gieng einen längeren konfigurierbaren Text zusammenzubasteln, wegen diesem Unfug umschreiben mußte.

Delphi-Quellcode:
if (MyConfig.WantItemXYZ) then
 List.Add('xyz')
else
 List.Add('---');
 ...
Wenn man viele solche Zeilen hat, nützen einem die Komprimier-Tricks vom Compiler nix.

himitsu 8. Feb 2011 08:45

AW: "E2283: Zu viele lokale Konstanten. Verwenden Sie kürzere Prozeduren" Fehler
 
Ich bin mir relativ sicher, daß der Compiler nichts komprimiert.

Denn wozu soll das gut sein?
- er bekommt die Strings unkomprimiert
- er muß die Strings dann unkomprimiert abspeichern/verarbeiten
- beim Vergleichen von Strings macht sich schwieriger (falls es mal gleiche gibt, welche man dann als einen String verwalten könnte)
- das Debuggen des Compilers verbessert es auch nicht, da dann ja quasi alles "verschlüsselt" wäre
= kurz um, er kommt mit unkomprimierten Strings besser aus ... Alles andere wäre nur umständlich und eine zusätzliche Fehlerquelle ... ich als Compilerentwickler hätte mir diese zusätzliche Arbeit garantiert erspart.

Patito 8. Feb 2011 08:56

AW: "E2283: Zu viele lokale Konstanten. Verwenden Sie kürzere Prozeduren" Fehler
 
Es spricht viel dafür, dass der Compiler intern für die Strings ein Dictionary anlegt.
Und letztenendes ist es nur Wortklauberei, ob man das jetzt Komprimierung nennt oder nicht.
(Dictionary compression...)


Alle Zeitangaben in WEZ +1. Es ist jetzt 01:48 Uhr.
Seite 3 von 3     123   

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 by Thomas Breitkreuz