AGB  ·  Datenschutz  ·  Impressum  







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

Lokale Konstanten in D2009 begrenzt?

Ein Thema von hanspeter · begonnen am 8. Jan 2009 · letzter Beitrag vom 13. Jan 2009
Antwort Antwort
Seite 1 von 3  1 23      
hanspeter

Registriert seit: 26. Jul 2003
Ort: Leipzig
1.350 Beiträge
 
Delphi XE2 Professional
 
#1

Lokale Konstanten in D2009 begrenzt?

  Alt 8. Jan 2009, 13:09
Hallo,
ich versuche unter D2009 ein Projekt zu kompilieren, welches unter D2007 problemlos funktioniert.

Unter D2009 bricht die Compilierung mit der Fehlermeldung:
"Zuviele lokale Konstanten. Verwenden Sie kürzere Proceduren."
ab.

In der Unit sind allerdings eine Reihe von TextKonstanen declariert.

Die Unit generiert in Firebird eine neue Datenbank und die Tabledefinition ist als Konstante abgelegt.
Wie kann ich den Fehler umgehen?

Für einen Tip dankbar.

Mit Gruß
Peter
  Mit Zitat antworten Zitat
Benutzerbild von fkerber
fkerber
(CodeLib-Manager)

Registriert seit: 9. Jul 2003
Ort: Ensdorf
6.723 Beiträge
 
Delphi XE Professional
 
#2

Re: Lokale Konstanten in D2009 begrenzt?

  Alt 8. Jan 2009, 13:37
Hi!

Ich glaube, kürzlich gelesen zu haben, dass die String-Konstanten nicht länger als 255 Zeichen sein dürfen.
Kann es sein, dass das bei dir der Fall ist?


Ciao, Frederic
Frederic Kerber
  Mit Zitat antworten Zitat
Benutzerbild von sakura
sakura

Registriert seit: 10. Jun 2002
Ort: Unterhaching
11.412 Beiträge
 
Delphi 12 Athens
 
#3

Re: Lokale Konstanten in D2009 begrenzt?

  Alt 8. Jan 2009, 13:40
Zitat von fkerber:
Ich glaube, kürzlich gelesen zu haben, dass die String-Konstanten nicht länger als 255 Zeichen sein dürfen.
Das war aber schon immer so

......
Daniel Lizbeth
Ich bin nicht zurück, ich tue nur so
  Mit Zitat antworten Zitat
hanspeter

Registriert seit: 26. Jul 2003
Ort: Leipzig
1.350 Beiträge
 
Delphi XE2 Professional
 
#4

Re: Lokale Konstanten in D2009 begrenzt?

  Alt 8. Jan 2009, 13:46
Zitat von fkerber:
Hi!

Ich glaube, kürzlich gelesen zu haben, dass die String-Konstanten nicht länger als 255 Zeichen sein dürfen.
Kann es sein, dass das bei dir der Fall ist?


Ciao, Frederic
Dann wäre das in D2009 neu.
Der gleiche Quellcode compiliert in D7 bis D2007 problemlos.

Ich habe jetzt probiert. Mit typisierten Konstanten geht es.

Also

Delphi-Quellcode:
TAB_VIDE = 'Create TABLE VIDEODAT( ARBPLATZ INTEGER NOT NULL primary key,'+
               'STARTSID integer,'+
               'ERGSID integer,'+
               'PRID integer,'+
               'ART CHAR,'+
               'IMAGE blob sub_type 0 segment size 4096) ';
und Procedure Aufruf . CreateTable(TAB_VIDE);
bringt den beschriebenen Fehler

TAB_VIDEO:String = 'Create TABLE VIDEODAT( ARBPLATZ INTEGER NOT NULL primary key,'+
               'STARTSID integer,'+
               'ERGSID integer,'+
               'PRID integer,'+
               'ART CHAR,'+
               'IMAGE blob sub_type 0 segment size 4096) ';
und gleicher Proceduraufruf gehen.
(Die als Beispiel gebrachte Anweisung mag einzeln funktionieren. Die Unit enthält allerding etwa 40 Tabellendeclarationen.)

Die 255 Zeichengrenze trift meines Wissens bisher nur für Resourcenstrings zu.

Gruß
Peter
  Mit Zitat antworten Zitat
Hawkeye219

Registriert seit: 18. Feb 2006
Ort: Stolberg
2.227 Beiträge
 
Delphi 2010 Professional
 
#5

Re: Lokale Konstanten in D2009 begrenzt?

  Alt 8. Jan 2009, 13:55
Hallo,

Zitat von fkerber:
Ich glaube, kürzlich gelesen zu haben, dass die String-Konstanten nicht länger als 255 Zeichen sein dürfen.
ein Stringliteral darf nicht länger als 255 Zeichen sein. Stringkonstanten, die beispielsweise durch Verkettung von Stringliteralen entstehen, dürfen durchaus länger sein.

Es sieht so aus, als gäbe es eine Obergrenze für die Gesamtzahl/Gesamtgröße aller Literale. Ich habe so etwas bisher noch nicht beobachtet.

Gruß Hawkeye
  Mit Zitat antworten Zitat
hanspeter

Registriert seit: 26. Jul 2003
Ort: Leipzig
1.350 Beiträge
 
Delphi XE2 Professional
 
#6

Re: Lokale Konstanten in D2009 begrenzt?

  Alt 8. Jan 2009, 14:03
Das Projekt knirscht unter D2009 an allen Ecken und Enden.

Im Prinzip bin ich jetzt am überlegen, ob D2009 soviel Mehrwert bringt, das man den Umstellungsaufwand in Kauf nimmt,
oder ob es sinnvoller ist, bei D2007 zu bleiben und erst mal 1-2 Jahre abwarten, wie es mit Delphi (Stichwort neuer Compiler)
weiter geht.
Im Moment tendiere ich eher zu der 2. Variante.

Gruß
Peter
  Mit Zitat antworten Zitat
hanspeter

Registriert seit: 26. Jul 2003
Ort: Leipzig
1.350 Beiträge
 
Delphi XE2 Professional
 
#7

Re: Lokale Konstanten in D2009 begrenzt?

  Alt 9. Jan 2009, 08:55
So jetzt habe ich mir erst mal so geholfen, das ich das Erzeugen der Datenbank in eine Dll ausgelagert habe, welche ich mit D7 kompiliere.
Das funktioniert erst mal.
Es gibt ja noch mehr Varianten.
Datenbank aus externem SQL Script erzeugen.
Eine leere Musterdatenbank kopieren.

Welche Variante würdet ihr bevorzugen?

Mit Gruß
Peter
  Mit Zitat antworten Zitat
TBx
(Administrator)

Registriert seit: 13. Jul 2005
Ort: Stadthagen
1.891 Beiträge
 
Delphi 12 Athens
 
#8

Re: Lokale Konstanten in D2009 begrenzt?

  Alt 9. Jan 2009, 09:04
Zitat von hanspeter:
Datenbank aus externem SQL Script erzeugen.
Ich würde diese Variante bevorzugen, da somit sichergestellt ist, dass der Bytecode von Triggern und SPs auch wirklich zu der genutzen Firebirdversion paßt (wird dann ja schließlich erst generiert).

Gruß

Thomas
Thomas Breitkreuz
Gruß Thomas
- Admin DelphiPRAXIS
- Admin Delphi-Treff
- Embarcadero MVP
  Mit Zitat antworten Zitat
Benutzerbild von mschaefer
mschaefer

Registriert seit: 4. Feb 2003
Ort: Hannover
2.032 Beiträge
 
Delphi 12 Athens
 
#9

Re: Lokale Konstanten in D2009 begrenzt?

  Alt 9. Jan 2009, 09:05
Das mit der dll ist sicher nicht schlecht. Ich habe das mir mit einem externen Script gelöst, allerdings liegt das minimalverschlüsselt im Anwendungsverzeichnis, sodaß nicht jeder dran rumspielen kann.

Grüße // Martin
Martin Schaefer
Phaeno
  Mit Zitat antworten Zitat
Benutzerbild von Nersgatt
Nersgatt

Registriert seit: 12. Sep 2008
Ort: Emlichheim
693 Beiträge
 
Delphi 10.1 Berlin Professional
 
#10

Re: Lokale Konstanten in D2009 begrenzt?

  Alt 9. Jan 2009, 09:13
Bei uns wird beim ersten Start eine leere Datenbank kopiert (die auch schon einige fundamentale Stammdaten enthalten kann, z.B. Länder). Wenn die Datenbank angepasst werden muss, wird das über ein externes SQL-Script gemacht, das unterhalb des Programmpfades liegt.
Beim Start prüft das Programm, ob die DB auf dem aktuellen Stand ist, wenn nicht, werden die Scripte ausgeführt. Dabei führen wir in der Datenbank eine Datenbankversion und im Programm eine Konstante mit der geforderten Datenbankversion.

Gruß,
Jens
Jens
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 3  1 23      


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 02:18 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