Delphi-PRAXiS
Seite 2 von 3     12 3      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Lokale Konstanten in D2009 begrenzt? (https://www.delphipraxis.net/127145-lokale-konstanten-d2009-begrenzt.html)

himitsu 11. Jan 2009 23:18

Re: Lokale Konstanten in D2009 begrenzt?
 
Kann es sein, daß unter D2009 die Konstanten aufgrund des Unicode länger sind und du somit an eine Grenze gestoßen bist?
(man könnte ja mal versuchen in den alten Delphi-Versionen entsprechend mit doppelt so langen Stringkonstanten zu testen :gruebel: )

diese typisierten Stingkonstanten haben intern ja mehr den Charakter von Variablen

hanspeter 12. Jan 2009 06:55

Re: Lokale Konstanten in D2009 begrenzt?
 
Zitat:

Zitat von himitsu
Kann es sein, daß unter D2009 die Konstanten aufgrund des Unicode länger sind und du somit an eine Grenze gestoßen bist?
(man könnte ja mal versuchen in den alten Delphi-Versionen entsprechend mit doppelt so langen Stringkonstanten zu testen :gruebel: )

diese typisierten Stingkonstanten haben intern ja mehr den Charakter von Variablen

Das kann schon sein.
Bei Delphi 1 + 2 gab es die Beschränkung auf 255 Zeichen.
Von D3 bis D2007 gab es die Beschränkung nicht. Jetzt gibt es diese wohl wieder.
Mein Programm ist nur durch Neukompilierung unter D2009 von 4,5 auf 6.4 MByte, also fast 2 Mbyte angeschwollen.

Gruß
Peter

himitsu 12. Jan 2009 10:47

Re: Lokale Konstanten in D2009 begrenzt?
 
Zitat:

Zitat von hanspeter
Von D3 bis D2007 gab es die Beschränkung nicht. Jetzt gibt es diese wohl wieder.

ich hab/hatte die auch in D4, D7 und D2006 drin.

hanspeter 12. Jan 2009 11:44

Re: Lokale Konstanten in D2009 begrenzt?
 
Zitat:

Zitat von himitsu
ich hab/hatte die auch in D4, D7 und D2006 drin.

Dann hast du ein anderes Delphi als ich.
Probiere es doch einfach aus, wenn Du meinst den Besserwisser spielen zu müssen.

Delphi-Quellcode:
const
  H1 = '1234567890123456789012345678901234567890123456789012345678901234567890'+
       '1234567890123456789012345678901234567890123456789012345678901234567890'+
       '1234567890123456789012345678901234567890123456789012345678901234567890'+
       '1234567890123456789012345678901234567890123456789012345678901234567890'+
       '1234567890123456789012345678901234567890123456789012345678901234567890'+
       '1234567890123456789012345678901234567890123456789012345678901234567890'+
       '1234567890123456789012345678901234567890123456789012345678901234567890'+
       '1234567890123456789012345678901234567890123456789012345678901234567890'+
       '1234567890123456789012345678901234567890123456789012345678901234567890'+
       '1234567890123456789012345678901234567890123456789012345678901234567890'+
       '1234567890123456789012345678901234567890123456789012345678901234567890'+
       '1234567890123456789012345678901234567890123456789012345678901234567890'+
       '1234567890123456789012345678901234567890123456789012345678901234567890'+
       '1234567890123456789012345678901234567890123456789012345678901234567890'+
       '1234567890123456789012345678901234567890123456789012345678901234567890'+
       '1234567890123456789012345678901234567890123456789012345678901234567890'+
       '1234567890123456789012345678901234567890123456789012345678901234567890'+
       '1234567890123456789012345678901234567890123456789012345678901234567890'+
       '1234567890123456789012345678901234567890123456789012345678901234567890'+
       '1234567890123456789012345678901234567890123456789012345678901234567890';


procedure Test(t : String);
begin
  showmessage(inttostr(length(t)));
end;

Unter D7 bis D2007 wird eine Länge von 1400 angezeigt und unter D2009 kommt ein Fehler.

Peter

toms 12. Jan 2009 12:02

Re: Lokale Konstanten in D2009 begrenzt?
 
Zitat:

Zitat von hanspeter

Dann hast du ein anderes Delphi als ich.
Probiere es doch einfach aus, wenn Du meinst den Besserwisser spielen zu müssen.

Unter D7 bis D2007 wird eine Länge von 1400 angezeigt und unter D2009 kommt ein Fehler.

Peter

Hallo, bei mir kommt keine Fehlermeldung unter D2009.

himitsu 12. Jan 2009 15:52

Re: Lokale Konstanten in D2009 begrenzt?
 
Zitat:

Zitat von hanspeter
Zitat:

Zitat von himitsu
ich hab/hatte die auch in D4, D7 und D2006 drin.

Dann hast du ein anderes Delphi als ich.
Probiere es doch einfach aus, wenn Du meinst den Besserwisser spielen zu müssen.

Dann hast du was falsch verstanden, denn H1 is ein String aus 20 70-Zeichen-langen (einzelnen) Stringkonstanten und das geht mindestens schon seit D4 (frühere Versionen kenn ich kaum) und ist auch so geblieben.

Probier es doch selber mal, mit dieser 300-Zeichen-Konstante :angel2:
Delphi-Quellcode:
H1 = '1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890
1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890
1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890';
[edit]Zeileiumbrüche eingefügt, um das DP-Design nicht weiter zu zerstören ... diese müsten beim Probieren entfernt werden

hanspeter 13. Jan 2009 07:06

Re: Lokale Konstanten in D2009 begrenzt?
 
Zitat:

Zitat von himitsu
Dann hast du was falsch verstanden, denn H1 is ein String aus 20 70-Zeichen-langen (einzelnen) Stringkonstanten und das geht mindestens schon seit D4 (frühere Versionen kenn ich kaum) und ist auch so geblieben.

Man lass es gut sein. Das tut ja schon weh.
Ich habe nach der Konstantenlänge, im Zusammenhang mit einer in D2009 neu aufgetauschten und nicht dokumentierten Fehlermeldung, gefragt und nicht nach der maximalen Länge einer Quellzeile.
Diese sollte man ohnehin im Interesse der Lesbarkeit auf 80 bis 120 Zeichen begrenzen.
Taucht in einer Konstantendefinition am Ende der Anweisung das "+" auf, dann wird die Konstante zur Compilerzeit
zusammengefügt.
Da dies zur Compiler- und nicht zur Laufzeit erfolgt, käme z.B. mit Resourcenstrings eine Fehlermeldung.
Da ich seit TP 1.0 bereits professionell mit Pascal programmiere, sollte mir der Unterschied zwischen Codezeilen- und
Konstantenlänge zwischenzeitlich klar sein.

Peter

Bernhard Geyer 13. Jan 2009 07:53

Re: Lokale Konstanten in D2009 begrenzt?
 
Kannst du nicht ein komplettes Beispiel zum Testen nachhängen? Wenn bei toms dein Codeauszug kompilierbar ist, ist es doch kein generelles Problem. Evtl. irgendwelche Compilereinstellungen oder Defines.

hanspeter 13. Jan 2009 08:25

Re: Lokale Konstanten in D2009 begrenzt?
 
Zitat:

Zitat von Bernhard Geyer
Kannst du nicht ein komplettes Beispiel zum Testen nachhängen? Wenn bei toms dein Codeauszug kompilierbar ist, ist es doch kein generelles Problem. Evtl. irgendwelche Compilereinstellungen oder Defines.

Ich bin noch am Probieren und will den Fehler am Wochenende mal lokalisieren.
Wegbekommen habe ich diesen erst mal indem ich aus allen Konstanten typisierte Konstanten gemacht habe.
Im Moment bin ich auch erst mal wieder auf D2007 zurück gegangen, da es noch mehr Probleme bei der Umstellung gibt und
ich mich noch nicht mit der Tatsache anfreunden kann, das ein Programm durch Neucompilieren etwa ein Drittel größer wird.

Gruß
Peter

Uwe Raabe 13. Jan 2009 08:37

Re: Lokale Konstanten in D2009 begrenzt?
 
Zitat:

Zitat von hanspeter
Im Moment bin ich auch erst mal wieder auf D2007 zurück gegangen, da es noch mehr Probleme bei der Umstellung gibt und
ich mich noch nicht mit der Tatsache anfreunden kann, das ein Programm durch Neucompilieren etwa ein Drittel größer wird.

Wenn die Hälfte deiner EXE aus AnsiStrings bestand (String-Properties in DFMs mitgerechnet), dann ist das aber durchaus nachvollziehbar.


Alle Zeitangaben in WEZ +1. Es ist jetzt 00:10 Uhr.
Seite 2 von 3     12 3      

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