AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein GUI-Design mit VCL / FireMonkey / Common Controls Delphi Programm entschlacken: JclStrings nimmt 500KB im Projekt ein?
Thema durchsuchen
Ansicht
Themen-Optionen

Programm entschlacken: JclStrings nimmt 500KB im Projekt ein?

Offene Frage von "Bernhard Geyer"
Ein Thema von Keks · begonnen am 27. Dez 2010 · letzter Beitrag vom 30. Dez 2011
Antwort Antwort
jbg

Registriert seit: 12. Jun 2002
3.483 Beiträge
 
Delphi 10.1 Berlin Professional
 
#1

AW: Programm entschlacken: JclStrings nimmt 500KB im Projekt ein?

  Alt 7. Jan 2011, 02:19
Am 5.10.2010 wurden bei der JclStrings.pas Unit IFDEFs eingebaut, die ab Delphi 2009 nicht mehr eigene Char-Maps aufbauen, sondern auf die von der Characters.pas Unit bereit gestellte Tabelle zugreifen. Dadurch entfallen die 500 KB im BSS Segment.

Bugreport:
http://issuetracker.delphi-jedi.org/view.php?id=5333

Die Änderung hat es aber nicht in die aktuelle Release Version JCL 2.2 Build 3886 geschafft. Im Daily Build ist die Änderung aber enthalten.
  Mit Zitat antworten Zitat
Keks

Registriert seit: 25. Mai 2005
122 Beiträge
 
#2

AW: Programm entschlacken: JclStrings nimmt 500KB im Projekt ein?

  Alt 7. Jan 2011, 11:50
Alles klar, dann werde ich mal aktualisieren und danach nochmal Rückmeldung geben.
Vielen Dank für die Info!
  Mit Zitat antworten Zitat
Keks

Registriert seit: 25. Mai 2005
122 Beiträge
 
#3

AW: Programm entschlacken: JclStrings nimmt 500KB im Projekt ein?

  Alt 8. Jan 2011, 00:45
Vielen Dank, hat geklappt!
  Mit Zitat antworten Zitat
Keks

Registriert seit: 25. Mai 2005
122 Beiträge
 
#4

AW: Programm entschlacken: JclStrings nimmt 500KB im Projekt ein?

  Alt 29. Dez 2011, 04:34
Nun steh ich doch tatsächlich ziemlich genau ein Jahr später erneut vor dem gleichen Problem.

Ich habe auf einem neuen Rechner meine Entwicklungsumgebung mit Delphi XE erneut aufgesetzt und alle Komponenten eingerichtet, darunter auch JCL+JVCL. Ich habe von beiden die aktuellen Daily-Builds genommen, da sich die JCL-Version aus dem aktuellen Stable JVCL-Paket nicht installieren ließ (irgendein Problem mit JclOtaUtils). Die beiden Daily-Builds wurden hingegen problemlos installiert.

Nach dem Kompilieren der Anwendung Stirnrunzeln: die exe ist ein gutes Stück größer als zuvor. Ein Blick in die Projekt-Analyse zeigt erneut das gleiche Bild wie vor einem Jahr: die JclStrings (BSS) belegt gut 500kB im Projekt.

Damals löste sich das Problem durch die Installation eines Daily Builds. Diesmal geht's leider nicht aktueller (JCL 2.4.0.4319). Ist in der Zwischenzeit bei JCL wieder was schiefgelaufen? Oder gibt es eine neue Lösung?

Geändert von Keks (29. Dez 2011 um 04:43 Uhr)
  Mit Zitat antworten Zitat
jbg

Registriert seit: 12. Jun 2002
3.483 Beiträge
 
Delphi 10.1 Berlin Professional
 
#5

AW: Programm entschlacken: JclStrings nimmt 500KB im Projekt ein?

  Alt 29. Dez 2011, 09:20
Schau mal in deine JclStrings.pas, ob dort "UNICODE_RTL_DATABASE" vorkommt. Wenn das fehlt, dann stimmt was mit dem Daily Build nicht (oder es werden keine neueren mehr erzeugt)


Du kannst das auch in einem eigenen Programm Testen:
Delphi-Quellcode:
program Test;
{$I jcl.inc}
begin
  {$IFNDEF UNICODE_RTL_DATABASE}
  'Da stimmt was nicht wenn das hier nicht Delphi XE ist'
  {$ENDIF}
end.
  Mit Zitat antworten Zitat
Keks

Registriert seit: 25. Mai 2005
122 Beiträge
 
#6

AW: Programm entschlacken: JclStrings nimmt 500KB im Projekt ein?

  Alt 29. Dez 2011, 15:56
UNICODE_RTL_DATABASE kommt dort sogar recht häufig vor. 61 Mal um genau zu sein. Ich hab die Datei hier mal angehängt, vielleicht siehst Du da ja eher was.

Allerdings frage ich mich, wo UNICODE_RTL_DATABASE überhaupt definiert wird.
In der jcl.inc steht:
Delphi-Quellcode:
{$IFNDEF HAS_UNIT_CHARACTER}
  {$UNDEF UNICODE_RTL_DATABASE}
{$ENDIF ~HAS_UNIT_CHARACTER}
(wozu das "~"?)

Habe in meiner Anwendung mal getestet und es ist weder UNICODE_RTL_DATABASE noch HAS_UNIT_CHARACTER definiert. Und nu?
Angehängte Dateien
Dateityp: zip JclStrings.zip (26,2 KB, 0x aufgerufen)
  Mit Zitat antworten Zitat
USchuster

Registriert seit: 12. Sep 2010
Ort: L.E.
120 Beiträge
 
Delphi XE3 Professional
 
#7

AW: Programm entschlacken: JclStrings nimmt 500KB im Projekt ein?

  Alt 29. Dez 2011, 16:55
UNICODE_RTL_DATABASE kommt dort sogar recht häufig vor. 61 Mal um genau zu sein. Ich hab die Datei hier mal angehängt, vielleicht siehst Du da ja eher was.

Allerdings frage ich mich, wo UNICODE_RTL_DATABASE überhaupt definiert wird.
In der jcl.inc steht:
Delphi-Quellcode:
{$IFNDEF HAS_UNIT_CHARACTER}
  {$UNDEF UNICODE_RTL_DATABASE}
{$ENDIF ~HAS_UNIT_CHARACTER}
(wozu das "~"?)
~ steht bei uns in diesem Fall dafür das dieses ENDIF einen Block beendet wo HAS_UNIT_CHARACTER nicht definiert ist (für den Compiler hat das keinerlei Bedeutung)

Habe in meiner Anwendung mal getestet und es ist weder UNICODE_RTL_DATABASE noch HAS_UNIT_CHARACTER definiert. Und nu?
HAS_UNIT_CHARACTER wird durch jedi.inc definiert und UNICODE_RTL_DATABASE durch jcldxx.inc (siehe jcl.inc; jcld15.inc für XE und jcld16win32.inc für XE2 Win32).

Für folgendes Programm sehe ich mit XE2 den folgenden Output, wenn ich UNICODE_RTL_DATABASE in jcld16win32.inc aktiviere. Vielleicht liegen bei Dir irgendwo veraltete Includes rum die Dein Programm verwendet.

Code:
RTLVersion: 23.0
HAS_UNIT_CHARACTER
UNICODE_RTL_DATABASE
Delphi-Quellcode:
program Project31;

{$APPTYPE CONSOLE}

{$I jcl.inc}

begin
  WriteLn('RTLVersion: ', RTLVersion:2:1);
  {$IFDEF HAS_UNIT_CHARACTER}
  WriteLn('HAS_UNIT_CHARACTER');
  {$ENDIF HAS_UNIT_CHARACTER}
  {$IFDEF UNICODE_RTL_DATABASE}
  WriteLn('UNICODE_RTL_DATABASE');
  {$ENDIF UNICODE_RTL_DATABASE}
  ReadLn;
end.
  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 14:35 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 by Thomas Breitkreuz