AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Fehler E2283 beim Übersetzen

Ein Thema von Commander Tom · begonnen am 7. Jan 2008 · letzter Beitrag vom 8. Jan 2008
Antwort Antwort
Commander Tom

Registriert seit: 9. Dez 2005
Ort: Ettlingen
64 Beiträge
 
Delphi 12 Athens
 
#1

Fehler E2283 beim Übersetzen

  Alt 7. Jan 2008, 19:33
Hallo, ich bekomme folgende Fehlermeldung beim Übersetzen:

Zu viele lokale Konstanten. Verwenden Sie kürzere Prozeduren (E2283)

Die Hilfe sagt hier folgendes:

Eine oder mehrere Ihrer Prozeduren enthält so viele String-Konstanten, dass die interne Speichergrenze des Compilers überschritten wurde. Dieses Problem kann in automatisch generiertem Code auftreten. Kürzen Sie die betreffenden Prozeduren, oder deklarieren Sie Konstanten anstelle der vielen Literale.

Weiß jemand, wie die interne Speichergrenze des Compilers ist ?

Ich kann leider momentan meinen Code nicht ändern, da ich das Programm so auf die Schnelle nicht umstellen kann.
Commander Tom
  Mit Zitat antworten Zitat
shmia

Registriert seit: 2. Mär 2004
5.508 Beiträge
 
Delphi 5 Professional
 
#2

Re: Fehler E2283 beim Übersetzen

  Alt 7. Jan 2008, 20:04
Zitat von Commander Tom:
Ich kann leider momentan meinen Code nicht ändern, da ich das Programm so auf die Schnelle nicht umstellen kann.
Das wäre dann aber das KO-Kriterium, denn du musst den Code ändern!
Wie sieht denn den Code aus ?
Wenn die Prozedure mehr als eine Seite hat, dann bis als ZIP anhängen, damit nicht alles vollgemüllt wird.
Hoffentlich sieht der Code nicht so aus wie die Strassen von Neapel...
Andreas
  Mit Zitat antworten Zitat
Commander Tom

Registriert seit: 9. Dez 2005
Ort: Ettlingen
64 Beiträge
 
Delphi 12 Athens
 
#3

Re: Fehler E2283 beim Übersetzen

  Alt 7. Jan 2008, 22:30
Hallo shmia,

ich benutze Fastreport, aber ohne Datenbank, weil ich aus einem alten DOS-Programm per Export Daten in eine Textdatei schreibe und in FastReport wieder einlese und dann Reports daraus generiere. Dazu benutze ich die Methode GetValue des Reports:

Delphi-Quellcode:
PROCEDURE TReportForm.frxReport1GetValue(CONST VarName: STRING; VAR Value: Variant);
BEGIN
  IF CompareText(VarName, '1') = 0 THEN Value := MainForm.RegIniFile.ReadString(Datei, '1', '?');
END;
Inzwischen hat die Prozedur aber leider 10000 Zeilen, da die Reports inzwischen sehr umfangreich geworden sind. Zusätzlich gibt es pro Unit 57 solcher Prozeduren, so daß das Programm inzwischen auf ca. 1,4 Mio. Zeilen angewachsen ist und die EXE-Datei auf ca. 32 MB angewachsen ist.

Leider habe ich kenen Weg gefunden, mit Fast Report die Dateien mittels einer anderen Methode einzulesen.
Commander Tom
  Mit Zitat antworten Zitat
Klaus01

Registriert seit: 30. Nov 2005
Ort: München
5.767 Beiträge
 
Delphi 10.4 Sydney
 
#4

Re: Fehler E2283 beim Übersetzen

  Alt 8. Jan 2008, 09:11
Guten Morgen,

hilft es nicht wenn Du das CONST aus der Parameterliste der Prozedur wegläßt.

Delphi-Quellcode:
PROCEDURE TReportForm.frxReport1GetValue(VarName: STRING; VAR Value: Variant);
BEGIN
  IF CompareText(VarName, '1') = 0 THEN Value := MainForm.RegIniFile.ReadString(Datei, '1', '?');
END;
Nur eine Vermutung.

Grüße
Klaus
Klaus
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.195 Beiträge
 
Delphi 10.4 Sydney
 
#5

Re: Fehler E2283 beim Übersetzen

  Alt 8. Jan 2008, 09:28
Zitat von Commander Tom:
Inzwischen hat die Prozedur aber leider 10000 Zeilen, da die Reports inzwischen sehr umfangreich geworden sind. Zusätzlich gibt es pro Unit 57 solcher Prozeduren, so daß das Programm inzwischen auf ca. 1,4 Mio. Zeilen angewachsen ist und die EXE-Datei auf ca. 32 MB angewachsen ist.
32 MB Haben auch ca. 1,4 Mio Quellzeilen (mit Quellzeilen aus Kaufkomponenten, ...) aber unsere Exe ist "nur" 14 MB zusammen. Hast du evtl. Debug (TD32) Infos aktiv?
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
Muetze1
(Gast)

n/a Beiträge
 
#6

Re: Fehler E2283 beim Übersetzen

  Alt 8. Jan 2008, 10:53
Och, wir haben eine 134 MB EXE mit der gleichen Anzahl von Codezeilen zusammen. Die Größe ist so oder so egal und sagt nichts aus.
  Mit Zitat antworten Zitat
shmia

Registriert seit: 2. Mär 2004
5.508 Beiträge
 
Delphi 5 Professional
 
#7

Re: Fehler E2283 beim Übersetzen

  Alt 8. Jan 2008, 11:32
Zitat von Commander Tom:
Inzwischen hat die Prozedur aber leider 10000 Zeilen...
Du meinst, deine Prozedur sieht ungefähr so aus:
Delphi-Quellcode:
PROCEDURE TReportForm.frxReport1GetValue(CONST VarName: STRING; VAR Value: Variant);
BEGIN
  IF CompareText(VarName, '1') = 0 THEN Value := MainForm.RegIniFile.ReadString(Datei, '1', '?')
  else if CompareText(VarName, '2') = 0 THEN Value := MainForm.RegIniFile.ReadString(Datei, '2', '?')
  else if CompareText(VarName, 'B8') = 0 THEN Value := MainForm.RegIniFile.ReadString(Datei, 'B8', '?')
  // und hier noch 9997 weitere else Anweisungen
END;
Wäre gut gewesen, du hättest so ungefähr 3 Zeilen aus GetValue() angegeben, damit man das ganze Elend erkennen kann.
Also prinzipiell bräuchtest du eine Zuordnung zwischen dem Parameter VarName und dem Name in der Ini-Datei.
Diese Zuordnung kann man in einem Konstantenarray ablegen und später über eine For-Schleife auslesen:
Delphi-Quellcode:
type
   TListEintrag = record
      a:string;
      b:string;
   end;
const liste:array[1..10000] of TListEintrag = (
(a:'1'), (b:'1'),
(a:'2'), (b:'2'),
(a:'B8'), (b:'B8'),
...
)
Andreas
  Mit Zitat antworten Zitat
Antwort Antwort


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 11:04 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz