You can subscribe to this list here.
| 2006 |
Jan
|
Feb
|
Mar
|
Apr
(20) |
May
(48) |
Jun
(8) |
Jul
(23) |
Aug
(41) |
Sep
(42) |
Oct
(22) |
Nov
(17) |
Dec
(36) |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 2007 |
Jan
(43) |
Feb
(42) |
Mar
(17) |
Apr
(39) |
May
(16) |
Jun
(35) |
Jul
(37) |
Aug
(47) |
Sep
(49) |
Oct
(9) |
Nov
(52) |
Dec
(37) |
| 2008 |
Jan
(48) |
Feb
(21) |
Mar
(7) |
Apr
(2) |
May
(5) |
Jun
(17) |
Jul
(17) |
Aug
(40) |
Sep
(58) |
Oct
(38) |
Nov
(19) |
Dec
(32) |
| 2009 |
Jan
(67) |
Feb
(46) |
Mar
(54) |
Apr
(34) |
May
(37) |
Jun
(52) |
Jul
(67) |
Aug
(72) |
Sep
(48) |
Oct
(35) |
Nov
(27) |
Dec
(12) |
| 2010 |
Jan
(56) |
Feb
(46) |
Mar
(19) |
Apr
(14) |
May
(21) |
Jun
(3) |
Jul
(13) |
Aug
(48) |
Sep
(34) |
Oct
(51) |
Nov
(16) |
Dec
(32) |
| 2011 |
Jan
(36) |
Feb
(14) |
Mar
(12) |
Apr
(3) |
May
(5) |
Jun
(24) |
Jul
(15) |
Aug
(30) |
Sep
(21) |
Oct
(4) |
Nov
(25) |
Dec
(23) |
| 2012 |
Jan
(45) |
Feb
(42) |
Mar
(19) |
Apr
(14) |
May
(13) |
Jun
(7) |
Jul
(3) |
Aug
(46) |
Sep
(21) |
Oct
(10) |
Nov
(2) |
Dec
|
| 2013 |
Jan
(5) |
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
|
From: <ou...@us...> - 2007-09-13 10:17:47
|
Revision: 2162
http://jcl.svn.sourceforge.net/jcl/?rev=2162&view=rev
Author: outchy
Date: 2007-09-13 03:17:44 -0700 (Thu, 13 Sep 2007)
Log Message:
-----------
support for RAD Studio 2007
introduction next version 1.102 (or 2.0 to be discussed)
Modified Paths:
--------------
trunk/jcl/devtools/included_files.bat
trunk/jcl/devtools/included_files.sh
trunk/jcl/devtools/pgEdit.xml
trunk/jcl/docs/Experts.html
trunk/jcl/docs/Readme.html
trunk/jcl/docs/Readme.txt
trunk/jcl/packages/c5/JclBaseExpertC50.rc
trunk/jcl/packages/c5/JclBaseExpertC50.res
trunk/jcl/packages/c5/JclC50.rc
trunk/jcl/packages/c5/JclC50.res
trunk/jcl/packages/c5/JclDebugExpertC50.RES
trunk/jcl/packages/c5/JclDebugExpertC50.rc
trunk/jcl/packages/c5/JclDebugExpertDLLC50.rc
trunk/jcl/packages/c5/JclDebugExpertDLLC50.res
trunk/jcl/packages/c5/JclFavoriteFoldersExpertC50.rc
trunk/jcl/packages/c5/JclFavoriteFoldersExpertC50.res
trunk/jcl/packages/c5/JclFavoriteFoldersExpertDLLC50.rc
trunk/jcl/packages/c5/JclFavoriteFoldersExpertDLLC50.res
trunk/jcl/packages/c5/JclProjectAnalysisExpertC50.RES
trunk/jcl/packages/c5/JclProjectAnalysisExpertC50.rc
trunk/jcl/packages/c5/JclProjectAnalysisExpertDLLC50.rc
trunk/jcl/packages/c5/JclProjectAnalysisExpertDLLC50.res
trunk/jcl/packages/c5/JclRepositoryExpertC50.rc
trunk/jcl/packages/c5/JclRepositoryExpertC50.res
trunk/jcl/packages/c5/JclRepositoryExpertDLLC50.rc
trunk/jcl/packages/c5/JclRepositoryExpertDLLC50.res
trunk/jcl/packages/c5/JclSIMDViewExpertC50.rc
trunk/jcl/packages/c5/JclSIMDViewExpertC50.res
trunk/jcl/packages/c5/JclSIMDViewExpertDLLC50.rc
trunk/jcl/packages/c5/JclSIMDViewExpertDLLC50.res
trunk/jcl/packages/c5/JclThreadNameExpertC50.RES
trunk/jcl/packages/c5/JclThreadNameExpertC50.rc
trunk/jcl/packages/c5/JclThreadNameExpertDLLC50.rc
trunk/jcl/packages/c5/JclThreadNameExpertDLLC50.res
trunk/jcl/packages/c5/JclUsesExpertC50.RES
trunk/jcl/packages/c5/JclUsesExpertC50.rc
trunk/jcl/packages/c5/JclUsesExpertDLLC50.rc
trunk/jcl/packages/c5/JclUsesExpertDLLC50.res
trunk/jcl/packages/c5/JclVersionControlExpertC50.rc
trunk/jcl/packages/c5/JclVersionControlExpertC50.res
trunk/jcl/packages/c5/JclVersionControlExpertDLLC50.rc
trunk/jcl/packages/c5/JclVersionControlExpertDLLC50.res
trunk/jcl/packages/c6/Jcl.RES
trunk/jcl/packages/c6/Jcl.rc
trunk/jcl/packages/c6/JclBaseExpert.rc
trunk/jcl/packages/c6/JclBaseExpert.res
trunk/jcl/packages/c6/JclDebugExpert.RES
trunk/jcl/packages/c6/JclDebugExpert.rc
trunk/jcl/packages/c6/JclDebugExpertDLL.rc
trunk/jcl/packages/c6/JclDebugExpertDLL.res
trunk/jcl/packages/c6/JclFavoriteFoldersExpert.RES
trunk/jcl/packages/c6/JclFavoriteFoldersExpert.rc
trunk/jcl/packages/c6/JclFavoriteFoldersExpertDLL.rc
trunk/jcl/packages/c6/JclFavoriteFoldersExpertDLL.res
trunk/jcl/packages/c6/JclProjectAnalysisExpert.RES
trunk/jcl/packages/c6/JclProjectAnalysisExpert.rc
trunk/jcl/packages/c6/JclProjectAnalysisExpertDLL.rc
trunk/jcl/packages/c6/JclProjectAnalysisExpertDLL.res
trunk/jcl/packages/c6/JclRepositoryExpert.rc
trunk/jcl/packages/c6/JclRepositoryExpert.res
trunk/jcl/packages/c6/JclRepositoryExpertDLL.rc
trunk/jcl/packages/c6/JclRepositoryExpertDLL.res
trunk/jcl/packages/c6/JclSIMDViewExpert.rc
trunk/jcl/packages/c6/JclSIMDViewExpert.res
trunk/jcl/packages/c6/JclSIMDViewExpertDLL.rc
trunk/jcl/packages/c6/JclSIMDViewExpertDLL.res
trunk/jcl/packages/c6/JclThreadNameExpert.RES
trunk/jcl/packages/c6/JclThreadNameExpert.rc
trunk/jcl/packages/c6/JclThreadNameExpertDLL.rc
trunk/jcl/packages/c6/JclThreadNameExpertDLL.res
trunk/jcl/packages/c6/JclUsesExpert.RES
trunk/jcl/packages/c6/JclUsesExpert.rc
trunk/jcl/packages/c6/JclUsesExpertDLL.rc
trunk/jcl/packages/c6/JclUsesExpertDLL.res
trunk/jcl/packages/c6/JclVClx.RES
trunk/jcl/packages/c6/JclVClx.rc
trunk/jcl/packages/c6/JclVcl.RES
trunk/jcl/packages/c6/JclVcl.rc
trunk/jcl/packages/c6/JclVersionControlExpert.rc
trunk/jcl/packages/c6/JclVersionControlExpert.res
trunk/jcl/packages/c6/JclVersionControlExpertDLL.rc
trunk/jcl/packages/c6/JclVersionControlExpertDLL.res
trunk/jcl/packages/cs1/Jcl.RES
trunk/jcl/packages/cs1/Jcl.bdsproj
trunk/jcl/packages/cs1/Jcl.rc
trunk/jcl/packages/cs1/JclBaseExpert.RES
trunk/jcl/packages/cs1/JclBaseExpert.bdsproj
trunk/jcl/packages/cs1/JclBaseExpert.rc
trunk/jcl/packages/cs1/JclFavoriteFoldersExpertDLL.RES
trunk/jcl/packages/cs1/JclFavoriteFoldersExpertDLL.bdsproj
trunk/jcl/packages/cs1/JclFavoriteFoldersExpertDLL.rc
trunk/jcl/packages/cs1/JclVersionControlExpertDLL.bdsproj
trunk/jcl/packages/cs1/JclVersionControlExpertDLL.rc
trunk/jcl/packages/cs1/JclVersionControlExpertDLL.res
trunk/jcl/packages/d10/Jcl.bdsproj
trunk/jcl/packages/d10/Jcl.rc
trunk/jcl/packages/d10/Jcl.res
trunk/jcl/packages/d10/JclBaseExpert.bdsproj
trunk/jcl/packages/d10/JclBaseExpert.rc
trunk/jcl/packages/d10/JclBaseExpert.res
trunk/jcl/packages/d10/JclDebugExpert.bdsproj
trunk/jcl/packages/d10/JclDebugExpert.rc
trunk/jcl/packages/d10/JclDebugExpert.res
trunk/jcl/packages/d10/JclDebugExpertDLL.bdsproj
trunk/jcl/packages/d10/JclDebugExpertDLL.rc
trunk/jcl/packages/d10/JclDebugExpertDLL.res
trunk/jcl/packages/d10/JclFavoriteFoldersExpert.bdsproj
trunk/jcl/packages/d10/JclFavoriteFoldersExpert.rc
trunk/jcl/packages/d10/JclFavoriteFoldersExpert.res
trunk/jcl/packages/d10/JclFavoriteFoldersExpertDLL.bdsproj
trunk/jcl/packages/d10/JclFavoriteFoldersExpertDLL.rc
trunk/jcl/packages/d10/JclFavoriteFoldersExpertDLL.res
trunk/jcl/packages/d10/JclProjectAnalysisExpert.RES
trunk/jcl/packages/d10/JclProjectAnalysisExpert.bdsproj
trunk/jcl/packages/d10/JclProjectAnalysisExpert.rc
trunk/jcl/packages/d10/JclProjectAnalysisExpertDLL.bdsproj
trunk/jcl/packages/d10/JclProjectAnalysisExpertDLL.rc
trunk/jcl/packages/d10/JclProjectAnalysisExpertDLL.res
trunk/jcl/packages/d10/JclRepositoryExpert.bdsproj
trunk/jcl/packages/d10/JclRepositoryExpert.rc
trunk/jcl/packages/d10/JclRepositoryExpert.res
trunk/jcl/packages/d10/JclRepositoryExpertDLL.bdsproj
trunk/jcl/packages/d10/JclRepositoryExpertDLL.rc
trunk/jcl/packages/d10/JclRepositoryExpertDLL.res
trunk/jcl/packages/d10/JclSIMDViewExpert.bdsproj
trunk/jcl/packages/d10/JclSIMDViewExpert.rc
trunk/jcl/packages/d10/JclSIMDViewExpert.res
trunk/jcl/packages/d10/JclSIMDViewExpertDLL.bdsproj
trunk/jcl/packages/d10/JclSIMDViewExpertDLL.rc
trunk/jcl/packages/d10/JclSIMDViewExpertDLL.res
trunk/jcl/packages/d10/JclThreadNameExpert.bdsproj
trunk/jcl/packages/d10/JclThreadNameExpert.rc
trunk/jcl/packages/d10/JclThreadNameExpert.res
trunk/jcl/packages/d10/JclThreadNameExpertDLL.bdsproj
trunk/jcl/packages/d10/JclThreadNameExpertDLL.rc
trunk/jcl/packages/d10/JclThreadNameExpertDLL.res
trunk/jcl/packages/d10/JclVcl.bdsproj
trunk/jcl/packages/d10/JclVcl.rc
trunk/jcl/packages/d10/JclVcl.res
trunk/jcl/packages/d10/JclVersionControlExpert.bdsproj
trunk/jcl/packages/d10/JclVersionControlExpert.rc
trunk/jcl/packages/d10/JclVersionControlExpert.res
trunk/jcl/packages/d10/JclVersionControlExpertDLL.bdsproj
trunk/jcl/packages/d10/JclVersionControlExpertDLL.rc
trunk/jcl/packages/d10/JclVersionControlExpertDLL.res
trunk/jcl/packages/d10.net/Jedi.Jcl.bdsproj
trunk/jcl/packages/d10.net/Jedi.Jcl.dpr
trunk/jcl/packages/d11/Jcl.dproj
trunk/jcl/packages/d11/Jcl.rc
trunk/jcl/packages/d11/Jcl.res
trunk/jcl/packages/d11/JclBaseExpert.dproj
trunk/jcl/packages/d11/JclBaseExpert.rc
trunk/jcl/packages/d11/JclBaseExpert.res
trunk/jcl/packages/d11/JclDebugExpert.dproj
trunk/jcl/packages/d11/JclDebugExpert.rc
trunk/jcl/packages/d11/JclDebugExpert.res
trunk/jcl/packages/d11/JclDebugExpertDLL.dproj
trunk/jcl/packages/d11/JclDebugExpertDLL.rc
trunk/jcl/packages/d11/JclDebugExpertDLL.res
trunk/jcl/packages/d11/JclFavoriteFoldersExpert.dproj
trunk/jcl/packages/d11/JclFavoriteFoldersExpert.rc
trunk/jcl/packages/d11/JclFavoriteFoldersExpert.res
trunk/jcl/packages/d11/JclFavoriteFoldersExpertDLL.dproj
trunk/jcl/packages/d11/JclFavoriteFoldersExpertDLL.rc
trunk/jcl/packages/d11/JclFavoriteFoldersExpertDLL.res
trunk/jcl/packages/d11/JclProjectAnalysisExpert.dproj
trunk/jcl/packages/d11/JclProjectAnalysisExpert.rc
trunk/jcl/packages/d11/JclProjectAnalysisExpert.res
trunk/jcl/packages/d11/JclProjectAnalysisExpertDLL.dproj
trunk/jcl/packages/d11/JclProjectAnalysisExpertDLL.rc
trunk/jcl/packages/d11/JclProjectAnalysisExpertDLL.res
trunk/jcl/packages/d11/JclRepositoryExpert.dproj
trunk/jcl/packages/d11/JclRepositoryExpert.rc
trunk/jcl/packages/d11/JclRepositoryExpert.res
trunk/jcl/packages/d11/JclRepositoryExpertDLL.dproj
trunk/jcl/packages/d11/JclRepositoryExpertDLL.rc
trunk/jcl/packages/d11/JclRepositoryExpertDLL.res
trunk/jcl/packages/d11/JclSIMDViewExpert.dproj
trunk/jcl/packages/d11/JclSIMDViewExpert.rc
trunk/jcl/packages/d11/JclSIMDViewExpert.res
trunk/jcl/packages/d11/JclSIMDViewExpertDLL.dproj
trunk/jcl/packages/d11/JclSIMDViewExpertDLL.rc
trunk/jcl/packages/d11/JclSIMDViewExpertDLL.res
trunk/jcl/packages/d11/JclThreadNameExpert.dproj
trunk/jcl/packages/d11/JclThreadNameExpert.rc
trunk/jcl/packages/d11/JclThreadNameExpert.res
trunk/jcl/packages/d11/JclThreadNameExpertDLL.dproj
trunk/jcl/packages/d11/JclThreadNameExpertDLL.rc
trunk/jcl/packages/d11/JclThreadNameExpertDLL.res
trunk/jcl/packages/d11/JclVcl.dproj
trunk/jcl/packages/d11/JclVcl.rc
trunk/jcl/packages/d11/JclVcl.res
trunk/jcl/packages/d11/JclVersionControlExpert.dproj
trunk/jcl/packages/d11/JclVersionControlExpert.rc
trunk/jcl/packages/d11/JclVersionControlExpert.res
trunk/jcl/packages/d11/JclVersionControlExpertDLL.dproj
trunk/jcl/packages/d11/JclVersionControlExpertDLL.rc
trunk/jcl/packages/d11/JclVersionControlExpertDLL.res
trunk/jcl/packages/d5/JclBaseExpertD50.rc
trunk/jcl/packages/d5/JclBaseExpertD50.res
trunk/jcl/packages/d5/JclD50.RES
trunk/jcl/packages/d5/JclD50.rc
trunk/jcl/packages/d5/JclDebugExpertD50.RES
trunk/jcl/packages/d5/JclDebugExpertD50.rc
trunk/jcl/packages/d5/JclDebugExpertDLLD50.RES
trunk/jcl/packages/d5/JclDebugExpertDLLD50.rc
trunk/jcl/packages/d5/JclFavoriteFoldersExpertD50.RES
trunk/jcl/packages/d5/JclFavoriteFoldersExpertD50.rc
trunk/jcl/packages/d5/JclFavoriteFoldersExpertDLLD50.RES
trunk/jcl/packages/d5/JclFavoriteFoldersExpertDLLD50.rc
trunk/jcl/packages/d5/JclProjectAnalysisExpertD50.RES
trunk/jcl/packages/d5/JclProjectAnalysisExpertD50.rc
trunk/jcl/packages/d5/JclProjectAnalysisExpertDLLD50.RES
trunk/jcl/packages/d5/JclProjectAnalysisExpertDLLD50.rc
trunk/jcl/packages/d5/JclRepositoryExpertD50.rc
trunk/jcl/packages/d5/JclRepositoryExpertD50.res
trunk/jcl/packages/d5/JclRepositoryExpertDLLD50.rc
trunk/jcl/packages/d5/JclRepositoryExpertDLLD50.res
trunk/jcl/packages/d5/JclSIMDViewExpertD50.RES
trunk/jcl/packages/d5/JclSIMDViewExpertD50.rc
trunk/jcl/packages/d5/JclSIMDViewExpertDLLD50.RES
trunk/jcl/packages/d5/JclSIMDViewExpertDLLD50.rc
trunk/jcl/packages/d5/JclThreadNameExpertD50.RES
trunk/jcl/packages/d5/JclThreadNameExpertD50.rc
trunk/jcl/packages/d5/JclThreadNameExpertDLLD50.RES
trunk/jcl/packages/d5/JclThreadNameExpertDLLD50.rc
trunk/jcl/packages/d5/JclUsesExpertD50.RES
trunk/jcl/packages/d5/JclUsesExpertD50.rc
trunk/jcl/packages/d5/JclUsesExpertDLLD50.RES
trunk/jcl/packages/d5/JclUsesExpertDLLD50.rc
trunk/jcl/packages/d5/JclVersionControlExpertD50.rc
trunk/jcl/packages/d5/JclVersionControlExpertD50.res
trunk/jcl/packages/d5/JclVersionControlExpertDLLD50.rc
trunk/jcl/packages/d5/JclVersionControlExpertDLLD50.res
trunk/jcl/packages/d6/Jcl.rc
trunk/jcl/packages/d6/Jcl.res
trunk/jcl/packages/d6/JclBaseExpert.rc
trunk/jcl/packages/d6/JclBaseExpert.res
trunk/jcl/packages/d6/JclDebugExpert.rc
trunk/jcl/packages/d6/JclDebugExpert.res
trunk/jcl/packages/d6/JclDebugExpertDLL.RES
trunk/jcl/packages/d6/JclDebugExpertDLL.rc
trunk/jcl/packages/d6/JclFavoriteFoldersExpert.rc
trunk/jcl/packages/d6/JclFavoriteFoldersExpert.res
trunk/jcl/packages/d6/JclFavoriteFoldersExpertDLL.RES
trunk/jcl/packages/d6/JclFavoriteFoldersExpertDLL.rc
trunk/jcl/packages/d6/JclProjectAnalysisExpert.RES
trunk/jcl/packages/d6/JclProjectAnalysisExpert.rc
trunk/jcl/packages/d6/JclProjectAnalysisExpertDLL.RES
trunk/jcl/packages/d6/JclProjectAnalysisExpertDLL.rc
trunk/jcl/packages/d6/JclRepositoryExpert.rc
trunk/jcl/packages/d6/JclRepositoryExpert.res
trunk/jcl/packages/d6/JclRepositoryExpertDLL.rc
trunk/jcl/packages/d6/JclRepositoryExpertDLL.res
trunk/jcl/packages/d6/JclSIMDViewExpert.rc
trunk/jcl/packages/d6/JclSIMDViewExpert.res
trunk/jcl/packages/d6/JclSIMDViewExpertDLL.RES
trunk/jcl/packages/d6/JclSIMDViewExpertDLL.rc
trunk/jcl/packages/d6/JclThreadNameExpert.rc
trunk/jcl/packages/d6/JclThreadNameExpert.res
trunk/jcl/packages/d6/JclThreadNameExpertDLL.RES
trunk/jcl/packages/d6/JclThreadNameExpertDLL.rc
trunk/jcl/packages/d6/JclUsesExpert.rc
trunk/jcl/packages/d6/JclUsesExpert.res
trunk/jcl/packages/d6/JclUsesExpertDLL.RES
trunk/jcl/packages/d6/JclUsesExpertDLL.rc
trunk/jcl/packages/d6/JclVClx.rc
trunk/jcl/packages/d6/JclVClx.res
trunk/jcl/packages/d6/JclVcl.rc
trunk/jcl/packages/d6/JclVcl.res
trunk/jcl/packages/d6/JclVersionControlExpert.rc
trunk/jcl/packages/d6/JclVersionControlExpert.res
trunk/jcl/packages/d6/JclVersionControlExpertDLL.rc
trunk/jcl/packages/d6/JclVersionControlExpertDLL.res
trunk/jcl/packages/d7/Jcl.rc
trunk/jcl/packages/d7/Jcl.res
trunk/jcl/packages/d7/JclBaseExpert.rc
trunk/jcl/packages/d7/JclBaseExpert.res
trunk/jcl/packages/d7/JclDebugExpert.rc
trunk/jcl/packages/d7/JclDebugExpert.res
trunk/jcl/packages/d7/JclDebugExpertDLL.RES
trunk/jcl/packages/d7/JclDebugExpertDLL.rc
trunk/jcl/packages/d7/JclFavoriteFoldersExpert.rc
trunk/jcl/packages/d7/JclFavoriteFoldersExpert.res
trunk/jcl/packages/d7/JclFavoriteFoldersExpertDLL.RES
trunk/jcl/packages/d7/JclFavoriteFoldersExpertDLL.rc
trunk/jcl/packages/d7/JclProjectAnalysisExpert.RES
trunk/jcl/packages/d7/JclProjectAnalysisExpert.rc
trunk/jcl/packages/d7/JclProjectAnalysisExpertDLL.RES
trunk/jcl/packages/d7/JclProjectAnalysisExpertDLL.rc
trunk/jcl/packages/d7/JclRepositoryExpert.rc
trunk/jcl/packages/d7/JclRepositoryExpert.res
trunk/jcl/packages/d7/JclRepositoryExpertDLL.rc
trunk/jcl/packages/d7/JclRepositoryExpertDLL.res
trunk/jcl/packages/d7/JclSIMDViewExpert.rc
trunk/jcl/packages/d7/JclSIMDViewExpert.res
trunk/jcl/packages/d7/JclSIMDViewExpertDLL.RES
trunk/jcl/packages/d7/JclSIMDViewExpertDLL.rc
trunk/jcl/packages/d7/JclThreadNameExpert.rc
trunk/jcl/packages/d7/JclThreadNameExpert.res
trunk/jcl/packages/d7/JclThreadNameExpertDLL.RES
trunk/jcl/packages/d7/JclThreadNameExpertDLL.rc
trunk/jcl/packages/d7/JclUsesExpert.rc
trunk/jcl/packages/d7/JclUsesExpert.res
trunk/jcl/packages/d7/JclUsesExpertDLL.RES
trunk/jcl/packages/d7/JclUsesExpertDLL.rc
trunk/jcl/packages/d7/JclVClx.rc
trunk/jcl/packages/d7/JclVClx.res
trunk/jcl/packages/d7/JclVcl.rc
trunk/jcl/packages/d7/JclVcl.res
trunk/jcl/packages/d7/JclVersionControlExpert.rc
trunk/jcl/packages/d7/JclVersionControlExpert.res
trunk/jcl/packages/d7/JclVersionControlExpertDLL.rc
trunk/jcl/packages/d7/JclVersionControlExpertDLL.res
trunk/jcl/packages/d8/Jcl.RES
trunk/jcl/packages/d8/Jcl.bdsproj
trunk/jcl/packages/d8/Jcl.rc
trunk/jcl/packages/d8/JclBaseExpert.RES
trunk/jcl/packages/d8/JclBaseExpert.bdsproj
trunk/jcl/packages/d8/JclBaseExpert.rc
trunk/jcl/packages/d8/JclFavoriteFoldersExpertDLL.RES
trunk/jcl/packages/d8/JclFavoriteFoldersExpertDLL.bdsproj
trunk/jcl/packages/d8/JclFavoriteFoldersExpertDLL.rc
trunk/jcl/packages/d8/JclVersionControlExpertDLL.bdsproj
trunk/jcl/packages/d8/JclVersionControlExpertDLL.rc
trunk/jcl/packages/d8/JclVersionControlExpertDLL.res
trunk/jcl/packages/d9/Jcl.RES
trunk/jcl/packages/d9/Jcl.bdsproj
trunk/jcl/packages/d9/Jcl.rc
trunk/jcl/packages/d9/JclBaseExpert.bdsproj
trunk/jcl/packages/d9/JclBaseExpert.rc
trunk/jcl/packages/d9/JclBaseExpert.res
trunk/jcl/packages/d9/JclDebugExpert.RES
trunk/jcl/packages/d9/JclDebugExpert.bdsproj
trunk/jcl/packages/d9/JclDebugExpert.rc
trunk/jcl/packages/d9/JclDebugExpertDLL.RES
trunk/jcl/packages/d9/JclDebugExpertDLL.bdsproj
trunk/jcl/packages/d9/JclDebugExpertDLL.rc
trunk/jcl/packages/d9/JclFavoriteFoldersExpert.bdsproj
trunk/jcl/packages/d9/JclFavoriteFoldersExpert.rc
trunk/jcl/packages/d9/JclFavoriteFoldersExpert.res
trunk/jcl/packages/d9/JclFavoriteFoldersExpertDLL.RES
trunk/jcl/packages/d9/JclFavoriteFoldersExpertDLL.bdsproj
trunk/jcl/packages/d9/JclFavoriteFoldersExpertDLL.rc
trunk/jcl/packages/d9/JclProjectAnalysisExpert.RES
trunk/jcl/packages/d9/JclProjectAnalysisExpert.bdsproj
trunk/jcl/packages/d9/JclProjectAnalysisExpert.rc
trunk/jcl/packages/d9/JclProjectAnalysisExpertDLL.RES
trunk/jcl/packages/d9/JclProjectAnalysisExpertDLL.bdsproj
trunk/jcl/packages/d9/JclProjectAnalysisExpertDLL.rc
trunk/jcl/packages/d9/JclRepositoryExpert.bdsproj
trunk/jcl/packages/d9/JclRepositoryExpert.rc
trunk/jcl/packages/d9/JclRepositoryExpert.res
trunk/jcl/packages/d9/JclRepositoryExpertDLL.bdsproj
trunk/jcl/packages/d9/JclRepositoryExpertDLL.rc
trunk/jcl/packages/d9/JclRepositoryExpertDLL.res
trunk/jcl/packages/d9/JclSIMDViewExpert.bdsproj
trunk/jcl/packages/d9/JclSIMDViewExpert.rc
trunk/jcl/packages/d9/JclSIMDViewExpertDLL.RES
trunk/jcl/packages/d9/JclSIMDViewExpertDLL.bdsproj
trunk/jcl/packages/d9/JclSIMDViewExpertDLL.rc
trunk/jcl/packages/d9/JclSimdViewExpert.RES
trunk/jcl/packages/d9/JclThreadNameExpert.RES
trunk/jcl/packages/d9/JclThreadNameExpert.bdsproj
trunk/jcl/packages/d9/JclThreadNameExpert.rc
trunk/jcl/packages/d9/JclThreadNameExpertDLL.RES
trunk/jcl/packages/d9/JclThreadNameExpertDLL.bdsproj
trunk/jcl/packages/d9/JclThreadNameExpertDLL.rc
trunk/jcl/packages/d9/JclVcl.RES
trunk/jcl/packages/d9/JclVcl.bdsproj
trunk/jcl/packages/d9/JclVcl.rc
trunk/jcl/packages/d9/JclVersionControlExpert.bdsproj
trunk/jcl/packages/d9/JclVersionControlExpert.rc
trunk/jcl/packages/d9/JclVersionControlExpert.res
trunk/jcl/packages/d9/JclVersionControlExpertDLL.bdsproj
trunk/jcl/packages/d9/JclVersionControlExpertDLL.rc
trunk/jcl/packages/d9/JclVersionControlExpertDLL.res
trunk/jcl/packages/d9.net/Jedi.Jcl.bdsproj
trunk/jcl/packages/d9.net/Jedi.Jcl.dpr
trunk/jcl/packages/k3/Jcl.bpk
trunk/jcl/packages/k3/Jcl.dpk
trunk/jcl/packages/k3/Jcl.rc
trunk/jcl/packages/k3/Jcl.res
trunk/jcl/packages/k3/JclVClx.bpk
trunk/jcl/packages/k3/JclVClx.dpk
trunk/jcl/packages/k3/JclVClx.rc
trunk/jcl/packages/k3/JclVClx.res
trunk/jcl/source/common/JclAlgorithms.pas
trunk/jcl/source/common/JclBase.pas
trunk/jcl/source/common/JclBinaryTrees.pas
trunk/jcl/source/common/JclBorlandTools.pas
trunk/jcl/source/jcl.inc
trunk/jcl/source/jedi.inc
Modified: trunk/jcl/devtools/included_files.bat
===================================================================
--- trunk/jcl/devtools/included_files.bat 2007-09-13 09:58:58 UTC (rev 2161)
+++ trunk/jcl/devtools/included_files.bat 2007-09-13 10:17:44 UTC (rev 2162)
@@ -13,4 +13,5 @@
copy ..\source\jcl.template.inc ..\source\jcld9.net.inc
copy ..\source\jcl.template.inc ..\source\jcld10.inc
copy ..\source\jcl.template.inc ..\source\jcld10.net.inc
-copy ..\source\jcl.template.inc ..\source\jcld11.inc
\ No newline at end of file
+copy ..\source\jcl.template.inc ..\source\jcld11.inc
+copy ..\source\jcl.template.inc ..\source\jcld11.net.inc
\ No newline at end of file
Modified: trunk/jcl/devtools/included_files.sh
===================================================================
--- trunk/jcl/devtools/included_files.sh 2007-09-13 09:58:58 UTC (rev 2161)
+++ trunk/jcl/devtools/included_files.sh 2007-09-13 10:17:44 UTC (rev 2162)
@@ -15,4 +15,5 @@
cp ../source/jcl.template.inc ../source/jcld9.net.inc
cp ../source/jcl.template.inc ../source/jcld10.inc
cp ../source/jcl.template.inc ../source/jcld10.net.inc
-cp ../source/jcl.template.inc ../source/jcld11.inc
\ No newline at end of file
+cp ../source/jcl.template.inc ../source/jcld11.inc
+cp ../source/jcl.template.inc ../source/jcld11.net.inc
\ No newline at end of file
Modified: trunk/jcl/devtools/pgEdit.xml
===================================================================
--- trunk/jcl/devtools/pgEdit.xml 2007-09-13 09:58:58 UTC (rev 2161)
+++ trunk/jcl/devtools/pgEdit.xml 2007-09-13 10:17:44 UTC (rev 2162)
@@ -116,6 +116,7 @@
<target name="d9.net" IsDotNet="1"/>
<target name="d10.net" IsDotNet="1"/>
<target name="d11" IsBds="1"/>
+ <target name="d11.net" IsDotNet="1"/>
</targets>
<aliases>
<alias name="Delphi" value="d5,d6,d7,d9,d10,d11"/>
@@ -131,13 +132,13 @@
<alias name="Clx" value="c6,d6,d7,k3"/>
<alias name="Vcl" value="c6,d6,d7,d9,d10,d11"/>
<alias name="Bds" value="cs1,d8,d9,d10,d11"/>
- <alias name="JclDotNet" value="d9.net,d10.net"/>
+ <alias name="JclDotNet" value="d9.net,d10.net,d11.net"/>
</aliases>
<ProjectProperties>
<ProjectProperty name="VersionMajorNumber" value="1"/>
- <ProjectProperty name="VersionMinorNumber" value="101"/>
+ <ProjectProperty name="VersionMinorNumber" value="102"/>
<ProjectProperty name="ReleaseNumber" value="0"/>
- <ProjectProperty name="BuildNumber" value="2647"/>
+ <ProjectProperty name="BuildNumber" value="2726"/>
</ProjectProperties>
</Model>
</models>
Modified: trunk/jcl/docs/Experts.html
===================================================================
--- trunk/jcl/docs/Experts.html 2007-09-13 09:58:58 UTC (rev 2161)
+++ trunk/jcl/docs/Experts.html 2007-09-13 10:17:44 UTC (rev 2162)
@@ -1,7 +1,7 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html lang="en-us">
<head>
- <title>JEDI Code Library Release 1.100</title>
+ <title>JEDI Code Library Release 1.101</title>
<meta content="text/html;charset=ISO-8859-1" http-equiv="Content-Type">
<link rel="stylesheet" type="text/css" href="styles/default.css">
<meta content="Project JEDI" name="author">
@@ -10,9 +10,9 @@
<body>
<hr><br>
<h1>JEDI Code Library</h1>
-<p>Unstable 1.101<br>
-Build 2647<br>
-30-May-2007</p>
+<p>Release 1.101<br>
+Build 2725<br>
+17-August-2007</p>
<hr><br>
<h3>Content of this file</h3>
<ul>
Modified: trunk/jcl/docs/Readme.html
===================================================================
--- trunk/jcl/docs/Readme.html 2007-09-13 09:58:58 UTC (rev 2161)
+++ trunk/jcl/docs/Readme.html 2007-09-13 10:17:44 UTC (rev 2162)
@@ -1,7 +1,7 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html lang="en-us">
<head>
- <title>JEDI Code Library Release 1.100</title>
+ <title>JEDI Code Library Release 1.101</title>
<meta content="text/html;charset=ISO-8859-1" http-equiv="Content-Type">
@@ -18,9 +18,9 @@
<h1>JEDI Code Library</h1>
-<p>Unstable 1.101<br>
-Build 2647
-30-May-2007</p>
+<p>Release 1.101<br>
+Build 2725
+17-August-2007</p>
<hr><br>
@@ -53,7 +53,7 @@
<hr><br>
<h3><a name="about">About this release</a></h3>
-<p>JCL release 1.100 provides an updated support for all targets (including CodeGear Delphi 2007 for Win32 and CodeGear C++Builder 2007).</p>
+<p>JCL release 1.101 provides an updated support for all targets (including CodeGear RAD Studio 2007).</p>
<p>As always, multiple bugs have been fixed; for detailed change logs,
use the facilities of our Subversion repository at Sourceforge.net
@@ -65,35 +65,18 @@
<ul>
- <li>JclPeImage is significantly updated: it now supports 64-bit applications and libraries.
- </li>
+ <li>New functions to copy and move directories and to handle command line parameters in JclFileUtils.</li>
- <li>JclDebug is significantly updated: .jdbg files contain
-informations about all segments of code. A new option was added to
-limit exception handling to the main thread of the application.
-</li>
+ <li>A function for Vista detecting UAC in JclSysInfo.</li>
- <li>PCRE (<a href="http://www.pcre.org/">http://www.pcre.org/</a>)
-updated to version 7.0. PCRE code can be included in the application
-not requiring "pcre.dll" anymore (experimental - read the comments at
-the beginning of source\common\pcre.pas for details and modifications
-to enable this feature).
-</li>
+ <li>JclFont is introduced to initialize a TFont object to standard system fonts.</li>
- <li>JclMail : different file names can be specified for attachements
- </li>
+ <li>JclExprEval now supports operators: and, or, bor (bitwise), not, bnot (bitwise), cmp, xor, bxor(bitwise), div, mod, shl, shr.</li>
- <li>Collection of stream classes to make basic operations easier
-(getting random data, multiplexing several streams, buffering an other
-stream, being notifyed on changes, reading common data types, scoping a
-stream, delegating read/write/seek operations.
-</li>
+ <li>Three new stream classes in JclStream: TJclSectoredStream (class to handle accesses to a sectored storage), TJclCRC16Stream and TJclCRC32Stream (a CRC is added to each sector preventing data corruption).</li>
- <li>Integration of the JCL help into the help system of Delphi 2005, BDS 2006, Turbo Delphi and RAD Studio 2007.
- </li>
+ <li>Unicode support is updated to version 5.1.0.</li>
- <li>New IDE expert to have TortoiseSVN (<a href="http://tortoisesvn.tigris.org/">http://tortoisesvn.tigris.org/</a>) and TortoiseCVS (<a href="http://tortoisecvs.sourceforge.net/">http://tortoisecvs.sourceforge.net/</a>) commands integrated in all supportted IDE.</li>
-
</ul>
<p><span style="font-weight: bold;">Important:</span>
@@ -131,16 +114,14 @@
can be linked into binaries to become JCL debug data or be converted to .jdbg files.
Once linked MAP files could be deleted. These options are subnodes of the "Packages" node.</p>
-<p>For BDS 2006, the compiler introduced a new option to make the same packages available in C++,
-by checking the "Dual packages" option of the "Packages" node, you will be able to call functions
-of the JCL from C++ code.</p>
+<p>For BDS 2006 and RAD Studio 2007, the compiler introduced a new option to make the same packages
+available in C++, by checking the "Dual packages" option of the "Packages" node, you will be able
+to call functions of the JCL from C++ code.</p>
<p><span style="font-weight: bold;">.net Framework support:</span></p>
-<p>A subset of JCL units was worked over to support Delphi.Net (Delphi 2005
-& BDS 2006). The packages belong to the Jedi.Jcl namespace. The installer can generate these
-packages for Delphi 2005 and BDS 2006, it displays an other tab to configure options and directory.
-The installation process is similar to the native targets.</p>
+<p>A subset of JCL units was worked over to support Delphi.Net (Delphi 2005, BDS 2006 and RAD
+Studio 2007). The packages belong to the Jedi.Jcl namespace.</p>
<hr><br>
@@ -161,8 +142,7 @@
<ul>
- <li>C#Builder 1 (cf <a href="#notes">Installation notes</a>).
- </li>
+ <li>C#Builder 1 (cf <a href="#notes">Installation notes</a>).</li>
<li>Delphi 8.net (cf <a href="#notes">Installation notes</a>).</li>
@@ -172,22 +152,17 @@
<ul>
- <li>Delphi version 5, 6, 7.
- </li>
+ <li>Delphi version 5, 6, 7.</li>
- <li>C++Builder version 5 & 6.
- </li>
+ <li>C++Builder version 5 & 6.</li>
- <li>Delphi 2005 (Delphi Win32 and Delphi.net personalities).
- </li>
+ <li>Delphi 2005 (Delphi for Win32 and Delphi.net personalities).</li>
- <li>Borland Developer Studio 2006 (Delphi Win32, C++Builder Win32, Delphi.net and C#Builder personalities).
- </li>
+ <li>Borland Developer Studio 2006 (Delphi for Win32, C++Builder Win32, Delphi.net and C#Builder personalities).</li>
- <li>Turbo Delphi (explorer and professional - cf <a href="#notes">Installation notes</a>).
- </li>
+ <li>Turbo Delphi (explorer and professional - cf <a href="#notes">Installation notes</a>).</li>
- <li>CodeGear RAD Studio 2007 (Delphi Win32 and C++Builder Win32 personalities).</li>
+ <li>CodeGear RAD Studio 2007 (Delphi for Win32, C++Builder for Win32 and Delphi.net personalities).</li>
</ul>
@@ -198,19 +173,17 @@
<ul>
<li>Not every unit supports all tools. Look out for <tt>*.exc</tt>
- files in the tool-specific <tt>lib/</tt>subdirectories for a list of units
- excluded from compilation.
- </li>
+ files in the tool-specific <tt>lib/</tt>subdirectories for a list of units
+ excluded from compilation.</li>
<li>Kylix 3 Delphi/C++ installation is back but specific code has not been tested with the latest
- versions of the kernel. Please ensure you use the flavor of the JCL with Unix EOL.
- </li>
+ versions of the kernel. Please ensure you use the flavor of the JCL with Unix EOL.</li>
<li>Free Pascal (<a href="http://www.freepascal.org/">http://www.freepascal.org/</a>)
support has not been updated for this release; most units from
source/common should work with FP 2.0, as tests with a 2.0 beta (1.9.8)
indicated, but this has not been verified. Note that there are no plans
- to support FP versions from the 1.0 branch.</li>
+ to support FP versions from the 1.0 branch.</li>
</ul>
@@ -226,12 +199,11 @@
<ul>
<li>If you have an other supported version of Delphi/C++Builder on this computer, it should automatically be
- detected and the installer will process as usual.
- </li>
+ detected and the installer will process as usual.</li>
<li>If you only have Turbo Delphi Explorer (and no other tools) on the computer, the installer cannot be
compiled. You have to use the Turbo Explorer flavor of the JCL that contains a precompiled installer. However,
- you will not be able to install any experts.</li>
+ you will not be able to install any experts.</li>
</ul>
@@ -240,20 +212,18 @@
<ul>
<li>These products cannot be used to build the JCL installer, you need an
- other supported product to install JCL experts on these products.
- </li>
+ other supported product to install JCL experts on these products.</li>
<li>These products are not able to use the JCL library as a runtime library.
- You cannot write managed applications and managed packages based on the JCL.
- </li>
+ You cannot write managed applications and managed packages based on the JCL.</li>
<li>These products are not shipped with their native compilers, you have to
- download it from codecentral (<a href="http://cc.codegear.com/">http://cc.codegear.com/</a>).
- The item (<a href="http://codecentral.codegear.com/Download.aspx?id=21333">http://codecentral.codegear.com/Download.aspx?id=21333</a>)
+ download it from codecentral (<a href="http://cc.codegear.com/">http://cc.codegear.com/</a>).
+ The item (<a href="http://codecentral.codegear.com/Download.aspx?id=21333">http://codecentral.codegear.com/Download.aspx?id=21333</a>)
contains the native compiler to be installed in Delphi 8.
- The item (<a href="http://codecentral.codegear.com/Download.aspx?id=21334">http://codecentral.codegear.com/Download.aspx?id=21334</a>)
+ The item (<a href="http://codecentral.codegear.com/Download.aspx?id=21334">http://codecentral.codegear.com/Download.aspx?id=21334</a>)
contains the native compiler to be installed in C#Builder 1.
- These zip files have to be extracted in the products directory using the standard pattern:</li>
+ These zip files have to be extracted in the products directory using the standard pattern:</li>
</ul>
@@ -281,49 +251,38 @@
<li>Open and edit included file to customize options:</li>
<ul>
- <li>For Kylix 3 (Delphi): source\jclkd3.inc
- </li>
+ <li>For Kylix 3 (Delphi): source\jclkd3.inc</li>
- <li>For Kylix 3 (C++Builder): source\jclkc3.inc
- </li>
+ <li>For Kylix 3 (C++Builder): source\jclkc3.inc</li>
- <li>For C++Builder 5: source\jclc5.inc
- </li>
+ <li>For C++Builder 5: source\jclc5.inc</li>
- <li>For C++Builder 6: source\jclc6.inc
- </li>
+ <li>For C++Builder 6: source\jclc6.inc</li>
- <li>For Delphi 5: source\jcld5.inc
- </li>
+ <li>For Delphi 5: source\jcld5.inc</li>
- <li>For Delphi 6: source\jcld6.inc
- </li>
+ <li>For Delphi 6: source\jcld6.inc</li>
- <li>For Delphi 7: source\jcld7.inc
- </li>
+ <li>For Delphi 7: source\jcld7.inc</li>
- <li>For Delphi 2005: source\jcld9.inc
- </li>
+ <li>For Delphi 2005: source\jcld9.inc</li>
- <li>For Delphi.net 2005: source\jcld9.net.inc
- </li>
+ <li>For Delphi.net 2005: source\jcld9.net.inc</li>
- <li>For BDS 2006 (Delphi and C++Builder): source\jcld10.inc
- </li>
+ <li>For BDS 2006 (Delphi and C++Builder): source\jcld10.inc</li>
- <li>For CodeGear RAD Studio 2007 (Delphi for Win32 and C++Builder): source\jcld11.inc
- </li>
+ <li>For Delphi.net 2006: source\jcld10.net.inc</li>
- <li>For Delphi.net 2006: source\jcld10.net.inc</li>
+ <li>For CodeGear RAD Studio 2007 (Delphi for Win32 and C++Builder): source\jcld11.inc</li>
+ <li>For Delphi.net 2007: source\jcld11.net.inc</li>
</ul>
<li>In the IDE, open and compile package Jcl.dpk (or Jcl.bpk for C++Builder)
located in a subdirectory of the "packages" directory matching your version of
the IDE. This package doesn't have to be installed since it doesn't provide
- any components.
- </li>
+ any components.</li>
<li>If you want to install experts, open package JclBaseExpert.dpk and compile it,
then you can install all the experts you want (packages are located in the same
@@ -346,14 +305,12 @@
<ul>
<li>Newsgroup is the recommended way to contact other JCL users and the team itself.
-They are hosted at <a href="news://forums.talkto.net/jedi.jcl">news://forums.talkto.net/jedi.jcl</a>.
- </li>
+They are hosted at <a href="news://forums.talkto.net/jedi.jcl">news://forums.talkto.net/jedi.jcl</a>.</li>
<li>Write to <a href="mailto:jc...@de...">jc...@de...</a>
or to <a href="mailto:jcl...@de...">jcl...@de...</a>
This email account should not be used for support requests. If you need
-support please use either the newsgroups or the mailing list.
- </li>
+support please use either the newsgroups or the mailing list.</li>
<li>If you want to keep up to date about JCL then you can join the
JCL mailing list by going to <a href="http://tech.groups.yahoo.com/group/JEDI-JCL/">http://tech.groups.yahoo.com/group/JEDI-JCL/</a>
@@ -417,14 +374,11 @@
things we need your help on:
<ul>
- <li>Donate source code
- </li>
+ <li>Donate source code</li>
- <li>Donate time writing help
- </li>
+ <li>Donate time writing help</li>
- <li>Donate time writing demos
- </li>
+ <li>Donate time writing demos</li>
<li>Donate time fixing bugs</li>
Modified: trunk/jcl/docs/Readme.txt
===================================================================
--- trunk/jcl/docs/Readme.txt 2007-09-13 09:58:58 UTC (rev 2161)
+++ trunk/jcl/docs/Readme.txt 2007-09-13 10:17:44 UTC (rev 2162)
@@ -2,8 +2,8 @@
JEDI Code Library
Unstable 1.101
-Build 2647
-30-May-2007
+Build 2725
+17-August-2007
--------------------------------------------------------------------------------
@@ -22,8 +22,8 @@
--------------------------------------------------------------------------------
About this release
-JCL release 1.100 provides an updated support for all targets (including CodeGear
-Delphi 2007 for Win32 and CodeGear C++Builder 2007).
+JCL release 1.101 provides an updated support for all targets (including CodeGear
+RAD Studio 2007).
As always, multiple bugs have been fixed; for detailed change logs, use the
facilities of our Subversion repository at Sourceforge.net
@@ -31,25 +31,16 @@
Head changes:
- - JclPeImage is significantly updated: it now supports 64-bit applications and
- libraries.
- - JclDebug is significantly updated: .jdbg files contain informations about all
- segments of code. A new option was added to limit exception handling to the
- main thread of the application.
- - PCRE (http://www.pcre.org/) updated to version 7.0. PCRE code can be included
- in the application not requiring "pcre.dll" anymore (experimental - read the
- comments at the beginning of source\common\pcre.pas for details and
- modifications to enable this feature).
- - JclMail : different file names can be specified for attachements
- - Collection of stream classes to make basic operations easier (getting random
- data, multiplexing several streams, buffering an other stream, being notifyed
- on changes, reading common data types, scoping a stream, delegating
- read/write/seek operations.
- - Integration of the JCL help into the help system of Delphi 2005, BDS 2006,
- Turbo Delphi and RAD Studio 2007.
- - New IDE expert to have TortoiseSVN (http://tortoisesvn.tigris.org/) and
- TortoiseCVS (http://tortoisecvs.sourceforge.net/) commands integrated in all
- supportted IDE.
+ - New functions to copy and move directories and to handle command line
+ parameters in JclFileUtils.
+ - A function for Vista detecting UAC in JclSysInfo.
+ - JclFont is introduced to initialize TFont object to standard system fonts.
+ - JclExprEval now supports operators: and, or, bor (bitwise), not, bnot (bitwise),
+ cmp, xor, bxor(bitwise), div, mod, shl, shr.
+ - 3 new stream classes: TJclSectoredStream (class to handle accesses to a sectored
+ storage), TJclCRC16Stream and TJclCRC32Stream (a CRC is added to each sector
+ preventing data corruption).
+ - Unicode support is updated to version 5.1.0.
Important:
@@ -80,17 +71,14 @@
converted to .jdbg files. Once linked MAP files could be deleted. These options
are subnodes of the "Packages" node.
- For BDS 2006, the compiler introduced a new option to make the same packages
-available in C++, by checking the "Dual packages" option of the "Packages" node,
-you will be able to call functions of the JCL from C++ code.
+ For BDS 2006 and RAD Studio 2007, the compiler introduced a new option to make
+ the same packages available in C++, by checking the "Dual packages" option of
+ the "Packages" node, you will be able to call functions of the JCL from C++ code.
.net Framework support:
-A subset of JCL units was worked over to support Delphi.Net (Delphi 2005
-& BDS 2006). The packages belong to the Jedi.Jcl namespace. The installer can
-generate these packages for Delphi 2005 and BDS 2006, it displays an other tab
-to configure options and directory. The installation process is similar to the
-native targets.
+ A subset of JCL units was worked over to support Delphi.Net (Delphi 2005, BDS 2006
+and RAD Studio 2007). The packages belong to the Jedi.Jcl namespace.
--------------------------------------------------------------------------------
@@ -107,11 +95,12 @@
Both supports (run time and design time):
- Delphi version 5, 6, 7.
- C++Builder version 5 & 6.
- - Delphi 2005 (Delphi Win32 and Delphi.net personalities).
- - Borland Developer Studio 2006 (Delphi Win32, C++Builder Win32, Delphi.net
- and C#Builder personalities).
+ - Delphi 2005 (Delphi for Win32 and Delphi.net personalities).
+ - Borland Developer Studio 2006 (Delphi for Win32, C++Builder for Win32,
+ Delphi.net and C#Builder personalities).
- Turbo Delphi (explorer and professional - cf Installation notes).
- - CodeGear RAD Studio 2007 (Delphi Win32 and C++Builder Win32 personalities).
+ - CodeGear RAD Studio 2007 (Delphi for Win32, C++Builder for Win32 and Delphi.net
+ personalities).
--------------------------------------------------------------------------------
@@ -189,8 +178,9 @@
- For Delphi 2005: source\jcld9.inc
- For Delphi.net 2005: source\jcld9.net.inc
- For BDS 2006 (Delphi and C++Builder): source\jcld10.inc
- - For CodeGear RAD Studio 2007 (Delphi for Win32 and C++Builder): source\jcld11.inc
- For Delphi.net 2006: source\jcld10.net.inc
+ - For CodeGear RAD Studio 2007 (Delphi for Win32 and C++Builder): source\jcld11.inc
+ - for Delphi.net 2007: source\jcld11.net.inc
2. In the IDE, open and compile package Jcl.dpk (or Jcl.bpk for C++Builder)
located in a subdirectory of the "packages" directory matching your version of
Modified: trunk/jcl/packages/c5/JclBaseExpertC50.rc
===================================================================
--- trunk/jcl/packages/c5/JclBaseExpertC50.rc 2007-09-13 09:58:58 UTC (rev 2161)
+++ trunk/jcl/packages/c5/JclBaseExpertC50.rc 2007-09-13 10:17:44 UTC (rev 2162)
@@ -1,6 +1,6 @@
VS_VERSION_INFO VERSIONINFO
-FILEVERSION 1,101,0,2647
-PRODUCTVERSION 1,101,0,2647
+FILEVERSION 1,102,0,2726
+PRODUCTVERSION 1,102,0,2726
FILEFLAGSMASK VS_FFI_FILEFLAGSMASK
#ifdef _DEBUG
FILEFLAGS VS_FF_DEBUG
@@ -17,12 +17,12 @@
BEGIN
VALUE "CompanyName", "Project JEDI\0"
VALUE "FileDescription", "JCL Package containing common units for JCL Experts\0"
- VALUE "FileVersion", "1.101.0.2647\0"
+ VALUE "FileVersion", "1.102.0.2726\0"
VALUE "InternalName", "JclBaseExpertC50\0"
VALUE "LegalCopyright", "Copyright (C) 1999, 2007 Project JEDI\0"
VALUE "OriginalFilename", "JclBaseExpertC50C50.bpl\0"
VALUE "ProductName", "JEDI Code Library\0"
- VALUE "ProductVersion", "1.101 Build 2647\0"
+ VALUE "ProductVersion", "1.102 Build 2726\0"
END
END
BLOCK "VarFileInfo"
Modified: trunk/jcl/packages/c5/JclBaseExpertC50.res
===================================================================
(Binary files differ)
Modified: trunk/jcl/packages/c5/JclC50.rc
===================================================================
--- trunk/jcl/packages/c5/JclC50.rc 2007-09-13 09:58:58 UTC (rev 2161)
+++ trunk/jcl/packages/c5/JclC50.rc 2007-09-13 10:17:44 UTC (rev 2162)
@@ -1,6 +1,6 @@
VS_VERSION_INFO VERSIONINFO
-FILEVERSION 1,101,0,2647
-PRODUCTVERSION 1,101,0,2647
+FILEVERSION 1,102,0,2726
+PRODUCTVERSION 1,102,0,2726
FILEFLAGSMASK VS_FFI_FILEFLAGSMASK
#ifdef _DEBUG
FILEFLAGS VS_FF_DEBUG
@@ -17,12 +17,12 @@
BEGIN
VALUE "CompanyName", "Project JEDI\0"
VALUE "FileDescription", "JEDI Code Library RTL package\0"
- VALUE "FileVersion", "1.101.0.2647\0"
+ VALUE "FileVersion", "1.102.0.2726\0"
VALUE "InternalName", "JclC50\0"
VALUE "LegalCopyright", "Copyright (C) 1999, 2007 Project JEDI\0"
VALUE "OriginalFilename", "JclC50C50.bpl\0"
VALUE "ProductName", "JEDI Code Library\0"
- VALUE "ProductVersion", "1.101 Build 2647\0"
+ VALUE "ProductVersion", "1.102 Build 2726\0"
END
END
BLOCK "VarFileInfo"
Modified: trunk/jcl/packages/c5/JclC50.res
===================================================================
(Binary files differ)
Modified: trunk/jcl/packages/c5/JclDebugExpertC50.RES
===================================================================
(Binary files differ)
Modified: trunk/jcl/packages/c5/JclDebugExpertC50.rc
===================================================================
--- trunk/jcl/packages/c5/JclDebugExpertC50.rc 2007-09-13 09:58:58 UTC (rev 2161)
+++ trunk/jcl/packages/c5/JclDebugExpertC50.rc 2007-09-13 10:17:44 UTC (rev 2162)
@@ -1,6 +1,6 @@
VS_VERSION_INFO VERSIONINFO
-FILEVERSION 1,101,0,2647
-PRODUCTVERSION 1,101,0,2647
+FILEVERSION 1,102,0,2726
+PRODUCTVERSION 1,102,0,2726
FILEFLAGSMASK VS_FFI_FILEFLAGSMASK
#ifdef _DEBUG
FILEFLAGS VS_FF_DEBUG
@@ -17,12 +17,12 @@
BEGIN
VALUE "CompanyName", "Project JEDI\0"
VALUE "FileDescription", "JCL Debug IDE extension\0"
- VALUE "FileVersion", "1.101.0.2647\0"
+ VALUE "FileVersion", "1.102.0.2726\0"
VALUE "InternalName", "JclDebugExpertC50\0"
VALUE "LegalCopyright", "Copyright (C) 1999, 2007 Project JEDI\0"
VALUE "OriginalFilename", "JclDebugExpertC50C50.bpl\0"
VALUE "ProductName", "JEDI Code Library\0"
- VALUE "ProductVersion", "1.101 Build 2647\0"
+ VALUE "ProductVersion", "1.102 Build 2726\0"
END
END
BLOCK "VarFileInfo"
Modified: trunk/jcl/packages/c5/JclDebugExpertDLLC50.rc
===================================================================
--- trunk/jcl/packages/c5/JclDebugExpertDLLC50.rc 2007-09-13 09:58:58 UTC (rev 2161)
+++ trunk/jcl/packages/c5/JclDebugExpertDLLC50.rc 2007-09-13 10:17:44 UTC (rev 2162)
@@ -1,6 +1,6 @@
VS_VERSION_INFO VERSIONINFO
-FILEVERSION 1,101,0,2647
-PRODUCTVERSION 1,101,0,2647
+FILEVERSION 1,102,0,2726
+PRODUCTVERSION 1,102,0,2726
FILEFLAGSMASK VS_FFI_FILEFLAGSMASK
#ifdef _DEBUG
FILEFLAGS VS_FF_DEBUG
@@ -17,12 +17,12 @@
BEGIN
VALUE "CompanyName", "Project JEDI\0"
VALUE "FileDescription", "JCL Debug IDE extension\0"
- VALUE "FileVersion", "1.101.0.2647\0"
+ VALUE "FileVersion", "1.102.0.2726\0"
VALUE "InternalName", "JclDebugExpertDLLC50\0"
VALUE "LegalCopyright", "Copyright (C) 1999, 2007 Project JEDI\0"
VALUE "OriginalFilename", "JclDebugExpertDLLC50C50.dll\0"
VALUE "ProductName", "JEDI Code Library\0"
- VALUE "ProductVersion", "1.101 Build 2647\0"
+ VALUE "ProductVersion", "1.102 Build 2726\0"
END
END
BLOCK "VarFileInfo"
Modified: trunk/jcl/packages/c5/JclDebugExpertDLLC50.res
===================================================================
(Binary files differ)
Modified: trunk/jcl/packages/c5/JclFavoriteFoldersExpertC50.rc
===================================================================
--- trunk/jcl/packages/c5/JclFavoriteFoldersExpertC50.rc 2007-09-13 09:58:58 UTC (rev 2161)
+++ trunk/jcl/packages/c5/JclFavoriteFoldersExpertC50.rc 2007-09-13 10:17:44 UTC (rev 2162)
@@ -1,6 +1,6 @@
VS_VERSION_INFO VERSIONINFO
-FILEVERSION 1,101,0,2647
-PRODUCTVERSION 1,101,0,2647
+FILEVERSION 1,102,0,2726
+PRODUCTVERSION 1,102,0,2726
FILEFLAGSMASK VS_FFI_FILEFLAGSMASK
#ifdef _DEBUG
FILEFLAGS VS_FF_DEBUG
@@ -17,12 +17,12 @@
BEGIN
VALUE "CompanyName", "Project JEDI\0"
VALUE "FileDescription", "JCL Open and Save IDE dialogs with favorite folders\0"
- VALUE "FileVersion", "1.101.0.2647\0"
+ VALUE "FileVersion", "1.102.0.2726\0"
VALUE "InternalName", "JclFavoriteFoldersExpertC50\0"
VALUE "LegalCopyright", "Copyright (C) 1999, 2007 Project JEDI\0"
VALUE "OriginalFilename", "JclFavoriteFoldersExpertC50C50.bpl\0"
VALUE "ProductName", "JEDI Code Library\0"
- VALUE "ProductVersion", "1.101 Build 2647\0"
+ VALUE "ProductVersion", "1.102 Build 2726\0"
END
END
BLOCK "VarFileInfo"
Modified: trunk/jcl/packages/c5/JclFavoriteFoldersExpertC50.res
===================================================================
(Binary files differ)
Modified: trunk/jcl/packages/c5/JclFavoriteFoldersExpertDLLC50.rc
===================================================================
--- trunk/jcl/packages/c5/JclFavoriteFoldersExpertDLLC50.rc 2007-09-13 09:58:58 UTC (rev 2161)
+++ trunk/jcl/packages/c5/JclFavoriteFoldersExpertDLLC50.rc 2007-09-13 10:17:44 UTC (rev 2162)
@@ -1,6 +1,6 @@
VS_VERSION_INFO VERSIONINFO
-FILEVERSION 1,101,0,2647
-PRODUCTVERSION 1,101,0,2647
+FILEVERSION 1,102,0,2726
+PRODUCTVERSION 1,102,0,2726
FILEFLAGSMASK VS_FFI_FILEFLAGSMASK
#ifdef _DEBUG
FILEFLAGS VS_FF_DEBUG
@@ -17,12 +17,12 @@
BEGIN
VALUE "CompanyName", "Project JEDI\0"
VALUE "FileDescription", "JCL Open and Save IDE dialogs with favorite folders\0"
- VALUE "FileVersion", "1.101.0.2647\0"
+ VALUE "FileVersion", "1.102.0.2726\0"
VALUE "InternalName", "JclFavoriteFoldersExpertDLLC50\0"
VALUE "LegalCopyright", "Copyright (C) 1999, 2007 Project JEDI\0"
VALUE "OriginalFilename", "JclFavoriteFoldersExpertDLLC50C50.dll\0"
VALUE "ProductName", "JEDI Code Library\0"
- VALUE "ProductVersion", "1.101 Build 2647\0"
+ VALUE "ProductVersion", "1.102 Build 2726\0"
END
END
BLOCK "VarFileInfo"
Modified: trunk/jcl/packages/c5/JclFavoriteFoldersExpertDLLC50.res
===================================================================
(Binary files differ)
Modified: trunk/jcl/packages/c5/JclProjectAnalysisExpertC50.RES
===================================================================
(Binary files differ)
Modified: trunk/jcl/packages/c5/JclProjectAnalysisExpertC50.rc
===================================================================
--- trunk/jcl/packages/c5/JclProjectAnalysisExpertC50.rc 2007-09-13 09:58:58 UTC (rev 2161)
+++ trunk/jcl/packages/c5/JclProjectAnalysisExpertC50.rc 2007-09-13 10:17:44 UTC (rev 2162)
@@ -1,6 +1,6 @@
VS_VERSION_INFO VERSIONINFO
-FILEVERSION 1,101,0,2647
-PRODUCTVERSION 1,101,0,2647
+FILEVERSION 1,102,0,2726
+PRODUCTVERSION 1,102,0,2726
FILEFLAGSMASK VS_FFI_FILEFLAGSMASK
#ifdef _DEBUG
FILEFLAGS VS_FF_DEBUG
@@ -17,12 +17,12 @@
BEGIN
VALUE "CompanyName", "Project JEDI\0"
VALUE "FileDescription", "JCL Project Analyzer\0"
- VALUE "FileVersion", "1.101.0.2647\0"
+ VALUE "FileVersion", "1.102.0.2726\0"
VALUE "InternalName", "JclProjectAnalysisExpertC50\0"
VALUE "LegalCopyright", "Copyright (C) 1999, 2007 Project JEDI\0"
VALUE "OriginalFilename", "JclProjectAnalysisExpertC50C50.bpl\0"
VALUE "ProductName", "JEDI Code Library\0"
- VALUE "ProductVersion", "1.101 Build 2647\0"
+ VALUE "ProductVersion", "1.102 Build 2726\0"
END
END
BLOCK "VarFileInfo"
Modified: trunk/jcl/packages/c5/JclProjectAnalysisExpertDLLC50.rc
===================================================================
--- trunk/jcl/packages/c5/JclProjectAnalysisExpertDLLC50.rc 2007-09-13 09:58:58 UTC (rev 2161)
+++ trunk/jcl/packages/c5/JclProjectAnalysisExpertDLLC50.rc 2007-09-13 10:17:44 UTC (rev 2162)
@@ -1,6 +1,6 @@
VS_VERSION_INFO VERSIONINFO
-FILEVERSION 1,101,0,2647
-PRODUCTVERSION 1,101,0,2647
+FILEVERSION 1,102,0,2726
+PRODUCTVERSION 1,102,0,2726
FILEFLAGSMASK VS_FFI_FILEFLAGSMASK
#ifdef _DEBUG
FILEFLAGS VS_FF_DEBUG
@@ -17,12 +17,12 @@
BEGIN
VALUE "CompanyName", "Project JEDI\0"
VALUE "FileDescription", "JCL Project Analyzer\0"
- VALUE "FileVersion", "1.101.0.2647\0"
+ VALUE "FileVersion", "1.102.0.2726\0"
VALUE "InternalName", "JclProjectAnalysisExpertDLLC50\0"
VALUE "LegalCopyright", "Copyright (C) 1999, 2007 Project JEDI\0"
VALUE "OriginalFilename", "JclProjectAnalysisExpertDLLC50C50.dll\0"
VALUE "ProductName", "JEDI Code Library\0"
- VALUE "ProductVersion", "1.101 Build 2647\0"
+ VALUE "ProductVersion", "1.102 Build 2726\0"
END
END
BLOCK "VarFileInfo"
Modified: trunk/jcl/packages/c5/JclProjectAnalysisExpertDLLC50.res
===================================================================
(Binary files differ)
Modified: trunk/jcl/packages/c5/JclRepositoryExpertC50.rc
===================================================================
--- trunk/jcl/packages/c5/JclRepositoryExpertC50.rc 2007-09-13 09:58:58 UTC (rev 2161)
+++ trunk/jcl/packages/c5/JclRepositoryExpertC50.rc 2007-09-13 10:17:44 UTC (rev 2162)
@@ -1,6 +1,6 @@
VS_VERSION_INFO VERSIONINFO
-FILEVERSION 1,101,0,2647
-PRODUCTVERSION 1,101,0,2647
+FILEVERSION 1,102,0,2726
+PRODUCTVERSION 1,102,0,2726
FILEFLAGSMASK VS_FFI_FILEFLAGSMASK
#ifdef _DEBUG
FILEFLAGS VS_FF_DEBUG
@@ -17,12 +17,12 @@
BEGIN
VALUE "CompanyName", "Project JEDI\0"
VALUE "FileDescription", "JCL Package containing repository wizards\0"
- VALUE "FileVersion", "1.101.0.2647\0"
+ VALUE "FileVersion", "1.102.0.2726\0"
VALUE "InternalName", "JclRepositoryExpertC50\0"
VALUE "LegalCopyright", "Copyright (C) 1999, 2007 Project JEDI\0"
VALUE "OriginalFilename", "JclRepositoryExpertC50C50.bpl\0"
VALUE "ProductName", "JEDI Code Library\0"
- VALUE "ProductVersion", "1.101 Build 2647\0"
+ VALUE "ProductVersion", "1.102 Build 2726\0"
END
END
BLOCK "VarFileInfo"
Modified: trunk/jcl/packages/c5/JclRepositoryExpertC50.res
===================================================================
(Binary files differ)
Modified: trunk/jcl/packages/c5/JclRepositoryExpertDLLC50.rc
===================================================================
--- trunk/jcl/packages/c5/JclRepositoryExpertDLLC50.rc 2007-09-13 09:58:58 UTC (rev 2161)
+++ trunk/jcl/packages/c5/JclRepositoryExpertDLLC50.rc 2007-09-13 10:17:44 UTC (rev 2162)
@@ -1,6 +1,6 @@
VS_VERSION_INFO VERSIONINFO
-FILEVERSION 1,101,0,2647
-PRODUCTVERSION 1,101,0,2647
+FILEVERSION 1,102,0,2726
+PRODUCTVERSION 1,102,0,2726
FILEFLAGSMASK VS_FFI_FILEFLAGSMASK
#ifdef _DEBUG
FILEFLAGS VS_FF_DEBUG
@@ -17,12 +17,12 @@
BEGIN
VALUE "CompanyName", "Project JEDI\0"
VALUE "FileDescription", "JCL Package containing repository wizards\0"
- VALUE "FileVersion", "1.101.0.2647\0"
+ VALUE "FileVersion", "1.102.0.2726\0"
VALUE "InternalName", "JclRepositoryExpertDLLC50\0"
VALUE "LegalCopyright", "Copyright (C) 1999, 2007 Project JEDI\0"
VALUE "OriginalFilename", "JclRepositoryExpertDLLC50C50.dll\0"
VALUE "ProductName", "JEDI Code Library\0"
- VALUE "ProductVersion", "1.101 Build 2647\0"
+ VALUE "ProductVersion", "1.102 Build 2726\0"
END
END
BLOCK "VarFileInfo"
Modified: trunk/jcl/packages/c5/JclRepositoryExpertDLLC50.res
===================================================================
(Binary files differ)
Modified: trunk/jcl/packages/c5/JclSIMDViewExpertC50.rc
===================================================================
--- trunk/jcl/packages/c5/JclSIMDViewExpertC50.rc 2007-09-13 09:58:58 UTC (rev 2161)
+++ trunk/jcl/packages/c5/JclSIMDViewExpertC50.rc 2007-09-13 10:17:44 UTC (rev 2162)
@@ -1,6 +1,6 @@
VS_VERSION_INFO VERSIONINFO
-FILEVERSION 1,101,0,2647
-PRODUCTVERSION 1,101,0,2647
+FILEVERSION 1,102,0,2726
+PRODUCTVERSION 1,102,0,2726
FILEFLAGSMASK VS_FFI_FILEFLAGSMASK
#ifdef _DEBUG
FILEFLAGS VS_FF_DEBUG
@@ -17,12 +17,12 @@
BEGIN
VALUE "CompanyName", "Project JEDI\0"
VALUE "FileDescription", "JCL Debug Window of XMM registers\0"
- VALUE "FileVersion", "1.101.0.2647\0"
+ VALUE "FileVersion", "1.102.0.2726\0"
VALUE "InternalName", "JclSIMDViewExpertC50\0"
VALUE "LegalCopyright", "Copyright (C) 1999, 2007 Project JEDI\0"
VALUE "OriginalFilename", "JclSIMDViewExpertC50C50.bpl\0"
VALUE "ProductName", "JEDI Code Library\0"
- VALUE "ProductVersion", "1.101 Build 2647\0"
+ VALUE "ProductVersion", "1.102 Build 2726\0"
END
END
BLOCK "VarFileInfo"
Modified: trunk/jcl/packages/c5/JclSIMDViewExpertC50.res
===================================================================
(Binary files differ)
Modified: trunk/jcl/packages/c5/JclSIMDViewExpertDLLC50.rc
===================================================================
--- trunk/jcl/packages/c5/JclSIMDViewExpertDLLC50.rc 2007-09-13 09:58:58 UTC (rev 2161)
+++ trunk/jcl/packages/c5/JclSIMDViewExpertDLLC50.rc 2007-09-13 10:17:44 UTC (rev 2162)
@@ -1,6 +1,6 @@
VS_VERSION_INFO VERSIONINFO
-FILEVERSION 1,101,0,2647
-PRODUCTVERSION 1,101,0,2647
+FILEVERSION 1,102,0,2726
+PRODUCTVERSION 1,102,0,2726
FILEFLAGSMASK VS_FFI_FILEFLAGSMASK
#ifdef _DEBUG
FILEFLAGS VS_FF_DEBUG
@@ -17,12 +17,12 @@
BEGIN
VALUE "CompanyName", "Project JEDI\0"
VALUE "FileDescription", "JCL Debug Window of XMM registers\0"
- VALUE "FileVersion", "1.101.0.2647\0"
+ VALUE "FileVersion", "1.102.0.2726\0"
VALUE "InternalName", "JclSIMDViewExpertDLLC50\0"
VALUE "LegalCopyright", "Copyright (C) 1999, 2007 Project JEDI\0"
VALUE "OriginalFilename", "JclSIMDViewExpertDLLC50C50.dll\0"
VALUE "ProductName", "JEDI Code Library\0"
- VALUE "ProductVersion", "1.101 Build 2647\0"
+ VALUE "ProductVersion", "1.102 Build 2726\0"
END
END
BLOCK "VarFileInfo"
Modified: trunk/jcl/packages/c5/JclSIMDViewExpertDLLC50.res
===================================================================
(Binary files differ)
Modified: trunk/jcl/packages/c5/JclThreadNameExpertC50.RES
===================================================================
(Binary files differ)
Modified: trunk/jcl/packages/c5/JclThreadNameExpertC50.rc
===================================================================
--- trunk/jcl/packages/c5/JclThreadNameExpertC50.rc 2007-09-13 09:58:58 UTC (rev 2161)
+++ trunk/jcl/packages/c5/JclThreadNameExpertC50.rc 2007-09-13 10:17:44 UTC (rev 2162)
@@ -1,6 +1,6 @@
VS_VERSION_INFO VERSIONINFO
-FILEVERSION 1,101,0,2647
-PRODUCTVERSION 1,101,0,2647
+FILEVERSION 1,102,0,2726
+PRODUCTVERSION 1,102,0,2726
FILEFLAGSMASK VS_FFI_FILEFLAGSMASK
#ifdef _DEBUG
FILEFLAGS VS_FF_DEBUG
@@ -17,12 +17,12 @@
BEGIN
VALUE "CompanyName", "Project JEDI\0"
VALUE "FileDescription", "JCL Thread Name IDE expert\0"
- VALUE "FileVersion", "1.101.0.2647\0"
+ VALUE "FileVersion", "1.102.0.2726\0"
VALUE "InternalName", "JclThreadNameExpertC50\0"
VALUE "LegalCopyright", "Copyright (C) 1999, 2007 Project JEDI\0"
VALUE "OriginalFilename", "JclThreadNameExpertC50C50.bpl\0"
VALUE "ProductName", "JEDI Code Library\0"
- VALUE "ProductVersion", "1.101 Build 2647\0"
+ VALUE "ProductVersion", "1.102 Build 2726\0"
END
END
BLOCK "VarFileInfo"
Modified: trunk/jcl/packages/c5/JclThreadNameExpertDLLC50.rc
===================================================================
--- trunk/jcl/packages/c5/JclThreadNameExpertDLLC50.rc 2007-09-13 09:58:58 UTC (rev 2161)
+++ trunk/jcl/packages/c5/JclThreadNameExpertDLLC50.rc 2007-09-13 10:17:44 UTC (rev 2162)
@@ -1,6 +1,6 @@
VS_VERSION_INFO VERSIONINFO
-FILEVERSION 1,101,0,2647
-PRODUCTVERSION 1,101,0,2647
+FILEVERSION 1,102,0,2726
+PRODUCTVERSION 1,102,0,2726
FILEFLAGSMASK VS_FFI_FILEFLAGSMASK
#ifdef _DEBUG
FILEFLAGS VS_FF_DEBUG
@@ -17,12 +17,12 @@
BEGIN
VALUE "CompanyName", "Project JEDI\0"
VALUE "FileDescription", "JCL Thread Name IDE expert\0"
- VALUE "FileVersion", "1.101.0.2647\0"
+ VALUE "FileVersion", "1.102.0.2726\0"
VALUE "InternalName", "JclThreadNameExpertDLLC50\0"
VALUE "LegalCopyright", "Copyright (C) 1999, 2007 Project JEDI\0"
VALUE "OriginalFilename", "JclThreadNameExpertDLLC50C50.dll\0"
VALUE "ProductName", "JEDI Code Library\0"
- VALUE "ProductVersion", "1.101 Build 2647...
[truncated message content] |
|
From: <ou...@us...> - 2007-09-13 09:59:01
|
Revision: 2161
http://jcl.svn.sourceforge.net/jcl/?rev=2161&view=rev
Author: outchy
Date: 2007-09-13 02:58:58 -0700 (Thu, 13 Sep 2007)
Log Message:
-----------
support for RAD Studio 2007
Modified Paths:
--------------
branches/JCL_1.101/jcl/devtools/included_files.bat
branches/JCL_1.101/jcl/devtools/included_files.sh
branches/JCL_1.101/jcl/devtools/pgEdit.xml
branches/JCL_1.101/jcl/docs/Experts.html
branches/JCL_1.101/jcl/docs/Readme.html
branches/JCL_1.101/jcl/docs/Readme.txt
branches/JCL_1.101/jcl/packages/c5/JclBaseExpertC50.rc
branches/JCL_1.101/jcl/packages/c5/JclBaseExpertC50.res
branches/JCL_1.101/jcl/packages/c5/JclC50.rc
branches/JCL_1.101/jcl/packages/c5/JclC50.res
branches/JCL_1.101/jcl/packages/c5/JclDebugExpertC50.RES
branches/JCL_1.101/jcl/packages/c5/JclDebugExpertC50.rc
branches/JCL_1.101/jcl/packages/c5/JclDebugExpertDLLC50.rc
branches/JCL_1.101/jcl/packages/c5/JclDebugExpertDLLC50.res
branches/JCL_1.101/jcl/packages/c5/JclFavoriteFoldersExpertC50.rc
branches/JCL_1.101/jcl/packages/c5/JclFavoriteFoldersExpertC50.res
branches/JCL_1.101/jcl/packages/c5/JclFavoriteFoldersExpertDLLC50.rc
branches/JCL_1.101/jcl/packages/c5/JclFavoriteFoldersExpertDLLC50.res
branches/JCL_1.101/jcl/packages/c5/JclProjectAnalysisExpertC50.RES
branches/JCL_1.101/jcl/packages/c5/JclProjectAnalysisExpertC50.rc
branches/JCL_1.101/jcl/packages/c5/JclProjectAnalysisExpertDLLC50.rc
branches/JCL_1.101/jcl/packages/c5/JclProjectAnalysisExpertDLLC50.res
branches/JCL_1.101/jcl/packages/c5/JclRepositoryExpertC50.rc
branches/JCL_1.101/jcl/packages/c5/JclRepositoryExpertC50.res
branches/JCL_1.101/jcl/packages/c5/JclRepositoryExpertDLLC50.rc
branches/JCL_1.101/jcl/packages/c5/JclRepositoryExpertDLLC50.res
branches/JCL_1.101/jcl/packages/c5/JclSIMDViewExpertC50.rc
branches/JCL_1.101/jcl/packages/c5/JclSIMDViewExpertC50.res
branches/JCL_1.101/jcl/packages/c5/JclSIMDViewExpertDLLC50.rc
branches/JCL_1.101/jcl/packages/c5/JclSIMDViewExpertDLLC50.res
branches/JCL_1.101/jcl/packages/c5/JclThreadNameExpertC50.RES
branches/JCL_1.101/jcl/packages/c5/JclThreadNameExpertC50.rc
branches/JCL_1.101/jcl/packages/c5/JclThreadNameExpertDLLC50.rc
branches/JCL_1.101/jcl/packages/c5/JclThreadNameExpertDLLC50.res
branches/JCL_1.101/jcl/packages/c5/JclUsesExpertC50.RES
branches/JCL_1.101/jcl/packages/c5/JclUsesExpertC50.rc
branches/JCL_1.101/jcl/packages/c5/JclUsesExpertDLLC50.rc
branches/JCL_1.101/jcl/packages/c5/JclUsesExpertDLLC50.res
branches/JCL_1.101/jcl/packages/c5/JclVersionControlExpertC50.rc
branches/JCL_1.101/jcl/packages/c5/JclVersionControlExpertC50.res
branches/JCL_1.101/jcl/packages/c5/JclVersionControlExpertDLLC50.rc
branches/JCL_1.101/jcl/packages/c5/JclVersionControlExpertDLLC50.res
branches/JCL_1.101/jcl/packages/c6/Jcl.RES
branches/JCL_1.101/jcl/packages/c6/Jcl.rc
branches/JCL_1.101/jcl/packages/c6/JclBaseExpert.rc
branches/JCL_1.101/jcl/packages/c6/JclBaseExpert.res
branches/JCL_1.101/jcl/packages/c6/JclDebugExpert.RES
branches/JCL_1.101/jcl/packages/c6/JclDebugExpert.rc
branches/JCL_1.101/jcl/packages/c6/JclDebugExpertDLL.rc
branches/JCL_1.101/jcl/packages/c6/JclDebugExpertDLL.res
branches/JCL_1.101/jcl/packages/c6/JclFavoriteFoldersExpert.RES
branches/JCL_1.101/jcl/packages/c6/JclFavoriteFoldersExpert.rc
branches/JCL_1.101/jcl/packages/c6/JclFavoriteFoldersExpertDLL.rc
branches/JCL_1.101/jcl/packages/c6/JclFavoriteFoldersExpertDLL.res
branches/JCL_1.101/jcl/packages/c6/JclProjectAnalysisExpert.RES
branches/JCL_1.101/jcl/packages/c6/JclProjectAnalysisExpert.rc
branches/JCL_1.101/jcl/packages/c6/JclProjectAnalysisExpertDLL.rc
branches/JCL_1.101/jcl/packages/c6/JclProjectAnalysisExpertDLL.res
branches/JCL_1.101/jcl/packages/c6/JclRepositoryExpert.rc
branches/JCL_1.101/jcl/packages/c6/JclRepositoryExpert.res
branches/JCL_1.101/jcl/packages/c6/JclRepositoryExpertDLL.rc
branches/JCL_1.101/jcl/packages/c6/JclRepositoryExpertDLL.res
branches/JCL_1.101/jcl/packages/c6/JclSIMDViewExpert.rc
branches/JCL_1.101/jcl/packages/c6/JclSIMDViewExpert.res
branches/JCL_1.101/jcl/packages/c6/JclSIMDViewExpertDLL.rc
branches/JCL_1.101/jcl/packages/c6/JclSIMDViewExpertDLL.res
branches/JCL_1.101/jcl/packages/c6/JclThreadNameExpert.RES
branches/JCL_1.101/jcl/packages/c6/JclThreadNameExpert.rc
branches/JCL_1.101/jcl/packages/c6/JclThreadNameExpertDLL.rc
branches/JCL_1.101/jcl/packages/c6/JclThreadNameExpertDLL.res
branches/JCL_1.101/jcl/packages/c6/JclUsesExpert.RES
branches/JCL_1.101/jcl/packages/c6/JclUsesExpert.rc
branches/JCL_1.101/jcl/packages/c6/JclUsesExpertDLL.rc
branches/JCL_1.101/jcl/packages/c6/JclUsesExpertDLL.res
branches/JCL_1.101/jcl/packages/c6/JclVClx.RES
branches/JCL_1.101/jcl/packages/c6/JclVClx.rc
branches/JCL_1.101/jcl/packages/c6/JclVcl.RES
branches/JCL_1.101/jcl/packages/c6/JclVcl.rc
branches/JCL_1.101/jcl/packages/c6/JclVersionControlExpert.rc
branches/JCL_1.101/jcl/packages/c6/JclVersionControlExpert.res
branches/JCL_1.101/jcl/packages/c6/JclVersionControlExpertDLL.rc
branches/JCL_1.101/jcl/packages/c6/JclVersionControlExpertDLL.res
branches/JCL_1.101/jcl/packages/cs1/Jcl.RES
branches/JCL_1.101/jcl/packages/cs1/Jcl.bdsproj
branches/JCL_1.101/jcl/packages/cs1/Jcl.rc
branches/JCL_1.101/jcl/packages/cs1/JclBaseExpert.RES
branches/JCL_1.101/jcl/packages/cs1/JclBaseExpert.bdsproj
branches/JCL_1.101/jcl/packages/cs1/JclBaseExpert.rc
branches/JCL_1.101/jcl/packages/cs1/JclFavoriteFoldersExpertDLL.RES
branches/JCL_1.101/jcl/packages/cs1/JclFavoriteFoldersExpertDLL.bdsproj
branches/JCL_1.101/jcl/packages/cs1/JclFavoriteFoldersExpertDLL.rc
branches/JCL_1.101/jcl/packages/cs1/JclVersionControlExpertDLL.bdsproj
branches/JCL_1.101/jcl/packages/cs1/JclVersionControlExpertDLL.rc
branches/JCL_1.101/jcl/packages/cs1/JclVersionControlExpertDLL.res
branches/JCL_1.101/jcl/packages/d10/Jcl.bdsproj
branches/JCL_1.101/jcl/packages/d10/Jcl.rc
branches/JCL_1.101/jcl/packages/d10/Jcl.res
branches/JCL_1.101/jcl/packages/d10/JclBaseExpert.bdsproj
branches/JCL_1.101/jcl/packages/d10/JclBaseExpert.rc
branches/JCL_1.101/jcl/packages/d10/JclBaseExpert.res
branches/JCL_1.101/jcl/packages/d10/JclDebugExpert.bdsproj
branches/JCL_1.101/jcl/packages/d10/JclDebugExpert.rc
branches/JCL_1.101/jcl/packages/d10/JclDebugExpert.res
branches/JCL_1.101/jcl/packages/d10/JclDebugExpertDLL.bdsproj
branches/JCL_1.101/jcl/packages/d10/JclDebugExpertDLL.rc
branches/JCL_1.101/jcl/packages/d10/JclDebugExpertDLL.res
branches/JCL_1.101/jcl/packages/d10/JclFavoriteFoldersExpert.bdsproj
branches/JCL_1.101/jcl/packages/d10/JclFavoriteFoldersExpert.rc
branches/JCL_1.101/jcl/packages/d10/JclFavoriteFoldersExpert.res
branches/JCL_1.101/jcl/packages/d10/JclFavoriteFoldersExpertDLL.bdsproj
branches/JCL_1.101/jcl/packages/d10/JclFavoriteFoldersExpertDLL.rc
branches/JCL_1.101/jcl/packages/d10/JclFavoriteFoldersExpertDLL.res
branches/JCL_1.101/jcl/packages/d10/JclProjectAnalysisExpert.RES
branches/JCL_1.101/jcl/packages/d10/JclProjectAnalysisExpert.bdsproj
branches/JCL_1.101/jcl/packages/d10/JclProjectAnalysisExpert.rc
branches/JCL_1.101/jcl/packages/d10/JclProjectAnalysisExpertDLL.bdsproj
branches/JCL_1.101/jcl/packages/d10/JclProjectAnalysisExpertDLL.rc
branches/JCL_1.101/jcl/packages/d10/JclProjectAnalysisExpertDLL.res
branches/JCL_1.101/jcl/packages/d10/JclRepositoryExpert.bdsproj
branches/JCL_1.101/jcl/packages/d10/JclRepositoryExpert.rc
branches/JCL_1.101/jcl/packages/d10/JclRepositoryExpert.res
branches/JCL_1.101/jcl/packages/d10/JclRepositoryExpertDLL.bdsproj
branches/JCL_1.101/jcl/packages/d10/JclRepositoryExpertDLL.rc
branches/JCL_1.101/jcl/packages/d10/JclRepositoryExpertDLL.res
branches/JCL_1.101/jcl/packages/d10/JclSIMDViewExpert.bdsproj
branches/JCL_1.101/jcl/packages/d10/JclSIMDViewExpert.rc
branches/JCL_1.101/jcl/packages/d10/JclSIMDViewExpert.res
branches/JCL_1.101/jcl/packages/d10/JclSIMDViewExpertDLL.bdsproj
branches/JCL_1.101/jcl/packages/d10/JclSIMDViewExpertDLL.rc
branches/JCL_1.101/jcl/packages/d10/JclSIMDViewExpertDLL.res
branches/JCL_1.101/jcl/packages/d10/JclThreadNameExpert.bdsproj
branches/JCL_1.101/jcl/packages/d10/JclThreadNameExpert.rc
branches/JCL_1.101/jcl/packages/d10/JclThreadNameExpert.res
branches/JCL_1.101/jcl/packages/d10/JclThreadNameExpertDLL.bdsproj
branches/JCL_1.101/jcl/packages/d10/JclThreadNameExpertDLL.rc
branches/JCL_1.101/jcl/packages/d10/JclThreadNameExpertDLL.res
branches/JCL_1.101/jcl/packages/d10/JclVcl.bdsproj
branches/JCL_1.101/jcl/packages/d10/JclVcl.rc
branches/JCL_1.101/jcl/packages/d10/JclVcl.res
branches/JCL_1.101/jcl/packages/d10/JclVersionControlExpert.bdsproj
branches/JCL_1.101/jcl/packages/d10/JclVersionControlExpert.rc
branches/JCL_1.101/jcl/packages/d10/JclVersionControlExpert.res
branches/JCL_1.101/jcl/packages/d10/JclVersionControlExpertDLL.bdsproj
branches/JCL_1.101/jcl/packages/d10/JclVersionControlExpertDLL.rc
branches/JCL_1.101/jcl/packages/d10/JclVersionControlExpertDLL.res
branches/JCL_1.101/jcl/packages/d10.net/Jedi.Jcl.bdsproj
branches/JCL_1.101/jcl/packages/d10.net/Jedi.Jcl.dpr
branches/JCL_1.101/jcl/packages/d11/Jcl.dproj
branches/JCL_1.101/jcl/packages/d11/Jcl.rc
branches/JCL_1.101/jcl/packages/d11/Jcl.res
branches/JCL_1.101/jcl/packages/d11/JclBaseExpert.dproj
branches/JCL_1.101/jcl/packages/d11/JclBaseExpert.rc
branches/JCL_1.101/jcl/packages/d11/JclBaseExpert.res
branches/JCL_1.101/jcl/packages/d11/JclDebugExpert.dproj
branches/JCL_1.101/jcl/packages/d11/JclDebugExpert.rc
branches/JCL_1.101/jcl/packages/d11/JclDebugExpert.res
branches/JCL_1.101/jcl/packages/d11/JclDebugExpertDLL.dproj
branches/JCL_1.101/jcl/packages/d11/JclDebugExpertDLL.rc
branches/JCL_1.101/jcl/packages/d11/JclDebugExpertDLL.res
branches/JCL_1.101/jcl/packages/d11/JclFavoriteFoldersExpert.dproj
branches/JCL_1.101/jcl/packages/d11/JclFavoriteFoldersExpert.rc
branches/JCL_1.101/jcl/packages/d11/JclFavoriteFoldersExpert.res
branches/JCL_1.101/jcl/packages/d11/JclFavoriteFoldersExpertDLL.dproj
branches/JCL_1.101/jcl/packages/d11/JclFavoriteFoldersExpertDLL.rc
branches/JCL_1.101/jcl/packages/d11/JclFavoriteFoldersExpertDLL.res
branches/JCL_1.101/jcl/packages/d11/JclProjectAnalysisExpert.dproj
branches/JCL_1.101/jcl/packages/d11/JclProjectAnalysisExpert.rc
branches/JCL_1.101/jcl/packages/d11/JclProjectAnalysisExpert.res
branches/JCL_1.101/jcl/packages/d11/JclProjectAnalysisExpertDLL.dproj
branches/JCL_1.101/jcl/packages/d11/JclProjectAnalysisExpertDLL.rc
branches/JCL_1.101/jcl/packages/d11/JclProjectAnalysisExpertDLL.res
branches/JCL_1.101/jcl/packages/d11/JclRepositoryExpert.dproj
branches/JCL_1.101/jcl/packages/d11/JclRepositoryExpert.rc
branches/JCL_1.101/jcl/packages/d11/JclRepositoryExpert.res
branches/JCL_1.101/jcl/packages/d11/JclRepositoryExpertDLL.dproj
branches/JCL_1.101/jcl/packages/d11/JclRepositoryExpertDLL.rc
branches/JCL_1.101/jcl/packages/d11/JclRepositoryExpertDLL.res
branches/JCL_1.101/jcl/packages/d11/JclSIMDViewExpert.dproj
branches/JCL_1.101/jcl/packages/d11/JclSIMDViewExpert.rc
branches/JCL_1.101/jcl/packages/d11/JclSIMDViewExpert.res
branches/JCL_1.101/jcl/packages/d11/JclSIMDViewExpertDLL.dproj
branches/JCL_1.101/jcl/packages/d11/JclSIMDViewExpertDLL.rc
branches/JCL_1.101/jcl/packages/d11/JclSIMDViewExpertDLL.res
branches/JCL_1.101/jcl/packages/d11/JclThreadNameExpert.dproj
branches/JCL_1.101/jcl/packages/d11/JclThreadNameExpert.rc
branches/JCL_1.101/jcl/packages/d11/JclThreadNameExpert.res
branches/JCL_1.101/jcl/packages/d11/JclThreadNameExpertDLL.dproj
branches/JCL_1.101/jcl/packages/d11/JclThreadNameExpertDLL.rc
branches/JCL_1.101/jcl/packages/d11/JclThreadNameExpertDLL.res
branches/JCL_1.101/jcl/packages/d11/JclVcl.dproj
branches/JCL_1.101/jcl/packages/d11/JclVcl.rc
branches/JCL_1.101/jcl/packages/d11/JclVcl.res
branches/JCL_1.101/jcl/packages/d11/JclVersionControlExpert.dproj
branches/JCL_1.101/jcl/packages/d11/JclVersionControlExpert.rc
branches/JCL_1.101/jcl/packages/d11/JclVersionControlExpert.res
branches/JCL_1.101/jcl/packages/d11/JclVersionControlExpertDLL.dproj
branches/JCL_1.101/jcl/packages/d11/JclVersionControlExpertDLL.rc
branches/JCL_1.101/jcl/packages/d11/JclVersionControlExpertDLL.res
branches/JCL_1.101/jcl/packages/d5/JclBaseExpertD50.rc
branches/JCL_1.101/jcl/packages/d5/JclBaseExpertD50.res
branches/JCL_1.101/jcl/packages/d5/JclD50.RES
branches/JCL_1.101/jcl/packages/d5/JclD50.rc
branches/JCL_1.101/jcl/packages/d5/JclDebugExpertD50.RES
branches/JCL_1.101/jcl/packages/d5/JclDebugExpertD50.rc
branches/JCL_1.101/jcl/packages/d5/JclDebugExpertDLLD50.RES
branches/JCL_1.101/jcl/packages/d5/JclDebugExpertDLLD50.rc
branches/JCL_1.101/jcl/packages/d5/JclFavoriteFoldersExpertD50.RES
branches/JCL_1.101/jcl/packages/d5/JclFavoriteFoldersExpertD50.rc
branches/JCL_1.101/jcl/packages/d5/JclFavoriteFoldersExpertDLLD50.RES
branches/JCL_1.101/jcl/packages/d5/JclFavoriteFoldersExpertDLLD50.rc
branches/JCL_1.101/jcl/packages/d5/JclProjectAnalysisExpertD50.RES
branches/JCL_1.101/jcl/packages/d5/JclProjectAnalysisExpertD50.rc
branches/JCL_1.101/jcl/packages/d5/JclProjectAnalysisExpertDLLD50.RES
branches/JCL_1.101/jcl/packages/d5/JclProjectAnalysisExpertDLLD50.rc
branches/JCL_1.101/jcl/packages/d5/JclRepositoryExpertD50.rc
branches/JCL_1.101/jcl/packages/d5/JclRepositoryExpertD50.res
branches/JCL_1.101/jcl/packages/d5/JclRepositoryExpertDLLD50.rc
branches/JCL_1.101/jcl/packages/d5/JclRepositoryExpertDLLD50.res
branches/JCL_1.101/jcl/packages/d5/JclSIMDViewExpertD50.RES
branches/JCL_1.101/jcl/packages/d5/JclSIMDViewExpertD50.rc
branches/JCL_1.101/jcl/packages/d5/JclSIMDViewExpertDLLD50.RES
branches/JCL_1.101/jcl/packages/d5/JclSIMDViewExpertDLLD50.rc
branches/JCL_1.101/jcl/packages/d5/JclThreadNameExpertD50.RES
branches/JCL_1.101/jcl/packages/d5/JclThreadNameExpertD50.rc
branches/JCL_1.101/jcl/packages/d5/JclThreadNameExpertDLLD50.RES
branches/JCL_1.101/jcl/packages/d5/JclThreadNameExpertDLLD50.rc
branches/JCL_1.101/jcl/packages/d5/JclUsesExpertD50.RES
branches/JCL_1.101/jcl/packages/d5/JclUsesExpertD50.rc
branches/JCL_1.101/jcl/packages/d5/JclUsesExpertDLLD50.RES
branches/JCL_1.101/jcl/packages/d5/JclUsesExpertDLLD50.rc
branches/JCL_1.101/jcl/packages/d5/JclVersionControlExpertD50.rc
branches/JCL_1.101/jcl/packages/d5/JclVersionControlExpertD50.res
branches/JCL_1.101/jcl/packages/d5/JclVersionControlExpertDLLD50.rc
branches/JCL_1.101/jcl/packages/d5/JclVersionControlExpertDLLD50.res
branches/JCL_1.101/jcl/packages/d6/Jcl.rc
branches/JCL_1.101/jcl/packages/d6/Jcl.res
branches/JCL_1.101/jcl/packages/d6/JclBaseExpert.rc
branches/JCL_1.101/jcl/packages/d6/JclBaseExpert.res
branches/JCL_1.101/jcl/packages/d6/JclDebugExpert.rc
branches/JCL_1.101/jcl/packages/d6/JclDebugExpert.res
branches/JCL_1.101/jcl/packages/d6/JclDebugExpertDLL.RES
branches/JCL_1.101/jcl/packages/d6/JclDebugExpertDLL.rc
branches/JCL_1.101/jcl/packages/d6/JclFavoriteFoldersExpert.rc
branches/JCL_1.101/jcl/packages/d6/JclFavoriteFoldersExpert.res
branches/JCL_1.101/jcl/packages/d6/JclFavoriteFoldersExpertDLL.RES
branches/JCL_1.101/jcl/packages/d6/JclFavoriteFoldersExpertDLL.rc
branches/JCL_1.101/jcl/packages/d6/JclProjectAnalysisExpert.RES
branches/JCL_1.101/jcl/packages/d6/JclProjectAnalysisExpert.rc
branches/JCL_1.101/jcl/packages/d6/JclProjectAnalysisExpertDLL.RES
branches/JCL_1.101/jcl/packages/d6/JclProjectAnalysisExpertDLL.rc
branches/JCL_1.101/jcl/packages/d6/JclRepositoryExpert.rc
branches/JCL_1.101/jcl/packages/d6/JclRepositoryExpert.res
branches/JCL_1.101/jcl/packages/d6/JclRepositoryExpertDLL.rc
branches/JCL_1.101/jcl/packages/d6/JclRepositoryExpertDLL.res
branches/JCL_1.101/jcl/packages/d6/JclSIMDViewExpert.rc
branches/JCL_1.101/jcl/packages/d6/JclSIMDViewExpert.res
branches/JCL_1.101/jcl/packages/d6/JclSIMDViewExpertDLL.RES
branches/JCL_1.101/jcl/packages/d6/JclSIMDViewExpertDLL.rc
branches/JCL_1.101/jcl/packages/d6/JclThreadNameExpert.rc
branches/JCL_1.101/jcl/packages/d6/JclThreadNameExpert.res
branches/JCL_1.101/jcl/packages/d6/JclThreadNameExpertDLL.RES
branches/JCL_1.101/jcl/packages/d6/JclThreadNameExpertDLL.rc
branches/JCL_1.101/jcl/packages/d6/JclUsesExpert.rc
branches/JCL_1.101/jcl/packages/d6/JclUsesExpert.res
branches/JCL_1.101/jcl/packages/d6/JclUsesExpertDLL.RES
branches/JCL_1.101/jcl/packages/d6/JclUsesExpertDLL.rc
branches/JCL_1.101/jcl/packages/d6/JclVClx.rc
branches/JCL_1.101/jcl/packages/d6/JclVClx.res
branches/JCL_1.101/jcl/packages/d6/JclVcl.rc
branches/JCL_1.101/jcl/packages/d6/JclVcl.res
branches/JCL_1.101/jcl/packages/d6/JclVersionControlExpert.rc
branches/JCL_1.101/jcl/packages/d6/JclVersionControlExpert.res
branches/JCL_1.101/jcl/packages/d6/JclVersionControlExpertDLL.rc
branches/JCL_1.101/jcl/packages/d6/JclVersionControlExpertDLL.res
branches/JCL_1.101/jcl/packages/d7/Jcl.rc
branches/JCL_1.101/jcl/packages/d7/Jcl.res
branches/JCL_1.101/jcl/packages/d7/JclBaseExpert.rc
branches/JCL_1.101/jcl/packages/d7/JclBaseExpert.res
branches/JCL_1.101/jcl/packages/d7/JclDebugExpert.rc
branches/JCL_1.101/jcl/packages/d7/JclDebugExpert.res
branches/JCL_1.101/jcl/packages/d7/JclDebugExpertDLL.RES
branches/JCL_1.101/jcl/packages/d7/JclDebugExpertDLL.rc
branches/JCL_1.101/jcl/packages/d7/JclFavoriteFoldersExpert.rc
branches/JCL_1.101/jcl/packages/d7/JclFavoriteFoldersExpert.res
branches/JCL_1.101/jcl/packages/d7/JclFavoriteFoldersExpertDLL.RES
branches/JCL_1.101/jcl/packages/d7/JclFavoriteFoldersExpertDLL.rc
branches/JCL_1.101/jcl/packages/d7/JclProjectAnalysisExpert.RES
branches/JCL_1.101/jcl/packages/d7/JclProjectAnalysisExpert.rc
branches/JCL_1.101/jcl/packages/d7/JclProjectAnalysisExpertDLL.RES
branches/JCL_1.101/jcl/packages/d7/JclProjectAnalysisExpertDLL.rc
branches/JCL_1.101/jcl/packages/d7/JclRepositoryExpert.rc
branches/JCL_1.101/jcl/packages/d7/JclRepositoryExpert.res
branches/JCL_1.101/jcl/packages/d7/JclRepositoryExpertDLL.rc
branches/JCL_1.101/jcl/packages/d7/JclRepositoryExpertDLL.res
branches/JCL_1.101/jcl/packages/d7/JclSIMDViewExpert.rc
branches/JCL_1.101/jcl/packages/d7/JclSIMDViewExpert.res
branches/JCL_1.101/jcl/packages/d7/JclSIMDViewExpertDLL.RES
branches/JCL_1.101/jcl/packages/d7/JclSIMDViewExpertDLL.rc
branches/JCL_1.101/jcl/packages/d7/JclThreadNameExpert.rc
branches/JCL_1.101/jcl/packages/d7/JclThreadNameExpert.res
branches/JCL_1.101/jcl/packages/d7/JclThreadNameExpertDLL.RES
branches/JCL_1.101/jcl/packages/d7/JclThreadNameExpertDLL.rc
branches/JCL_1.101/jcl/packages/d7/JclUsesExpert.rc
branches/JCL_1.101/jcl/packages/d7/JclUsesExpert.res
branches/JCL_1.101/jcl/packages/d7/JclUsesExpertDLL.RES
branches/JCL_1.101/jcl/packages/d7/JclUsesExpertDLL.rc
branches/JCL_1.101/jcl/packages/d7/JclVClx.rc
branches/JCL_1.101/jcl/packages/d7/JclVClx.res
branches/JCL_1.101/jcl/packages/d7/JclVcl.rc
branches/JCL_1.101/jcl/packages/d7/JclVcl.res
branches/JCL_1.101/jcl/packages/d7/JclVersionControlExpert.rc
branches/JCL_1.101/jcl/packages/d7/JclVersionControlExpert.res
branches/JCL_1.101/jcl/packages/d7/JclVersionControlExpertDLL.rc
branches/JCL_1.101/jcl/packages/d7/JclVersionControlExpertDLL.res
branches/JCL_1.101/jcl/packages/d8/Jcl.RES
branches/JCL_1.101/jcl/packages/d8/Jcl.bdsproj
branches/JCL_1.101/jcl/packages/d8/Jcl.rc
branches/JCL_1.101/jcl/packages/d8/JclBaseExpert.RES
branches/JCL_1.101/jcl/packages/d8/JclBaseExpert.bdsproj
branches/JCL_1.101/jcl/packages/d8/JclBaseExpert.rc
branches/JCL_1.101/jcl/packages/d8/JclFavoriteFoldersExpertDLL.RES
branches/JCL_1.101/jcl/packages/d8/JclFavoriteFoldersExpertDLL.bdsproj
branches/JCL_1.101/jcl/packages/d8/JclFavoriteFoldersExpertDLL.rc
branches/JCL_1.101/jcl/packages/d8/JclVersionControlExpertDLL.bdsproj
branches/JCL_1.101/jcl/packages/d8/JclVersionControlExpertDLL.rc
branches/JCL_1.101/jcl/packages/d8/JclVersionControlExpertDLL.res
branches/JCL_1.101/jcl/packages/d9/Jcl.RES
branches/JCL_1.101/jcl/packages/d9/Jcl.bdsproj
branches/JCL_1.101/jcl/packages/d9/Jcl.rc
branches/JCL_1.101/jcl/packages/d9/JclBaseExpert.bdsproj
branches/JCL_1.101/jcl/packages/d9/JclBaseExpert.rc
branches/JCL_1.101/jcl/packages/d9/JclBaseExpert.res
branches/JCL_1.101/jcl/packages/d9/JclDebugExpert.RES
branches/JCL_1.101/jcl/packages/d9/JclDebugExpert.bdsproj
branches/JCL_1.101/jcl/packages/d9/JclDebugExpert.rc
branches/JCL_1.101/jcl/packages/d9/JclDebugExpertDLL.RES
branches/JCL_1.101/jcl/packages/d9/JclDebugExpertDLL.bdsproj
branches/JCL_1.101/jcl/packages/d9/JclDebugExpertDLL.rc
branches/JCL_1.101/jcl/packages/d9/JclFavoriteFoldersExpert.bdsproj
branches/JCL_1.101/jcl/packages/d9/JclFavoriteFoldersExpert.rc
branches/JCL_1.101/jcl/packages/d9/JclFavoriteFoldersExpert.res
branches/JCL_1.101/jcl/packages/d9/JclFavoriteFoldersExpertDLL.RES
branches/JCL_1.101/jcl/packages/d9/JclFavoriteFoldersExpertDLL.bdsproj
branches/JCL_1.101/jcl/packages/d9/JclFavoriteFoldersExpertDLL.rc
branches/JCL_1.101/jcl/packages/d9/JclProjectAnalysisExpert.RES
branches/JCL_1.101/jcl/packages/d9/JclProjectAnalysisExpert.bdsproj
branches/JCL_1.101/jcl/packages/d9/JclProjectAnalysisExpert.rc
branches/JCL_1.101/jcl/packages/d9/JclProjectAnalysisExpertDLL.RES
branches/JCL_1.101/jcl/packages/d9/JclProjectAnalysisExpertDLL.bdsproj
branches/JCL_1.101/jcl/packages/d9/JclProjectAnalysisExpertDLL.rc
branches/JCL_1.101/jcl/packages/d9/JclRepositoryExpert.bdsproj
branches/JCL_1.101/jcl/packages/d9/JclRepositoryExpert.rc
branches/JCL_1.101/jcl/packages/d9/JclRepositoryExpert.res
branches/JCL_1.101/jcl/packages/d9/JclRepositoryExpertDLL.bdsproj
branches/JCL_1.101/jcl/packages/d9/JclRepositoryExpertDLL.rc
branches/JCL_1.101/jcl/packages/d9/JclRepositoryExpertDLL.res
branches/JCL_1.101/jcl/packages/d9/JclSIMDViewExpert.bdsproj
branches/JCL_1.101/jcl/packages/d9/JclSIMDViewExpert.rc
branches/JCL_1.101/jcl/packages/d9/JclSIMDViewExpertDLL.RES
branches/JCL_1.101/jcl/packages/d9/JclSIMDViewExpertDLL.bdsproj
branches/JCL_1.101/jcl/packages/d9/JclSIMDViewExpertDLL.rc
branches/JCL_1.101/jcl/packages/d9/JclSimdViewExpert.RES
branches/JCL_1.101/jcl/packages/d9/JclThreadNameExpert.RES
branches/JCL_1.101/jcl/packages/d9/JclThreadNameExpert.bdsproj
branches/JCL_1.101/jcl/packages/d9/JclThreadNameExpert.rc
branches/JCL_1.101/jcl/packages/d9/JclThreadNameExpertDLL.RES
branches/JCL_1.101/jcl/packages/d9/JclThreadNameExpertDLL.bdsproj
branches/JCL_1.101/jcl/packages/d9/JclThreadNameExpertDLL.rc
branches/JCL_1.101/jcl/packages/d9/JclVcl.RES
branches/JCL_1.101/jcl/packages/d9/JclVcl.bdsproj
branches/JCL_1.101/jcl/packages/d9/JclVcl.rc
branches/JCL_1.101/jcl/packages/d9/JclVersionControlExpert.bdsproj
branches/JCL_1.101/jcl/packages/d9/JclVersionControlExpert.rc
branches/JCL_1.101/jcl/packages/d9/JclVersionControlExpert.res
branches/JCL_1.101/jcl/packages/d9/JclVersionControlExpertDLL.bdsproj
branches/JCL_1.101/jcl/packages/d9/JclVersionControlExpertDLL.rc
branches/JCL_1.101/jcl/packages/d9/JclVersionControlExpertDLL.res
branches/JCL_1.101/jcl/packages/d9.net/Jedi.Jcl.bdsproj
branches/JCL_1.101/jcl/packages/d9.net/Jedi.Jcl.dpr
branches/JCL_1.101/jcl/packages/k3/Jcl.bpk
branches/JCL_1.101/jcl/packages/k3/Jcl.dpk
branches/JCL_1.101/jcl/packages/k3/Jcl.rc
branches/JCL_1.101/jcl/packages/k3/Jcl.res
branches/JCL_1.101/jcl/packages/k3/JclVClx.bpk
branches/JCL_1.101/jcl/packages/k3/JclVClx.dpk
branches/JCL_1.101/jcl/packages/k3/JclVClx.rc
branches/JCL_1.101/jcl/packages/k3/JclVClx.res
branches/JCL_1.101/jcl/source/common/JclAlgorithms.pas
branches/JCL_1.101/jcl/source/common/JclBase.pas
branches/JCL_1.101/jcl/source/common/JclBinaryTrees.pas
branches/JCL_1.101/jcl/source/common/JclBorlandTools.pas
branches/JCL_1.101/jcl/source/jcl.inc
branches/JCL_1.101/jcl/source/jedi.inc
Added Paths:
-----------
branches/JCL_1.101/jcl/lib/d11.net/
branches/JCL_1.101/jcl/lib/d11.net/common.exc
branches/JCL_1.101/jcl/lib/d11.net/debug/
branches/JCL_1.101/jcl/lib/d11.net/debug/dirinfo.txt
branches/JCL_1.101/jcl/lib/d11.net/dirinfo.txt
branches/JCL_1.101/jcl/lib/d11.net/vcl.exc
branches/JCL_1.101/jcl/lib/d11.net/windows.exc
branches/JCL_1.101/jcl/packages/JclNetPackagesD110.groupproj
branches/JCL_1.101/jcl/packages/d11.net/
branches/JCL_1.101/jcl/packages/d11.net/Jedi.Jcl.dpr
branches/JCL_1.101/jcl/packages/d11.net/Jedi.Jcl.dproj
branches/JCL_1.101/jcl/packages/d11.net/template.dpr
branches/JCL_1.101/jcl/packages/d11.net/template.dproj
Modified: branches/JCL_1.101/jcl/devtools/included_files.bat
===================================================================
--- branches/JCL_1.101/jcl/devtools/included_files.bat 2007-09-13 09:28:35 UTC (rev 2160)
+++ branches/JCL_1.101/jcl/devtools/included_files.bat 2007-09-13 09:58:58 UTC (rev 2161)
@@ -13,4 +13,5 @@
copy ..\source\jcl.template.inc ..\source\jcld9.net.inc
copy ..\source\jcl.template.inc ..\source\jcld10.inc
copy ..\source\jcl.template.inc ..\source\jcld10.net.inc
-copy ..\source\jcl.template.inc ..\source\jcld11.inc
\ No newline at end of file
+copy ..\source\jcl.template.inc ..\source\jcld11.inc
+copy ..\source\jcl.template.inc ..\source\jcld11.net.inc
\ No newline at end of file
Modified: branches/JCL_1.101/jcl/devtools/included_files.sh
===================================================================
--- branches/JCL_1.101/jcl/devtools/included_files.sh 2007-09-13 09:28:35 UTC (rev 2160)
+++ branches/JCL_1.101/jcl/devtools/included_files.sh 2007-09-13 09:58:58 UTC (rev 2161)
@@ -15,4 +15,5 @@
cp ../source/jcl.template.inc ../source/jcld9.net.inc
cp ../source/jcl.template.inc ../source/jcld10.inc
cp ../source/jcl.template.inc ../source/jcld10.net.inc
-cp ../source/jcl.template.inc ../source/jcld11.inc
\ No newline at end of file
+cp ../source/jcl.template.inc ../source/jcld11.inc
+cp ../source/jcl.template.inc ../source/jcld11.net.inc
\ No newline at end of file
Modified: branches/JCL_1.101/jcl/devtools/pgEdit.xml
===================================================================
--- branches/JCL_1.101/jcl/devtools/pgEdit.xml 2007-09-13 09:28:35 UTC (rev 2160)
+++ branches/JCL_1.101/jcl/devtools/pgEdit.xml 2007-09-13 09:58:58 UTC (rev 2161)
@@ -116,6 +116,7 @@
<target name="d9.net" IsDotNet="1"/>
<target name="d10.net" IsDotNet="1"/>
<target name="d11" IsBds="1"/>
+ <target name="d11.net" IsDotNet="1"/>
</targets>
<aliases>
<alias name="Delphi" value="d5,d6,d7,d9,d10,d11"/>
@@ -131,13 +132,13 @@
<alias name="Clx" value="c6,d6,d7,k3"/>
<alias name="Vcl" value="c6,d6,d7,d9,d10,d11"/>
<alias name="Bds" value="cs1,d8,d9,d10,d11"/>
- <alias name="JclDotNet" value="d9.net,d10.net"/>
+ <alias name="JclDotNet" value="d9.net,d10.net,d11.net"/>
</aliases>
<ProjectProperties>
<ProjectProperty name="VersionMajorNumber" value="1"/>
<ProjectProperty name="VersionMinorNumber" value="101"/>
- <ProjectProperty name="ReleaseNumber" value="0"/>
- <ProjectProperty name="BuildNumber" value="2647"/>
+ <ProjectProperty name="ReleaseNumber" value="1"/>
+ <ProjectProperty name="BuildNumber" value="2725"/>
</ProjectProperties>
</Model>
</models>
Modified: branches/JCL_1.101/jcl/docs/Experts.html
===================================================================
--- branches/JCL_1.101/jcl/docs/Experts.html 2007-09-13 09:28:35 UTC (rev 2160)
+++ branches/JCL_1.101/jcl/docs/Experts.html 2007-09-13 09:58:58 UTC (rev 2161)
@@ -1,7 +1,7 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html lang="en-us">
<head>
- <title>JEDI Code Library Release 1.100</title>
+ <title>JEDI Code Library Release 1.101</title>
<meta content="text/html;charset=ISO-8859-1" http-equiv="Content-Type">
<link rel="stylesheet" type="text/css" href="styles/default.css">
<meta content="Project JEDI" name="author">
@@ -10,9 +10,9 @@
<body>
<hr><br>
<h1>JEDI Code Library</h1>
-<p>Unstable 1.101<br>
-Build 2647<br>
-30-May-2007</p>
+<p>Release 1.101<br>
+Build 2725<br>
+17-August-2007</p>
<hr><br>
<h3>Content of this file</h3>
<ul>
Modified: branches/JCL_1.101/jcl/docs/Readme.html
===================================================================
--- branches/JCL_1.101/jcl/docs/Readme.html 2007-09-13 09:28:35 UTC (rev 2160)
+++ branches/JCL_1.101/jcl/docs/Readme.html 2007-09-13 09:58:58 UTC (rev 2161)
@@ -1,7 +1,7 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html lang="en-us">
<head>
- <title>JEDI Code Library Release 1.100</title>
+ <title>JEDI Code Library Release 1.101</title>
<meta content="text/html;charset=ISO-8859-1" http-equiv="Content-Type">
@@ -18,9 +18,9 @@
<h1>JEDI Code Library</h1>
-<p>Unstable 1.101<br>
-Build 2647
-30-May-2007</p>
+<p>Release 1.101<br>
+Build 2725
+17-August-2007</p>
<hr><br>
@@ -53,7 +53,7 @@
<hr><br>
<h3><a name="about">About this release</a></h3>
-<p>JCL release 1.100 provides an updated support for all targets (including CodeGear Delphi 2007 for Win32 and CodeGear C++Builder 2007).</p>
+<p>JCL release 1.101 provides an updated support for all targets (including CodeGear RAD Studio 2007).</p>
<p>As always, multiple bugs have been fixed; for detailed change logs,
use the facilities of our Subversion repository at Sourceforge.net
@@ -65,35 +65,18 @@
<ul>
- <li>JclPeImage is significantly updated: it now supports 64-bit applications and libraries.
- </li>
+ <li>New functions to copy and move directories and to handle command line parameters in JclFileUtils.</li>
- <li>JclDebug is significantly updated: .jdbg files contain
-informations about all segments of code. A new option was added to
-limit exception handling to the main thread of the application.
-</li>
+ <li>A function for Vista detecting UAC in JclSysInfo.</li>
- <li>PCRE (<a href="http://www.pcre.org/">http://www.pcre.org/</a>)
-updated to version 7.0. PCRE code can be included in the application
-not requiring "pcre.dll" anymore (experimental - read the comments at
-the beginning of source\common\pcre.pas for details and modifications
-to enable this feature).
-</li>
+ <li>JclFont is introduced to initialize a TFont object to standard system fonts.</li>
- <li>JclMail : different file names can be specified for attachements
- </li>
+ <li>JclExprEval now supports operators: and, or, bor (bitwise), not, bnot (bitwise), cmp, xor, bxor(bitwise), div, mod, shl, shr.</li>
- <li>Collection of stream classes to make basic operations easier
-(getting random data, multiplexing several streams, buffering an other
-stream, being notifyed on changes, reading common data types, scoping a
-stream, delegating read/write/seek operations.
-</li>
+ <li>Three new stream classes in JclStream: TJclSectoredStream (class to handle accesses to a sectored storage), TJclCRC16Stream and TJclCRC32Stream (a CRC is added to each sector preventing data corruption).</li>
- <li>Integration of the JCL help into the help system of Delphi 2005, BDS 2006, Turbo Delphi and RAD Studio 2007.
- </li>
+ <li>Unicode support is updated to version 5.1.0.</li>
- <li>New IDE expert to have TortoiseSVN (<a href="http://tortoisesvn.tigris.org/">http://tortoisesvn.tigris.org/</a>) and TortoiseCVS (<a href="http://tortoisecvs.sourceforge.net/">http://tortoisecvs.sourceforge.net/</a>) commands integrated in all supportted IDE.</li>
-
</ul>
<p><span style="font-weight: bold;">Important:</span>
@@ -131,16 +114,14 @@
can be linked into binaries to become JCL debug data or be converted to .jdbg files.
Once linked MAP files could be deleted. These options are subnodes of the "Packages" node.</p>
-<p>For BDS 2006, the compiler introduced a new option to make the same packages available in C++,
-by checking the "Dual packages" option of the "Packages" node, you will be able to call functions
-of the JCL from C++ code.</p>
+<p>For BDS 2006 and RAD Studio 2007, the compiler introduced a new option to make the same packages
+available in C++, by checking the "Dual packages" option of the "Packages" node, you will be able
+to call functions of the JCL from C++ code.</p>
<p><span style="font-weight: bold;">.net Framework support:</span></p>
-<p>A subset of JCL units was worked over to support Delphi.Net (Delphi 2005
-& BDS 2006). The packages belong to the Jedi.Jcl namespace. The installer can generate these
-packages for Delphi 2005 and BDS 2006, it displays an other tab to configure options and directory.
-The installation process is similar to the native targets.</p>
+<p>A subset of JCL units was worked over to support Delphi.Net (Delphi 2005, BDS 2006 and RAD
+Studio 2007). The packages belong to the Jedi.Jcl namespace.</p>
<hr><br>
@@ -161,8 +142,7 @@
<ul>
- <li>C#Builder 1 (cf <a href="#notes">Installation notes</a>).
- </li>
+ <li>C#Builder 1 (cf <a href="#notes">Installation notes</a>).</li>
<li>Delphi 8.net (cf <a href="#notes">Installation notes</a>).</li>
@@ -172,22 +152,17 @@
<ul>
- <li>Delphi version 5, 6, 7.
- </li>
+ <li>Delphi version 5, 6, 7.</li>
- <li>C++Builder version 5 & 6.
- </li>
+ <li>C++Builder version 5 & 6.</li>
- <li>Delphi 2005 (Delphi Win32 and Delphi.net personalities).
- </li>
+ <li>Delphi 2005 (Delphi for Win32 and Delphi.net personalities).</li>
- <li>Borland Developer Studio 2006 (Delphi Win32, C++Builder Win32, Delphi.net and C#Builder personalities).
- </li>
+ <li>Borland Developer Studio 2006 (Delphi for Win32, C++Builder Win32, Delphi.net and C#Builder personalities).</li>
- <li>Turbo Delphi (explorer and professional - cf <a href="#notes">Installation notes</a>).
- </li>
+ <li>Turbo Delphi (explorer and professional - cf <a href="#notes">Installation notes</a>).</li>
- <li>CodeGear RAD Studio 2007 (Delphi Win32 and C++Builder Win32 personalities).</li>
+ <li>CodeGear RAD Studio 2007 (Delphi for Win32, C++Builder for Win32 and Delphi.net personalities).</li>
</ul>
@@ -198,19 +173,17 @@
<ul>
<li>Not every unit supports all tools. Look out for <tt>*.exc</tt>
- files in the tool-specific <tt>lib/</tt>subdirectories for a list of units
- excluded from compilation.
- </li>
+ files in the tool-specific <tt>lib/</tt>subdirectories for a list of units
+ excluded from compilation.</li>
<li>Kylix 3 Delphi/C++ installation is back but specific code has not been tested with the latest
- versions of the kernel. Please ensure you use the flavor of the JCL with Unix EOL.
- </li>
+ versions of the kernel. Please ensure you use the flavor of the JCL with Unix EOL.</li>
<li>Free Pascal (<a href="http://www.freepascal.org/">http://www.freepascal.org/</a>)
support has not been updated for this release; most units from
source/common should work with FP 2.0, as tests with a 2.0 beta (1.9.8)
indicated, but this has not been verified. Note that there are no plans
- to support FP versions from the 1.0 branch.</li>
+ to support FP versions from the 1.0 branch.</li>
</ul>
@@ -226,12 +199,11 @@
<ul>
<li>If you have an other supported version of Delphi/C++Builder on this computer, it should automatically be
- detected and the installer will process as usual.
- </li>
+ detected and the installer will process as usual.</li>
<li>If you only have Turbo Delphi Explorer (and no other tools) on the computer, the installer cannot be
compiled. You have to use the Turbo Explorer flavor of the JCL that contains a precompiled installer. However,
- you will not be able to install any experts.</li>
+ you will not be able to install any experts.</li>
</ul>
@@ -240,20 +212,18 @@
<ul>
<li>These products cannot be used to build the JCL installer, you need an
- other supported product to install JCL experts on these products.
- </li>
+ other supported product to install JCL experts on these products.</li>
<li>These products are not able to use the JCL library as a runtime library.
- You cannot write managed applications and managed packages based on the JCL.
- </li>
+ You cannot write managed applications and managed packages based on the JCL.</li>
<li>These products are not shipped with their native compilers, you have to
- download it from codecentral (<a href="http://cc.codegear.com/">http://cc.codegear.com/</a>).
- The item (<a href="http://codecentral.codegear.com/Download.aspx?id=21333">http://codecentral.codegear.com/Download.aspx?id=21333</a>)
+ download it from codecentral (<a href="http://cc.codegear.com/">http://cc.codegear.com/</a>).
+ The item (<a href="http://codecentral.codegear.com/Download.aspx?id=21333">http://codecentral.codegear.com/Download.aspx?id=21333</a>)
contains the native compiler to be installed in Delphi 8.
- The item (<a href="http://codecentral.codegear.com/Download.aspx?id=21334">http://codecentral.codegear.com/Download.aspx?id=21334</a>)
+ The item (<a href="http://codecentral.codegear.com/Download.aspx?id=21334">http://codecentral.codegear.com/Download.aspx?id=21334</a>)
contains the native compiler to be installed in C#Builder 1.
- These zip files have to be extracted in the products directory using the standard pattern:</li>
+ These zip files have to be extracted in the products directory using the standard pattern:</li>
</ul>
@@ -281,49 +251,38 @@
<li>Open and edit included file to customize options:</li>
<ul>
- <li>For Kylix 3 (Delphi): source\jclkd3.inc
- </li>
+ <li>For Kylix 3 (Delphi): source\jclkd3.inc</li>
- <li>For Kylix 3 (C++Builder): source\jclkc3.inc
- </li>
+ <li>For Kylix 3 (C++Builder): source\jclkc3.inc</li>
- <li>For C++Builder 5: source\jclc5.inc
- </li>
+ <li>For C++Builder 5: source\jclc5.inc</li>
- <li>For C++Builder 6: source\jclc6.inc
- </li>
+ <li>For C++Builder 6: source\jclc6.inc</li>
- <li>For Delphi 5: source\jcld5.inc
- </li>
+ <li>For Delphi 5: source\jcld5.inc</li>
- <li>For Delphi 6: source\jcld6.inc
- </li>
+ <li>For Delphi 6: source\jcld6.inc</li>
- <li>For Delphi 7: source\jcld7.inc
- </li>
+ <li>For Delphi 7: source\jcld7.inc</li>
- <li>For Delphi 2005: source\jcld9.inc
- </li>
+ <li>For Delphi 2005: source\jcld9.inc</li>
- <li>For Delphi.net 2005: source\jcld9.net.inc
- </li>
+ <li>For Delphi.net 2005: source\jcld9.net.inc</li>
- <li>For BDS 2006 (Delphi and C++Builder): source\jcld10.inc
- </li>
+ <li>For BDS 2006 (Delphi and C++Builder): source\jcld10.inc</li>
- <li>For CodeGear RAD Studio 2007 (Delphi for Win32 and C++Builder): source\jcld11.inc
- </li>
+ <li>For Delphi.net 2006: source\jcld10.net.inc</li>
- <li>For Delphi.net 2006: source\jcld10.net.inc</li>
+ <li>For CodeGear RAD Studio 2007 (Delphi for Win32 and C++Builder): source\jcld11.inc</li>
+ <li>For Delphi.net 2007: source\jcld11.net.inc</li>
</ul>
<li>In the IDE, open and compile package Jcl.dpk (or Jcl.bpk for C++Builder)
located in a subdirectory of the "packages" directory matching your version of
the IDE. This package doesn't have to be installed since it doesn't provide
- any components.
- </li>
+ any components.</li>
<li>If you want to install experts, open package JclBaseExpert.dpk and compile it,
then you can install all the experts you want (packages are located in the same
@@ -346,14 +305,12 @@
<ul>
<li>Newsgroup is the recommended way to contact other JCL users and the team itself.
-They are hosted at <a href="news://forums.talkto.net/jedi.jcl">news://forums.talkto.net/jedi.jcl</a>.
- </li>
+They are hosted at <a href="news://forums.talkto.net/jedi.jcl">news://forums.talkto.net/jedi.jcl</a>.</li>
<li>Write to <a href="mailto:jc...@de...">jc...@de...</a>
or to <a href="mailto:jcl...@de...">jcl...@de...</a>
This email account should not be used for support requests. If you need
-support please use either the newsgroups or the mailing list.
- </li>
+support please use either the newsgroups or the mailing list.</li>
<li>If you want to keep up to date about JCL then you can join the
JCL mailing list by going to <a href="http://tech.groups.yahoo.com/group/JEDI-JCL/">http://tech.groups.yahoo.com/group/JEDI-JCL/</a>
@@ -417,14 +374,11 @@
things we need your help on:
<ul>
- <li>Donate source code
- </li>
+ <li>Donate source code</li>
- <li>Donate time writing help
- </li>
+ <li>Donate time writing help</li>
- <li>Donate time writing demos
- </li>
+ <li>Donate time writing demos</li>
<li>Donate time fixing bugs</li>
Modified: branches/JCL_1.101/jcl/docs/Readme.txt
===================================================================
--- branches/JCL_1.101/jcl/docs/Readme.txt 2007-09-13 09:28:35 UTC (rev 2160)
+++ branches/JCL_1.101/jcl/docs/Readme.txt 2007-09-13 09:58:58 UTC (rev 2161)
@@ -2,8 +2,8 @@
JEDI Code Library
Unstable 1.101
-Build 2647
-30-May-2007
+Build 2725
+17-August-2007
--------------------------------------------------------------------------------
@@ -22,8 +22,8 @@
--------------------------------------------------------------------------------
About this release
-JCL release 1.100 provides an updated support for all targets (including CodeGear
-Delphi 2007 for Win32 and CodeGear C++Builder 2007).
+JCL release 1.101 provides an updated support for all targets (including CodeGear
+RAD Studio 2007).
As always, multiple bugs have been fixed; for detailed change logs, use the
facilities of our Subversion repository at Sourceforge.net
@@ -31,25 +31,16 @@
Head changes:
- - JclPeImage is significantly updated: it now supports 64-bit applications and
- libraries.
- - JclDebug is significantly updated: .jdbg files contain informations about all
- segments of code. A new option was added to limit exception handling to the
- main thread of the application.
- - PCRE (http://www.pcre.org/) updated to version 7.0. PCRE code can be included
- in the application not requiring "pcre.dll" anymore (experimental - read the
- comments at the beginning of source\common\pcre.pas for details and
- modifications to enable this feature).
- - JclMail : different file names can be specified for attachements
- - Collection of stream classes to make basic operations easier (getting random
- data, multiplexing several streams, buffering an other stream, being notifyed
- on changes, reading common data types, scoping a stream, delegating
- read/write/seek operations.
- - Integration of the JCL help into the help system of Delphi 2005, BDS 2006,
- Turbo Delphi and RAD Studio 2007.
- - New IDE expert to have TortoiseSVN (http://tortoisesvn.tigris.org/) and
- TortoiseCVS (http://tortoisecvs.sourceforge.net/) commands integrated in all
- supportted IDE.
+ - New functions to copy and move directories and to handle command line
+ parameters in JclFileUtils.
+ - A function for Vista detecting UAC in JclSysInfo.
+ - JclFont is introduced to initialize TFont object to standard system fonts.
+ - JclExprEval now supports operators: and, or, bor (bitwise), not, bnot (bitwise),
+ cmp, xor, bxor(bitwise), div, mod, shl, shr.
+ - 3 new stream classes: TJclSectoredStream (class to handle accesses to a sectored
+ storage), TJclCRC16Stream and TJclCRC32Stream (a CRC is added to each sector
+ preventing data corruption).
+ - Unicode support is updated to version 5.1.0.
Important:
@@ -80,17 +71,14 @@
converted to .jdbg files. Once linked MAP files could be deleted. These options
are subnodes of the "Packages" node.
- For BDS 2006, the compiler introduced a new option to make the same packages
-available in C++, by checking the "Dual packages" option of the "Packages" node,
-you will be able to call functions of the JCL from C++ code.
+ For BDS 2006 and RAD Studio 2007, the compiler introduced a new option to make
+ the same packages available in C++, by checking the "Dual packages" option of
+ the "Packages" node, you will be able to call functions of the JCL from C++ code.
.net Framework support:
-A subset of JCL units was worked over to support Delphi.Net (Delphi 2005
-& BDS 2006). The packages belong to the Jedi.Jcl namespace. The installer can
-generate these packages for Delphi 2005 and BDS 2006, it displays an other tab
-to configure options and directory. The installation process is similar to the
-native targets.
+ A subset of JCL units was worked over to support Delphi.Net (Delphi 2005, BDS 2006
+and RAD Studio 2007). The packages belong to the Jedi.Jcl namespace.
--------------------------------------------------------------------------------
@@ -107,11 +95,12 @@
Both supports (run time and design time):
- Delphi version 5, 6, 7.
- C++Builder version 5 & 6.
- - Delphi 2005 (Delphi Win32 and Delphi.net personalities).
- - Borland Developer Studio 2006 (Delphi Win32, C++Builder Win32, Delphi.net
- and C#Builder personalities).
+ - Delphi 2005 (Delphi for Win32 and Delphi.net personalities).
+ - Borland Developer Studio 2006 (Delphi for Win32, C++Builder for Win32,
+ Delphi.net and C#Builder personalities).
- Turbo Delphi (explorer and professional - cf Installation notes).
- - CodeGear RAD Studio 2007 (Delphi Win32 and C++Builder Win32 personalities).
+ - CodeGear RAD Studio 2007 (Delphi for Win32, C++Builder for Win32 and Delphi.net
+ personalities).
--------------------------------------------------------------------------------
@@ -189,8 +178,9 @@
- For Delphi 2005: source\jcld9.inc
- For Delphi.net 2005: source\jcld9.net.inc
- For BDS 2006 (Delphi and C++Builder): source\jcld10.inc
- - For CodeGear RAD Studio 2007 (Delphi for Win32 and C++Builder): source\jcld11.inc
- For Delphi.net 2006: source\jcld10.net.inc
+ - For CodeGear RAD Studio 2007 (Delphi for Win32 and C++Builder): source\jcld11.inc
+ - for Delphi.net 2007: source\jcld11.net.inc
2. In the IDE, open and compile package Jcl.dpk (or Jcl.bpk for C++Builder)
located in a subdirectory of the "packages" directory matching your version of
Property changes on: branches/JCL_1.101/jcl/lib/d11.net
___________________________________________________________________
Name: bugtraq:url
+ http://homepages.codegear.com/jedi/issuetracker/view.php?id=%BUGID%
Name: bugtraq:message
+ (Mantis #%BUGID%)
Name: bugtraq:logregex
+ [Mm]antis #?(\d+)(,? ?#?(\d+))+
(\d+)
Added: branches/JCL_1.101/jcl/lib/d11.net/common.exc
===================================================================
--- branches/JCL_1.101/jcl/lib/d11.net/common.exc (rev 0)
+++ branches/JCL_1.101/jcl/lib/d11.net/common.exc 2007-09-13 09:58:58 UTC (rev 2161)
@@ -0,0 +1,25 @@
+bzip2.pas
+Jcl8087.pas
+JclBorlandTools.pas
+JclCompression.pas
+JclCounter.pas
+JclEDI.pas
+JclEDISEF.pas
+JclEDITranslators.pas
+JclEDIXML.pas
+JclEDI_ANSIX12.pas
+JclEDI_ANSIX12_Ext.pas
+JclEDI_UNEDIFACT.pas
+JclEDI_UNEDIFACT_Ext.pas
+JclExprEval.pas
+JclMIDI.pas
+JclPCRE.pas
+JclSchedule.pas
+JclStreams.pas
+JclStrHashMap.pas
+JclStringLists.pas
+JclUnitVersioning.pas
+JclUnitVersioningProviders.pas
+JclValidation.pas
+JclWideStrings.pas
+pcre.pas
\ No newline at end of file
Property changes on: branches/JCL_1.101/jcl/lib/d11.net/common.exc
___________________________________________________________________
Name: svn:eol-style
+ native
Property changes on: branches/JCL_1.101/jcl/lib/d11.net/debug
___________________________________________________________________
Name: bugtraq:url
+ http://homepages.codegear.com/jedi/issuetracker/view.php?id=%BUGID%
Name: bugtraq:message
+ (Mantis #%BUGID%)
Name: bugtraq:logregex
+ [Mm]antis #?(\d+)(,? ?#?(\d+))+
(\d+)
Added: branches/JCL_1.101/jcl/lib/d11.net/debug/dirinfo.txt
===================================================================
--- branches/JCL_1.101/jcl/lib/d11.net/debug/dirinfo.txt (rev 0)
+++ branches/JCL_1.101/jcl/lib/d11.net/debug/dirinfo.txt 2007-09-13 09:58:58 UTC (rev 2161)
@@ -0,0 +1 @@
+This directory is intended a common place for .dcuil files of Delphi 2007 .NET packages with debug information.
\ No newline at end of file
Added: branches/JCL_1.101/jcl/lib/d11.net/dirinfo.txt
===================================================================
--- branches/JCL_1.101/jcl/lib/d11.net/dirinfo.txt (rev 0)
+++ branches/JCL_1.101/jcl/lib/d11.net/dirinfo.txt 2007-09-13 09:58:58 UTC (rev 2161)
@@ -0,0 +1 @@
+This directory is intended a common place for .dcuil files of Delphi 2007 .NET packages.
\ No newline at end of file
Property changes on: branches/JCL_1.101/jcl/lib/d11.net/dirinfo.txt
___________________________________________________________________
Name: svn:eol-style
+ native
Added: branches/JCL_1.101/jcl/lib/d11.net/vcl.exc
===================================================================
--- branches/JCL_1.101/jcl/lib/d11.net/vcl.exc (rev 0)
+++ branches/JCL_1.101/jcl/lib/d11.net/vcl.exc 2007-09-13 09:58:58 UTC (rev 2161)
@@ -0,0 +1,3 @@
+JclGraphics.pas
+JclGraphUtils.pas
+JclPrint.pas
\ No newline at end of file
Property changes on: branches/JCL_1.101/jcl/lib/d11.net/vcl.exc
___________________________________________________________________
Name: svn:eol-style
+ native
Added: branches/JCL_1.101/jcl/lib/d11.net/windows.exc
===================================================================
--- branches/JCL_1.101/jcl/lib/d11.net/windows.exc (rev 0)
+++ branches/JCL_1.101/jcl/lib/d11.net/windows.exc 2007-09-13 09:58:58 UTC (rev 2161)
@@ -0,0 +1,37 @@
+Hardlinks.pas
+JclAppInst.pas
+JclCIL.pas
+JclCLR.pas
+JclCOM.pas
+JclConsole.pas
+JclDebug.pas
+JclDotNet.pas
+JclHookExcept.pas
+JclLANMan.pas
+JclLocales.pas
+JclMapi.pas
+JclMetadata.pas
+JclMiscel.pas
+JclMsdosSys.pas
+JclMultimedia.pas
+JclNTFS.pas
+JclPeImage.pas
+JclRegistry.pas
+JclSecurity.pas
+JclShell.pas
+JclStructStorage.pas
+JclSvcCtrl.pas
+JclSynch.pas
+JclTask.pas
+JclTD32.pas
+JclUnicode.pas
+JclWideFormat.pas
+JclWin32.pas
+JclWin32Ex.pas
+JclWinMIDI.pas
+mscoree_TLB.pas
+mscorlib_TLB.pas
+MSHelpServices_TLB.pas
+MSTask.pas
+Snmp.pas
+zlibh.pas
\ No newline at end of file
Property changes on: branches/JCL_1.101/jcl/lib/d11.net/windows.exc
___________________________________________________________________
Name: svn:eol-style
+ native
Added: branches/JCL_1.101/jcl/packages/JclNetPackagesD110.groupproj
===================================================================
--- branches/JCL_1.101/jcl/packages/JclNetPackagesD110.groupproj (rev 0)
+++ branches/JCL_1.101/jcl/packages/JclNetPackagesD110.groupproj 2007-09-13 09:58:58 UTC (rev 2161)
@@ -0,0 +1,34 @@
+<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <PropertyGroup>
+ <ProjectGuid>{468f50c8-84e0-4b79-bb57-72d64fff9348}</ProjectGuid>
+ </PropertyGroup>
+ <ItemGroup />
+ <ItemGroup>
+ <Projects Include="d11.net\Jedi.Jcl.dproj" />
+ </ItemGroup>
+ <ProjectExtensions>
+ <Borland.Personality>Default.Personality</Borland.Personality>
+ <Borland.ProjectType />
+ <BorlandProject>
+ <BorlandProject xmlns=""> <Default.Personality> </Default.Personality> </BorlandProject></BorlandProject>
+ </ProjectExtensions>
+ <Target Name="Jedi_Jcl">
+ <MSBuild Projects="d11.net\Jedi.Jcl.dproj" Targets="" />
+ </Target>
+ <Target Name="Jedi_Jcl:Clean">
+ <MSBuild Projects="d11.net\Jedi.Jcl.dproj" Targets="Clean" />
+ </Target>
+ <Target Name="Jedi_Jcl:Make">
+ <MSBuild Projects="d11.net\Jedi.Jcl.dproj" Targets="Make" />
+ </Target>
+ <Target Name="Build">
+ <CallTarget Targets="Jedi_Jcl" />
+ </Target>
+ <Target Name="Clean">
+ <CallTarget Targets="Jedi_Jcl:Clean" />
+ </Target>
+ <Target Name="Make">
+ <CallTarget Targets="Jedi_Jcl:Make" />
+ </Target>
+ <Import Condition="Exists('$(MSBuildBinPath)\Borland.Group.Targets')" Project="$(MSBuildBinPath)\Borland.Group.Targets" />
+</Project>
\ No newline at end of file
Property changes on: branches/JCL_1.101/jcl/packages/JclNetPackagesD110.groupproj
___________________________________________________________________
Name: svn:eol-style
+ native
Modified: branches/JCL_1.101/jcl/packages/c5/JclBaseExpertC50.rc
===================================================================
--- branches/JCL_1.101/jcl/packages/c5/JclBaseExpertC50.rc 2007-09-13 09:28:35 UTC (rev 2160)
+++ branches/JCL_1.101/jcl/packages/c5/JclBaseExpertC50.rc 2007-09-13 09:58:58 UTC (rev 2161)
@@ -1,6 +1,6 @@
VS_VERSION_INFO VERSIONINFO
-FILEVERSION 1,101,0,2647
-PRODUCTVERSION 1,101,0,2647
+FILEVERSION 1,101,1,2725
+PRODUCTVERSION 1,101,1,2725
FILEFLAGSMASK VS_FFI_FILEFLAGSMASK
#ifdef _DEBUG
FILEFLAGS VS_FF_DEBUG
@@ -17,12 +17,12 @@
BEGIN
VALUE "CompanyName", "Project JEDI\0"
VALUE "FileDescription", "JCL Package containing common units for JCL Experts\0"
- VALUE "FileVersion", "1.101.0.2647\0"
+ VALUE "FileVersion", "1.101.1.2725\0"
VALUE "InternalName", "JclBaseExpertC50\0"
VALUE "LegalCopyright", "Copyright (C) 1999, 2007 Project JEDI\0"
VALUE "OriginalFilename", "JclBaseExpertC50C50.bpl\0"
VALUE "ProductName", "JEDI Code Library\0"
- VALUE "ProductVersion", "1.101 Build 2647\0"
+ VALUE "ProductVersion", "1.101 Build 2725\0"
END
END
BLOCK "VarFileInfo"
Modified: branches/JCL_1.101/jcl/packages/c5/JclBaseExpertC50.res
===================================================================
(Binary files differ)
Modified: branches/JCL_1.101/jcl/packages/c5/JclC50.rc
===================================================================
--- branches/JCL_1.101/jcl/packages/c5/JclC50.rc 2007-09-13 09:28:35 UTC (rev 2160)
+++ branches/JCL_1.101/jcl/packages/c5/JclC50.rc 2007-09-13 09:58:58 UTC (rev 2161)
@@ -1,6 +1,6 @@
VS_VERSION_INFO VERSIONINFO
-FILEVERSION 1,101,0,2647
-PRODUCTVERSION 1,101,0,2647
+FILEVERSION 1,101,1,2725
+PRODUCTVERSION 1,101,1,2725
FILEFLAGSMASK VS_FFI_FILEFLAGSMASK
#ifdef _DEBUG
FILEFLAGS VS_FF_DEBUG
@@ -17,12 +17,12 @@
BEGIN
VALUE "CompanyName", "Project JEDI\0"
VALUE "FileDescription", "JEDI Code Library RTL package\0"
- VALUE "FileVersion", "1.101.0.2647\0"
+ VALUE "FileVersion", "1.101.1.2725\0"
VALUE "InternalName", "JclC50\0"
VALUE "LegalCopyright", "Copyright (C) 1999, 2007 Project JEDI\0"
VALUE "OriginalFilename", "JclC50C50.bpl\0"
VALUE "ProductName", "JEDI Code Library\0"
- VALUE "ProductVersion", "1.101 Build 2647\0"
+ VALUE "ProductVersion", "1.101 Build 2725\0"
END
END
BLOCK "VarFileInfo"
Modified: branches/JCL_1.101/jcl/packages/c5/JclC50.res
===================================================================
(Binary files differ)
Modified: branches/JCL_1.101/jcl/packages/c5/JclDebugExpertC50.RES
===================================================================
(Binary files differ)
Modified: branches/JCL_1.101/jcl/packages/c5/JclDebugExpertC50.rc
===================================================================
--- branches/JCL_1.101/jcl/packages/c5/JclDebugExpertC50.rc 2007-09-13 09:28:35 UTC (rev 2160)
+++ branches/JCL_1.101/jcl/packages/c5/JclDebugExpertC50.rc 2007-09-13 09:58:58 UTC (rev 2161)
@@ -1,6 +1,6 @@
VS_VERSION_INFO VERSIONINFO
-FILEVERSION 1,101,0,2647
-PRODUCTVERSION 1,101,0,2647
+FILEVERSION 1,101,1,2725
+PRODUCTVERSION 1,101,1,2725
FILEFLAGSMASK VS_FFI_FILEFLAGSMASK
#ifdef _DEBUG
FILEFLAGS VS_FF_DEBUG
@@ -17,12 +17,12 @@
BEGIN
VALUE "CompanyName", "Project JEDI\0"
VALUE "FileDescription", "JCL Debug IDE extension\0"
- VALUE "FileVersion", "1.101.0.2647\0"
+ VALUE "FileVersion", "1.101.1.2725\0"
VALUE "InternalName", "JclDebugExpertC50\0"
VALUE "LegalCopyright", "Copyright (C) 1999, 2007 Project JEDI\0"
VALUE "OriginalFilename", "JclDebugExpertC50C50.bpl\0"
VALUE "ProductName", "JEDI Code Library\0"
- VALUE "ProductVersion", "1.101 Build 2647\0"
+ VALUE "ProductVersion", "1.101 Build 2725\0"
END
END
BLOCK "VarFileInfo"
Modified: branches/JCL_1.101/jcl/packages/c5/JclDebugExpertDLLC50.rc
===================================================================
--- branches/JCL_1.101/jcl/packages/c5/JclDebugExpertDLLC50.rc 2007-09-13 09:28:35 UTC (rev 2160)
+++ branches/JCL_1.101/jcl/packages/c5/JclDebugExpertDLLC50.rc 2007-09-13 09:58:58 UTC (rev 2161)
@@ -1,6 +1,6 @@
VS_VERSION_INFO VERSIONINFO
-FILEVERSION 1,101,0,2647
-PRODUCTVERSION 1,101,0,2647
+FILEVERSION 1,101,1,2725
+PRODUCTVERSION 1,101,1,2725
FILEFLAGSMASK VS_FFI_FILEFLAGSMASK
#ifdef _DEBUG
FILEFLAGS VS_FF_DEBUG
@@ -17,12 +17,12 @@
BEGIN
VALUE "CompanyName", "Project JEDI\0"
VALUE "FileDescription", "JCL Debug IDE extension\0"
- VALUE "FileVersion", "1.101.0.2647\0"
+ VALUE "FileVersion", "1.101.1.2725\0"
VALUE "InternalName", "JclDebugExpertDLLC50\0"
VALUE "LegalCopyright", "Copyright (C) 1999, 2007 Project JEDI\0"
VALUE "OriginalFilename", "JclDebugExpertDLLC50C50.dll\0"
VALUE "ProductName", "JEDI Code Library\0"
- VALUE "ProductVersion", "1.101 Build 2647\0"
+ VALUE "ProductVersion", "1.101 Build 2725\0"
END
END
BLOCK "VarFileInfo"
Modified: branches/JCL_1.101/jcl/packages/c5/JclDebugExpertDLLC50.res
===================================================================
(Binary files differ)
Modified: branches/JCL_1.101/jcl/packages/c5/JclFavoriteFoldersExpertC50.rc
===================================================================
--- branches/JCL_1.101/jcl/packages/c5/JclFavoriteFoldersExpertC50.rc 2007-09-13 09:28:35 UTC (rev 2160)
+++ branches/JCL_1.101/jcl/packages/c5/JclFavoriteFoldersExpertC50.rc 2007-09-13 09:58:58 UTC (rev 2161)
@@ -1,6 +1,6 @@
VS_VERSION_INFO VERSIONINFO
-FILEVERSION 1,101,0,2647
-PRODUCTVERSION 1,101,0,2647
+FILEVERSION 1,101,1,2725
+PRODUCTVERSION 1,101,1,2725
FILEFLAGSMASK VS_FFI_FILEFLAGSMASK
#ifdef _DEBUG
FILEFLAGS VS_FF_DEBUG
@@ -17,12 +17,12 @@
BEGIN
VALUE "CompanyName", "Project JEDI\0"
VALUE "FileDescription", "JCL Open and Save IDE dialogs with favorite folders\0"
- VALUE "FileVersion", "1.101.0.2647\0"
+ VALUE "FileVersion", "1.101.1.2725\0"
VALUE "InternalName", "JclFavoriteFoldersExpertC50\0"
VALUE "LegalCopyright", "Copyright (C) 1999, 2007 Project JEDI\0"
VALUE "OriginalFilename", "JclFavoriteFoldersExpertC50C50.bpl\0"
VALUE "ProductName", "JEDI Code Library\0"
- VALUE "ProductVersion", "1.101 Build 2647\0"
+ VALUE "ProductVersion", "1.101 Build 2725\0"
END
END
BLOCK "VarFileInfo"
Modified: branches/JCL_1.101/jcl/packages/c5/JclFavoriteFoldersExpertC50.res
===================================================================
(Binary files differ)
Modified: branches/JCL_1.101/jcl/packages/c5/JclFavoriteFoldersExpertDLLC50.rc
=======================================...
[truncated message content] |
|
From: <ou...@us...> - 2007-09-13 09:28:37
|
Revision: 2160
http://jcl.svn.sourceforge.net/jcl/?rev=2160&view=rev
Author: outchy
Date: 2007-09-13 02:28:35 -0700 (Thu, 13 Sep 2007)
Log Message:
-----------
Branch for JCL 1.101 (with support for CodeGear RAD Studio 2007)
Added Paths:
-----------
branches/JCL_1.101/
Copied: branches/JCL_1.101 (from rev 2134, trunk)
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <ou...@us...> - 2007-09-12 15:32:20
|
Revision: 2159
http://jcl.svn.sourceforge.net/jcl/?rev=2159&view=rev
Author: outchy
Date: 2007-09-12 08:32:18 -0700 (Wed, 12 Sep 2007)
Log Message:
-----------
bidirectional support for UTF16 iterators
Modified Paths:
--------------
trunk/jcl/source/windows/JclUnicode.pas
Modified: trunk/jcl/source/windows/JclUnicode.pas
===================================================================
--- trunk/jcl/source/windows/JclUnicode.pas 2007-09-08 19:45:12 UTC (rev 2158)
+++ trunk/jcl/source/windows/JclUnicode.pas 2007-09-12 15:32:18 UTC (rev 2159)
@@ -1301,6 +1301,12 @@
// StrPos will be incremented by the number of chars that were read
function UTF16GetNextChar(const S: WideString; var StrPos: Integer): UCS4;
+// UTF16GetPreviousChar = read previous UTF16 sequence starting at StrPos-1
+// if UNICODE_SILENT_FAILURE is defined, invalid sequences will be replaced by ReplacementCharacter
+// otherwise StrPos is set to -1 on return to flag an error (invalid UTF16 sequence)
+// StrPos will be decremented by the number of chars that were read
+function UTF16GetPreviousChar(const S: WideString; var StrPos: Integer): UCS4;
+
// UTF16SkipChars = skip NbSeq UTF16 sequences starting from StrPos
// returns False if String is too small
// if UNICODE_SILENT_FAILURE is not defined StrPos is set to -1 on error (invalid UTF16 sequence)
@@ -7955,6 +7961,53 @@
end;
end;
+// if UNICODE_SILENT_FAILURE is defined, invalid sequences will be replaced by ReplacementCharacter
+// otherwise StrPos is set to -1 on return to flag an error (invalid UTF16 sequence)
+// StrPos will be decremented by the number of chars that were read
+function UTF16GetPreviousChar(const S: WideString; var StrPos: Integer): UCS4;
+var
+ StrLength: Integer;
+ ChPrev: UCS4;
+begin
+ StrLength := Length(S);
+
+ if (StrPos <= (StrLength + 1)) and (StrPos > 1) then
+ begin
+ Result := UCS4(S[StrPos - 1]);
+
+ case Result of
+ SurrogateHighStart..SurrogateHighEnd:
+ FlagInvalidSequence(StrPos, -1, Result);
+ SurrogateLowStart..SurrogateLowEnd:
+ begin
+ // 2 bytes to read
+ if StrPos <= 2 then
+ begin
+ FlagInvalidSequence(StrPos, -1, Result);
+ Exit;
+ end;
+ ChPrev := UCS4(S[StrPos - 2]);
+ if (ChPrev < SurrogateHighStart) or (ChPrev > SurrogateHighEnd) then
+ begin
+ FlagInvalidSequence(StrPos, -1, Result);
+ Exit;
+ end;
+ Result := ((ChPrev - SurrogateHighStart) shl HalfShift) + (Result - SurrogateLowStart) + HalfBase;
+ Dec(StrPos, 2);
+ end;
+ else
+ // 1 byte to read
+ Dec(StrPos);
+ end;
+ end
+ else
+ begin
+ // StrPos > StrLength
+ Result := 0;
+ FlagInvalidSequence(StrPos, 0, Result);
+ end;
+end;
+
// returns False if String is too small
// if UNICODE_SILENT_FAILURE is not defined StrPos is set to -1 on error (invalid UTF16 sequence)
// StrPos will be incremented by the number of chars that were skipped
@@ -7968,40 +8021,76 @@
StrLength := Length(S);
Index := 0;
- while (Index < NbSeq) and (StrPos > 0) do
- begin
- Ch := UCS4(S[StrPos]);
-
- case Ch of
- SurrogateHighStart..SurrogateHighEnd:
- // 2 bytes to skip
- if (StrPos >= StrLength) then
- FlagInvalidSequence(StrPos, 1)
- else
- begin
- ChNext := UCS4(S[StrPos + 1]);
- if (ChNext < SurrogateLowStart) or (ChNext > SurrogateLowEnd) then
+ if NbSeq >= 0 then
+ while (Index < NbSeq) and (StrPos > 0) do
+ begin
+ Ch := UCS4(S[StrPos]);
+
+ case Ch of
+ SurrogateHighStart..SurrogateHighEnd:
+ // 2 bytes to skip
+ if StrPos >= StrLength then
FlagInvalidSequence(StrPos, 1)
else
- Inc(StrPos, 2);
- end;
- SurrogateLowStart..SurrogateLowEnd:
- // error
- FlagInvalidSequence(StrPos, 1);
- else
- // 1 byte to skip
- Inc(StrPos);
- end;
+ begin
+ ChNext := UCS4(S[StrPos + 1]);
+ if (ChNext < SurrogateLowStart) or (ChNext > SurrogateLowEnd) then
+ FlagInvalidSequence(StrPos, 1)
+ else
+ Inc(StrPos, 2);
+ end;
+ SurrogateLowStart..SurrogateLowEnd:
+ // error
+ FlagInvalidSequence(StrPos, 1);
+ else
+ // 1 byte to skip
+ Inc(StrPos);
+ end;
- if StrPos <> -1 then
- Inc(Index);
+ if StrPos <> -1 then
+ Inc(Index);
- if (StrPos > StrLength) and (Index < NbSeq) then
+ if (StrPos > StrLength) and (Index < NbSeq) then
+ begin
+ Result := False;
+ Break;
+ end;
+ end
+ else
+ while (Index > NbSeq) and (StrPos > 1) do
begin
- Result := False;
- Break;
+ Ch := UCS4(S[StrPos - 1]);
+
+ case Ch of
+ SurrogateHighStart..SurrogateHighEnd:
+ // error
+ FlagInvalidSequence(StrPos, -1);
+ SurrogateLowStart..SurrogateLowEnd:
+ // 2 bytes to skip
+ if StrPos <= 2 then
+ FlagInvalidSequence(StrPos, -1)
+ else
+ begin
+ ChNext := UCS4(S[StrPos - 2]);
+ if (ChNext < SurrogateHighStart) or (ChNext > SurrogateHighEnd) then
+ FlagInvalidSequence(StrPos, -1)
+ else
+ Dec(StrPos, 2);
+ end;
+ else
+ // 1 byte to skip
+ Dec(StrPos);
+ end;
+
+ if StrPos <> -1 then
+ Dec(Index);
+
+ if (StrPos = 1) and (Index > NbSeq) then
+ begin
+ Result := False;
+ Break;
+ end;
end;
- end;
NbSeq := Index;
end;
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <ou...@us...> - 2007-09-08 19:45:14
|
Revision: 2158
http://jcl.svn.sourceforge.net/jcl/?rev=2158&view=rev
Author: outchy
Date: 2007-09-08 12:45:12 -0700 (Sat, 08 Sep 2007)
Log Message:
-----------
reverting previous modifications, new test with JCF rev 532.
Revision Links:
--------------
http://jcl.svn.sourceforge.net/jcl/?rev=532&view=rev
Modified Paths:
--------------
branches/code_format/jcl/examples/common/graphics/StretchGraphicDemoMain.pas
branches/code_format/jcl/examples/common/multimedia/MidiOutExampleTuningDlg.pas
branches/code_format/jcl/examples/common/rtti/QRTTIDemoMain.pas
branches/code_format/jcl/examples/common/rtti/RTTIDemoMain.pas
branches/code_format/jcl/examples/windows/appinst/AppInstDemoMain.pas
branches/code_format/jcl/examples/windows/clr/ClrDemoTableForm.pas
branches/code_format/jcl/examples/windows/delphitools/common/D6MdiMsgFix.pas
branches/code_format/jcl/examples/windows/delphitools/dependencyviewer/FileViewer.pas
branches/code_format/jcl/examples/windows/delphitools/peviewer/PeDump.pas
branches/code_format/jcl/examples/windows/delphitools/peviewer/PeResView.pas
branches/code_format/jcl/examples/windows/delphitools/peviewer/PeResource.pas
branches/code_format/jcl/examples/windows/delphitools/screenjpg/Main.pas
branches/code_format/jcl/examples/windows/delphitools/toolhelpview/HeapDump.pas
branches/code_format/jcl/examples/windows/delphitools/toolhelpview/Main.pas
branches/code_format/jcl/examples/windows/delphitools/toolhelpview/MemoryDump.pas
branches/code_format/jcl/examples/windows/multimedia/MultimediaDemoMain.pas
branches/code_format/jcl/examples/windows/ntservice/NtSvcDemoMain.pas
branches/code_format/jcl/examples/windows/structstorage/PropsFrm.pas
branches/code_format/jcl/examples/windows/tasks/TaskDemoDataModule.pas
branches/code_format/jcl/experts/common/JclOtaConsts.pas
branches/code_format/jcl/experts/common/JclOtaUtils.pas
branches/code_format/jcl/experts/debug/dialog/ClxExceptDlg.pas
branches/code_format/jcl/experts/debug/dialog/JclOtaExcDlgFileFrame.pas
branches/code_format/jcl/experts/debug/dialog/JclOtaRepositoryReg.pas
branches/code_format/jcl/experts/debug/simdview/JclSIMDModifyForm.pas
branches/code_format/jcl/experts/debug/simdview/JclSIMDUtils.pas
branches/code_format/jcl/experts/debug/simdview/JclSIMDView.pas
branches/code_format/jcl/experts/debug/threadnames/JclIdeThreadStatus.pas
branches/code_format/jcl/experts/debug/threadnames/ThreadExpertSharedNames.pas
branches/code_format/jcl/experts/favfolders/OpenDlgFavAdapter.pas
branches/code_format/jcl/experts/projectanalyzer/ProjAnalyzerFrm.pas
branches/code_format/jcl/experts/useswizard/JCLUsesWizard.pas
branches/code_format/jcl/experts/useswizard/JclParseUses.pas
branches/code_format/jcl/experts/useswizard/JclUsesDialog.pas
branches/code_format/jcl/experts/versioncontrol/JclVersionCtrlCVSImpl.pas
branches/code_format/jcl/experts/versioncontrol/JclVersionCtrlSVNImpl.pas
branches/code_format/jcl/experts/versioncontrol/VersionControlImpl.pas
branches/code_format/jcl/install/JclInstall.pas
branches/code_format/jcl/source/common/JclAnsiStrings.pas
branches/code_format/jcl/source/common/JclBorlandTools.pas
branches/code_format/jcl/source/common/JclCompression.pas
branches/code_format/jcl/source/common/JclDateTime.pas
branches/code_format/jcl/source/common/JclEDISEF.pas
branches/code_format/jcl/source/common/JclEDI_ANSIX12.pas
branches/code_format/jcl/source/common/JclEDI_UNEDIFACT.pas
branches/code_format/jcl/source/common/JclExprEval.pas
branches/code_format/jcl/source/common/JclFileUtils.pas
branches/code_format/jcl/source/common/JclLogic.pas
branches/code_format/jcl/source/common/JclMath.pas
branches/code_format/jcl/source/common/JclMime.pas
branches/code_format/jcl/source/common/JclPCRE.pas
branches/code_format/jcl/source/common/JclRTTI.pas
branches/code_format/jcl/source/common/JclSchedule.pas
branches/code_format/jcl/source/common/JclSimpleXml.pas
branches/code_format/jcl/source/common/JclStreams.pas
branches/code_format/jcl/source/common/JclStrings.pas
branches/code_format/jcl/source/common/JclSysInfo.pas
branches/code_format/jcl/source/common/JclSysUtils.pas
branches/code_format/jcl/source/common/JclUnitConv.pas
branches/code_format/jcl/source/common/JclWideStrings.pas
branches/code_format/jcl/source/prototypes/_GraphUtils.pas
branches/code_format/jcl/source/prototypes/_Graphics.pas
branches/code_format/jcl/source/vcl/JclGraphUtils.pas
branches/code_format/jcl/source/vcl/JclGraphics.pas
branches/code_format/jcl/source/vcl/JclPrint.pas
branches/code_format/jcl/source/visclx/JclQGraphUtils.pas
branches/code_format/jcl/source/windows/JclCIL.pas
branches/code_format/jcl/source/windows/JclConsole.pas
branches/code_format/jcl/source/windows/JclDebug.pas
branches/code_format/jcl/source/windows/JclLANMan.pas
branches/code_format/jcl/source/windows/JclLocales.pas
branches/code_format/jcl/source/windows/JclMapi.pas
branches/code_format/jcl/source/windows/JclMetadata.pas
branches/code_format/jcl/source/windows/JclMiscel.pas
branches/code_format/jcl/source/windows/JclMultimedia.pas
branches/code_format/jcl/source/windows/JclNTFS.pas
branches/code_format/jcl/source/windows/JclPeImage.pas
branches/code_format/jcl/source/windows/JclRegistry.pas
branches/code_format/jcl/source/windows/JclShell.pas
branches/code_format/jcl/source/windows/JclSvcCtrl.pas
branches/code_format/jcl/source/windows/JclSynch.pas
branches/code_format/jcl/source/windows/JclTD32.pas
branches/code_format/jcl/source/windows/JclTask.pas
branches/code_format/jcl/source/windows/JclWideFormat.pas
branches/code_format/jcl/source/windows/JclWinMIDI.pas
branches/code_format/thirdparty/jedi_code_format/JCFGui.exe
branches/code_format/thirdparty/jedi_code_format/JCFSettings.cfg
Modified: branches/code_format/jcl/examples/common/graphics/StretchGraphicDemoMain.pas
===================================================================
--- branches/code_format/jcl/examples/common/graphics/StretchGraphicDemoMain.pas 2007-09-08 17:16:02 UTC (rev 2157)
+++ branches/code_format/jcl/examples/common/graphics/StretchGraphicDemoMain.pas 2007-09-08 19:45:12 UTC (rev 2158)
@@ -302,7 +302,7 @@
PageControl.ActivePage := OriginalPage
else
{$ENDIF VCL}
- PageControl.ActivePage := FLastImagePage;
+ PageControl.ActivePage := FLastImagePage;
FocusControl(PageControl);
end;
end;
Modified: branches/code_format/jcl/examples/common/multimedia/MidiOutExampleTuningDlg.pas
===================================================================
--- branches/code_format/jcl/examples/common/multimedia/MidiOutExampleTuningDlg.pas 2007-09-08 17:16:02 UTC (rev 2157)
+++ branches/code_format/jcl/examples/common/multimedia/MidiOutExampleTuningDlg.pas 2007-09-08 19:45:12 UTC (rev 2158)
@@ -10,7 +10,7 @@
uses
Windows, SysUtils, Classes, Graphics, Forms, Controls, StdCtrls,
Buttons, ExtCtrls, Spin,
- JclMath, JclMidi;
+ JclMath, JclMIDI;
type
TTuningDialog = class(TForm)
Modified: branches/code_format/jcl/examples/common/rtti/QRTTIDemoMain.pas
===================================================================
--- branches/code_format/jcl/examples/common/rtti/QRTTIDemoMain.pas 2007-09-08 17:16:02 UTC (rev 2157)
+++ branches/code_format/jcl/examples/common/rtti/QRTTIDemoMain.pas 2007-09-08 19:45:12 UTC (rev 2158)
@@ -207,7 +207,8 @@
Writer.Indent;
try
Writer.Writeln('TypedIntToStr: ' + JclTypedIntToStr(crArrow, TypeInfo(TCursor)));
- Writer.Writeln('StrToTypedInt: ' + IntToStr(JclStrToTypedInt('crArrow', TypeInfo(TCursor))) + ' (should be ' + IntToStr(crArrow) + ')');
+ Writer.Writeln('StrToTypedInt: ' + IntToStr(JclStrToTypedInt('crArrow', TypeInfo(TCursor))) +
+ ' (should be ' + IntToStr(crArrow) + ')');
Writer.Writeln('');
Writer.Writeln('TypedIntToStr: ' + JclTypedIntToStr(1, TypeInfo(TCursor)));
Writer.Writeln('StrToTypedInt: ' + IntToStr(JclStrToTypedInt('1', TypeInfo(TCursor))) + ' (should be 1)');
Modified: branches/code_format/jcl/examples/common/rtti/RTTIDemoMain.pas
===================================================================
--- branches/code_format/jcl/examples/common/rtti/RTTIDemoMain.pas 2007-09-08 17:16:02 UTC (rev 2157)
+++ branches/code_format/jcl/examples/common/rtti/RTTIDemoMain.pas 2007-09-08 19:45:12 UTC (rev 2158)
@@ -206,7 +206,8 @@
Writer.Indent;
try
Writer.Writeln('TypedIntToStr: ' + JclTypedIntToStr(crArrow, TypeInfo(TCursor)));
- Writer.Writeln('StrToTypedInt: ' + IntToStr(JclStrToTypedInt('crArrow', TypeInfo(TCursor))) + ' (should be ' + IntToStr(crArrow) + ')');
+ Writer.Writeln('StrToTypedInt: ' + IntToStr(JclStrToTypedInt('crArrow', TypeInfo(TCursor))) +
+ ' (should be ' + IntToStr(crArrow) + ')');
Writer.Writeln('');
Writer.Writeln('TypedIntToStr: ' + JclTypedIntToStr(1, TypeInfo(TCursor)));
Writer.Writeln('StrToTypedInt: ' + IntToStr(JclStrToTypedInt('1', TypeInfo(TCursor))) + ' (should be 1)');
Modified: branches/code_format/jcl/examples/windows/appinst/AppInstDemoMain.pas
===================================================================
--- branches/code_format/jcl/examples/windows/appinst/AppInstDemoMain.pas 2007-09-08 17:16:02 UTC (rev 2157)
+++ branches/code_format/jcl/examples/windows/appinst/AppInstDemoMain.pas 2007-09-08 19:45:12 UTC (rev 2158)
@@ -135,8 +135,8 @@
MemoChanging := False;
end;
end;
- else
- inherited;
+ else
+ inherited;
end;
end
else
Modified: branches/code_format/jcl/examples/windows/clr/ClrDemoTableForm.pas
===================================================================
--- branches/code_format/jcl/examples/windows/clr/ClrDemoTableForm.pas 2007-09-08 17:16:02 UTC (rev 2157)
+++ branches/code_format/jcl/examples/windows/clr/ClrDemoTableForm.pas 2007-09-08 19:45:12 UTC (rev 2158)
@@ -4,7 +4,7 @@
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
- StdCtrls, Buttons, ComCtrls, JclClr, JclMetadata;
+ StdCtrls, Buttons, ComCtrls, JclCLR, JclMetadata;
type
TDumpLineKind = (lkWide, lkThin, lkEmpty);
@@ -272,8 +272,8 @@
Result := 'Windows';
VER_PLATFORM_WIN32_NT:
Result := 'WinNT';
- else
- Result := IntToHex(PlatformID, 8);
+ else
+ Result := IntToHex(PlatformID, 8);
end;
end;
var
Modified: branches/code_format/jcl/examples/windows/delphitools/common/D6MdiMsgFix.pas
===================================================================
--- branches/code_format/jcl/examples/windows/delphitools/common/D6MdiMsgFix.pas 2007-09-08 17:16:02 UTC (rev 2157)
+++ branches/code_format/jcl/examples/windows/delphitools/common/D6MdiMsgFix.pas 2007-09-08 19:45:12 UTC (rev 2158)
@@ -57,16 +57,16 @@
with Application do
if Assigned(MainForm) and (MainForm.FormStyle = fsMDIForm) and
Assigned(Screen.ActiveForm) and (Screen.ActiveForm.FormStyle <> fsMdiChild) then
- begin
- Handled := True;
- with TApplicationAccess(Application) do
- if not IsKeyMsg(Msg) and not IsDlgMsg(Msg) then
- begin
+ begin
+ Handled := True;
+ with TApplicationAccess(Application) do
+ if not IsKeyMsg(Msg) and not IsDlgMsg(Msg) then
+ begin
// prevent to call buggy TApplication.IsMDIMsg method, handle message here
- TranslateMessage(Msg);
- DispatchMessage(Msg);
- end;
- end;
+ TranslateMessage(Msg);
+ DispatchMessage(Msg);
+ end;
+ end;
end;
constructor TFixApplicationEvents.Create(AOwner: TComponent);
Modified: branches/code_format/jcl/examples/windows/delphitools/dependencyviewer/FileViewer.pas
===================================================================
--- branches/code_format/jcl/examples/windows/delphitools/dependencyviewer/FileViewer.pas 2007-09-08 17:16:02 UTC (rev 2157)
+++ branches/code_format/jcl/examples/windows/delphitools/dependencyviewer/FileViewer.pas 2007-09-08 19:45:12 UTC (rev 2158)
@@ -320,9 +320,9 @@
stNotFound:
if Forwarded then
SetNodeState(Node, modFwdMissing) else SetNodeState(Node, modMissing);
- else
- if Forwarded then
- SetNodeState(Node, modFwdInvalid) else SetNodeState(Node, modInvalid);
+ else
+ if Forwarded then
+ SetNodeState(Node, modFwdInvalid) else SetNodeState(Node, modInvalid);
end;
end;
Modified: branches/code_format/jcl/examples/windows/delphitools/peviewer/PeDump.pas
===================================================================
--- branches/code_format/jcl/examples/windows/delphitools/peviewer/PeDump.pas 2007-09-08 17:16:02 UTC (rev 2157)
+++ branches/code_format/jcl/examples/windows/delphitools/peviewer/PeDump.pas 2007-09-08 19:45:12 UTC (rev 2158)
@@ -189,8 +189,8 @@
Result := icoDelayImport;
ikBoundImport:
Result := icoBoundImport;
- else
- Result := 0;
+ else
+ Result := 0;
end;
end;
@@ -787,8 +787,8 @@
Result := 'ABSOLUTE';
IMAGE_REL_BASED_HIGHLOW:
Result := 'HIGHLOW';
- else
- Result := IntToStr(RelocType);
+ else
+ Result := IntToStr(RelocType);
end;
end;
@@ -964,8 +964,8 @@
Result := Result + #13#10 + ImageCharacteristicValues[I].Name;
Delete(Result, 1, 2);
end;
- else
- Result := '';
+ else
+ Result := '';
end;
end;
Modified: branches/code_format/jcl/examples/windows/delphitools/peviewer/PeResView.pas
===================================================================
--- branches/code_format/jcl/examples/windows/delphitools/peviewer/PeResView.pas 2007-09-08 17:16:02 UTC (rev 2157)
+++ branches/code_format/jcl/examples/windows/delphitools/peviewer/PeResView.pas 2007-09-08 19:45:12 UTC (rev 2158)
@@ -345,9 +345,9 @@
H := GetSystemMetrics(SM_CYICON);
rkBitmap:
H := TPeResUnkGraphic(Item).GraphicProperties.Height;
- else
- FTempGraphic.Assign(Item);
- H := FTempGraphic.Height;
+ else
+ FTempGraphic.Assign(Item);
+ H := FTempGraphic.Height;
end;
MaxRowHeight := Max(MaxRowHeight, H);
end;
@@ -531,8 +531,8 @@
CreateStringsList(TPeResString(FCurrentDir));
PageControl1.ActivePage := StringsTab;
end;
- else
- Result := False;
+ else
+ Result := False;
end;
end;
@@ -599,8 +599,8 @@
TextRichEdit.Lines.Assign(TPeResVersion(FSelectedItem));
PageControl1.ActivePage := TextTab;
end;
- else
- Result := False;
+ else
+ Result := False;
end;
end;
Modified: branches/code_format/jcl/examples/windows/delphitools/peviewer/PeResource.pas
===================================================================
--- branches/code_format/jcl/examples/windows/delphitools/peviewer/PeResource.pas 2007-09-08 17:16:02 UTC (rev 2157)
+++ branches/code_format/jcl/examples/windows/delphitools/peviewer/PeResource.pas 2007-09-08 19:45:12 UTC (rev 2158)
@@ -640,8 +640,8 @@
Result := 'PROCESSKEY';
$F6..$FE:
Result := KNF6FE[KeyCode];
- else
- Result := '';
+ else
+ Result := '';
end;
if Result <> '' then
Result := 'VK_' + Result;
@@ -1036,8 +1036,8 @@
case BitCount of
1, 4, 8:
Result := 1 shl BitCount;
- else
- Result := 0;
+ else
+ Result := 0;
end;
end;
Modified: branches/code_format/jcl/examples/windows/delphitools/screenjpg/Main.pas
===================================================================
--- branches/code_format/jcl/examples/windows/delphitools/screenjpg/Main.pas 2007-09-08 17:16:02 UTC (rev 2157)
+++ branches/code_format/jcl/examples/windows/delphitools/screenjpg/Main.pas 2007-09-08 19:45:12 UTC (rev 2158)
@@ -118,8 +118,8 @@
Result := SaveFile;
ID_NO:
Result := True;
- else
- Result := False;
+ else
+ Result := False;
end;
end;
Modified: branches/code_format/jcl/examples/windows/delphitools/toolhelpview/HeapDump.pas
===================================================================
--- branches/code_format/jcl/examples/windows/delphitools/toolhelpview/HeapDump.pas 2007-09-08 17:16:02 UTC (rev 2157)
+++ branches/code_format/jcl/examples/windows/delphitools/toolhelpview/HeapDump.pas 2007-09-08 19:45:12 UTC (rev 2158)
@@ -187,8 +187,8 @@
SubItems.Add('Default');
HF32_SHARED:
SubItems.Add('Shared');
- else
- SubItems.Add('Normal');
+ else
+ SubItems.Add('Normal');
end;
end;
Next := Heap32ListNext(SnapProcHandle, HeapList);
Modified: branches/code_format/jcl/examples/windows/delphitools/toolhelpview/Main.pas
===================================================================
--- branches/code_format/jcl/examples/windows/delphitools/toolhelpview/Main.pas 2007-09-08 17:16:02 UTC (rev 2157)
+++ branches/code_format/jcl/examples/windows/delphitools/toolhelpview/Main.pas 2007-09-08 19:45:12 UTC (rev 2158)
@@ -232,8 +232,8 @@
Result := 1;
PROCESS_CLASS_TIMECRITICAL:
Result := 2;
- else
- Result := -1;
+ else
+ Result := -1;
end;
end;
Modified: branches/code_format/jcl/examples/windows/delphitools/toolhelpview/MemoryDump.pas
===================================================================
--- branches/code_format/jcl/examples/windows/delphitools/toolhelpview/MemoryDump.pas 2007-09-08 17:16:02 UTC (rev 2157)
+++ branches/code_format/jcl/examples/windows/delphitools/toolhelpview/MemoryDump.pas 2007-09-08 19:45:12 UTC (rev 2158)
@@ -137,8 +137,8 @@
Result := 'Guard';
PAGE_NOCACHE:
Result := 'NoCache';
- else
- Result := '';
+ else
+ Result := '';
end;
end;
@@ -151,8 +151,8 @@
Result := 'Free';
MEM_RESERVE:
Result := 'Reserve';
- else
- Result := Format('%x', [P]);
+ else
+ Result := Format('%x', [P]);
end;
end;
@@ -165,8 +165,8 @@
Result := 'Mapped';
MEM_PRIVATE:
Result := 'Private';
- else
- Result := Format('%x', [P]);
+ else
+ Result := Format('%x', [P]);
end;
end;
Modified: branches/code_format/jcl/examples/windows/multimedia/MultimediaDemoMain.pas
===================================================================
--- branches/code_format/jcl/examples/windows/multimedia/MultimediaDemoMain.pas 2007-09-08 17:16:02 UTC (rev 2157)
+++ branches/code_format/jcl/examples/windows/multimedia/MultimediaDemoMain.pas 2007-09-08 19:45:12 UTC (rev 2158)
@@ -353,8 +353,8 @@
C := '+';
3:
C := '-';
- else
- C := '!';
+ else
+ C := '!';
end;
List.Add(Format('%*s%s %s', [Node.Level * 2, '', Node.Text, StringOfChar(C, 119 -
Node.Level * 2 - Length(Node.Text))]));
Modified: branches/code_format/jcl/examples/windows/ntservice/NtSvcDemoMain.pas
===================================================================
--- branches/code_format/jcl/examples/windows/ntservice/NtSvcDemoMain.pas 2007-09-08 17:16:02 UTC (rev 2157)
+++ branches/code_format/jcl/examples/windows/ntservice/NtSvcDemoMain.pas 2007-09-08 19:45:12 UTC (rev 2158)
@@ -222,7 +222,7 @@
else
m_fOrderAsc := True;
- for I:=0 to lstSvc.Columns.Count-1 do
+ for I := 0 to lstSvc.Columns.Count - 1 do
lstSvc.Columns[I].Tag := Ord(lstSvc.Columns[I] = Column);
SCManager.Sort(SortOrderMapping[Column.Index], m_fOrderAsc);
Modified: branches/code_format/jcl/examples/windows/structstorage/PropsFrm.pas
===================================================================
--- branches/code_format/jcl/examples/windows/structstorage/PropsFrm.pas 2007-09-08 17:16:02 UTC (rev 2157)
+++ branches/code_format/jcl/examples/windows/structstorage/PropsFrm.pas 2007-09-08 19:45:12 UTC (rev 2158)
@@ -118,8 +118,8 @@
Result := SLockBytes;
STGTY_PROPERTY:
Result := SProperty;
- else
- Result := SUnknown;
+ else
+ Result := SUnknown;
end;
end;
Modified: branches/code_format/jcl/examples/windows/tasks/TaskDemoDataModule.pas
===================================================================
--- branches/code_format/jcl/examples/windows/tasks/TaskDemoDataModule.pas 2007-09-08 17:16:02 UTC (rev 2157)
+++ branches/code_format/jcl/examples/windows/tasks/TaskDemoDataModule.pas 2007-09-08 19:45:12 UTC (rev 2158)
@@ -112,9 +112,9 @@
except
on E: Exception do
{$IFDEF COMPILER6_UP}
- ApplicationShowException(E);
+ ApplicationShowException(E);
{$ELSE}
- Application.ShowException(E);
+ Application.ShowException(E);
{$ENDIF}
end;
end;
Modified: branches/code_format/jcl/experts/common/JclOtaConsts.pas
===================================================================
--- branches/code_format/jcl/experts/common/JclOtaConsts.pas 2007-09-08 17:16:02 UTC (rev 2157)
+++ branches/code_format/jcl/experts/common/JclOtaConsts.pas 2007-09-08 19:45:12 UTC (rev 2158)
@@ -40,7 +40,7 @@
RegJclIDEKey = RegJclKey + 'IDE\';
DelphiEnvironmentVar = 'DELPHI';
{$IFDEF COMPILER6_UP}
- EnvironmentVarsKey = 'Environment Variables';
+ EnvironmentVarsKey = 'Environment Variables';
{$ENDIF COMP\xCFLER6_UP}
//=== Various constants shared by different experts ========================
Modified: branches/code_format/jcl/experts/common/JclOtaUtils.pas
===================================================================
--- branches/code_format/jcl/experts/common/JclOtaUtils.pas 2007-09-08 17:16:02 UTC (rev 2157)
+++ branches/code_format/jcl/experts/common/JclOtaUtils.pas 2007-09-08 19:45:12 UTC (rev 2158)
@@ -282,16 +282,21 @@
begin
if SameText(PersonalityText, sDelphiPersonality) then
Result := bpDelphi32
- else if SameText(PersonalityText, sDelphiDotNetPersonality) then
+ else
+ if SameText(PersonalityText, sDelphiDotNetPersonality) then
Result := bpDelphiNet32
- else if SameText(PersonalityText, sCBuilderPersonality) then
+ else
+ if SameText(PersonalityText, sCBuilderPersonality) then
Result := bpBCBuilder32
- else if SameText(PersonalityText, sCSharpPersonality) then
+ else
+ if SameText(PersonalityText, sCSharpPersonality) then
Result := bpCSBuilder32
- else if SameText(PersonalityText, sVBPersonality) then
+ else
+ if SameText(PersonalityText, sVBPersonality) then
Result := bpVisualBasic32
{$IFDEF COMPILER10_UP}
- else if SameText(PersonalityText, sDesignPersonality) then
+ else
+ if SameText(PersonalityText, sDesignPersonality) then
Result := bpDesign
{$ENDIF COMPILER10_UP}
else
@@ -1197,13 +1202,13 @@
begin
if AboutBoxIndex = -1 then
begin
- Supports(BorlandIDEServices,IOTAAboutBoxServices, AboutBoxServices);
+ Supports(BorlandIDEServices, IOTAAboutBoxServices, AboutBoxServices);
if not Assigned(AboutBoxServices) then
raise EJclExpertException.CreateTrace(RsENoAboutServices);
ProductImage := LoadBitmap(FindResourceHInstance(HInstance), 'JCLSPLASH');
if ProductImage = 0 then
raise EJclExpertException.CreateTrace(RsENoBitmapResources);
- AboutBoxIndex := AboutBoxServices.AddPluginInfo(RsAboutTitle, RsAboutDescription,
+ AboutBoxIndex := AboutBoxServices.AddPluginInfo(RsAboutTitle, RsAboutDescription,
ProductImage, False, RsAboutLicenceStatus);
end;
end;
@@ -1247,7 +1252,7 @@
try
{$IFDEF BDS}
- UnregisterAboutBox;
+ UnregisterAboutBox;
{$ENDIF BDS}
FreeAndNil(GlobalActionList);
FreeAndNil(GlobalActionSettings);
Modified: branches/code_format/jcl/experts/debug/dialog/ClxExceptDlg.pas
===================================================================
--- branches/code_format/jcl/experts/debug/dialog/ClxExceptDlg.pas 2007-09-08 17:16:02 UTC (rev 2157)
+++ branches/code_format/jcl/experts/debug/dialog/ClxExceptDlg.pas 2007-09-08 19:45:12 UTC (rev 2158)
@@ -38,11 +38,11 @@
const
QEventType_UMCreateDetails = QEventType(Integer(QEventType_ClxUser) + $01);
- ReportToLogEnabled = $00000001; // TExceptionDialog.Tag property
+ ReportToLogEnabled = $00000001; // TExceptionDialog.Tag property
DisableTextScrollbar = $00000002; // TExceptionDialog.Tag property
type
- TSimpleExceptionLog = class (TObject)
+ TSimpleExceptionLog = class(TObject)
private
FLogFileHandle: THandle;
FLogFileName: string;
@@ -186,7 +186,7 @@
function HookTApplicationHandleException: Boolean;
const
- CallOffset = $86;
+ CallOffset = $86;
CallOffsetDebug = $63;
type
PCALLInstruction = ^TCALLInstruction;
@@ -209,13 +209,15 @@
if Result then
begin
if IsCompiledWithPackages then
- Result := PeMapImgResolvePackageThunk(Pointer(Integer(CallAddress) + Integer(PCALLInstruction(CallAddress)^.Address) + SizeOf(CALLInstruction))) = SysUtilsShowExceptionAddr
+ Result := PeMapImgResolvePackageThunk(Pointer(Integer(CallAddress) +
+ Integer(PCALLInstruction(CallAddress)^.Address) + SizeOf(CALLInstruction))) = SysUtilsShowExceptionAddr
else
- Result := PCALLInstruction(CallAddress)^.Address = Integer(SysUtilsShowExceptionAddr) - Integer(CallAddress) - SizeOf(CALLInstruction);
+ Result := PCALLInstruction(CallAddress)^.Address = Integer(SysUtilsShowExceptionAddr) -
+ Integer(CallAddress) - SizeOf(CALLInstruction);
end;
except
Result := False;
- end;
+ end;
end;
begin
@@ -226,14 +228,14 @@
begin
Result := VirtualProtect(CallAddress, sizeof(CallInstruction), PAGE_EXECUTE_READWRITE, OldProtect);
if Result then
- try
- CALLInstruction.Address := Integer(@HookShowException) - Integer(CallAddress) - SizeOf(CALLInstruction);
- PCALLInstruction(CallAddress)^ := CALLInstruction;
- if Result then
- FlushInstructionCache(GetCurrentProcess, CallAddress, SizeOf(CALLInstruction));
- finally
- VirtualProtect(CallAddress, sizeof(CallInstruction), OldProtect, Dummy);
- end;
+ try
+ CALLInstruction.Address := Integer(@HookShowException) - Integer(CallAddress) - SizeOf(CALLInstruction);
+ PCALLInstruction(CallAddress)^ := CALLInstruction;
+ if Result then
+ FlushInstructionCache(GetCurrentProcess, CallAddress, SizeOf(CALLInstruction));
+ finally
+ VirtualProtect(CallAddress, sizeof(CallInstruction), OldProtect, Dummy);
+ end;
end;
end;
@@ -339,7 +341,7 @@
begin
if SeparatorLen = 0 then
SeparatorLen := 100;
- SeparatorLen := Max(SeparatorLen, 20);
+ SeparatorLen := Max(SeparatorLen, 20);
OpenLog;
if not FLogWasEmpty then
Write(AnsiCrLf);
@@ -461,13 +463,13 @@
ImageBaseStr := StrRepeat(' ', 11);
if VersionResourceAvailable(ModuleName) then
with TJclFileVersionInfo.Create(ModuleName) do
- try
- DetailsMemo.Lines.Add(ImageBaseStr + BinFileVersion + ' - ' + FileVersion);
- if FileDescription <> '' then
- DetailsMemo.Lines.Add(StrRepeat(' ', 11) + FileDescription);
- finally
- Free;
- end
+ try
+ DetailsMemo.Lines.Add(ImageBaseStr + BinFileVersion + ' - ' + FileVersion);
+ if FileDescription <> '' then
+ DetailsMemo.Lines.Add(StrRepeat(' ', 11) + FileDescription);
+ finally
+ Free;
+ end
else
DetailsMemo.Lines.Add(ImageBaseStr + RsMissingVersionInfo);
end;
@@ -708,7 +710,7 @@
TextLabel.ScrollBars := ssVertical
else
TextLabel.ScrollBars := ssNone;
- end;
+ end;
end;
//==================================================================================================
Modified: branches/code_format/jcl/experts/debug/dialog/JclOtaExcDlgFileFrame.pas
===================================================================
--- branches/code_format/jcl/experts/debug/dialog/JclOtaExcDlgFileFrame.pas 2007-09-08 17:16:02 UTC (rev 2157)
+++ branches/code_format/jcl/experts/debug/dialog/JclOtaExcDlgFileFrame.pas 2007-09-08 19:45:12 UTC (rev 2158)
@@ -122,8 +122,8 @@
SaveDialogFileName.FilterIndex := 2;
bpBCBuilder32:
SaveDialogFileName.FilterIndex := 3;
- else
- SaveDialogFileName.FilterIndex := 1;
+ else
+ SaveDialogFileName.FilterIndex := 1;
end
else
SaveDialogFileName.DefaultExt := '';
Modified: branches/code_format/jcl/experts/debug/dialog/JclOtaRepositoryReg.pas
===================================================================
--- branches/code_format/jcl/experts/debug/dialog/JclOtaRepositoryReg.pas 2007-09-08 17:16:02 UTC (rev 2157)
+++ branches/code_format/jcl/experts/debug/dialog/JclOtaRepositoryReg.pas 2007-09-08 19:45:12 UTC (rev 2158)
@@ -105,10 +105,10 @@
for Index := 0 to PersonalityServices.PersonalityCount - 1 do
if SameText(PersonalityServices.Personalities[Index], PersonalityName) then
- begin
- Result := True;
- Break;
- end;
+ begin
+ Result := True;
+ Break;
+ end;
end;
{$ELSE BDS}
begin
@@ -172,8 +172,8 @@
end;
function JCLWizardInit(const BorlandIDEServices: IBorlandIDEServices;
- RegisterProc: TWizardRegisterProc;
- var TerminateProc: TWizardTerminateProc): Boolean stdcall;
+ RegisterProc: TWizardRegisterProc;
+ var TerminateProc: TWizardTerminateProc): Boolean stdcall;
var
OTAWizardServices: IOTAWizardServices;
begin
@@ -235,7 +235,7 @@
SourceExtension, SourceTemplate, SourceContent, SourceFileName: string;
OTAServices: IOTAServices;
begin
- Supports(BorlandIDEServices,IOTAServices,OTAServices);
+ Supports(BorlandIDEServices, IOTAServices, OTAServices);
if not Assigned(OTAServices) then
raise EJclExpertException.CreateTrace(RsENoIDEServices);
@@ -244,33 +244,33 @@
case Params.Language of
bpDelphi32:
- begin
- FormExtension := JclBorDesignerFormExtension[Params.Designer];
- FormTemplate := TemplatePath + DelphiTemplate + FormExtension;
- HeaderExtension := '';
- HeaderTemplate := '';
- SourceExtension := SourceExtensionPAS;
- SourceTemplate := TemplatePath + DelphiTemplate + SourceExtension;
- end;
+ begin
+ FormExtension := JclBorDesignerFormExtension[Params.Designer];
+ FormTemplate := TemplatePath + DelphiTemplate + FormExtension;
+ HeaderExtension := '';
+ HeaderTemplate := '';
+ SourceExtension := SourceExtensionPAS;
+ SourceTemplate := TemplatePath + DelphiTemplate + SourceExtension;
+ end;
bpBCBuilder32:
- begin
- FormExtension := JclBorDesignerFormExtension[Params.Designer];
- FormTemplate := TemplatePath + BCBTemplate + FormExtension;
- HeaderExtension := SourceExtensionH;
- HeaderTemplate := TemplatePath + BCBTemplate + HeaderExtension;
- SourceExtension := SourceExtensionCPP;
- SourceTemplate := TemplatePath + BCBTemplate + SourceExtension;
- end;
+ begin
+ FormExtension := JclBorDesignerFormExtension[Params.Designer];
+ FormTemplate := TemplatePath + BCBTemplate + FormExtension;
+ HeaderExtension := SourceExtensionH;
+ HeaderTemplate := TemplatePath + BCBTemplate + HeaderExtension;
+ SourceExtension := SourceExtensionCPP;
+ SourceTemplate := TemplatePath + BCBTemplate + SourceExtension;
+ end;
else
- begin
- FormExtension := '';
- FormTemplate := '';
- HeaderExtension := '';
- HeaderTemplate := '';
- SourceExtension := '';
- SourceTemplate := '';
- end;
+ begin
+ FormExtension := '';
+ FormTemplate := '';
+ HeaderExtension := '';
+ HeaderTemplate := '';
+ SourceExtension := '';
+ SourceTemplate := '';
end;
+ end;
FormTemplate := LoadTemplate(FormTemplate);
HeaderTemplate := LoadTemplate(HeaderTemplate);
Modified: branches/code_format/jcl/experts/debug/simdview/JclSIMDModifyForm.pas
===================================================================
--- branches/code_format/jcl/experts/debug/simdview/JclSIMDModifyForm.pas 2007-09-08 17:16:02 UTC (rev 2157)
+++ branches/code_format/jcl/experts/debug/simdview/JclSIMDModifyForm.pas 2007-09-08 19:45:12 UTC (rev 2158)
@@ -455,8 +455,8 @@
xt2Doubles:
EvaluateResult := erError;
end;
- else
- EvaluateResult := erError;
+ else
+ EvaluateResult := erError;
end
else
EvaluateResult := erError;
Modified: branches/code_format/jcl/experts/debug/simdview/JclSIMDUtils.pas
===================================================================
--- branches/code_format/jcl/experts/debug/simdview/JclSIMDUtils.pas 2007-09-08 17:16:02 UTC (rev 2157)
+++ branches/code_format/jcl/experts/debug/simdview/JclSIMDUtils.pas 2007-09-08 19:45:12 UTC (rev 2158)
@@ -240,9 +240,9 @@
Result := IntToStr(Integer(Value.ValueDWord));
xt2QWords:
Result := IntToStr(Value.ValueQWord);
- else
- Result := '';
- Exit;
+ else
+ Result := '';
+ Exit;
end;
Result := StringOfChar(' ', Width[Value.Display] - Length(Result)) + Result;
end;
@@ -263,9 +263,9 @@
Result := IntToStr(Cardinal(Value.ValueDWord));
xt2QWords:
Result := IntToStr(Value.ValueQWord);
- else
- Result := '';
- Exit;
+ else
+ Result := '';
+ Exit;
end;
Result := StringOfChar(' ', Width[Value.Display] - Length(Result)) + Result;
end;
@@ -286,8 +286,8 @@
Result := IntToHex(Value.ValueDWord, Width[xt4DWords]);
xt2QWords:
Result := IntToHex(Value.ValueQWord, Width[xt2QWords]);
- else
- Result := '';
+ else
+ Result := '';
end;
end;
@@ -301,8 +301,8 @@
Result := FloatToStr(Value.ValueSingle);
xt2Doubles:
Result := FloatToStr(Value.ValueDouble);
- else
- Result := '';
+ else
+ Result := '';
end;
Result := StringOfChar(' ', 22 - Length(Result)) + Result; // 22 = max string length of a double value
end;
@@ -323,8 +323,8 @@
FormatFunction := FormatUnsigned;
sfHexa:
FormatFunction := FormatHexa;
- else
- Exit;
+ else
+ Exit;
end;
case Value.Display of
xt16Bytes..xt2QWords:
@@ -351,8 +351,8 @@
;
'1':
Inc(TestValue);
- else
- Exit;
+ else
+ Exit;
end;
end;
Result := True;
@@ -374,8 +374,8 @@
Result := False;
xt2QWords:
Value.ValueQWord := TestValue;
- else
- Result := False;
+ else
+ Result := False;
end;
end;
@@ -405,8 +405,8 @@
Result := False;
xt2QWords:
Value.ValueQWord := TestValue;
- else
- Result := False;
+ else
+ Result := False;
end;
end;
@@ -436,8 +436,8 @@
Result := False;
xt2QWords:
Value.ValueQWord := TestValue;
- else
- Result := False;
+ else
+ Result := False;
end;
end;
@@ -462,8 +462,8 @@
Inc(TestValue, Ord(StringValue[Index]) - Ord('A') + 10);
'a'..'f':
Inc(TestValue, Ord(StringValue[Index]) - Ord('a') + 10);
- else
- Exit;
+ else
+ Exit;
end;
end;
Result := True;
@@ -485,8 +485,8 @@
Result := False;
xt2QWords:
Value.ValueQWord := TestValue;
- else
- Result := False;
+ else
+ Result := False;
end;
end;
@@ -511,8 +511,8 @@
Value.ValueDouble := TestValue
else
Result := False;
- else
- Result := False;
+ else
+ Result := False;
end;
end;
@@ -533,8 +533,8 @@
ParseFunction := ParseUnsigned;
sfHexa:
ParseFunction := ParseHexa;
- else
- Exit;
+ else
+ Exit;
end;
case Value.Display of
xt16Bytes..xt2QWords:
@@ -779,19 +779,19 @@
begin
VectorContext.MXCSR := OTAXMMRegs.MXCSR;
VectorContext.MXCSRMask := $FFFFFFFF;
- Move(OTAXMMRegs,VectorContext.XMMRegisters, SizeOf(TOTAXMMReg) * 8);
+ Move(OTAXMMRegs, VectorContext.XMMRegisters, SizeOf(TOTAXMMReg) * 8);
OTAThreadContext := AThread.OTAThreadContext;
VectorContext.FCW := OTAThreadContext.FloatSave.ControlWord;
VectorContext.FSW := OTAThreadContext.FloatSave.StatusWord;
VectorContext.FTW := OTAThreadContext.FloatSave.TagWord;
- Move(OTAThreadContext.FloatSave.RegisterArea[00],VectorContext.FPURegisters[0],SizeOf(Extended));
- Move(OTAThreadContext.FloatSave.RegisterArea[10],VectorContext.FPURegisters[1],SizeOf(Extended));
- Move(OTAThreadContext.FloatSave.RegisterArea[20],VectorContext.FPURegisters[2],SizeOf(Extended));
- Move(OTAThreadContext.FloatSave.RegisterArea[30],VectorContext.FPURegisters[3],SizeOf(Extended));
- Move(OTAThreadContext.FloatSave.RegisterArea[40],VectorContext.FPURegisters[4],SizeOf(Extended));
- Move(OTAThreadContext.FloatSave.RegisterArea[50],VectorContext.FPURegisters[5],SizeOf(Extended));
- Move(OTAThreadContext.FloatSave.RegisterArea[60],VectorContext.FPURegisters[6],SizeOf(Extended));
- Move(OTAThreadContext.FloatSave.RegisterArea[70],VectorContext.FPURegisters[7],SizeOf(Extended));
+ Move(OTAThreadContext.FloatSave.RegisterArea[00], VectorContext.FPURegisters[0], SizeOf(Extended));
+ Move(OTAThreadContext.FloatSave.RegisterArea[10], VectorContext.FPURegisters[1], SizeOf(Extended));
+ Move(OTAThreadContext.FloatSave.RegisterArea[20], VectorContext.FPURegisters[2], SizeOf(Extended));
+ Move(OTAThreadContext.FloatSave.RegisterArea[30], VectorContext.FPURegisters[3], SizeOf(Extended));
+ Move(OTAThreadContext.FloatSave.RegisterArea[40], VectorContext.FPURegisters[4], SizeOf(Extended));
+ Move(OTAThreadContext.FloatSave.RegisterArea[50], VectorContext.FPURegisters[5], SizeOf(Extended));
+ Move(OTAThreadContext.FloatSave.RegisterArea[60], VectorContext.FPURegisters[6], SizeOf(Extended));
+ Move(OTAThreadContext.FloatSave.RegisterArea[70], VectorContext.FPURegisters[7], SizeOf(Extended));
end;
end;
{$ELSE COMPILER9_UP}
@@ -806,11 +806,11 @@
else
JvContext := ContextMemory;
JvContext^.ScalarContext.ContextFlags := CONTEXT_EXTENDED_REGISTERS;
- Result := GetThreadContext(AThread.Handle, JvContext^) and
- ((JvContext^.ScalarContext.ContextFlags and CONTEXT_EXTENDED_REGISTERS) <> 0);
+ Result := GetThreadContext(AThread.Handle,JvContext^) and
+ ((JvContext^.ScalarContext.ContextFlags and CONTEXT_EXTENDED_REGISTERS)<>0);
if Result then
VectorContext := JvContext^.VectorContext
- else
+ else
FillChar(VectorContext, SizeOf(VectorContext), 0);
finally
FreeMem(ContextMemory);
@@ -826,7 +826,7 @@
Result := True;
try
OTAXMMRegs.MXCSR := VectorContext.MXCSR;
- Move(VectorContext.XMMRegisters,OTAXMMRegs,SizeOf(TOTAXMMReg) * 8);
+ Move(VectorContext.XMMRegisters, OTAXMMRegs, SizeOf(TOTAXMMReg) * 8);
AThread.SetOTAXMMRegisters(OTAXMMRegs);
except
Result := False;
@@ -874,10 +874,10 @@
else
JvContext := ContextMemory;
JvContext^.ScalarContext.ContextFlags := CONTEXT_EXTENDED_REGISTERS;
- Result := GetThreadContext(AThread.Handle, JvContext^) and
+ Result := GetThreadContext(AThread.Handle,JvContext^) and
((JvContext^.ScalarContext.ContextFlags and CONTEXT_EXTENDED_REGISTERS) = CONTEXT_EXTENDED_REGISTERS);
if Result then
- Result := SetThreadContext(AThread.Handle, JvContext^);
+ Result := SetThreadContext(AThread.Handle,JvContext^);
finally
FreeMem(ContextMemory);
end;
Modified: branches/code_format/jcl/experts/debug/simdview/JclSIMDView.pas
===================================================================
--- branches/code_format/jcl/experts/debug/simdview/JclSIMDView.pas 2007-09-08 17:16:02 UTC (rev 2157)
+++ branches/code_format/jcl/experts/debug/simdview/JclSIMDView.pas 2007-09-08 19:45:12 UTC (rev 2158)
@@ -563,7 +563,8 @@
end;
-procedure TJclDebuggerNotifier.ProcessModuleDestroyed({$IFDEF RTL170_UP} const {$ENDIF} ProcessModule: IOTAProcessModule);
+procedure TJclDebuggerNotifier.ProcessModuleDestroyed({$IFDEF RTL170_UP}
+ const {$ENDIF} ProcessModule: IOTAProcessModule);
begin
end;
Modified: branches/code_format/jcl/experts/debug/threadnames/JclIdeThreadStatus.pas
===================================================================
--- branches/code_format/jcl/experts/debug/threadnames/JclIdeThreadStatus.pas 2007-09-08 17:16:02 UTC (rev 2157)
+++ branches/code_format/jcl/experts/debug/threadnames/JclIdeThreadStatus.pas 2007-09-08 19:45:12 UTC (rev 2158)
@@ -105,10 +105,10 @@
begin
Result := Kernel32_ResumeThread(hThread);
if Result <= 1 then
- try
- SharedThreadNames.UpdateResumeStatus;
- except
- end;
+ try
+ SharedThreadNames.UpdateResumeStatus;
+ except
+ end;
end;
{$ENDIF DELPHI7_UP}
Modified: branches/code_format/jcl/experts/debug/threadnames/ThreadExpertSharedNames.pas
===================================================================
--- branches/code_format/jcl/experts/debug/threadnames/ThreadExpertSharedNames.pas 2007-09-08 17:16:02 UTC (rev 2157)
+++ branches/code_format/jcl/experts/debug/threadnames/ThreadExpertSharedNames.pas 2007-09-08 19:45:12 UTC (rev 2158)
@@ -169,8 +169,8 @@
Result := True;
wrTimeout:
raise Exception.Create(RsEnterMutexTimeout);
- else
- Result := False;
+ else
+ Result := False;
end;
end
else
@@ -184,7 +184,7 @@
{$IFDEF DELPHI7_UP}
begin
Result := True;
-end;
+end;
{$ELSE DELPHI7_UP}
var
H: THandle;
@@ -249,7 +249,7 @@
end;
end;
{$IFDEF DELPHI7_UP}
- SetIdeDebuggerThreadName(ThreadID, ThreadName);
+ SetIdeDebuggerThreadName(ThreadID, ThreadName);
{$ENDIF DELPHI7_UP}
if NeedNotify then
FNotifyEvent.SetEvent;
Modified: branches/code_format/jcl/experts/favfolders/OpenDlgFavAdapter.pas
===================================================================
--- branches/code_format/jcl/experts/favfolders/OpenDlgFavAdapter.pas 2007-09-08 17:16:02 UTC (rev 2157)
+++ branches/code_format/jcl/experts/favfolders/OpenDlgFavAdapter.pas 2007-09-08 19:45:12 UTC (rev 2158)
@@ -501,8 +501,8 @@
Default;
FHandle := 0;
end;
- else
- Default;
+ else
+ Default;
end;
end;
end;
Modified: branches/code_format/jcl/experts/projectanalyzer/ProjAnalyzerFrm.pas
===================================================================
--- branches/code_format/jcl/experts/projectanalyzer/ProjAnalyzerFrm.pas 2007-09-08 17:16:02 UTC (rev 2157)
+++ branches/code_format/jcl/experts/projectanalyzer/ProjAnalyzerFrm.pas 2007-09-08 19:45:12 UTC (rev 2158)
@@ -362,8 +362,8 @@
ShowDetails;
pavSummary:
ShowSummary;
- else
- ShowDfms;
+ else
+ ShowDfms;
end;
end;
@@ -388,8 +388,8 @@
ImageIndex := 3;
'B':
ImageIndex := 4;
- else
- ImageIndex := 2;
+ else
+ ImageIndex := 2;
end;
end;
AlphaSort;
Modified: branches/code_format/jcl/experts/useswizard/JCLUsesWizard.pas
===================================================================
--- branches/code_format/jcl/experts/useswizard/JCLUsesWizard.pas 2007-09-08 17:16:02 UTC (rev 2157)
+++ branches/code_format/jcl/experts/useswizard/JCLUsesWizard.pas 2007-09-08 19:45:12 UTC (rev 2158)
@@ -875,8 +875,8 @@
UsesIntf.Insert(0, ChangeList[I]);
UsesImpl.Remove(UsesImpl.IndexOf(ChangeList[I]));
end;
- else
- ChangeList.Delete(I);
+ else
+ ChangeList.Delete(I);
end;
if ChangeList.Count = 0 then
Modified: branches/code_format/jcl/experts/useswizard/JclParseUses.pas
===================================================================
--- branches/code_format/jcl/experts/useswizard/JclParseUses.pas 2007-09-08 17:16:02 UTC (rev 2157)
+++ branches/code_format/jcl/experts/useswizard/JclParseUses.pas 2007-09-08 19:45:12 UTC (rev 2158)
@@ -278,8 +278,8 @@
Inc(P);
Break;
end;
- else
- raise EUsesListError.CreateTrace(RsEInvalidUses);
+ else
+ raise EUsesListError.CreateTrace(RsEInvalidUses);
end;
end;
@@ -335,8 +335,8 @@
Inc(P);
';':
Break;
- else
- raise EUsesListError.CreateTrace(RsEInvalidUses);
+ else
+ raise EUsesListError.CreateTrace(RsEInvalidUses);
end;
end;
end;
@@ -395,8 +395,8 @@
Inc(P);
';':
Break;
- else
- raise EUsesListError.CreateTrace(RsEInvalidUses);
+ else
+ raise EUsesListError.CreateTrace(RsEInvalidUses);
end;
end;
end;
@@ -461,8 +461,8 @@
Result := IndexOf(UnitName);
Break;
end;
- else
- raise EUsesListError.CreateTrace(RsEInvalidUses);
+ else
+ raise EUsesListError.CreateTrace(RsEInvalidUses);
end;
end;
end;
@@ -521,8 +521,8 @@
Inc(P);
';':
Break;
- else
- raise EUsesListError.CreateTrace(RsEInvalidUses);
+ else
+ raise EUsesListError.CreateTrace(RsEInvalidUses);
end;
end;
end;
@@ -589,8 +589,8 @@
case P^ of
',':
Inc(P);
- else
- raise EUsesListError.CreateTrace(RsEInvalidUses);
+ else
+ raise EUsesListError.CreateTrace(RsEInvalidUses);
end;
end;
end;
@@ -660,8 +660,8 @@
DelPos := P - PChar(FText) + 1;
Delete(FText, DelPos, 1);
end;
- else
- raise EUsesListError.CreateTrace(RsEInvalidUses);
+ else
+ raise EUsesListError.CreateTrace(RsEInvalidUses);
end;
// remove trailing spaces, if any
PIdentifier := PChar(FText) + DelPos - 1;
@@ -702,8 +702,8 @@
P^ := ';';
Inc(P);
end;
- else
- raise EUsesListError.CreateTrace(RsEInvalidUses);
+ else
+ raise EUsesListError.CreateTrace(RsEInvalidUses);
end;
end;
end;
Modified: branches/code_format/jcl/experts/useswizard/JclUsesDialog.pas
===================================================================
--- branches/code_format/jcl/experts/useswizard/JclUsesDialog.pas 2007-09-08 17:16:02 UTC (rev 2157)
+++ branches/code_format/jcl/experts/useswizard/JclUsesDialog.pas 2007-09-08 19:45:12 UTC (rev 2158)
@@ -88,8 +88,8 @@
case TWizardAction(FChangeList.Objects[I]) of
waSkip:
Node.ImageIndex := 0;
- else
- Node.ImageIndex := 1;
+ else
+ Node.ImageIndex := 1;
end;
Node.SelectedIndex := Node.ImageIndex;
Modified: branches/code_format/jcl/experts/versioncontrol/JclVersionCtrlCVSImpl.pas
===================================================================
--- branches/code_format/jcl/experts/versioncontrol/JclVersionCtrlCVSImpl.pas 2007-09-08 17:16:02 UTC (rev 2157)
+++ branches/code_format/jcl/experts/versioncontrol/JclVersionCtrlCVSImpl.pas 2007-09-08 19:45:12 UTC (rev 2158)
@@ -176,8 +176,8 @@
vcaUnlock,
vcaUnlockSandbox:
Result := CallTortoiseCVSAct(JclVersionControlCVSUnEditVerb);
- else
- Result := inherited ExecuteAction(FileName, Action);
+ else
+ Result := inherited ExecuteAction(FileName, Action);
end;
end;
@@ -282,8 +282,8 @@
vcaUnlock,
vcaUnlockSandbox:
Result := Expert.CacheResourceIcon(LibraryName, 'IDI_REVERT');
- else
- Result := inherited GetIcon(Action);
+ else
+ Result := inherited GetIcon(Action);
end;
end;
Modified: branches/code_format/jcl/experts/versioncontrol/JclVersionCtrlSVNImpl.pas
===================================================================
--- branches/code_format/jcl/experts/versioncontrol/JclVersionCtrlSVNImpl.pas 2007-09-08 17:16:02 UTC (rev 2157)
+++ branches/code_format/jcl/experts/versioncontrol/JclVersionCtrlSVNImpl.pas 2007-09-08 19:45:12 UTC (rev 2158)
@@ -192,8 +192,8 @@
vcaUnlock,
vcaUnlockSandbox:
Result := CallTortoiseSVNProc(JclVersionCtrlSVNUnlockVerb);
- else
- Result := inherited ExecuteAction(FileName, Action);
+ else
+ Result := inherited ExecuteAction(FileName, Action);
end;
end;
@@ -329,8 +329,8 @@
vcaUnlock,
vcaUnlockSandbox:
Result := Expert.CacheResourceIcon(LibraryName, 5153);
- else
- Result := inherited GetIcon(Action);
+ else
+ Result := inherited GetIcon(Action);
end;
end;
Modified: branches/code_format/jcl/experts/versioncontrol/VersionControlImpl.pas
===================================================================
--- branches/code_format/jcl/experts/versioncontrol/VersionControlImpl.pas 2007-09-08 17:16:02 UTC (rev 2157)
+++ branches/code_format/jcl/experts/versioncontrol/VersionControlImpl.pas 2007-09-08 19:45:12 UTC (rev 2158)
@@ -2002,8 +2002,8 @@
vcaProperties,
vcaPropertiesSandbox:
Result := DisplayPropDialog(Application.Handle, FileName);
- else
- Result := inherited ExecuteAction(FileName, Action);
+ else
+ Result := inherited ExecuteAction(FileName, Action);
end;
end;
@@ -2030,8 +2030,8 @@
vcaProperties,
vcaPropertiesSandbox:
Result := Expert.CacheResourceIcon('Shell32.dll', 4);
- else
- Result := inherited GetIcon(Action);
+ else
+ Result := inherited GetIcon(Action);
end;
end;
Modified: branches/code_format/jcl/install/JclInstall.pas
===================================================================
--- branches/code_format/jcl/install/JclInstall.pas 2007-09-08 17:16:02 UTC (rev 2157)
+++ branches/code_format/jcl/install/JclInstall.pas 2007-09-08 19:45:12 UTC (rev 2158)
@@ -3034,8 +3034,8 @@
Result := Target.VersionNumber in [5, 6];
brBorlandDevStudio:
Result := Target.VersionNumber in [1, 2, 3, 4, 5];
- else
- Result := False;
+ else
+ Result := False;
end;
{$ENDIF ~KYLIX}
end;
@@ -3418,10 +3418,10 @@
Parameters := Format('%s "UnregNameSpace;%s"', [Parameters, FRegHelpCommands.Strings[Index]]);
RHCommitTransaction:
Parameters := Format('%s Commit', [Parameters]);
- else
- if Assigned(GUI) then
- GUI.Dialog('Fatal error: unknown reghelp command', dtError, [drOK]);
- Exit;
+ else
+ if Assigned(GUI) then
+ GUI.Dialog('Fatal error: unknown reghelp command', dtError, [drOK]);
+ Exit;
end;
end;
Modified: branches/code_format/jcl/source/common/JclAnsiStrings.pas
===================================================================
--- branches/code_format/jcl/source/common/JclAnsiStrings.pas 2007-09-08 17:16:02 UTC (rev 2157)
+++ branches/code_format/jcl/source/common/JclAnsiStrings.pas 2007-09-08 19:45:12 UTC (rev 2158)
@@ -1062,9 +1062,9 @@
'0'..'7':
// start of octal escape sequence
HandleOctEscapeSeq;
- else
+ else
// no escape sequence
- Result := Result + '\' + S[I];
+ Result := Result + '\' + S[I];
end;
end;
Inc(I);
@@ -1650,12 +1650,12 @@
Result := Result + '\\';
'"':
Result := Result + '\"';
+ else
+ // Characters < ' ' are escaped with hex sequence
+ if S[I] < #32 then
+ Result := Result + Format('\x%.2x', [Integer(S[I])])
else
- // Characters < ' ' are escaped with hex sequence
- if S[I] < #32 then
- Result := Result + Format('\x%.2x', [Integer(S[I])])
- else
- Result := Result + S[I];
+ Result := Result + S[I];
end;
end;
end;
@@ -1869,8 +1869,8 @@
Finalize(S);
Pointer(S) := nil;
end;
- else
- Pointer(Foo) := Pointer(S);
+ else
+ Pointer(Foo) := Pointer(S);
end;
end;
@@ -2751,25 +2751,25 @@
Inc(StringPtr);
Inc(PatternPtr);
end;
+ else
+ begin
+ if StringPtr^ = #0 then
+ Exit;
+ if StringPtr^ <> PatternPtr^ then
+ begin
+ if (StringRes = nil) or (PatternRes = nil) then
+ Exit;
+ StringPtr := StringRes;
+ PatternPtr := PatternRes;
+ Break;
+ end
else
begin
- if StringPtr^ = #0 then
- Exit;
- if StringPtr^ <> PatternPtr^ then
- begin
- if (StringRes = nil) or (PatternRes = nil) then
- Exit;
- StringPtr := StringRes;
- PatternPtr := PatternRes;
- Break;
- end
- else
- begin
- Inc(StringPtr);
- Inc(PatternPtr);
- end;
+ Inc(StringPtr);
+ Inc(PatternPtr);
end;
end;
+ end;
until False;
repeat
@@ -2791,21 +2791,21 @@
Inc(StringPtr);
Inc(PatternPtr);
end;
- else
- begin
- repeat
- if StringPtr^ = #0 then
- Exit;
- if StringPtr^ = PatternPtr^ then
- Break;
- Inc(StringPtr);
- until False;
+ else
+ begin
+ repeat
+ if StringPtr^ = #0 then
+ Exit;
+ if StringPtr^ = PatternPtr^ then
+ Break;
Inc(StringPtr);
- StringRes := StringPtr;
- Inc(PatternPtr);
- Break;
- end;
+ until False;
+ Inc(StringPtr);
+ StringRes := StringPtr;
+ Inc(PatternPtr);
+ Break;
end;
+ end;
until False;
until False;
end;
@@ -3864,10 +3864,10 @@
while S^ in [AnsiSpace, AnsiLineFeed, AnsiCarriageReturn] do
Inc(S);
end;
- else
- if Start = nil then
- Start := S;
- Inc(S);
+ else
+ if Start = nil then
+ Start := S;
+ Inc(S);
end;
end;
end;
Modified: branches/code_format/jcl/source/common/JclBorlandTools.pas
===================================================================
--- branches/code_format/jcl/source/common/JclBorlandTools.pas 2007-09-08 17:16:02 UTC (rev 2157)
+++ branches/code_format/jcl/source/common/JclBorlandTools.pas 2007-09-08 19:45:12 UTC (rev 2158)
@@ -1761,9 +1761,9 @@
S := 'd';
brCppBuilder:
S := 'bcb';
- else
+ else
//brBorlandDevStudio :
- raise EJclBorRadException.CreateRes(@RsENoOpenHelp);
+ raise EJclBorRadException.CreateRes(@RsENoOpenHelp);
end;
Result := Format(FormatName, [RootDir, S, VersionNumber]);
end;
@@ -4000,8 +4000,8 @@
case Num of
1:
Result := 'cs1';
- else
- Result := Format('d%d', [Num + 6]); // BDS 2 goes to D8
+ else
+ Result := Format('d%d', [Num + 6]); // BDS 2 goes to D8
end;
end;
end;
@@ -4587,8 +4587,8 @@
Result := 4;
10:
Result := 0;
- else
- Result := 0;
+ else
+ Result := 0;
end;
end;
@@ -4648,8 +4648,8 @@
Result := 2;
7:
Result := 0;
- else
- Result := 0;
+ else
+ Result := 0;
end;
end;
@@ -4897,8 +4897,8 @@
Result := SubstitutePath(GetMsBuildEnvOption(MsBuildCBuilderBPLOutputPathNodeName))
else
Result := SubstitutePath(GetMsBuildEnvOption(MsBuildWin32DLLOutputPathNodeName));
- else
- Result := SubstitutePath(GetMsBuildEnvOption(MsBuildWin32DLLOutputPathNodeName));
+ else
+ Result := SubstitutePath(GetMsBuildEnvOption(MsBuildWin32DLLOutputPathNodeName));
end;
end;
@@ -4955,9 +4955,9 @@
// use registry
Result := inherited GetDCPOutputPath;
//5:
- else
+ else
// use EnvOptions.proj
- Result := SubstitutePath(GetMsBuildEnvOption(MsBuildWin32DCPOutputNodeName));
+ Result := SubstitutePath(GetMsBuildEnvOption(MsBuildWin32DCPOutputNodeName));
end;
end;
@@ -5014,8 +5014,8 @@
Result := 1; // personal version is only update pack 1
10:
Result := 1; // update 1 is out
- else
- Result := 0;
+ else
+ Result := 0;
end;
end;
Modified: branches/code_format/jcl/source/common/JclCompression.pas
===================================================================
--- branches/code_format/jcl/source/common/JclCompression.pas 2007-09-08 17:16:02 UTC (rev 2157)
+++ branches/code_format/jcl/source/common/JclCompression.pas 2007-09-08 19:45:12 UTC (rev 2158)
@@ -516,8 +516,8 @@
raise EJclCompressionError.CreateRes(@RsCompressionZLibZBufError);
Z_VERSION_ERROR:
raise EJclCompressionError.CreateRes(@RsCompressionZLibZVersionError);
- else
- raise EJclCompressionError.CreateResFmt(@RsCompressionZLibError, [ErrCode]);
+ else
+ raise EJclCompressionError.CreateResFmt(@RsCompressionZLibError, [ErrCode]);
end;
end;
@@ -913,8 +913,8 @@
AHeader.ExtraFlags := JCL_GZIP_EFLAG_MAX;
Z_BEST_SPEED:
AHeader.ExtraFlags := JCL_GZIP_EFLAG_FAST;
- else
- AHeader.ExtraFlags := 0;
+ else
+ AHeader.ExtraFlags := 0;
end;
AHeader.OS := FatSystemToByte[FatSystem];
@@ -1064,8 +1064,8 @@
Result := ByteToFatSystem[FHeader.OS];
JCL_GZIP_OS_UNKNOWN:
Result := gfsUnknown;
- else
- Result := gfsOther;
+ else
+ Result := gfsOther;
end;
end;
@@ -1229,8 +1229,8 @@
raise EJclCompressionError.CreateRes(@RsCompressionBZIP2OutBuffError);
BZ_CONFIG_ERROR:
raise EJclCompressionError.CreateRes(@RsCompressionBZIP2ConfigError);
- else
- raise EJclCompressionError.CreateResFmt(@RsCompressionBZIP2Error, [ErrCode]);
+ else
+ raise EJclCompressionError.CreateResFmt(@RsCompressionBZIP2Error, [ErrCode]);
end;
end;
Modified: branches/code_format/jcl/source/common/JclDateTime.pas
===================================================================
--- branches/code_format/jcl/source/common/JclDateTime.pas 2007-09-08 17:16:02 UTC (rev 2157)
+++ branches/code_format/jcl/source/common/JclDateTime.pas 2007-09-08 19:45:12 UTC (rev 2158)
@@ -684,8 +684,8 @@
Result := DateTime - (TimeZoneInfo.Bias + TimeZoneInfo.StandardBias) / MinutesPerDay;
TIME_ZONE_ID_DAYLIGHT:
Result := DateTime - (TimeZoneInfo.Bias + TimeZoneInfo.DaylightBias) / MinutesPerDay;
- else
- raise EJclDateTimeError.CreateRes(@RsMakeUTCTime);
+ else
+ raise EJclDateTimeError.CreateRes(@RsMakeUTCTime);
end;
end;
{$ENDIF CLR}
@@ -728,8 +728,8 @@
Result := DateTime + (TimeZoneInfo.Bias + TimeZoneInfo.StandardBias) / MinutesPerDay;
TIME_ZONE_ID_DAYLIGHT:
Result := DateTime + (TimeZoneInfo.Bias + TimeZoneInfo.DaylightBias) / MinutesPerDay;
- else
- raise EJclDateTimeError.CreateRes(@RsMakeUTCTime);
+ else
+ raise EJclDateTimeError.CreateRes(@RsMakeUTCTime);
end;
end;
{$ENDIF CLR}
@@ -1151,8 +1151,8 @@
Result := Result + '"' + IntToStr(DayOfYear) + '"';
end;
end;
- else
- Inc(N);
+ else
+ Inc(N);
end;
end;
Result := SysUtils.FormatDateTime(Result + Form, DateTime);
Modified: branches/code_format/jcl/source/common/JclEDISEF.pas
===================================================================
--- branches/code_format/jcl/source/common/JclEDISEF.pas 2007-09-08 17:16:02 UTC (rev 2157)
+++ branches/code_format/jcl/source/common/JclEDISEF.pas 2007-09-08 19:45:12 UTC (rev 2158)
@@ -854,8 +854,8 @@
Result := EDISEFUserAttributeHyphenDesc;
caAmpersand:
Result := EDISEFUserAttributeAmpersandDesc;
- else
- Result := RsUnknownAttribute;
+ else
+ Result := RsUnknownAttribute;
end;
end;
@@ -874,8 +874,8 @@
Result := EDISEFUserAttributeHyphenDesc;
EDISEFUserAttributeAmpersand:
Result := EDISEFUserAttributeAmpersandDesc;
- else
- Result := RsUnknownAttribute;
+ else
+ Result := RsUnknownAttribute;
end;
end;
Modified: branches/code_format/jcl/source/common/JclEDI_ANSIX12.pas
===================================================================
--- branches/code_format/jcl/source/common/JclEDI_ANSIX12.pas 2007-09-08 17:16:02 UTC (rev 2157)
+++ branches/code_format/jcl/source/common/JclEDI_ANSIX12.pas 2007-09-08 19:45:12 UTC (rev 2158)
@@ -3072,8 +3072,8 @@
TEDITr...
[truncated message content] |
|
From: <ou...@us...> - 2007-09-08 17:16:27
|
Revision: 2157
http://jcl.svn.sourceforge.net/jcl/?rev=2157&view=rev
Author: outchy
Date: 2007-09-08 10:16:02 -0700 (Sat, 08 Sep 2007)
Log Message:
-----------
Donation from Andreas Schmidt in newsgroups: CompareFiles and CompareStreams functions
Modified Paths:
--------------
trunk/jcl/source/common/JclStreams.pas
Modified: trunk/jcl/source/common/JclStreams.pas
===================================================================
--- trunk/jcl/source/common/JclStreams.pas 2007-09-08 16:55:25 UTC (rev 2156)
+++ trunk/jcl/source/common/JclStreams.pas 2007-09-08 17:16:02 UTC (rev 2157)
@@ -19,6 +19,7 @@
{ Contributors: }
{ Florent Ouchet (outchy) }
{ Heinz Zastrau }
+{ Andreas Schmidt }
{ }
{**************************************************************************************************}
@@ -357,6 +358,11 @@
// returns the number of bytes that were copied
function StreamCopy(Source: TStream; Dest: TStream; BufferSize: Integer = 4096): Int64;
+// compares 2 streams for differencies
+function CompareStreams(A, B : TStream; BufferSize: Integer = 4096): Boolean;
+// compares 2 files for differencies (calling CompareStreams)
+function CompareFiles(const FileA, FileB: TFileName; BufferSize: Integer = 4096): Boolean;
+
{$IFDEF UNITVERSIONING}
const
UnitVersioning: TUnitVersionInfo = (
@@ -416,6 +422,46 @@
end;
end;
+function CompareStreams(A, B : TStream; BufferSize: Integer = 4096): Boolean;
+var
+ BufferA, BufferB: Pointer;
+ ByteCountA, ByteCountB: Integer;
+begin
+ GetMem(BufferA, BufferSize);
+ try
+ GetMem(BufferB, BufferSize);
+ try
+ repeat
+ ByteCountA := A.Read(BufferA^, BufferSize);
+ ByteCountB := B.Read(BufferB^, BufferSize);
+
+ Result := (ByteCountA = ByteCountB) and CompareMem(BufferA, BufferB, ByteCountA);
+ until (ByteCountA <> BufferSize) or (ByteCountB <> BufferSize) or not Result;
+ finally
+ FreeMem(BufferB);
+ end;
+ finally
+ FreeMem(BufferA);
+ end;
+end;
+
+function CompareFiles(const FileA, FileB: TFileName; BufferSize: Integer = 4096): Boolean;
+var
+ A, B: TStream;
+begin
+ A := TFileStream.Create(FileA, fmOpenRead or fmShareDenyWrite);
+ try
+ B := TFileStream.Create(FileB, fmOpenRead or fmShareDenyWrite);
+ try
+ Result := CompareStreams(A, B, BufferSize);
+ finally
+ B.Free;
+ end;
+ finally
+ A.Free;
+ end;
+end;
+
//=== { TJclStream } =========================================================
function TJclStream.Seek(Offset: Longint; Origin: Word): Longint;
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <ou...@us...> - 2007-09-08 16:55:27
|
Revision: 2156
http://jcl.svn.sourceforge.net/jcl/?rev=2156&view=rev
Author: outchy
Date: 2007-09-08 09:55:25 -0700 (Sat, 08 Sep 2007)
Log Message:
-----------
compression of Unicode data:
- uncompressed (as previously)
- using ZLib
- using BZip2
Modified Paths:
--------------
trunk/jcl/install/JclInstall.pas
trunk/jcl/source/jcl.inc
trunk/jcl/source/jcl.template.inc
trunk/jcl/source/windows/JclUnicode.pas
trunk/thirdparty/unicode_data_extractor/UDExtract.dpr
trunk/thirdparty/unicode_data_extractor/make_jclunicode.bat
Added Paths:
-----------
trunk/jcl/source/windows/JclUnicodeBZip2.res
trunk/jcl/source/windows/JclUnicodeBzip2.rc
trunk/jcl/source/windows/JclUnicodeZLib.rc
trunk/jcl/source/windows/JclUnicodeZLib.res
Modified: trunk/jcl/install/JclInstall.pas
===================================================================
--- trunk/jcl/install/JclInstall.pas 2007-09-08 16:45:26 UTC (rev 2155)
+++ trunk/jcl/install/JclInstall.pas 2007-09-08 16:55:25 UTC (rev 2156)
@@ -65,6 +65,9 @@
joDefBZip2LinkDLL,
joDefBZip2LinkOnRequest,
joDefUnicodeSilentFailure,
+ joDefUnicodeRawData,
+ joDefUnicodeZLibData,
+ joDefUnicodeBZip2Data,
joEnvironment,
joEnvLibPath,
joEnvBrowsingPath,
@@ -377,6 +380,9 @@
// Unicode options
RsCaptionDefUnicode = 'Unicode options';
RsCaptionDefUnicodeSilentFailure = 'Silent failure';
+ RsCaptionDefUnicodeRawData = 'Uncompressed Unicode data';
+ RsCaptionDefUnicodeZLibData = 'Compressed data using zlib';
+ RsCaptionDefUnicodeBZip2Data = 'Compressed data using bzip2';
// post compilation
RsCaptionPdbCreate = 'Create PDB debug information';
@@ -475,6 +481,9 @@
// Unicode options
RsHintDefUnicode = 'Unicode specific option (JclUnicode.pas)';
RsHintDefUnicodeSilentFailure = 'Insert a replacement character if sequence is corrupted rather than raising an exception';
+ RsHintDefUnicodeRawData = 'Link resource containing uncompressed Unicode data (bigger executable size)';
+ RsHintDefUnicodeZLibData = 'Link resource containing Unicode data compressed with ZLib';
+ RsHintDefUnicodeBZip2Data = 'Link resource containing Unicode data compressed with BZip2';
// post compilation
RsHintPdbCreate = 'Create detailed debug information for libraries';
@@ -592,6 +601,9 @@
(Id: -1; Caption: RsCaptionDefBZip2LinkDLL; Hint: RsHintDefBZip2LinkDLL), // joDefBZip2LinkDLL
(Id: -1; Caption: RsCaptionDefBZip2LinkOnRequest; Hint: RsHintDefBZip2LinkOnRequest), // joDefBZip2LinkOnRequest
(Id: -1; Caption: RsCaptionDefUnicodeSilentFailure; Hint: RsHintDefUnicodeSilentFailure), // joDefUnicodeSilentFailure
+ (Id: -1; Caption: RsCaptionDefUnicodeRawData; Hint: RsHintDefUnicodeRawData), // joDefUnicodeRawData
+ (Id: -1; Caption: RsCaptionDefUnicodeZLibData; Hint: RsHintDefUnicodeZLibData), // joDefUnicodeZLibData
+ (Id: -1; Caption: RsCaptionDefUnicodeBZip2Data; Hint: RsHintDefUnicodeBZip2Data), // joDefUnicodeBZip2Data
(Id: -1; Caption: RsCaptionEnvironment; Hint: RsHintEnvironment), // joEnvironment
(Id: -1; Caption: RsCaptionEnvLibPath; Hint: RsHintEnvLibPath), // joEnvLibPath
(Id: -1; Caption: RsCaptionEnvBrowsingPath; Hint: RsHintEnvBrowsingPath), // joEnvBrowsingPath
@@ -964,6 +976,9 @@
{$IFDEF MSWINDOWS}
AddOption(joDefUnicode, [goChecked], Parent);
AddOption(joDefUnicodeSilentFailure, [goChecked], joDefUnicode);
+ AddOption(joDefUnicodeRawData, [goRadioButton, goChecked], joDefUnicode);
+ AddOption(joDefUnicodeZLibData, [goRadioButton], joDefUnicode);
+ AddOption(joDefUnicodeBZip2Data, [goRadioButton], joDefUnicode);
{$ENDIF MSWINDOWS}
end;
end;
@@ -1423,14 +1438,15 @@
end;
const
- DefineNames: array [joDefThreadSafe..joDefUnicodeSilentFailure] of string =
+ DefineNames: array [joDefThreadSafe..joDefUnicodeBZip2Data] of string =
( 'THREADSAFE', 'DROP_OBSOLETE_CODE', 'UNITVERSIONING',
'MATH_SINGLE_PRECISION', 'MATH_DOUBLE_PRECISION', 'MATH_EXTENDED_PRECISION',
'MATH_EXT_EXTREMEVALUES', 'HOOK_DLL_EXCEPTIONS',
'DEBUG_NO_BINARY', 'DEBUG_NO_TD32', 'DEBUG_NO_MAP', 'DEBUG_NO_EXPORTS',
'DEBUG_NO_SYMBOLS', 'EDI_WEAK_PACKAGE_UNITS', 'PCRE_STATICLINK',
'PCRE_LINKDLL', 'PCRE_LINKONREQUEST', 'BZIP2_STATICLINK',
- 'BZIP2_LINKDLL', 'BZIP2_LINKONREQUEST', 'UNICODE_SILENT_FAILURE' );
+ 'BZIP2_LINKDLL', 'BZIP2_LINKONREQUEST', 'UNICODE_SILENT_FAILURE',
+ 'UNICODE_RAW_DATA', 'UNICODE_ZLIB_DATA', 'UNICODE_BZIP2_DATA' );
var
Option: TJclOption;
Defines: TStrings;
Modified: trunk/jcl/source/jcl.inc
===================================================================
--- trunk/jcl/source/jcl.inc 2007-09-08 16:45:26 UTC (rev 2155)
+++ trunk/jcl/source/jcl.inc 2007-09-08 16:55:25 UTC (rev 2156)
@@ -217,7 +217,22 @@
{$DEFINE BZIP2_EXPORT_CDECL}
{$ENDIF BZIP2_LINKONREQUEST}
+{$IFDEF UNICODE_RAW_DATA}
+ {$UNDEF UNICODE_ZLIB_DATA}
+ {$UNDEF UNICODE_BZIP2_DATA}
+{$ENDIF UNICODE_RAW_DATA}
+{$IFDEF UNICODE_ZLIB_DATA}
+ {$UNDEF UNICODE_RAW_DATA}
+ {$UNDEF UNICODE_BZIP2_DATA}
+{$ENDIF UNICODE_ZLIB_DATA}
+
+{$IFNDEF UNICODE_ZLIB_DATA}
+ {$IFNDEF UNICODE_BZIP2_DATA}
+ {$DEFINE UNICODE_RAW_DATA}
+ {$ENDIF ~UNICODE_BZIP2_DATA}
+{$ENDIF ~UNICODE_ZLIB_DATA}
+
{$IFDEF SUPPORTS_UNSAFE_WARNINGS}
{$WARN UNSAFE_TYPE OFF}
{$WARN UNSAFE_CODE OFF}
Modified: trunk/jcl/source/jcl.template.inc
===================================================================
--- trunk/jcl/source/jcl.template.inc 2007-09-08 16:45:26 UTC (rev 2155)
+++ trunk/jcl/source/jcl.template.inc 2007-09-08 16:55:25 UTC (rev 2156)
@@ -96,3 +96,8 @@
// Unicode options
// insert a replacement character if sequence is corrupted rather than raising an exception
{.$DEFINE UNICODE_SILENT_FAILURE}
+
+// defines resource compression (uncompressed, compressed with ZLib, compressed with BZip2), mutually exclusive
+{.$DEFINE UNICODE_RAW_DATA}
+{.$DEFINE UNICODE_ZLIB_DATA}
+{.$DEFINE UNICODE_BZIP2_DATA}
Modified: trunk/jcl/source/windows/JclUnicode.pas
===================================================================
--- trunk/jcl/source/windows/JclUnicode.pas 2007-09-08 16:45:26 UTC (rev 2155)
+++ trunk/jcl/source/windows/JclUnicode.pas 2007-09-08 16:55:25 UTC (rev 2156)
@@ -100,7 +100,7 @@
// a reallocation to work correctly (use the WideString versions instead)
// - further improvements related to internal data
// - introduced TUnicodeBlock
-// - CodeBlockFromChar improved
+// - CodeBlockFromChar improved
// 07-JAN-2001:
// optimized access to character properties, combining class etc.
// 06-JAN-2001:
@@ -1353,6 +1353,14 @@
type
EJclUnicodeError = class(EJclError);
+// functions to load Unicode data from resource
+procedure LoadCharacterCategories;
+procedure LoadCaseMappingData;
+procedure LoadDecompositionData;
+procedure LoadCombiningClassData;
+procedure LoadNumberData;
+procedure LoadCompositionData;
+
{$IFDEF UNITVERSIONING}
const
UnitVersioning: TUnitVersionInfo = (
@@ -1372,7 +1380,15 @@
// the Unicode database file which can be compiled to the needed res file.
// This tool, including its source code, can be downloaded from www.lischke-online.de/Unicode.html.
+{$IFDEF UNICODE_RAW_DATA}
{$R JclUnicode.res}
+{$ENDIF UNICODE_RAW_DATA}
+{$IFDEF UNICODE_BZIP2_DATA}
+{$R JclUnicodeBZip2.res}
+{$ENDIF UNICODE_BZIP2_DATA}
+{$IFDEF UNICODE_ZLIB_DATA}
+{$R JclUnicodeZLib.res}
+{$ENDIF UNICODE_ZLIB_DATA}
uses
{$IFDEF HAS_UNIT_RTLCONSTS}
@@ -1383,6 +1399,13 @@
{$ENDIF ~FPC}
{$ENDIF HAS_UNIT_RTLCONSTS}
SysUtils,
+ {$IFDEF UNICODE_BZIP2_DATA}
+ BZip2,
+ {$ENDIF UNICODE_BZIP2_DATA}
+ {$IFNDEF UNICODE_RAW_DATA}
+ JclStreams,
+ JclCompression,
+ {$ENDIF ~UNICODE_RAW_DATA}
JclResources, JclSynch, JclSysUtils;
const
@@ -1409,6 +1432,48 @@
// while the data is loaded.
LoadInProgress: TJclCriticalSection;
+function OpenResourceStream(const ResName: string): TStream;
+var
+ ResourceStream: TStream;
+ {$IFNDEF UNICODE_RAW_DATA}
+ DecompressionStream: TStream;
+ {$ENDIF ~UNICODE_RAW_DATA}
+begin
+ ResourceStream := TResourceStream.Create(HInstance, ResName, 'UNICODEDATA');
+ {$IFDEF UNICODE_RAW_DATA}
+ Result := ResourceStream;
+ {$ENDIF UNICODE_RAW_DATA}
+ {$IFDEF UNICODE_BZIP2_DATA}
+ try
+ LoadBZip2;
+ DecompressionStream := TJclBZIP2DecompressionStream.Create(ResourceStream);
+ try
+ Result := TMemoryStream.Create;
+ StreamCopy(DecompressionStream, Result);
+ StreamSeek(Result, 0, soBeginning);
+ finally
+ DecompressionStream.Free;
+ end;
+ finally
+ ResourceStream.Free;
+ end;
+ {$ENDIF UNICODE_BZIP2_DATA}
+ {$IFDEF UNICODE_ZLIB_DATA}
+ try
+ DecompressionStream := TJclZLibDecompressStream.Create(ResourceStream);
+ try
+ Result := TMemoryStream.Create;
+ StreamCopy(DecompressionStream, Result);
+ StreamSeek(Result, 0, soBeginning);
+ finally
+ DecompressionStream.Free;
+ end;
+ finally
+ ResourceStream.Free;
+ end;
+ {$ENDIF UNICODE_ZLIB_DATA}
+end;
+
//----------------- support for character categories -----------------------------------------------
// Character category data is quite a large block since every defined character in Unicode is assigned at least
@@ -1440,7 +1505,7 @@
// the comments about JclUnicode.res above).
var
Size: Integer;
- Stream: TResourceStream;
+ Stream: TStream;
Category: TCharacterCategory;
Buffer: TRangeArray;
First, Second, Third: Byte;
@@ -1453,7 +1518,7 @@
LoadInProgress.Enter;
try
CategoriesLoaded := True;
- Stream := TResourceStream.Create(HInstance, 'CATEGORIES', 'UNICODEDATA');
+ Stream := OpenResourceStream('CATEGORIES');
try
while Stream.Position < Stream.Size do
begin
@@ -1529,7 +1594,7 @@
procedure LoadCaseMappingData;
var
- Stream: TResourceStream;
+ Stream: TStream;
I, Code,
Size: Cardinal;
First, Second, Third: Byte;
@@ -1542,7 +1607,7 @@
try
SetLength(SingletonMapping, 1);
CaseDataLoaded := True;
- Stream := TResourceStream.Create(HInstance, 'CASE', 'UNICODEDATA');
+ Stream := OpenResourceStream('CASE');
try
// the first entry in the stream is the number of entries in the case mapping table
Stream.ReadBuffer(Size, 4);
@@ -1681,7 +1746,7 @@
procedure LoadDecompositionData;
var
- Stream: TResourceStream;
+ Stream: TStream;
I, Code,
Size: Cardinal;
First, Second, Third: Byte;
@@ -1693,7 +1758,7 @@
try
DecompositionsLoaded := True;
- Stream := TResourceStream.Create(HInstance, 'DECOMPOSITION', 'UNICODEDATA');
+ Stream := OpenResourceStream('DECOMPOSITION');
try
// determine how many decomposition entries we have
Stream.ReadBuffer(Size, 4);
@@ -1825,7 +1890,7 @@
procedure LoadCombiningClassData;
var
- Stream: TResourceStream;
+ Stream: TStream;
I, J, K,
Size: Cardinal;
Buffer: TRangeArray;
@@ -1838,7 +1903,7 @@
if not CCCsLoaded then
begin
CCCsLoaded := True;
- Stream := TResourceStream.Create(HInstance, 'COMBINING', 'UNICODEDATA');
+ Stream := OpenResourceStream('COMBINING');
try
while Stream.Position < Stream.Size do
begin
@@ -1915,7 +1980,7 @@
procedure LoadNumberData;
var
- Stream: TResourceStream;
+ Stream: TStream;
Size: Cardinal;
begin
// make sure no other code is currently modifying the global data area
@@ -1924,7 +1989,7 @@
try
if NumberCodes = nil then
begin
- Stream := TResourceStream.Create(HInstance, 'NUMBERS', 'UNICODEDATA');
+ Stream := OpenResourceStream('NUMBERS');
// Numbers are special (compared to other Unicode data) as they utilize two
// arrays, one containing all used numbers (in nominator-denominator format) and
// another one which maps a code point to one of the numbers in the first array.
@@ -1997,7 +2062,7 @@
procedure LoadCompositionData;
var
- Stream: TResourceStream;
+ Stream: TStream;
I, Size: Integer;
begin
// make sure no other code is currently modifying the global data area
@@ -2006,7 +2071,7 @@
try
if Compositions = nil then
begin
- Stream := TResourceStream.Create(HInstance, 'COMPOSITION', 'UNICODEDATA');
+ Stream := OpenResourceStream('COMPOSITION');
try
// a) determine size of compositions array
Stream.ReadBuffer(Size, 4);
Added: trunk/jcl/source/windows/JclUnicodeBZip2.res
===================================================================
(Binary files differ)
Property changes on: trunk/jcl/source/windows/JclUnicodeBZip2.res
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/jcl/source/windows/JclUnicodeBzip2.rc
===================================================================
--- trunk/jcl/source/windows/JclUnicodeBzip2.rc (rev 0)
+++ trunk/jcl/source/windows/JclUnicodeBzip2.rc 2007-09-08 16:55:25 UTC (rev 2156)
@@ -0,0 +1,1203 @@
+/****************************************************************************************************
+
+
+ ..\..\jcl\source\windows\JclUnicodeBzip2.rc
+
+
+ Produced by UDExtract written by Dipl. Ing. Mike Lischke, pu...@li...
+
+
+****************************************************************************************************/
+
+
+CATEGORIES UNICODEDATA LOADONCALL MOVEABLE DISCARDABLE
+{
+ '42 5A 68 39 31 41 59 26 53 59 3F 19 96 EE 00 19 D6 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF'
+ 'FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF E0 24 30 44 32 10 02 4A 02 80 09 05 05'
+ '00 00 00 A5 14 00 00 BE 00 00 00 05 E0 F1 5F 0F A3 8E 29 00 D9 E8 69 86 AA 9B 21 B3 50 B6 E0 4A'
+ '3A 0E 83 45 C1 6E 82 DF 5D 49 27 62 AB 86 84 48 43 44 C2 64 D4 F4 4C C4 34 26 29 ED 30 9A 99 4F'
+ '26 A4 FC 2A 6F 34 A9 FA 98 C0 A7 B2 69 32 6D 26 68 53 F2 34 6A 69 AA 67 91 E8 54 DE D0 8C 32 4F'
+ '29 4F 4F 4C 86 D4 C9 3D 47 A9 B2 6C 8C 89 B4 A9 F8 A7 E8 C8 D3 4D 30 D1 30 09 89 81 53 DA 60 94'
+ 'F4 C9 B2 A8 24 A2 22 9B 4C 9E 68 9A 68 D0 8D 4D 29 FA 69 3D 4F 41 AA 7E 86 44 F1 36 A2 32 79 26'
+ '93 DA 9E 99 4F 48 DA 24 64 DA 8C 9F A8 9A 68 DA 9A 18 47 A9 EA 7A 40 D0 18 80 0C 87 A8 61 34 0C'
+ '86 40 34 0D 00 34 34 68 06 80 68 64 F5 00 0D 34 12 54 A4 DB 66 20 A6 40 80 13 29 81 34 D4 F4 99'
+ '01 A8 1A 00 00 00 00 00 00 00 1A 7A 40 D0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 64 DF EA'
+ '54 44 8C 40 0D 1A 01 A6 86 83 41 91 93 26 9E F5 29 98 14 D0 0D 91 3D 20 1A 7A 08 C4 18 9E A7 84'
+ '4D A1 A8 D3 6A 31 A9 E8 26 43 4D 8A 7A 7A 4C 9B 49 B6 A1 4D 3D A4 99 A3 28 34 69 A3 41 A3 23 46'
+ '20 C3 C3 24 9B F5 49 E9 4D 8D 50 45 22 21 0C A9 34 06 6D 53 4F 51 A7 EA 9E 51 A3 65 3C D4 9B 4C'
+ '51 E9 3F 6A 53 46 D4 7B 54 FD 53 4F 35 27 9A A7 A6 4C A0 F7 A5 27 E5 46 F5 47 A0 9E 99 26 8D 37'
+ 'AA 68 0F 53 F4 A6 F5 43 4F 53 D0 8F 53 23 4D 0D 3F 4A 3D 20 3D 47 94 34 03 C8 4D 01 E5 1E A3 66'
+ 'A4 34 01 A7 A9 E5 3F 54 34 02 15 52 28 03 49 9A 04 C0 98 98 1A 09 93 00 04 C0 26 02 69 81 18 4C'
+ '00 00 00 46 D2 62 60 4C 26 26 00 04 C0 00 04 C0 00 46 00 01 34 C8 C0 26 00 99 30 26 3F 27 8C B8'
+ 'B6 7B 7F F5 40 D3 05 C3 29 DC B4 4F 31 50 1A F3 13 CB 2D 93 E7 52 BA 7D 8C 83 FE CF 8C 93 B3 92'
+ '5E 37 19 E9 8A EC 29 46 EA 93 85 61 59 57 AB 50 BD FD F2 F9 57 65 D5 F9 36 A8 A3 C8 B7 91 AD 82'
+ 'F8 56 97 56 3F 00 CF 65 D0 5C CE 35 C6 0B 1D 87 86 86 61 EB CC CC 5C 5C 5D 66 EF 66 F8 F3 39 29'
+ 'CF 60 F2 F8 E5 07 F5 FA 6C 81 F9 D1 CF 6D 8D A1 3C AF 39 A9 E6 37 25 15 8B EC 6D A9 B5 DB 72 69'
+ '9C A0 F8 F9 CB 75 8C A7 E9 23 DD EE FA 26 66 EF D6 71 5E F7 CB 33 4B C7 6A F5 BD 15 2D C3 6E 3A'
+ '3D AE 87 47 DC F4 86 A6 BD C5 C6 FB D2 D7 73 67 FA 6E F3 67 83 C8 6E BE 3F A8 CF DE 44 F7 5D 3C'
+ 'D5 5C 73 0A EA D7 6A 6D 32 3B 61 81 5F 3B 21 CE 18 3F C5 07 E2 18 E8 49 89 61 A1 CA 2D D1 52 ED'
+ 'E5 A6 19 E7 76 6C 74 59 1F 48 F5 13 1A 33 65 8F 8A 7F 99 0D C3 A8 1D 87 E4 31 8D EB C2 75 51 73'
+ '51 53 43 AC 3D 0D E3 AE 22 74 AD 2F 99 F6 60 E1 30 0D 2C 32 EE 0D FD B7 E9 E9 F6 CB 14 CD 70 D5'
+ '62 AC 18 DA A7 88 AB AB B0 16 0E A1 9D 8D AB AD BB D5 E5 23 83 77 99 F0 9D 07 A4 BD A4 F5 08 5F'
+ '56 EF 13 8C 3C 08 2D 80 33 1B A6 6F 73 0E A7 8A 6B 0F 1A B9 D5 07 9A 5C 9D CF 99 F4 6A DF 57 9D'
+ 'C2 3A 75 C2 3A 5C B2 15 2A 29 12 CA 54 24 91 44 A1 21 E4 9C 36 1A 5C 08 6E 9E 81 10 15 88 4E 0A'
+ '9C 35 C9 CA B2 89 56 5E 8A 0A 65 08 C8 E3 D4 49 21 25 4B 8A 83 18 54 29 96 2C 70 C7 38 77 53 D4'
+ '28 8B 11 90 B9 C3 87 0E 2B 13 4C D6 4C 32 61 BA 52 53 1C 5F 0E 0A C3 87 27 0E 1C A8 D7 E1 D6 BA'
+ '2B 15 54 30 C2 43 7C 9C E7 1E 76 23 4E 66 67 73 9B 48 79 38 58 B1 5A 2A E1 42 0C C8 4C 72 E7 EE'
+ '74 39 69 42 88 A1 42 08 20 D8 A8 52 94 A6 F4 25 04 1C 8B 32 E5 8E 05 72 A3 99 14 59 18 D4 A9 53'
+ 'A7 46 0B D0 D2 35 0D BA A9 01 01 01 19 09 44 80 86 12 AB 89 CC 75 A5 78 AD 28 94 84 84 C5 39 94'
+ '84 84 84 92 29 0A 64 44 48 96 9D 58 49 6A C0 40 60 41 02 A1 01 01 5A 14 CA AA AA AA 9C 71 06 56'
+ '23 2C D3 A7 4E 99 11 12 51 0C 88 C2 8C 94 96 73 5A 59 56 54 24 2F C2 43 01 56 12 88 A1 21 20 54'
+ '20 61 02 81 4A A5 5C 35 56 56 53 29 BC C8 E3 35 85 8D 5C DC FD 45 50 A8 54 2A 54 70 E2 D6 19 32'
+ '61 89 9A 96 A5 DD F1 02 E5 0A 71 74 DB 59 C5 72 E5 F9 CC 38 D7 1A BD 4A 85 29 D8 50 41 4D 84 C9'
+ '84 E6 7B 5C C9 9B 8D 4A 67 18 6A 70 62 98 3E A8 20 EE 0E 6C 63 AE C3 BF B2 75 F9 15 0A 18 EC 3C'
+ '9A 9A 4A 2A 14 DA B9 EB 55 52 A4 FB FB 16 AA 9B 02 76 D4 5C AD 74 2A 95 39 0C FA 56 AB 58 9D 6A'
+ '54 CA A1 AC C4 B1 62 A3 9D 88 ED 7B FF 76 A7 0A A2 A2 A1 43 0E 41 65 9E 16 2A E3 12 26 6F 49 62'
+ '63 92 25 E4 E3 09 86 26 6E 06 35 8E 0E 3B F2 E3 87 18 50 28 51 5D 5C BD C6 2C 56 BD E2 B5 ED DE'
+ 'E2 B9 75 75 BB 4A B9 73 BD 7A 04 40 1A 21 10 73 74 87 22 D7 43 68 4E BC 2A CB 66 C3 81 6D 39 0C'
+ 'CC D1 99 99 B4 EC 77 D6 46 9D 37 2A BC F6 EA 50 A1 D1 B2 07 E3 CC 9A CD 86 2E B8 1D CE 43 72 86'
+ '1D 19 C2 20 99 30 EC 13 24 A5 25 22 44 83 CA 67 84 EE C4 C9 AD AF A7 9B 49 52 A6 8C 15 8E F2 AD'
+ '6B 52 A5 14 41 C9 42 81 D2 A0 1C 1D 39 63 01 60 2C 15 82 9F 82 02 08 28 B0 80 2B DD F0 6F 09 E0'
+ 'E2 8B 8A DE 3E 69 53 9C 43 73 08 36 67 55 5A 73 51 D5 CE 8C A0 A3 22 26 53 29 94 93 27 A9 A8 C8'
+ 'AE 59 1A 64 63 1D 62 15 3D 10 90 9B B6 1E 5A 83 CA 94 E4 5D 64 9C 72 DC 18 2E CB 8F 2E CA C0 53'
+ '26 6F 4F 13 1E B4 1E 70 CB C7 DF 43 0C 4C 9E FE 13 C3 03 A9 72 6F A2 44 8F 3F E3 0C 75 71 C2 84'
+ 'EE 93 A7 1D F9 57 1A C1 2A 4C A1 21 C0 86 18 86 6A 86 44 12 07 20 11 91 98 2A FC D4 45 10 40 44'
+ '44 52 2C 26 6E A1 43 62 D8 A0 85 10 41 77 4E 39 68 08 5D 4A 87 24 1E 31 43 5E EA AA AA 0C CA EC'
+ '31 36 2E C5 95 95 93 8F E0 80 82 37 BB 3A 8A 14 28 87 0D 44 29 B9 66 3B 00 E3 8C 34 8E 39 18 98'
+ 'C2 90 48 35 93 27 68 72 02 0D 65 16 CF 10 DA AE B6 2D 8B 81 66 66 B3 CC C8 C9 5C BA B9 7E 75 C0'
+ '6F C5 76 41 04 1A E8 76 46 2A 57 7A 2C 40 A0 88 20 82 13 41 06 A5 A8 35 2B 15 2A 50 A2 D8 15 2A'
+ '50 A5 14 28 50 10 44 28 20 82 B4 54 A5 55 43 4E B0 BD 8D 37 BD C0 F1 77 BB 19 1D EC F3 CC CF 48'
+ '6C 57 B9 C3 2B 95 56 C2 FB D6 2B 86 25 4C 6A 73 70 2D A6 D3 20 DB B4 A6 53 26 2C 2B FB 18 6C 56'
+ '66 26 B3 5D 9A D5 76 AC 85 72 C2 AE 13 17 F3 4D 34 D3 28 94 44 3A 73 91 5C 2E 61 7B 97 28 6D 82'
+ '09 98 AC 74 D8 E3 5C 4D C2 E0 E6 93 C3 57 0A 95 29 9A 73 84 77 1F 1C 0E 03 59 01 04 1C 8E 3B 9C'
+ '40 E9 D4 E6 6A B1 9A ED 50 D3 5A 1D 54 A5 C2 B5 2A 6D 36 AA 6D 50 3E A1 86 18 E1 74 E8 CD 66 BC'
+ '75 06 B0 71 DC 72 AB 9E 46 45 89 CC 99 C8 6D 2C 58 C3 08 B2 82 17 32 71 C7 C8 C8 38 14 C9 9D F5'
+ '35 33 32 4A AA 44 BB FC F9 B0 C6 69 D5 48 59 94 59 99 AB 1B 02 E6 91 5B A9 5C B9 C1 32 48 C8 E1'
+ 'C4 C6 B2 38 38 D8 A2 9D 06 3B 3A D0 ED A5 39 B8 83 20 B9 CE 1B BB 0B 96 E5 D5 EF D7 20 C5 A4 48'
+ 'DC 63 89 89 A9 50 90 48 72 44 89 2D A6 85 06 F9 BE 4C 98 68 38 0D 58 98 E8 34 1D 85 C4 A4 4B 62'
+ '99 61 38 CC 58 64 6D 16 91 C6 35 84 E6 5C 34 50 58 94 54 24 48 B7 4E 07 20 71 39 E7 D7 0C 16 01'
+ 'CE 52 08 6B 2E CA F2 AC 5C 63 B2 3A 72 EE A4 50 09 12 52 24 6D 9A DA 1B 06 20 61 86 18 90 59 48'
+ '80 24 48 91 22 3A 4A 01 33 84 DA BB CA C5 ED 25 48 A4 52 29 56 53 44 AB 29 66 63 8A 68 88 2C 97'
+ '86 A5 C3 87 27 0E 25 78 BC 57 8A 65 5D C5 A5 6A 32 38 CB FA 71 97 ED 65 90 B2 4A 4B 29 4E 55 29'
+ '61 58 2C 2A CA B2 AF 7D 85 29 CE B2 2E 5C B1 62 B3 99 AC 9E 67 38 EE 38 E3 B1 B9 62 B1 31 31 3B'
+ '12 90 F2 25 25 23 1C 4C 7C 45 07 76 64 C9 8F D4 F8 1B 0D 86 18 6C 2A 56 C1 10 41 A0 E4 D7 22 E6'
+ '2B 13 9E 44 BC 13 98 E8 99 33 A8 E9 4C 4E 73 20 6E DE 0E 39 CB 04 2E 92 87 02 A1 43 BE 10 41 03'
+ 'B3 13 26 48 24 48 97 C4 76 14 C9 93 09 12 24 70 AD 5C EA 67 33 13 26 4F B1 0A 47 9A 91 23 C3 99'
+ '33 9B 98 E6 E6 5C CA B4 39 78 0F 71 BD CE BE FE 01 A7 88 70 E1 C0 E6 3A 35 22 84 85 ED 35 22 08'
+ '0B 56 42 D1 67 0A 38 C8 CA 24 71 05 A2 23 2D 21 C5 A4 D3 4A 14 20 CC 72 46 83 41 06 83 9F 13 11'
+ 'BA 47 C9 CE 43 BE 61 42 AB 72 A1 43 4A D3 63 A0 2E 5E CA C5 55 4C A0 77 1C 91 8A C7 AF CB 84 CE'
+ 'E4 AB F0 75 4E 3A F1 57 6D 89 A9 F8 79 29 CC B1 32 66 9D 1A 0D FD F3 33 43 76 89 1A B7 18 31 33'
+ '44 FB 73 CB 7D 30 D3 3A 53 0C C5 D9 86 26 76 97 02 61 86 28 EC 31 51 C9 9C A0 C3 34 D4 C9 9B D8'
+ '04 CC 98 9A 7C 4D 05 96 21 89 88 62 79 C4 D2 3B 8A 57 5C 44 0C B4 AB 2B B5 74 46 10 12 CC 17 EB'
+ '64 36 3D CA 8E 32 45 7A 61 A9 08 C8 4B AA 25 0A 14 EA D1 23 C2 5D E5 DE 56 54 3C 1E 6E A5 48 85'
+ '08 84 42 84 E3 9D A8 82 B4 28 AA 2C 98 60 D2 EE E3 0C AE AE AE AE AE AA 15 29 04 17 A7 4D 43 26'
+ '62 64 C9 62 1E 2A CD 4A 47 0F 69 86 18 61 E8 E9 CF 2A A0 95 B8 E0 83 7D EC 89 18 92 91 23 86 A1'
+ '35 32 BD 6D ED 4A C2 AA A1 42 08 22 B4 2C A4 4A 44 8C 68 04 8D 8B 5A 99 32 64 CF 21 34 CD AA C2'
+ 'B2 61 86 18 9D 01 8B AA 29 93 09 93 3C C2 9C CB 2A AE B8 C6 D6 18 F2 89 93 0C AA AA B3 34 AA 6F'
+ '50 A5 FB 98 72 2B 97 3B 39 9E 6F CF 1B 35 6A 5C 3B 55 C8 20 79 92 35 AD 6A 44 89 2D AA 5C B3 37'
+ '28 5B 06 39 DC 71 86 62 87 0A 99 B1 6C EE 40 41 06 D2 85 28 51 43 B8 C3 19 B4 CE 85 8E 26 27 84'
+ 'A8 A7 22 EB 49 C5 32 64 62 6F E9 5A 0D 06 8D 05 D4 D4 CE 35 A7 4B 31 E1 2B 0E 3A C9 75 1C AC 6A'
+ '62 77 62 56 B3 59 61 83 8F D4 41 65 9D 6B 52 E2 B5 B0 21 E3 0F 1B 0A 0E 3B 8C 6F 9B E7 83 41 A0'
+ '85 A0 D0 B4 78 46 38 98 AD 6A D5 61 96 D7 74 9C 73 AD CD E5 CD 8B 35 AD 15 E3 3B B7 35 AD 27 1A'
+ 'C8 32 B6 41 92 EB AC CD 4A E5 20 72 64 C9 1B 0F 30 A6 4E 66 23 A9 1B 54 29 12 24 7B 3A 99 22 4B'
+ '13 1C 48 31 31 3C 41 85 22 52 24 4A 44 B1 31 31 34 A9 04 A4 4C 55 26 6B 66 26 89 93 3A 57 4A AA'
+ 'F0 96 4B C4 28 52 0B AA 2A 14 24 BC 45 32 46 21 8E A9 16 56 56 56 59 27 1C 74 EE E6 2B 13 74 89'
+ '0A 44 A4 66 48 EF 4F 9D 8D C3 83 8C 42 63 63 4C 92 94 8B 29 12 0C 4D 49 C9 A9 9D 96 26 6C 6B 76'
+ '54 0C 99 61 93 1C 1B 16 C5 99 DD 5B 95 CB D0 CD 66 77 8B 2B D8 B2 3B 4A A4 19 28 18 F3 29 C6 32'
+ '16 49 8C 93 9B 93 97 18 BB 8C B8 95 D4 1D 10 76 60 70 71 C9 67 23 58 4E 65 46 06 18 AA AA BA AC'
+ '1D 29 CF 8A 4E 9C 73 35 D9 61 8B 87 9A 73 81 69 20 88 19 86 C9 DC EC 26 4D 83 1A 53 0D 39 94 54'
+ '26 0D 83 16 59 AE 75 A9 6C 3A E5 8A 0C 0F D1 06 83 41 43 10 C7 1C 4E 04 C4 CD 2C 7C C2 66 26 5D'
+ '5D 59 3D 88 20 20 B0 EE 77 21 42 85 61 51 1B 68 73 F4 58 B1 A6 A6 15 55 AE A5 63 25 B5 58 B1 41'
+ '74 2A 9B 56 B3 B4 AE B6 64 64 5C B9 E1 95 2A 50 E9 1D 3B B8 79 95 87 5F 61 B0 B1 65 C2 B8 56 D1'
+ '70 F8 F9 9C BD 5C 24 84 CA 62 D3 19 54 C2 D8 97 A5 62 AC B2 CA 47 11 61 46 38 BB B3 4A 92 A5 60'
+ 'A2 AA AA 25 12 8C 1A 8A 2E 48 20 26 62 6F 9B E6 FE 93 8D 71 29 10 1C 0C 64 3E 50 46 A3 9C EA 59'
+ 'AE 82 A5 0A 19 94 29 42 81 AD 64 1C CB 31 5C A9 53 30 B1 63 91 79 55 AF 49 72 15 51 54 1C 40 40'
+ '4D 09 0C 30 92 18 6A B2 84 84 81 41 51 42 12 15 53 87 38 74 25 45 52 A7 5E A8 66 4C 4C C8 99 D4'
+ 'C3 5C 2E 1C 01 D4 39 B1 41 AD 40 E6 B0 D2 9D 4C CE 67 44 C9 93 53 2A 9B 72 71 D3 8E E9 C7 1D 3A'
+ '73 68 E3 9D D2 07 33 08 84 48 C7 13 6A BF 13 1C 8D AD 66 0E 54 82 0E 95 AA 8A 11 17 54 4D B2 48'
+ '28 D4 17 8A BA 70 E2 B7 21 1C CA 99 2A B1 25 59 11 19 24 85 52 34 E2 EA 91 46 82 18 66 1A 64 C9'
+ '9B 54 D1 29 2E BA E5 99 A8 18 62 9D C4 E8 71 C7 28 41 03 8E 3B 0C C3 2E 45 32 73 3C E2 C9 31 35'
+ '39 AA 07 42 AC 17 08 35 AB D0 28 5E AB 98 5C E2 8E 3A 14 F1 AA 53 62 AA 2A 54 A9 A5 69 55 A1 4A'
+ '14 34 A8 82 08 39 57 2A 71 86 2F E4 03 0C 32 B9 61 86 18 6D 29 86 18 99 41 8B 87 87 04 17 4E 38'
+ 'E6 DD 81 7A 2A 85 4E 6A D7 D0 77 AC 65 92 D3 A7 49 A4 D2 1A 42 EA EA E6 41 A2 85 3B 74 A2 A1 42'
+ '58 70 8B 56 C5 42 0D AA 22 0E 52 84 2A 64 8A 2A 50 B9 52 94 0A 14 28 50 E9 57 59 71 61 5A 95 38'
+ '3B F7 2F B5 5C B1 63 32 E5 CA 10 6E 81 C7 1C 74 EE EE 3B B8 E9 D3 8E 38 E3 8E 51 98 63 21 C7 35'
+ 'CC AC CE D3 1A DC 71 C7 1C 71 FA BD 10 71 94 C9 93 34 AD 2B 9D 64 A8 40 EA D0 41 0A 24 6B D5 D7'
+ 'C1 C9 93 26 4E 64 F1 1C 24 48 91 20 DC A6 78 09 93 99 32 6B B4 9B B8 78 EE 70 C1 07 0A 82 08 19'
+ '98 90 62 62 62 6F 96 2B C9 89 C2 48 91 67 61 8B 3B 0C 0C 30 C6 A6 24 B7 A5 22 52 24 6E DC B7 6E'
+ '50 54 38 48 18 D8 AB 10 69 0D BE 5A 0D 6B B2 BC 35 CA 9E A5 48 33 30 30 33 CF 08 31 31 34 E9 34'
+ '18 AE 85 23 50 4C D6 C3 70 D0 7D E6 63 97 CB A7 4E 38 EA 75 BD 21 61 AD 50 B0 57 A8 AA AA AA A1'
+ '22 16 8D 06 F6 1A 0A 18 E2 30 62 18 AC 4D 1A 0D 1D F6 90 C7 12 C1 86 59 0C 33 4D 48 94 94 10 59'
+ 'CD 47 96 5C 2A A8 E7 E4 C3 C8 E6 2C 5A C5 8B 22 CB 0B 23 A3 5A C9 30 CC 68 35 77 39 94 C3 96 CC'
+ '33 16 75 DB 85 06 50 41 9E 6A B7 B1 6B 16 A2 A1 4E 8A 07 91 0A 08 1C 7F 01 0A 22 EB C0 BB 8E 39'
+ 'CA 41 07 74 A7 3F 6F A3 51 E8 07 38 70 6A 9C 1A F5 8C BF 8A DB 58 0B 24 B8 63 18 C5 7A AA D6 2D'
+ '2C 05 8A A9 AE 12 E2 AE B1 E1 1C 4B CB B8 B7 B7 7F 02 E2 08 50 A1 2A 64 A1 12 21 4A 45 C4 60 C0'
+ '05 13 31 2A 4C A4 40 31 2D 0B 04 24 31 42 52 34 A3 30 24 C9 30 89 10 01 30 A4 C3 BF E0 69 B1 2E'
+ '10 61 C0 2E 1C A0 44 22 62 A5 53 22 9C 26 00 20 86 09 42 24 A4 60 90 98 51 86 56 95 29 A4 0A 02'
+ '81 20 84 70 04 01 81 80 20 84 C2 80 C0 32 A6 1B 01 81 94 5A 02 92 84 98 15 99 06 61 88 06 61 51'
+ '99 10 C1 00 26 08 19 81 52 65 98 02 91 22 66 01 88 07 0F 06 00 21 80 A6 66 24 0A 11 26 49 86 25'
+ '42 08 66 08 64 4A 02 60 46 60 09 88 A4 21 5A 28 08 94 09 80 22 10 88 1A 5A 44 60 80 64 94 21 94'
+ '99 54 A4 08 21 49 80 49 95 0A 10 88 28 48 99 9A 49 91 20 84 09 81 66 06 21 18 09 00 98 41 66 05'
+ '02 65 52 60 02 20 12 24 08 91 A1 4A 01 88 42 91 22 10 A5 26 69 00 99 46 60 89 00 99 18 94 99 0A'
+ '50 29 41 A1 28 46 21 0A 45 70 98 13 03 4C 20 14 83 10 AC 40 31 2A C4 AD 28 95 40 12 C8 04 48 D0'
+ '2C 4A 01 4A 25 22 83 4A 90 53 13 28 4C 10 40 10 42 51 10 81 4A 84 32 23 0C AC CA 8C 12 CC 24 B2'
+ '8C 48 84 C8 14 29 24 88 A5 28 D2 00 41 0B 48 92 C0 AC CA 2B 10 25 2A 44 13 09 24 29 4A 33 20 24'
+ 'C8 0D 28 C4 A9 04 88 11 25 02 50 31 2A 14 85 20 B4 83 4C C0 0E 13 00 8E 08 06 20 02 84 09 81 46'
+ '84 28 44 0A 41 A4 12 80 29 30 88 45 0C 0C 02 93 20 D2 84 40 94 8B A4 38 C3 80 05 C2 64 76 AB 26'
+ 'D5 8D 17 63 5B 05 EB E8 35 34 28 8C D5 FE E6 C4 FE 13 07 9E D6 3E B6 4D D6 B7 5E DE B5 F1 ED 8B'
+ 'C0 C2 36 30 64 6D C6 6E A4 BF 97 F2 FE 62 0E F5 13 BB 4C 69 44 30 47 12 A6 24 F0 49 4F 11 33 69'
+ '1C 63 0E B8 C0 DF BA 55 DC B0 E6 44 C1 1D 7E 01 1C 60 AF CE 70 C9 1E 61 D1 23 D2 50 93 31 64 A1'
+ '28 4A 12 37 A4 91 49 22 48 EF DC A7 BA 94 61 A8 49 A3 53 28 94 44 A9 2A 50 BA 4E F9 34 FF A4 47'
+ '34 6E 75 07 BD 1A 9A B4 D6 1A D3 DF 1C FC 09 AE D7 7C 46 BD D2 4C 26 48 A4 3C 72 95 D2 53 27 C6'
+ '53 A2 6C 11 D9 50 6C 4A 93 46 53 94 86 54 76 54 14 93 89 50 95 46 C8 AB 1E 73 C9 58 9B 32 B5 11'
+ 'EA 32 57 15 E5 81 F2 1B 43 E5 2C 47 C5 91 B5 3E 63 6C 6D CB 33 69 B8 DB 16 46 DC E8 6C 93 73 43'
+ '6B 6B D8 49 B4 EC A7 6F D3 39 3A A9 E9 E9 F9 FF 07 7A 86 B9 54 94 8D 93 C3 E1 A8 D3 D5 55 7A F4'
+ '4A 9E FC 05 2A 55 A7 39 28 92 99 39 D2 ED 92 89 3A 34 D4 C8 D6 99 4D A9 47 71 29 7A 2D 92 95 1B'
+ '24 E3 66 D4 BD FA C5 D2 2F C5 E1 6D 5E AA 75 D8 2E C5 7E 35 D9 2E CD 76 98 25 5A AA B9 2D BB 9C'
+ 'A0 BF 12 C0 9E 4E D1 8B 75 01 FE A5 94 5E 45 58 A5 0A 54 25 8A 5C 25 42 3A D4 2A CD 2C AB 95 56'
+ '36 43 2D 9D 27 25 1F 96 E8 90 11 45 C1 CA 22 17 26 C8 FF 8B 6E 61 21 E5 30 7C BB A7 25 DA 2F 78'
+ 'BA F4 78 22 F2 9E E9 2F 12 FD 2F 6F 15 78 A6 E1 06 31 A6 01 D4 0C 80 5D C1 28 28 3F A0 64 19 28'
+ '06 01 42 24 02 8A 4F F7 6A 90 C9 81 90 C9 E6 33 D3 65 5B 81 4B 2A 1A 58 6E 2D F3 D4 95 1A D5 9B'
+ '89 B6 CD 7A 25 29 14 DB C4 9B 86 C3 6F 6F 36 6D BD 2D 66 B3 5C AB 61 86 86 4D 78 69 24 16 CC 89'
+ '37 13 68 19 49 9B 0D 25 03 4B 2A D2 AF 51 A2 8E 68 8A F2 A1 84 81 A8 D0 92 6B 37 05 C5 88 26 D3'
+ '50 B7 AA D3 0D 56 BC EC 33 67 3A 8D 66 E2 A4 F9 06 61 2A A4 9A D1 11 FB 6A 6D 81 22 5D 6E B4 D6'
+ '26 85 60 DE 4E A8 A3 AD 86 08 82 78 B6 F1 BC 1B DB DB EB 03 42 2A 36 19 35 26 C9 AB 2A 09 4D 08'
+ '2A C9 86 A5 0D 52 86 64 A2 4C 98 02 92 52 42 29 68 A8 D0 C9 86 4C 99 C1 11 52 74 41 11 50 86 90'
+ 'A8 C1 41 41 A0 6D 9A 02 B3 27 FC EF 76 35 E8 38 D1 0D 27 15 DF CE 3E F1 53 1B B9 A3 6B 71 B4 AB'
+ '4D BE 35 B5 75 0F 2F 0C 42 E1 C2 D6 CB E0 77 EE 93 9B 3A 33 A4 14 28 E8 0C 01 D5 9D 50 A3 9A 14'
+ '28 B7 14 28 FF 05 0A 14 28 50 A1 42 85 0A 14 0A 45 0B 77 22 85 0A 30 E5 B8 A8 D4 52 36 76 02 85'
+ '0A 14 28 51 C9 14 28 BE 62 92 1B 4D C3 86 47 C6 B7 0E 3E 19 08 84 D4 11 A1 A1 A2 00 D0 D1 91 5B'
+ '2C B6 B5 CD C4 B7 4A 5A 52 53 7F F3 CA 5F DF 99 B7 49 7B FF 37 16 28 6B 87 F3 1B D1 BA 0F 03 78'
+ '37 03 98 5A B1 AB 11 C0 1C 48 20 06 97 4B 19 96 D9 C6 BF BF BF ED A7 BA ED 6E E8 E3 40 62 34 E7'
+ 'D1 5D 15 98 FC D9 23 07 38 67 DE 9D 18 97 16 27 51 62 75 4C D1 CF E2 02 74 01 38 E0 7E AF 54 EA'
+ '84 B1 2F AA 73 2E 30 8B E9 1F 2F 94 4E F3 09 C0 82 82 E0 63 39 7C 0E 5A 72 D3 94 9C A4 E5 26 C0'
+ 'C5 1D E0 EC 76 3B 23 88 F2 90 76 3B 1D 8E C7 63 B2 48 93 24 8A 5A 6C 05 36 11 6C 30 EB 12 4A 94'
+ 'C9 F6 E7 B3 2F C0 CF 70 84 D6 3C 47 91 AC 6D 73 B0 B1 48 A1 AC D1 18 F8 27 CB B2 3B 27 D8 41 DC'
+ '2F C1 CD 4D 14 21 1D 48 11 0F BF 90 9B 0E 4F DA 3E B1 C6 9F F7 74 1A A9 2C 39 EE 45 ED E5 E0 BA'
+ '1E 4C 34 85 B5 BD BA 5B A5 BA 5B 25 AA 5B 25 B2 55 8F C7 E3 F1 F8 FC 7E 7A 63 F1 F8 FC 7E 4D 1E'
+ 'A9 06 02 40 16 DC 16 84 F1 9D 20 13 86 78 E5 91 E4 1E DE 0C FE 11 23 30 B1 90 49 F2 09 9F 34 06'
+ '7C D0 5F 12 0A 6A 8D 31 AA 20 97 84 12 11 14 84 34 4B 8D 18 E3 1E 69 46 8A 11 A1 A3 58 34 34 34'
+ '6A 4A 22 8C 84 34 6C 4D 58 D1 14 6C 6C 6C 68 6C AB 1E 15 63 C2 10 D9 14 6C 90 86 8C B2 B4 D9 0C'
+ '64 AE 21 93 A4 31 E1 08 86 43 2B 4D 0D F6 83 42 9B 32 B5 12 B5 34 C1 09 1E 8B 3D 1E 8F 51 1E A3'
+ 'D1 E8 F6 12 33 18 E5 94 64 65 11 94 64 64 64 65 D2 32 8C 8C A2 32 8C 8C 8F 46 46 86 C8 65 81 5C'
+ '57 5E D2 C1 2B C2 BD 64 A5 2B 8A F1 F1 65 58 95 68 F1 6C 9E 45 6D F6 DD CE FA A4 5A 31 6C AB 88'
+ 'D4 59 C2 CE 39 F7 CF 51 B1 9E D9 1B 4A F1 BA 04 B0 46 C6 C6 C6 CB 1E 71 1B 47 D7 B4 FA 91 B9 64'
+ '6D 1B 1B C1 AE B2 5C 7F 0E 17 88 B2 EB 72 9D 59 2C F9 C7 4D D4 A2 E7 3A B2 EB DE A8 A7 68 C1 D7'
+ 'C8 B4 65 A7 6A 65 A3 57 6A 46 BC B9 B5 62 53 D6 3C DB 66 71 79 19 B5 13 57 96 93 9A CC C4 3F 1B'
+ 'F2 75 32 D8 B1 A4 FD 7F B5 A7 B0 DD 74 7F E8 14 F1 5A 0B 6D 5F 45 CE DC AB C7 7C CE 7D AA 53 F4'
+ '1E 03 5E AC D4 D4 FA 8E 6B AC D2 6B 45 D6 16 2F EA 37 FC 11 FF F6 29 BD 6A DA B7 ED 71 18 A5 A4'
+ '58 D9 45 A9 EB 60 36 31 59 E1 14 35 F9 2D 83 8C 50 7B C3 64 18 F7 DB B1 4E 80 C4 7B 9D C4 E7 B6'
+ '68 4B 1A 7B A3 7D 98 AC 7D BB 23 78 C3 34 6B F3 BB DE F4 D7 75 BA BF 3F E0 2C 15 F0 89 FE C3 4D'
+ 'F4 85 A3 81 E4 4F 78 92 31 CE 2F 1A 01 B4 C1 46 A3 47 71 B4 0A 7A 22 22 B2 81 89 57 88 8C 08 A2'
+ 'D6 82 D6 95 F9 5E 97 A8 BC 64 D0 8C 9A 00 45 B6 BB DC BA 6D 30 09 BC DC 79 06 CF 30 77 ED 3E 16'
+ 'ED B6 02 98 AD 56 76 8B 86 CE 0A 91 64 B8 0B 26 89 1E 0C EA 9C D0 79 FD 24 75 3B 8A 8F F9 A7 A8'
+ '66 BD 36 18 C3 3F 01 54 F7 E7 8D D9 3B C3 BE B3 B0 29 F2 9E 2E E9 77 0B A6 5D 32 CC 94 B8 2F C4'
+ '9C 79 BC E2 F9 5C 8F E5 58 E0 66 87 02 40 B9 A2 44 F9 A4 BF ED CD 70 E6 B0 79 65 A0 40 86 87 B0'
+ '0F 35 B0 08 2B 76 72 D9 F6 9E 73 D5 CB 51 87 3C 13 E0 9A 4C DE 05 31 9C BD C5 E1 F5 93 88 72 A4'
+ '4E 22 26 09 BA F3 FF D7 21 D9 CB DB CB E1 53 3E 06 0A 18 B4 C5 AC 2D 91 49 14 A9 5D 96 CC AE 4B'
+ 'CA 43 54 57 E0 6A 8A 1D E3 48 11 D1 21 C1 9C 3D 98 F2 8F 9B 4E 38 81 AF BD 10 D7 94 03 3F D2 CC'
+ '90 83 DC 38 67 90 82 61 7E 31 C2 B1 CF 1B 92 42 92 8F 46 55 0B 3D 7B 85 9E B3 D6 7A CF 59 EB BC'
+ '5F 35 6F B3 F4 16 64 3A 0D 7F 41 9C 63 43 7A 70 C6 B1 73 26 F5 9B CA 16 DB C6 17 72 37 3D BB 6D'
+ '4E DF 31 6E 30 58 1B 94 64 73 F9 4F 63 99 47 6E 76 2F 99 4D 66 52 E6 17 2E AE 73 16 EA EB 95 3D'
+ 'B9 C2 79 98 87 28 74 49 8F 50 85 20 29 E7 E8 70 1E E5 CA A6 B6 B2 AA A3 55 55 55 9A A8 E6 AC D5'
+ '9A A5 59 AA 1C DD D2 E9 22 66 F3 91 9D 36 88 F9 76 3C FE 73 C7 89 78 67 33 09 A1 9C 9F CC 6B 0E'
+ 'DB A0 19 E1 03 9E CE 0F 09 B4 FA C2 EF 9F D4 4E 5C FC 5C 4B 49 06 90 94 3A 77 21 FD 2E 1B 63 F4'
+ '70 9E 13 C1 78 2F 00 78 0F 01 FC AB BF 5A 2B 45 77 CA F3 18 E6 89 79 9E EC E6 C7 FB 75 DD 2A 9B'
+ 'D5 D7 AD 85 06 ED F5 A3 ED 37 8C 33 72 86 74 D8 1D 31 A1 28 A4 EE 4B D1 03 C2 F3 D9 C8 C8 D1 B6'
+ '4C 0B E6 F9 DD B7 CE E1 BE 6F 9B D6 F5 B1 7B 7B 16 35 53 D2 9C 7D D7 F5 37 4B 9D EC 4D D1 E2 9C'
+ 'AD C5 D7 C6 5B 92 EF 72 B0 09 FB 15 97 3D 99 6B 8A B2 D6 5A CA 56 D5 B5 A4 B4 94 78 76 5E 8A C5'
+ 'E5 1A 3E 52 7A 2A 94 CA 9C 52 CC E5 86 4C B2 16 59 45 9B A2 CE 43 5F 3E 77 03 84 53 87 2D 0D D6'
+ 'BA DA D5 69 2C 94 24 7F 9D 95 3E 21 C1 58 A5 B5 6D 5B 56 D5 B5 6D 55 A2 B1 28 33 71 B4 5B 4B 1B'
+ '43 9C C9 58 2B 25 3C CC 9A 97 6D DF 9B B4 41 6D 64 16 D6 98 9D 92 9F D8 19 2B C1 5A 0B DC AC 75'
+ 'F7 16 B8 58 AA FE 3D 80 E0 A4 A2 07 42 8F BF 90 3A 20 6F 34 03 85 44 5C 22 FD C5 85 80 20 00 E1'
+ '96 81 3B 5C C4 DF E5 E8 99 0F B2 38 47 04 9F 63 B2 E9 CE 80 BB 2E E8 E9 BB C9 EC E5 BF 8A DC 8F'
+ 'FE 8D A3 9C 78 C3 DD BF B5 D8 8E 30 F4 6F EB 76 2F 4E E4 BE BD F9 E3 C4 1B 4F 11 E1 9F E3 45 8E'
+ '63 92 E1 D3 84 5E 59 22 CA 59 70 4B AB C7 D5 46 09 B7 95 DE 3B 99 2B 40 8C A9 32 83 28 03 00 18'
+ '32 04 07 EC 16 7D 92 5F 3E 1B 86 CF A1 26 2F 9E BF DF F7 72 D5 7F 56 59 7F A7 74 83 EE 09 D2 41'
+ 'C6 09 A9 CC FE 67 FD 11 3E 96 51 4E FD 2D 6A 2A 16 14 9E D8 D4 0B F1 12 38 DA 83 EF 7B B3 25 81'
+ 'EF 2E F4 5E DE DE FD B8 88 06 89 72 C6 8A 75 7B 78 C1 A4 B9 6E 56 91 A9 C2 69 70 ED 7F C4 90 D2'
+ '0C 63 0B B1 17 03 42 2E 3D 93 D3 0C 7B 96 72 44 65 13 9E 24 42 F1 72 24 F2 83 3B 02 40 80 A1 1C'
+ '86 EE A2 CA B0 93 F3 29 C2 CA 16 6B D0 0E 79 04 60 D9 EC D4 63 34 B1 EB 0C D3 D8 AF 33 6B C5 A3'
+ 'D2 CE 7F D9 CF EE 1E E6 FC 26 6D 8F 09 71 AB 96 76 DC D5 AA 1C 26 93 9F 2D 00 2F 7A 98 A9 2E E1'
+ '6B 9E CD A0 03 AE EA D9 38 CD CB 7C DC B9 67 93 1E A5 EE 1D AB 78 EC DD 9B 78 F4 8F 48 F6 8F F4'
+ '79 A7 10 72 1F 22 E2 3E E1 E4 95 7A D7 AF 72 FE 8D FA 2F 39 86 D1 C9 9C 96 3E 54 A8 D6 53 C7 30'
+ '0A 72 C4 AD F7 91 0C 40 13 A0 22 2D A9 19 02 05 D0 A4 36 82 F2 DB F2 5D 3D A7 21 98 D6 96 A0 37'
+ '34 5A 71 C2 9C AC EA 10 57 AD CC 94 DB F9 93 6D E5 A8 7B 57 86 7C 77 31 DF 1B BF 6B CB FF 5C 52'
+ '8B FB FF 65 44 4A FC DE E9 8F 67 1D 4F FA FC E6 6D CC 3E 3D B9 EC 32 9F 08 3E 37 6C 4C A5 22 2E'
+ 'F1 43 30 24 F6 59 81 18 12 7D E7 0B FD DE B3 7A 35 3A 07 DF A7 1C 98 EB 67 75 2A 68 B1 B9 32 FD'
+ '40 81 5C C3 8C 80 BF 5F 83 A6 94 B6 8C 82 8D 8F 6C A5 03 7C 8D 34 12 53 29 85 F7 8E F0 9E 09 A4'
+ 'B3 88 00 BC B8 99 5C 07 1D FB AC CC A6 5E 5C 8F E4 0E 1F 24 7C 7B 24 EC 88 F1 1B 9B CD 0E 30 4D'
+ 'CB 0E B9 B2 18 31 F1 F3 1D 5E 76 EA 63 6B 0C 59 82 F0 93 E1 37 BE 06 E8 C4 A1 8B CB 2C 3E EE 4F'
+ '72 4E 9D 31 89 77 C9 23 F0 20 04 5F 2F A8 75 0B 1C C4 7F 0C 0B 92 64 C8 94 C2 39 98 96 5E 3B 7C'
+ 'E9 DF 99 E3 5A 68 71 63 5D AA AD 79 F2 FA 19 E7 75 A7 06 8D 35 B5 06 75 ED FB 29 76 50 47 2B 03'
+ 'DB 79 BE 8A 65 D5 F3 66 84 D8 74 EC EA 28 71 FD D1 89 39 9E 4A 82 48 B4 C4 91 DF 69 74 AF 76 1B'
+ '7F D3 07 69 CC 50 FF 6F 78 74 3E 23 CB 7E C9 D0 C2 C1 00 23 00 F8 D2 7D 3D 84 F6 13 1A 99 14 87'
+ '47 9A 75 59 AA 09 22 12 0D 34 E9 06 95 A9 A8 47 C3 B8 2C 89 D3 DB 31 66 30 90 24 0B 22 44 97 22'
+ '92 64 99 E4 94 E7 9A 64 88 A4 53 24 4C 9E 71 32 53 9D D1 88 1D 91 48 66 4C CB 19 63 1A 4B 18 E2'
+ '58 D8 93 27 9E 64 0C 81 2E 63 CB 33 6A 4C 13 04 B9 E3 1E 41 91 32 E5 99 B0 2A 47 67 96 6F 4A 83'
+ 'E9 32 E7 98 69 4D 31 EE 10 47 85 51 58 6C 8C C9 98 37 A5 A0 F0 E3 0E CC D1 98 33 27 20 80 41 38'
+ '04 52 AC AB 26 C9 C3 5E 68 CD 79 50 69 0B 52 94 CF 93 E6 E8 A9 34 06 7C 9F 22 8D 1E C1 14 DD 9B'
+ 'B2 8C AC 38 07 04 DE 16 86 F0 DE 16 67 2C DC 1B A1 F9 68 3F 36 C5 98 D9 00 FC 0E 11 AA B5 F8 46'
+ 'DD 6E 5C AC B7 08 FB 0E 10 D1 C3 14 7E A5 70 F4 E2 1C 43 7E 70 C6 D2 F9 25 D2 C1 29 53 B0 93 E9'
+ 'DF 49 F4 EF A5 2A 55 A5 F2 58 A5 6A 51 25 1A 75 53 AA 93 69 50 9E A4 B1 4A 54 A5 49 E4 EE A7 75'
+ '26 D2 ED 2B D2 C9 2F 52 C5 28 12 CD 2D 92 99 2A 12 F1 2A D2 B1 2B 12 99 2A D2 B1 2B 12 B1 2A 12'
+ 'A9 2A 8E 49 6E 5B 97 45 D9 70 5D 97 67 14 80 3F 2F 08 24 12 E4 82 5C 9C A2 E4 B6 2E 8B A2 EF 90'
+ '90 E6 09 71 04 00 17 D7 69 73 47 E7 F3 AC EE 3C AC D6 56 96 25 6B 60 02 56 95 59 D3 78 68 68 A7'
+ 'BB CC CB B5 D8 2E DF 5C 0E A9 2B A8 02 4B 94 B0 03 A0 00 FC 48 73 CC 97 CF 57 33 FB 61 E5 56 5F'
+ '40 12 7C 2E 1E FB 7F 87 BF FD 31 FE AF 8F E4 DB B5 2F 84 08 EF BE 3B F8 A8 6D 36 80 F6 C7 B5 25'
+ '03 DA 83 11 A3 68 CE 34 0D 9C 76 CD BD 51 6C C4 58 8D 57 F0 60 1E C0 08 AC 48 7A 2E 8C C1 2D 18'
+ '52 D7 C4 74 36 8A 4E 80 D7 6B 35 66 A8 3D 28 6A 68 C0 BF 9F 8C 8A A4 6A 4D 38 01 C2 5E 4C 28 B7'
+ 'F4 14 1A E5 8F AB 45 53 73 71 0E 9F 44 45 B4 46 A2 D6 D5 2D 55 AA 6F 62 D2 D6 D6 C6 DA C3 C7 63'
+ 'E3 F3 FC 0E CF 37 67 EB 72 9A BA 61 F0 EE 2D 5C 9C 99 F1 1A EC 44 5F 7E 31 0D F9 E1 FB 07 19 E2'
+ '8B FE B5 B6 15 CE 55 81 F6 B7 69 5A 8B AD 3F 0D 3D 3C BB CF F1 53 7D 3E 50 39 62 EE 9F 3E 11 94'
+ 'A3 2A 01 ED 47 0C B2 A7 82 81 F7 03 BC DD 29 BA ED F0 93 73 79 B6 F0 7D B1 84 D9 0E DB 3E B8 69'
+ 'FA DC 31 99 45 BA B5 57 F2 2F 1B CE DC BD 9D 5E 9B 91 C7 D4 71 D1 8F AB D7 69 F1 0C 41 10 05 27'
+ 'DA 41 E7 19 F1 AD 93 0A 12 42 73 CC 24 C4 2A C4 42 64 20 70 9A 1D 03 17 59 2F 30 BB 0A BC F7 82'
+ '86 A4 20 D4 0D 48 CE 8F 70 5D 0B B1 76 10 5D 92 0D 30 43 6E 34 E7 07 9E 37 CA 37 D9 16 56 89 F6'
+ 'B9 AD FB F8 8F E8 37 7E FD CD CE 88 F9 E2 71 F4 5B C0 D0 38 06 EF F9 33 32 77 87 10 3C 88 3C 97'
+ '03 27 70 25 4F 52 0F DE F7 B2 EE 58 45 30 C9 93 56 20 9B A8 B3 F1 5E 81 49 E9 6D A0 E3 36 4A 46'
+ 'CD 92 91 B7 D8 DC AF 00 A1 3F AC FE 79 C3 86 D1 76 E7 24 D2 71 30 93 8A E0 E2 88 88 7A 3D 27 EE'
+ '0F 47 BB 99 F4 2A 14 67 3E 76 5A 15 6E C4 20 DD 0C 93 81 C1 0B 81 69 FC A3 7C 76 1B 9D C5 86 4E'
+ 'C2 66 3E AB 1B B6 A0 9F 7D 04 5C 82 32 8B 8B 7C 8B 91 E1 FA 21 FD F3 D5 9A 79 F3 9A AE E6 FB 7E'
+ '38 1E DF B7 BE 61 59 BF 73 75 31 55 80 FE 7C BB E9 0B 7C 28 30 60 88 51 9B 53 2C 99 6B 4B 56 33'
+ '30 98 E3 56 29 1B A1 87 65 C1 87 02 B6 19 43 42 41 F3 92 00 53 66 1C 4E 6B A7 D6 4E 95 5F 55 3F'
+ '06 64 00 F6 4E B8 8E 49 E9 CB 02 5A C6 75 E8 6B 6A D6 00 37 BE 20 96 3B E9 1D AB A8 7F 26 89 C5'
+ '74 0E 23 88 39 4E E1 CA 1C A7 6E F1 FB BE 2C 76 B2 BB 4B B4 D3 A3 DA 3D 23 DA 69 D2 ED 31 E9 10'
+ '91 0F F5 B7 74 99 C7 60 65 44 50 C5 6E 58 B1 00 E3 68 E3 DD A0 EF 32 16 65 FF 6C EC 59 EA 53 BA'
+ '99 97 85 3C 29 A0 41 CE B8 C8 08 22 20 50 60 C0 22 13 BD B4 1C 4D 81 EC 12 E9 33 C9 FB 93 62 9D'
+ '44 ED A7 51 3F 24 E9 A5 42 6F 12 E9 2E 91 DD 3D 84 89 48 84 A9 4C 7C CF D0 BA 25 DB A5 BA 44 D2'
+ '7C 0F 6C 3D B1 65 5A FA 02 17 55 89 28 9B A8 7B C7 64 CC 9A 87 7A 41 50 C3 F0 26 EE 4D D3 18 7C'
+ 'F3 A3 96 14 B8 DC 79 2B 89 62 58 96 25 89 6B DA CB CA AE B3 99 54 71 E0 1A 4B 85 A4 17 A1 4E C8'
+ '60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 63 0A 8C 23 03 03 04 71 1C 30 4E 99 B3 2E 5E 11 4A'
+ 'A3 30 55 15 45 49 54 55 15 25 51 C5 22 11 0F 58 9B 26 C7 86 4C E3 99 42 78 D1 9E D1 F7 94 06 88'
+ 'A0 22 11 0E 39 C6 1F 99 A1 F9 EA 1A 42 84 88 4D 19 C3 38 4D 10 08 84 D9 04 E3 96 23 E1 F1 38 3E'
+ '1F 0F 8B 11 F1 04 9D 33 A6 74 9E 27 89 C3 82 44 21 0F 4A 69 C4 1E CC D0 2E BE 55 69 EC 86 8B 42'
+ '99 E5 96 70 B5 F5 75 B7 BA 74 59 09 9D 53 46 C8 80 8A EE 03 CF 3A 57 D0 3E 75 E7 1F 36 F3 6E 81'
+ 'CF BC C3 76 E6 9E 5D F2 6E 65 F1 62 0A C2 3A 6A BA C3 FB 12 FB 93 C9 5F 25 75 33 1D 25 F2 97 58'
+ 'BA D7 21 6B 6D 52 6D 14 4A 66 B0 83 0E 51 45 AE 26 84 01 EB 98 30 62 C8 5E BD 35 24 74 38 52 95'
+ '2A 75 CA AE 93 DF 22 69 F3 51 7A 67 A6 6D 66 D5 6C CD FC ED F0 5B F5 28 CE AE 75 7E 27 75 3E A9'
+ 'ED 2B 93 C4 9F 62 5B E2 15 88 55 7F 75 E6 57 06 3B 03 09 34 B7 0C B8 98 7B CB 5F 05 B2 ED 06 53'
+ '75 E7 E1 C5 AA AA 07 FD D5 1B CB AD 62 FB FE 2A D6 E1 58 2A C7 98 7F 91 6C 26 C4 D8 FD 07 E8 26'
+ '47 3C 4C 8D 28 E8 89 71 37 37 FE 73 92 F2 F2 D4 D4 74 4F 54 7F 75 51 59 7C 1A 36 5A 31 8E 5B 3E'
+ '4C AA 8E 57 25 07 A4 45 06 5F D0 6B 86 B8 7D 02 50 6B C6 BC 71 44 90 D8 8D 8B D9 F0 C7 04 70 47'
+ '04 7F 0D F4 84 86 CA 42 42 43 7B BD AE 1F 75 19 BA 8F DA F7 86 BF D6 6E D3 1C 9B 45 67 C1 11 0E'
+ '0A BE 14 3E 64 39 5C 96 9C B9 E3 9D F8 73 A0 96 B0 EB 91 FA F1 64 6E 46 E4 E6 44 0B 02 5F 52 43'
+ '45 44 C4 A6 B1 05 CA B4 C9 AC 4E 3B CD 83 3B F5 E5 B7 F1 BD C4 F0 CE EB BB F1 3B 43 94 2B D5 EC'
+ '7B 2C 68 A7 57 42 2C 60 37 3F 99 78 A7 9F D8 62 FB 4B 89 EC F6 CC 15 50 EA 20 11 7D 84 2A 0F 55'
+ '08 A7 59 0A 02 F6 C5 56 39 16 6A 00 38 B9 11 47 8D 91 04 31 52 A2 3B D4 AA 09 E2 48 8A 72 D0 88'
+ '9D B3 00 05 7C 58 E4 26 AA 3E FC DD 91 1C CB 30 13 4A C2 B1 E6 06 F5 DC 34 80 26 02 98 04 06 17'
+ '5E 10 9D A4 83 B0 8F CC 0D E0 4E 1F 10 37 D6 48 B7 9D 03 2E 3D 98 AA 18 0E 21 6F 3C 9C 99 64 92'
+ '8D 89 2A A2 A8 18 D0 A2 20 FF B6 01 1C D9 1C B6 70 E1 4C B0 25 32 CB 3B BC 3D DE ED B3 6A 43 AC'
+ '4C 40 DE E5 5B 39 D0 8A 2A 1A 21 02 28 26 FB 41 CF 29 1E EE 6F 44 00 B3 3B 62 32 BE 40 9C 10 60'
+ '01 C4 06 72 81 08 E1 C9 08 02 99 AB 8F 0A CA E7 7C B7 1C 76 07 D4 4E 1E 3A BC 56 16 A6 45 90 87'
+ '64 E2 3F 88 7B D7 EA BE 41 F7 AE 5F 6D 06 3F 74 DD 0F 74 EF DE 53 57 AF D8 5C 82 6B B4 CF FD FE'
+ '77 EE 9D FA 6E B5 D5 3A 9E A0 F4 D1 06 E7 C1 77 0E E5 D3 B9 F7 C1 1F E4 EE BD 71 91 1C EE 4F 13'
+ '9D A4 EB 73 5F 13 33 B7 EC 39 54 19 29 3E 2C C3 E4 4C 64 BE 0F 29 79 CF EE 6F B7 D9 51 DC 6C 88'
+ '3E F5 50 CA CA EC 68 5E 18 A1 F5 80 00 54 83 07 F3 48 28 36 52 B7 B0 99 8F 65 70 8C 75 FB 3B 64'
+ 'B7 FD F0 30 CF 8B C3 3E 3E 23 DD 7B ED BF 01 7A 0A FD 7E 09 58 9A 8C 26 2B D7 E8 1D 19 3D 82 20'
+ '0B 0A 5D 83 D8 B3 41 5D E5 04 A2 04 45 7D DC 2A CA 05 1F 9A 7A 1D F1 BF 26 66 2F BA E3 3E 6D 3D'
+ 'A7 4D C5 0D E0 75 61 98 0F 0C 9B 60 80 1F 29 5E 4F BE 77 CD 2F 5F 4C 9D F4 E0 F9 04 75 E4 0A 76'
+ 'C0 34 43 96 37 01 BE 06 B0 37 C1 47 AA 0E CC 37 E1 BF 31 DC 37 1D 9E ED 4A 24 41 F6 99 0D C6 6C'
+ 'CC E6 02 68 C4 2B 79 64 CA 58 9A 4D 17 3D 99 85 06 8E 04 40 BE BF 7C 3F BF 71 3D 12 97 B2 90 A8'
+ 'DF 07 86 A0 F7 57 20 C5 0A 60 61 02 40 9B B7 4F 7E D7 42 E3 8F 48 B4 FD 49 B2 4F 02 6A D3 22 8F'
+ 'C9 8A 47 BC 9A B2 2A C8 A4 8A 40 24 06 0A 45 77 8B F5 40 DE E9 F8 4D D0 34 6E 9D 45 05 C7 2A 45'
+ '06 34 D0 5F D2 39 DF 39 B6 4B E4 A5 82 54 12 B5 B7 DD 75 F1 D2 98 D9 40 DE 3F 64 47 88 F6 37 B5'
+ '19 91 72 C7 AD E4 B4 6D BD E2 F8 09 BF 25 31 51 DB 24 1E 73 6E C6 F6 D8 AD 7C E7 0E 1F CA 26 38'
+ '9B CA 9F FC E1 EA 66 02 4C 84 8A 08 2A 47 07 30 BC 3E 27 44 34 43 96 1C 3C CD 6C 77 7B B1 AE 83'
+ '71 66 DD F3 07 88 7F 71 99 93 66 66 4A C9 F9 97 D9 83 D8 EF F4 39 14 36 8D C7 9F 88 FE 3C 3B 3B'
+ 'D9 D7 B3 9F C6 B8 AF C9 62 71 39 EE D5 EE 37 91 F0 34 DD 7E C7 C5 EF D6 E8 B5 C4 D2 3C B8 E5 64'
+ '54 A5 C5 2F 6B 2B 98 ED 07 CC CF 16 13 17 78 AE 28 B3 0D 17 E6 84 46 52 CB 29 5F B8 5A 19 8C FE'
+ '7C 06 AA 32 09 F7 8B B9 22 9C 28 48 1F 8C CB 77 00'
+}
+
+
+CASE UNICODEDATA LOADONCALL MOVEABLE DISCARDABLE
+{
+ '42 5A 68 39 31 41 59 26 53 59 C5 A9 1D 8C 00 53 DE 7F FF FF FF FF FF FF FF FF FF FF FF FF FF FF'
+ 'FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF E0 36 9F 70 00 00 00 1B E7 B5 BD F2 2A'
+ 'A4 A8 29 B8 00 EA 81 F6 C0 66 82 59 A5 B3 31 00 00 00 00 00 00 00 00 07 80 01 EF 86 00 00 00 00'
+ '00 00 3B 00 74 FB 0D B0 3E F6 3C 00 03 C6 41 7C 1D D8 30 00 3A E2 12 31 A4 71 C0 01 98 00 00 00'
+ '00 00 03 DD CF 19 4F FD 55 29 A0 3D 0A 4F 44 F5 0F 44 1A 68 FF D5 53 FD 49 1B 4C 35 37 AA 69 A1'
+ '89 34 3F 50 9E D0 D1 A5 3F 4D 32 19 A1 EF 55 1F A9 3D 46 9A 69 BF 55 0F F5 52 62 3D 1A 00 04 C7'
+ 'EA 8D EA 99 03 06 9A 98 D0 1A 68 34 0D 34 68 47 A2 6C 40 03 20 C8 1E 25 3C D5 31 34 D5 41 AA 8A'
+ '4F 6F F1 4A 90 50 13 1F FA A2 62 67 B6 AA 7E A8 34 7E A6 14 FD 52 08 1A 6F FD 54 9B 51 A7 A9 FE'
+ 'A9 EA A7 FE AA 23 4D 07 FE AA 80 FF 55 20 FF D5 53 47 FE AA 86 40 D0 7F 95 43 23 04 61 A2 3F F5'
+ '54 33 42 31 A1 1E A6 8C 08 60 02 30 27 FA 94 D9 09 88 18 4D 06 81 E2 9F A8 9B D5 00 D5 53 FD 9A'
+ '4A 92 54 F6 A8 D3 4C 08 D3 04 C1 30 8D 31 30 00 00 04 69 80 40 68 C1 06 8C 09 80 01 30 11 80 26'
+ '4C 46 9A 61 30 00 02 64 64 68 D0 30 4C 13 04 C0 20 C0 02 60 01 27 AA 55 29 41 34 30 26 98 13 26'
+ '00 04 C0 4C 00 8C 46 00 4C 00 26 21 E8 13 4C 10 D3 09 93 00 04 68 C1 30 4C 00 03 40 02 34 C0 01'
+ '18 13 00 86 4F D5 34 DE A0 26 00 26 98 35 3D 4A 49 37 92 8F 23 F5 53 23 D0 D3 D1 31 31 A0 8C D2'
+ '6F 53 F5 21 18 98 10 69 92 64 D3 6D 34 D2 8F 49 B4 68 8D 34 F4 7A 84 63 40 26 C8 13 04 C2 69 A1'
+ '88 DA 7E A5 06 80 34 68 0F DA A4 FD 50 68 03 F5 40 F5 00 07 BD 54 03 4D 0D 01 9A 41 26 A8 C4 92'
+ '8A 34 81 A7 A8 00 1A 00 00 00 00 00 01 EA 00 03 46 9A 69 B5 07 A8 D0 D0 00 00 00 00 00 00 00 00'
+ '00 00 00 00 00 00 00 00 09 26 86 1A 0D F9 43 21 B0 F0 3D BE C9 B8 04 33 9D 75 E6 FB 6E F7 77 7B'
+ '6E E5 B6 65 B2 DB 32 D9 6F E5 68 DE E9 BB BA 37 BA 6E EE 8D EE 9B BB A3 7B A6 ED 99 6C B6 CC B6'
+ '03 C0 80 F0 21 B6 37 69 6D 8D DA 5B 63 76 94 78 27 23 CF BE 52 DB 1B B4 B6 C6 ED 2D B1 BB 4B BB'
+ 'A4 93 76 EE EE 92 4D DB BB BA 49 37 6E EE E9 1D AF 86 70 21 CE AC CA C8 F2 39 1E 63 D8 12 71 CA'
+ '17 85 32 B1 47 AC 84 79 25 8A 44 E6 49 26 64 8E 64 08 D9 01 E0 40 78 10 C9 8F 1E 3C 78 F1 E3 78'
+ '36 DB 6D B7 C7 38 F8 60 13 86 73 9B 69 70 08 B4 0E 17 32 DB 6D CC B6 DB 73 00 0C C0 1B 6D BB 24'
+ 'CC 6D B6 DB 79 93 49 2C 90 FC 39 09 21 33 34 28 00 01 4C 02 D4 05 33 00 86 12 4B 80 D3 6C C9 24'
+ '52 48 61 F9 DB A4 B5 DB 65 76 5A 4D 76 5B B4 CA ED DA 65 76 93 6B B5 E8 C2 C3 02 CC 18 58 60 10'
+ 'C3 9E DD 26 EC DE 45 E0 49 65 0A 49 BA 69 B1 8C 84 63 20 13 06 04 C1 96 D2 E5 1D 36 5B 20 D9 68'
+ '5C B6 C3 01 80 49 24 92 49 27 18 6D AE DB 2D 76 DB 40 00 00 00 02 49 24 92 A0 01 00 00 19 91 B6'
+ 'DB 6D CC 90 30 64 51 C7 8F 1F 1C E5 37 84 CB 65 B6 65 B2 DB 32 D9 6D 99 6C B7 86 8D EE 9B BB A3'
+ '7B A6 EE E8 DE E9 BB BA 37 BA 6E D9 96 CB 6C CB 60 3C 08 0F 02 1B 63 76 96 D8 DD A5 B6 65 B2 8E'
+ 'BB 09 23 E4 CD 2D B1 BB 4B 6C 6E D2 DB 1B 21 B6 93 8C 38 70 DE 1C 37 49 26 ED DD DD 24 94 B4 8E'
+ 'CB 5F 1E 70 20 3C 1C 8F 23 91 E6 3D 81 26 CA 5D 26 0C 51 E4 72 3A CD BA 22 27 32 49 33 24 73 26'
+ 'BC 08 0F 02 03 E5 2D 97 28 E6 3C 78 F1 E3 79 99 91 B6 DB 4F 8C 37 8F 2D 27 0C E4 DB 4B 80 45 A0'
+ '71 DC CB 6D B7 32 DB 6D CC 00 33 00 6D B6 EC 93 31 B6 DF 26 48 F3 0E 04 9B 24 1B 9C A2 90 99 A1'
+ '68 10 C0 29 80 5A 80 A6 60 10 C2 49 70 1A 6D 99 24 8A 49 0C 38 6E BB 6C B5 DB 65 A4 D7 65 BB 4C'
+ 'AE D2 60 C3 69 BA F7 5E 8C 2C 30 2C C1 85 86 01 0C 39 37 49 BB 37 91 78 12 59 42 92 6E 9A 6C 63'
+ '21 18 C8 04 C1 81 30 60 E6 48 E6 B0 90 6C 24 30 DB 0C 06 01 24 92 49 24 9C 61 B6 BB 6C B6 DA 00'
+ '16 DB 68 00 01 24 92 49 50 00 80 24 93 30 6C 24 8D B9 92 06 0C 8A 43 F9 50 E2 1F 65 B3 5A 4D A6'
+ 'D4 F8 CD B2 ED BE E2 37 73 1D BA 8F FC BB B9 02 EF 37 BB E3 2C C1 C2 78 F7 0F 13 17 19 F3 FC 7C'
+ '8C 9C AC B4 93 52 07 F1 CC FE 7F AF F3 FD FF B9 BC EB DE 7C FC D6 11 E3 C7 8F 1E 3C 78 F1 C2 94'
+ 'A5 29 4A 52 94 A5 29 4A 52 94 A5 2A 39 4A 52 94 A5 D7 5D 75 D7 5D 75 D7 5D 75 D7 5D 7A 74 20 4D'
+ 'D4 62 49 95 09 D2 E9 B4 F6 DA 8D 4E AB 56 DC 6B 11 3D 4D AD 1A EE CB 5F 6F 71 FA 9E 83 D0 FA 21'
+ 'E8 FD 27 EA FE B7 A5 F4 DE 9F 26 F7 26 FB 26 FF 27 49 93 81 3F 07 25 FC 93 CF 3D FB F9 04 F4 47'
+ '27 0A 8A 32 70 F2 71 32 71 72 71 B2 7E 8F 57 D5 D4 FE 9D 4F AD A9 F5 F5 3E C6 A7 D9 D4 E9 AD EF'
+ 'F0 30 70 9E 3D C3 C4 C5 C6 7C FF 61 8E 74 5E 41 D9 39 59 69 26 A4 0F 0C 15 7C 59 99 B9 DE 3C FD'
+ '5C FC 0C FC 1C F7 F3 CF 9E 39 C7 0B 3D 19 F8 79 F8 99 F8 B9 F8 D9 F5 35 35 35 35 33 F1 F3 F2 33'
+ 'D3 9F 57 3E 0C F8 73 E2 CF 8F 3F 27 3D 56 AA B5 79 6B 3F 6B 41 6B 43 6B 8B D0 68 34 44 84 23 4C'
+ '0A 06 73 3B 9A B2 A7 CA 8B D1 63 12 E0 84 20 84 22 24 10 34 0F 88 ED DB C6 40 AB 18 4C 18 78 7D'
+ '9A 1E F1 D0 4A 18 75 BF 77 4D B2 4A 12 51 35 64 5E 25 D6 BB 5E 43 D6 D6 AB 74 B2 54 A4 96 DA C9'
+ '2F 0B B5 B6 E9 49 B5 56 A7 D8 75 21 A4 09 18 77 13 4C 0A 35 A0 49 08 87 83 B3 44 29 20 28 1D F7'
+ 'AD F7 DE B8 B4 42 D2 02 81 E2 7C 49 A2 1B 48 0A 40 52 02 C2 40 E9 00 21 DC F1 AE 89 3C 6E 83 44'
+ '25 89 22 24 06 5A 92 D4 96 A4 B5 25 52 5A 8A A2 01 40 14 35 EF 4E 82 6D 0B D9 A0 9B 48 0A 00 A1'
+ '0E FF DD 2E DB 79 52 B6 DE 20 B6 B6 93 5A A6 C3 5B 79 87 7F 56 71 74 6F 43 20 08 92 1B 12 42 B6'
+ '6A 79 12 40 F0 68 42 C4 85 BC 49 B5 A9 44 F6 C6 A9 D3 AD 5B A5 6C 9A D6 92 C6 D2 57 FA 15 BA 57'
+ 'BD 2D BA 57 F9 D5 BA 57 F9 95 69 04 43 DD 9F 2B 7B 57 83 1A DE B5 AA 21 B1 0D 21 34 21 EE A9 A4'
+ '22 87 84 B3 41 7A AD 84 50 F0 89 A4 82 87 78 80 69 0F 01 B1 CD 75 AF 11 5E 64 AD CB DD D5 B9 79'
+ '4A DB 97 BA AB 72 FF 22 DB DD 1A 8F 16 9E 63 DE E4 D8 4D 3B 1D 1B D1 10 41 4F 27 48 1E E0 80 78'
+ 'A4 A4 B7 9A AD BD C5 78 2B 79 B2 AD 72 D6 2B 79 1B 6B 57 4A D4 95 B5 25 59 E5 B2 ED 6D 4E 97 6D'
+ '6E AB AE AD 59 36 B6 EA DC 9B B6 B6 74 BA D6 8B 6C 6D 69 CB B6 AD EE 0A AB BC 17 56 AE AE EB 68'
+ '2B 4C B6 DE F7 E6 77 5B 6B C1 55 5E 26 B9 3A DA A7 2E D6 82 B6 BD 75 A4 F5 86 1B 60 12 4E 90 0F'
+ '6E 40 3C 43 24 F6 D6 49 ED 8C 27 87 40 3D AD D6 F6 D6 B7 B6 2D BF BE B6 F6 B5 6F 6A 56 F6 95 6F'
+ '27 5A F2 75 AF 66 5A F6 56 DE C8 AB D8 D5 BD 89 5B D8 5A BD 81 57 F7 96 AF 5F 56 F5 E5 6F 5D 6A'
+ 'F3 01 AD 48 A1 D8 A4 01 5A 50 05 61 00 64 88 02 AC A0 06 F8 FD 55 45 B0 A8 D4 74 51 4E 03 80 E1'
+ 'C0 70 1C 08 42 10 84 21 08 40 42 10 84 04 04 20 20 20 21 08 42 10 84 21 01 08 42 10 10 10 80 80'
+ '80 84 21 08 42 10 84 04 21 08 40 40 71 06 9E 98 D3 1A 63 4F 4F 4E 10 6D B6 DB 0C 36 18 6D B6 DB'
+ '6D B6 C3 0D 86 1B 6D B6 DB 6D B0 C3 61 86 DB 6D B6 DB 6C 30 D8 61 B6 DB 6D B0 DB 61 86 C3 0C 36'
+ 'DB 6D B0 DB 61 86 C3 0C 36 EF 36 DB 0D B6 C3 0D 86 1B 6D B6 D2 49 04 12 09 24 92 4D B6 82 09 04'
+ '92 49 24 92 41 04 82 49 24 92 49 20 82 41 24 92 48 92 41 04 82 49 24 A0 92 40 90 41 27 5D 36 D8'
+ '6D B6 18 6C 30 DB 6D B6 C3 6D B0 C3 61 86 DB 6D B6 19 20 82 41 04 9B 84 92 49 04 12 09 24 92 49'
+ '20 82 41 24 92 49 24 10 48 24 9B 84 92 49 04 12 0D ED B9 24 12 10 57 85 E1 A6 41 04 14 90 49 0F'
+ 'CE 61 B0 C3 0D 86 10 48 82 48 20 E1 86 61 86 19 98 66 61 86 61 86 61 86 19 65 DD D9 79 86 61 98'
+ '09 09 04 92 09 24 12 09 02 08 20 92 41 24 12 09 04 12 0E 66 19 65 D9 76 59 65 DD 96 76 CE 70 E7'
+ '0E 1C 3A 3A E8 E8 E8 EB AE 8E 86 1B 6C 36 18 61 86 C3 61 B6 18 61 B6 C3 61 86 18 6C 36 1B 41 04'
+ '90 41 20 82 09 04 82 4D 86 18 B8 82 09 04 82 0A E3 6C 36 D8 61 B0 C3 0D 86 C3 0D B6 1B 6C 30 D8'
+ '61 86 C3 61 86 DB 0D C0 30 C3 61 86 1B 08 20 91 04 EE 10 41 20 82 43 4C 20 82 48 24 D0 41 04 21'
+ '75 86 C4 03 0C 34 EE B0 DC 18 61 A0 82 42 01 04 12 85 D6 1B 83 0C 34 1D D6 10 80 41 04 48 37 85'
+ 'E1 7A F0 59 AB 57 0E 0B 82 E1 BA B6 AA 85 C3 2A AB 86 A0 44 51 45 10 20 44 36 6C D9 5B B6 A8 A3'
+ 'B9 9D 18 61 DC 39 38 73 87 0E 73 87 38 73 9C 38 74 B0 C3 0C 36 C2 48 24 12 41 04 10 41 04 9B 0D'
+ 'B0 D8 6D B0 C3 0C 30 C3 68 27 75 B0 DB 63 4E 01 88 5D 80 80 80 84 20 C2 48 24 90 43 6D 75 07 A4'
+ 'C3 0C 37 79 86 90 49 20 82 08 20 82 44 12 41 24 82 1D D4 10 41 24 09 20 90 41 04 10 41 04 10 41'
+ '57 52 09 04 2F 21 74 10 41 04 10 41 24 12 08 20 85 75 04 10 41 06 C2 48 24 10 41 04 10 41 04 10'
+ '20 92 09 04 10 48 20 82 08 20 82 41 20 8B D0 04 10 41 04 10 41 20 90 41 84 18 61 8F CF D2 80 80'
+ '82 E4 2E 1C 15 14 51 45 11 C8 59 6A BC 85 C7 6A AA AA AA A2 04 0B 72 AA AA E1 AA D5 6A AA D5 55'
+ '55 08 62 1A 00 42 10 B7 21 D4 BA B2 EC B9 65 DB 7D 66 4C BC 6C B2 E5 94 59 99 99 33 66 CD CD AD'
+ 'B6 DE 2B 6D 55 5E 2A AD B5 A0 62 13 42 16 E4 56 B5 46 21 34 21 83 40 9A 10 9A 10 CC E2 91 C5 9C'
+ '51 46 A6 6F 10 29 C4 2C 38 84 68 AB BC 54 14 E2 8A 88 38 80 11 C4 22 DB 78 AD 04 71 08 11 C9 E1'
+ '15 A9 AA AD 51 55 6D B5 5A 9A 55 5A A2 AA BB 6C 56 A7 55 AA 2A AB 56 D8 AD 75 5A A2 AA A7 6D DE'
+ '2D DD D5 98 64 C2 EE EE E5 DD 97 65 CB 33 0C CC C9 98 61 86 61 93 0C C3 33 32 66 61 86 61 93 0C'
+ '33 33 30 CC C3 0C C3 0C 33 26 66 6E EF 45 AB 54 55 54 D5 B6 5A F8 AA B5 55 55 56 D9 D6 B7 62 D5'
+ 'BA A6 EA DE 8A E0 24 A4 90 5A 57 42 09 0D 24 81 B8 49 24 90 41 20 92 16 E1 86 DB B8 DB 08 20 90'
+ '24 5E 17 AF 5E BD 78 82 08 24 12 19 B8 49 24 9B 84 91 98 65 97 79 99 9B 99 98 6C CC 33 85 1C 39'
+ 'CD F3 9C E1 47 39 C3 9C 39 C0 2B 88 1D B1 24 8D 20 48 DB 12 09 1A 40 82 D2 48 04 36 F7 5B 0D B0'
+ 'D8 41 04 92 48 20 90 49 05 71 00 82 09 5C 49 5C 48 24 09 04 82 30 CC CC CB 2C BB 2E CB BE 18 66'
+ '66 18 61 86 19 86 67 30 CC CC 31 6E AD 5B AB 76 AB 6D 55 55 55 AA DD D5 B6 AA AD 55 6E A3 77 82'
+ '09 24 10 41 20 82 41 24 90 49 20 82 09 04 12 09 22 09 20 82 08 20 82 49 24 12 41 04 10 41 04 12'
+ '4A 08 24 10 41 1C 38 70 E1 C3 9C E7 35 86 61 85 18 61 AC 30 C3 2B 33 58 59 D3 85 18 61 D1 C3 0C'
+ 'CC CD 59 65 9B 2C B3 56 59 7B BB CC 30 C3 0C 30 DD 5A B7 77 76 AA AA AA AB 55 B6 DA AA AA AA 84'
+ '00 21 08 42 14 92 21 45 14 51 08 18 84 84 21 08 00 42 10 A2 92 13 22 89 88 68 2D 55 5A AA B5 5B'
+ '41 08 42 04 6F 73 66 CA A3 66 F7 BD EE 6F 66 E4 D4 91 02 92 76 43 40 13 BA 73 BB A0 EF 82 E3 2B'
+ '9D 9B AB 04 BA 55 E1 A4 0B 4A 88 6D C5 64 CA 29 0D E8 74 E2 AA A2 8A AA AB 20 DD BB 93 68 EE 01'
+ 'B4 E2 4E 27 1C 49 D2 43 A0 DF 4A A2 8A A2 8A AA AA C5 8A 4D C9 05 25 32 74 C3 A4 9D 27 4E 24 C6'
+ '04 86 90 0D 32 12 01 31 03 10 0C 40 24 C6 63 24 03 12 48 04 31 84 DB 26 D8 12 6D 31 E1 14 22 91'
+ '27 13 8F 18 71 90 16 71 38 84 C4 C4 96 C8 0B 2D 2D 81 69 69 2D 90 16 5A 5A 4B 4B 49 6C 80 B2 D2'
+ 'D2 5A 5B 0B 49 31 0D 33 13 12 62 63 88 62 4E 49 10 36 86 D8 71 38 93 1B 42 D9 C4 86 D0 DB 36 E2'
+ '62 4C 65 B2 D0 9A 66 9B 4B 49 6E 21 88 02 CB 4B 49 6C 29 00 59 49 49 29 85 20 0A 4A 4A 49 4C A6'
+ '40 59 49 49 29 92 92 16 93 4C C4 C4 0B 6D 25 A4 9A 49 A6 14 98 92 DB 49 69 26 92 69 85 A5 A4 B6'
+ 'D0 E2 49 A4 85 B2 D2 5B 4C 94 90 14 A4 94 C2 4D A6 D2 6D 24 9B 66 D2 6D 03 68 02 9B 49 B6 4D B0'
+ 'EC C3 A6 62 78 24 0E 36 C9 C6 D0 B4 0A 40 DA 6D 87 1A 64 B6 D2 D2 53 0E 30 A4 A6 18 DB 26 36 96'
+ '92 90 36 9B 43 6C 94 D2 53 0B 6D 21 B6 4E 3B 64 C6 53 0B 65 30 E3 0A 49 B6 4B 66 D9 69 8D B0 C6'
+ '16 93 6C 98 CD B3 1A 48 6D 0D 32 53 36 CF 81 42 D9 68 1D 25 A4 3B 40 0A D4 9C 6D 2D 3C 23 0E 27'
+ '71 E2 06 26 26 20 53 24 E3 69 69 6C 38 CE 82 E3 39 B0 36 98 98 C2 14 C3 B8 27 4D A5 B0 E9 98 81'
+ '49 4C 0E CD 32 63 D2 62 63 21 C4 C4 85 25 30 9C 69 93 8C B4 B6 05 24 36 9B 64 C4 C6 D9 31 98 98'
+ '81 49 0D A6 D9 62 62 69 B6 06 33 13 10 29 03 69 B6 18 D3 0B 4B 4B 49 49 3B 25 25 30 C6 D0 EC F1'
+ '3B 73 47 19 27 64 E2 4E C9 69 6C 0E CA 96 C3 A4 EB 34 62 4B 49 C4 A4 A6 1C 54 B6 1C 4E 66 8C 40'
+ 'C4 C4 38 96 96 C2 DB 67 1B 4B 40 B4 B4 38 96 96 C2 DB 66 36 96 85 A5 A4 A6 6D DB 2D A4 36 93 4C'
+ 'A7 6C A6 90 DB 25 2B 34 CA 64 EF 12 D8 4E 21 31 31 EE 33 8D B2 62 4C 42 D0 A4 26 D3 1A 66 36 C9'
+ '36 AA CD 32 42 D2 DA 65 B6 93 B8 C0 A4 36 C9 B4 98 AC C6 D9 8E 32 05 A1 49 0E 24 DA 63 4C C6 49'
+ '48 6D 55 02 D8 1B 4B 69 96 C9 34 AA C0 E2 5A 5B 4C B6 43 10 DB 09 69 6E D9 6C 26 90 E2 74 93 15'
+ '98 DB 31 C4 C6 49 48 6D 36 C8 62 63 6C 98 E3 31 93 10 B4 29 29 9C 61 69 C7 14 51 E3 C4 E2 12 90'
+ 'DA 6D 93 1C 6D 98 E2 62 42 90 DA 6D 02 DA 65 B6 96 CC 7B 88 62 16 96 85 33 8D B3 8E 33 19 C5 4E'
+ '21 89 2D 2D 87 1A 43 8D 27 12 90 DB 0E 99 8D 33 19 C6 DE C8 5A 4A 43 48 8D B3 6D B3 A4 B4 94 F4'
+ '85 34 CC 65 B3 19 49 36 96 CE CC A6 63 2D C4 29 0D A1 8C 2D 36 CB 69 16 06 24 E9 87 64 E2 53 31'
+ '98 C9 B4 9A 61 69 69 4C B4 9A 61 68 5A 5A 53 2D 09 A4 0A 4A 66 DA 43 48 4E 21 C6 4C 4C 65 38 F1'
+ '21 B6 4B 4B 66 DB 61 34 96 C2 D2 D2 9B 61 38 9B 60 5A 6D DB 29 24 DB 37 02 68 D2 EB 51 4D 45 50'
+ 'C6 4B 4D AB 2D 87 1D A1 A6 4A 4D B2 90 34 C0 DA 69 9B 69 93 6C 85 3D 33 A6 53 8C 03 A6 74 9C 43'
+ '19 4D B0 0D 32 D3 13 10 C6 5B 8C 92 69 31 92 D0 B6 53 6C 26 99 29 0A 4D B2 9B 40 31 93 10 C4 DB'
+ '2D 21 A4 85 21 49 B6 53 34 C0 50 B4 D2 16 85 A6 D9 6C D3 01 64 5A 42 9D B2 9B 4D A1 31 93 4C C4'
+ '31 A4 C6 5A 41 41 65 A1 69 6D B3 13 10 8B 31 0C 4D BD 93 1C 4A 61 16 45 86 21 8E D8 5B 0D 3C 80'
+ '4D 06 B5 A0 50 D1 01 65 A1 68 16 D3 24 C6 1A 65 A1 6C 96 CA 64 8B 29 0A 76 CA 6D 36 C2 28 B2 D0'
+ 'B4 2D 0A 64 8B 0D BA 43 68 69 94 C9 A4 96 9A 64 B4 C6 62 4A 42 63 21 8C 36 C3 13 4C B6 52 6D 96'
+ '86 98 0B 0B 74 C2 D9 68 6D 81 6C 86 D3 6C 2D 02 D2 6D 96 C2 5A 1B 61 6C 96 C9 4D 32 D0 9A 49 68'
+ '5A 16 DA 12 DD 25 BB 61 68 5B B4 31 3B C6 07 13 89 55 A9 C4 38 93 95 A8 1C 4E 3B 66 21 8E 21 48'
+ '1A 71 31 37 5A 98 98 92 AB 50 34 98 98 ED 29 98 86 30 36 C0 A4 C4 C6 53 31 0C 60 6D 81 89 89 8D'
+ '33 19 88 1B 64 D2 62 62 63 6C C4 86 90 31 31 31 31 96 CC 42 71 36 81 C4 E2 71 38 99 9A 0E 21 33'
+ '7A 03 89 B4 E2 71 37 7A 92 69 34 92 D3 69 69 69 CC D1 25 EB 44 C4 DA 62 63 B4 B6 48 A4 B4 DA 5A'
+ '5A 10 A4 A4 A4 A4 81 49 49 49 48 05 56 A9 29 0D A2 90 59 B4 DB 0A 48 52 1A 74 D2 52 62 12 D9 49'
+ '49 6C 52 28 1B 66 F7 A9 14 25 21 49 21 A4 D3 03 6C 0D A1 B4 26 9D 63 58 D6 35 8D 63 58 DB 15 8D'
+ 'A3 68 DA 36 8D A3 68 DA 36 8A C5 62 B1 AC 56 36 8B 46 A2 D1 A8 B4 6A 2D 1A 8D 45 46 A3 68 AC 6D'
+ '15 8D A2 D1 B4 9A 92 A4 D4 95 26 A4 B4 9A 93 52 5A 4A C9 6C 9B 49 B4 9B 49 B4 96 93 52 56 4B 49'
+ '59 35 26 D2 54 96 93 69 2A 93 59 36 C9 AC 9B 64 AC 9A C9 AA 4D B2 5B 26 B2 5B 26 B2 6D 92 DA D5'
+ '6D 46 D4 5A 8B 68 D6 8D 68 DA 8D 51 5A 2A C5 58 AD 15 A3 6D 15 A3 54 6B 46 B4 5B 46 D4 6B 46 D4'
+ '5A 8A A3 56 2A D8 DA C5 58 AD A3 5A 8D 58 AB 1B 6C 5B 63 56 36 B1 56 36 B1 6B 15 B5 6A 2B 6D B2'
+ '02 06 B0 92 4C 49 49 25 04 81 2E EA 53 A9 6E 00 08 0D DC 38 5B 5D AF B8 D8 EC B6 9B 5D BE E7 75'
+ '1D 19 84 F9 7A D2 7D 79 5E CA CE DC C4 D4 DC E4 F4 FD D5 12 DD 9D 5E BF 65 39 B1 D8 6B FE BD 56'
+ 'BB 5B F4 52 52 D3 6B A5 65 25 23 E5 25 3A E8 ED 64 F7 9D 5A 9A AA EA FB 1B 4D 57 82 EB 03 09 EE'
+ '2E 46 5C 0F 0A B9 D1 FB A8 ED CC 6E E3 6E B9 76 DA 33 99 35 33 31 2F 2D DC ED F6 BB 12 B8 39 F2'
+ 'BB CE BE F1 72 E5 CB 97 2E 5C B9 72 E5 CB 97 2E 5C B9 72 E5 CB 97 6D B6 D1 91 91 91 91 91 91 91'
+ '91 91 91 91 91 87 9E 79 E7 9E 79 E7 9E 79 E7 9E 79 E7 9E 79 E7 9E 79 E7 9E 79 E7 9E 79 E7 9E 79'
+ 'E7 9E 79 E7 9E 79 08 42 10 84 21 08 42 10 84 21 16 AD 5A B5 6A D5 B3 91 E7 1D BB 78 E6 DC AF 98'
+ 'EE 0F 07 0C 54 73 6E 50 1C E1 8A 8E 6D CA 03 9C 31 57 BD AE 78 36 E6 03 9C 03 63 9A E1 80 E7 00'
+ 'D8 E6 B8 60 39 C0 36 39 AE 18 0E 70 0D 8E 6B 86 03 9C 31 B1 CD B9 80 E7 0C 6C 73 6E 50 1C E6 2A'
+ '39 AE 50 1C E1 51 CD CA 03 9C 0D 8E 6E 18 0E 70 36 39 B8 60 39 C0 D8 E6 E1 80 E7 0D 8E 6E 60 39'
+ 'CC 68 E6 B9 80 39 CC 63 47 35 CC 01 CE 63 1A 39 AE 60 0E 73 06 8E 6B 84 41 80 34 68 00 30 06 8D'
+ '00 06 00 D1 A0 22 0C 01 A3 41 8D 1A 36 36 03 41 8C 6A 36 0D 06 8D 8D 83 41 A3 63 63 40 60 D1 8C'
+ '63 40 52 1A 31 B4 06 0D 18 D1 A0 31 A3 1A 83 5E E0 E1 A3 57 35 70 DB 9C 34 6A E6 E6 83 6E 70 D1'
+ 'AB 9B 9A 0D 73 9B 1B 73 73 40 68 AC 62 DC B8 68 0D 73 57 31 AE 70 D0 1A E6 AE 63 5C E1 A0 DB 9A'
+ 'B9 B7 39 82 DC D7 35 73 98 2D DE E3 D5 78 35 78 39 A0 B7 35 CD 5C E6 82 DC DB 1C C6 B9 AB 9A E7'
+ '31 AC 63 1A 8C 63 50 61 E4 1D 5C 2D 8D 06 30 6D 88 83 18 35 8D 06 31 B6 0C 63 01 AF 11 B5 C0 C1'
+ '80 D5 01 83 01 AC 18 30 1A C1 83 1A D1 8C 5B 41 8D 68 C1 8A B7 89 DD 8D 8D B1 8D 1A A3 1A 36 A3'
+ '1B 63 18 36 8C 63 68 C6 34 6D 06 30 56 0A 0C 54 60 28 2A 80 A2 D0 05 01 68 83 01 AC F1 3A E1 80'
+ 'D4 01 8C EE B5 C0 A0 2A 1D D7 34 6E E7 6B 77 75 CD 05 43 BA E5 01 68 28 0A 87 75 C0 C6 77 57 36'
+ '00 C5 77 76 8D 80 0C 63 1B 0E EB 81 80 C6 A0 0A 03 15 00 50 62 A3 01 46 C5 46 02 83 46 D0 18 34'
+ '6C 50 10 68 DA 02 0B 1A 80 80 D1 46 2C 00 1A 8C 16 00 0D 18 31 40 50 6C 63 40 06 C6 37 82 B8 01'
+ 'CA E1 8D CD C2 0E 57 0D 1B 9B 70 83 9B 91 11 B9 6B 90 73 5C A3 73 72 80 39 AB 98 37 36 E0 1C DC'
+ '8C 15 CB 5C A0 B9 73 18 DC DB 81 CE 58 B9 B8 68 E7 36 B9 B8 51 CE 5A E6 E1 8E 73 57 37 0A 0B 5C'
+ 'DC 03 1C E6 C6 B9 B8 06 39 CD 8D 73 70 31 CD 63 80 62 A8 03 46 D4 01 A3 54 01 6D 00 6D 40 06 B1'
+ 'A0 03 68 C0 06 B0 05 B0 6B 10 55 01 58 08 2A 31 26 8D 18 03 52 C5 50 14 88 8A 0A 1E 29 AB 7C 0E'
+ '39 C7 ED 3C 5B F6 BD FB F6 DE E2 FD BF B9 3E FD B9 14 B1 C1 9E E8 53 47 8A 7D D8 A8 90 15 25 12'
+ '3B C0 D3 7A 2A B7 A2 4B 7C 2A CC 24 6B 0E 02 B7 80 39 1C 11 25 5C 70 0D 6B E4 43 6E 18 B0 E2 06'
+ 'F2 42 CB 8A 2C F8 C2 D3 8C 3B 7C 70 C7 90 18 F2 03 1E 48 9E E5 09 DE 58 9D E6 09 DE 68 9D E7 0B'
+ '79 E7 7D 18 7...
[truncated message content] |
|
From: <ou...@us...> - 2007-09-08 16:45:31
|
Revision: 2155
http://jcl.svn.sourceforge.net/jcl/?rev=2155&view=rev
Author: outchy
Date: 2007-09-08 09:45:26 -0700 (Sat, 08 Sep 2007)
Log Message:
-----------
StreamCopy: new function to copy all bytes from a source stream to a destination stream. this function doesn't rely on streams sizes.
Modified Paths:
--------------
trunk/jcl/source/common/JclStreams.pas
Modified: trunk/jcl/source/common/JclStreams.pas
===================================================================
--- trunk/jcl/source/common/JclStreams.pas 2007-09-08 15:13:13 UTC (rev 2154)
+++ trunk/jcl/source/common/JclStreams.pas 2007-09-08 16:45:26 UTC (rev 2155)
@@ -353,6 +353,10 @@
function StreamSeek(Stream: TStream; const Offset: Int64;
const Origin: TSeekOrigin): Int64;
+// buffered copy of all available bytes from Source to Dest
+// returns the number of bytes that were copied
+function StreamCopy(Source: TStream; Dest: TStream; BufferSize: Integer = 4096): Int64;
+
{$IFDEF UNITVERSIONING}
const
UnitVersioning: TUnitVersionInfo = (
@@ -394,6 +398,24 @@
Result := -1;
end;
+function StreamCopy(Source: TStream; Dest: TStream; BufferSize: Integer): Int64;
+var
+ Buffer: Pointer;
+ ByteCount: Integer;
+begin
+ Result := 0;
+ GetMem(Buffer, BufferSize);
+ try
+ repeat
+ ByteCount := Source.Read(Buffer^, BufferSize);
+ Result := Result + ByteCount;
+ Dest.WriteBuffer(Buffer^, ByteCount);
+ until ByteCount < BufferSize;
+ finally
+ FreeMem(Buffer);
+ end;
+end;
+
//=== { TJclStream } =========================================================
function TJclStream.Seek(Offset: Longint; Origin: Word): Longint;
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <ou...@us...> - 2007-09-08 15:13:15
|
Revision: 2154
http://jcl.svn.sourceforge.net/jcl/?rev=2154&view=rev
Author: outchy
Date: 2007-09-08 08:13:13 -0700 (Sat, 08 Sep 2007)
Log Message:
-----------
TJclDecompressStream descendants can own source stream
Modified Paths:
--------------
trunk/jcl/source/common/JclCompression.pas
Modified: trunk/jcl/source/common/JclCompression.pas
===================================================================
--- trunk/jcl/source/common/JclCompression.pas 2007-09-08 13:37:06 UTC (rev 2153)
+++ trunk/jcl/source/common/JclCompression.pas 2007-09-08 15:13:13 UTC (rev 2154)
@@ -110,8 +110,11 @@
end;
TJclDecompressStream = class(TJclCompressionStream)
+ private
+ FOwnsStream: Boolean;
public
- constructor Create(Source: TStream);
+ constructor Create(Source: TStream; AOwnsStream: Boolean = False);
+ destructor Destroy; override;
end;
// ZIP Support
@@ -154,7 +157,7 @@
ZLibRecord: TZStreamRec;
procedure SetWindowBits(Value: Integer);
public
- constructor Create(Source: TStream; WindowBits: Integer = DEF_WBITS);
+ constructor Create(Source: TStream; WindowBits: Integer = DEF_WBITS; AOwnsStream: Boolean = False);
destructor Destroy; override;
function Read(var Buffer; Count: Longint): Longint; override;
function Seek(const Offset: Int64; Origin: TSeekOrigin): Int64; override;
@@ -322,7 +325,7 @@
function ReadCompressedData(Sender: TObject; var Buffer; Count: Longint): Longint;
procedure ZLibStreamProgress(Sender: TObject);
public
- constructor Create(Source: TStream; CheckHeaderCRC: Boolean = True);
+ constructor Create(Source: TStream; CheckHeaderCRC: Boolean = True; AOwnsStream: Boolean = False);
destructor Destroy; override;
function Read(var Buffer; Count: Longint): Longint; override;
@@ -385,7 +388,7 @@
function Read(var Buffer; Count: Longint): Longint; override;
function Seek(const Offset: Int64; Origin: TSeekOrigin): Int64; override;
- constructor Create(Source: TStream); overload;
+ constructor Create(Source: TStream; AOwnsStream: Boolean = False); overload;
destructor Destroy; override;
end;
@@ -489,12 +492,20 @@
//=== { TJclDecompressStream } ===============================================
-constructor TJclDecompressStream.Create(Source: TStream);
+constructor TJclDecompressStream.Create(Source: TStream; AOwnsStream: Boolean);
begin
inherited Create(Source);
FStream := Source;
+ FOwnsStream := AOwnsStream;
end;
+destructor TJclDecompressStream.Destroy;
+begin
+ if FOwnsStream then
+ FStream.Free;
+ inherited Destroy;
+end;
+
//=== { TJclZLibCompressionStream } ==========================================
{ Error checking helper }
@@ -672,9 +683,9 @@
//=== { TJclZLibDecompressionStream } =======================================
-constructor TJclZLibDecompressStream.Create(Source: TStream; WindowBits: Integer = DEF_WBITS);
+constructor TJclZLibDecompressStream.Create(Source: TStream; WindowBits: Integer; AOwnsStream: Boolean);
begin
- inherited Create(Source);
+ inherited Create(Source, AOwnsStream);
// Initialize ZLib StreamRecord
with ZLibRecord do
@@ -958,7 +969,7 @@
//=== { TJclGZIPDecompressionStream } ========================================
-constructor TJclGZIPDecompressionStream.Create(Source: TStream; CheckHeaderCRC: Boolean);
+constructor TJclGZIPDecompressionStream.Create(Source: TStream; CheckHeaderCRC: Boolean; AOwnsStream: Boolean);
var
HeaderCRC: Cardinal;
ComputeHeaderCRC: Boolean;
@@ -983,7 +994,7 @@
end;
begin
- inherited Create(Source);
+ inherited Create(Source, AOwnsStream);
FAutoCheckDataCRC32 := True;
FComputedDataCRC32 := crc32(0, nil, 0);
@@ -1343,9 +1354,9 @@
//=== { TJclZLibDecompressionStream } ========================================
-constructor TJclBZIP2DecompressionStream.Create(Source: TStream);
+constructor TJclBZIP2DecompressionStream.Create(Source: TStream; AOwnsStream: Boolean);
begin
- inherited Create(Source);
+ inherited Create(Source, AOwnsStream);
LoadBZip2;
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <ou...@us...> - 2007-09-08 13:37:09
|
Revision: 2153
http://jcl.svn.sourceforge.net/jcl/?rev=2153&view=rev
Author: outchy
Date: 2007-09-08 06:37:06 -0700 (Sat, 08 Sep 2007)
Log Message:
-----------
Introducing conversion functions between UTF-8, UTF-16, UCS2 and UCS4 Unicode formats.
if UNICODE_SILENT_FAILURE is defined, conversions insert a replacement character if an invalid sequence is detected; if the symbol is not defined, an exception is raised.
Modified Paths:
--------------
trunk/jcl/install/JclInstall.pas
trunk/jcl/source/common/JclResources.pas
trunk/jcl/source/jcl.template.inc
trunk/jcl/source/windows/JclUnicode.pas
Modified: trunk/jcl/install/JclInstall.pas
===================================================================
--- trunk/jcl/install/JclInstall.pas 2007-09-08 12:57:10 UTC (rev 2152)
+++ trunk/jcl/install/JclInstall.pas 2007-09-08 13:37:06 UTC (rev 2153)
@@ -43,6 +43,7 @@
joDefEDI,
joDefPCRE,
joDefBZip2,
+ joDefUnicode,
joDefThreadSafe,
joDefDropObsoleteCode,
joDefUnitVersioning,
@@ -63,6 +64,7 @@
joDefBZip2StaticLink,
joDefBZip2LinkDLL,
joDefBZip2LinkOnRequest,
+ joDefUnicodeSilentFailure,
joEnvironment,
joEnvLibPath,
joEnvBrowsingPath,
@@ -341,38 +343,41 @@
RsCaptionLibrary = 'JEDI Code Library';
// Conditional features
- RsCaptionDef = 'Conditional defines';
- RsCaptionDefThreadSafe = 'Enable thread safe code';
- RsCaptionDefDropObsoleteCode = 'Drop obsolete code';
- RsCaptionDefUnitVersioning = 'Include Unit Versioning';
+ RsCaptionDef = 'Conditional defines';
+ RsCaptionDefThreadSafe = 'Enable thread safe code';
+ RsCaptionDefDropObsoleteCode = 'Drop obsolete code';
+ RsCaptionDefUnitVersioning = 'Include Unit Versioning';
// math options
- RsCaptionDefMath = 'Math options';
- RsCaptionDefMathPrecSingle = 'Single float precision';
- RsCaptionDefMathPrecDouble = 'Double float precision';
- RsCaptionDefMathPrecExtended = 'Extended float precision';
- RsCaptionDefMathExtremeValues = 'Support for infinite and NaN';
+ RsCaptionDefMath = 'Math options';
+ RsCaptionDefMathPrecSingle = 'Single float precision';
+ RsCaptionDefMathPrecDouble = 'Double float precision';
+ RsCaptionDefMathPrecExtended = 'Extended float precision';
+ RsCaptionDefMathExtremeValues = 'Support for infinite and NaN';
// debug options
- RsCaptionDefDebug = 'Debug and exception hooking options';
- RsCaptionDefHookDllExceptions = 'Hook exceptions in DLL';
- RsCaptionDefDebugNoBinary = 'No debug source from JEDI debug informations';
- RsCaptionDefDebugNoTD32 = 'No debug source from TD32 debug symbols';
- RsCaptionDefDebugNoMap = 'No debug source from Map files';
- RsCaptionDefDebugNoExports = 'No debug source from function export table for libraries';
- RsCaptionDefDebugNoSymbols = 'No debug source from Microsoft debug symbols';
+ RsCaptionDefDebug = 'Debug and exception hooking options';
+ RsCaptionDefHookDllExceptions = 'Hook exceptions in DLL';
+ RsCaptionDefDebugNoBinary = 'No debug source from JEDI debug informations';
+ RsCaptionDefDebugNoTD32 = 'No debug source from TD32 debug symbols';
+ RsCaptionDefDebugNoMap = 'No debug source from Map files';
+ RsCaptionDefDebugNoExports = 'No debug source from function export table for libraries';
+ RsCaptionDefDebugNoSymbols = 'No debug source from Microsoft debug symbols';
// EDI options
RsCaptionDefEDI = 'EDI options';
RsCaptionDefEDIWeakPackageUnits = 'EDI weak package units';
// PCRE options
- RsCaptionDefPCRE = 'PCRE options';
- RsCaptionDefPCREStaticLink = 'Static link to PCRE code';
- RsCaptionDefPCRELinkDLL = 'Static bind to pcre.dll';
- RsCaptionDefPCRELinkOnRequest = 'Late bind to pcre.dll';
+ RsCaptionDefPCRE = 'PCRE options';
+ RsCaptionDefPCREStaticLink = 'Static link to PCRE code';
+ RsCaptionDefPCRELinkDLL = 'Static bind to pcre.dll';
+ RsCaptionDefPCRELinkOnRequest = 'Late bind to pcre.dll';
// BZip2 options
- RsCaptionDefBZip2 = 'BZip2 options';
- RsCaptionDefBZip2StaticLink = 'Static link to BZip2 code (experimental)';
- RsCaptionDefBZip2LinkDLL = 'Static bind to bzip2.dll';
- RsCaptionDefBZip2LinkOnRequest = 'Late bind to bzip2.dll';
-
+ RsCaptionDefBZip2 = 'BZip2 options';
+ RsCaptionDefBZip2StaticLink = 'Static link to BZip2 code (experimental)';
+ RsCaptionDefBZip2LinkDLL = 'Static bind to bzip2.dll';
+ RsCaptionDefBZip2LinkOnRequest = 'Late bind to bzip2.dll';
+ // Unicode options
+ RsCaptionDefUnicode = 'Unicode options';
+ RsCaptionDefUnicodeSilentFailure = 'Silent failure';
+
// post compilation
RsCaptionPdbCreate = 'Create PDB debug information';
RsCaptionMapCreate = 'Create MAP files';
@@ -436,37 +441,40 @@
RsHintLibrary = 'Select to install JCL for this target.';
// conditional defines
- RsHintDef = 'Enable or disable specific features to be compiled';
- RsHintDefThreadSafe = 'Conditionally some pieces of code to be thread safe, the ThreadSafe.txt file contains more informations about this feature';
- RsHintDefDropObsoleteCode = 'Do not compile deprecated code';
- RsHintDefUnitVersioning = 'Includes JCL Unit Versioning informations into each JCL unit (see also JclUnitVersioning.pas)';
+ RsHintDef = 'Enable or disable specific features to be compiled';
+ RsHintDefThreadSafe = 'Conditionally some pieces of code to be thread safe, the ThreadSafe.txt file contains more informations about this feature';
+ RsHintDefDropObsoleteCode = 'Do not compile deprecated code';
+ RsHintDefUnitVersioning = 'Includes JCL Unit Versioning informations into each JCL unit (see also JclUnitVersioning.pas)';
// math options
- RsHintDefMath = 'Math specific options (JclMath.pas)';
- RsHintDefMathPrecSingle = 'type Float = Single';
- RsHintDefMathPrecDouble = 'type Float = Double';
- RsHintDefMathPrecExtended = 'type Float = Extended';
- RsHintDefMathExtremeValues = 'Exp en Power functions accept and return infinite and NaN';
+ RsHintDefMath = 'Math specific options (JclMath.pas)';
+ RsHintDefMathPrecSingle = 'type Float = Single';
+ RsHintDefMathPrecDouble = 'type Float = Double';
+ RsHintDefMathPrecExtended = 'type Float = Extended';
+ RsHintDefMathExtremeValues = 'Exp en Power functions accept and return infinite and NaN';
// Debug options
- RsHintDefDebug = 'Debug and exception hooking specific options (JclDebug.pas and JclHookExcept.pas)';
- RsHintDefHookDllExceptions = 'Hook exceptions raised in DLL compiled with the JCL';
- RsHintDefDebugNoBinary = 'Disable support for JDBG files';
- RsHintDefDebugNoMap = 'Disable support for MAP files';
- RsHintDefDebugNoTD32 = 'Disable support for TD32 informations';
- RsHintDefDebugNoExports = 'Disable support for export names of libraries';
- RsHintDefDebugNoSymbols = 'Disable support for Microsoft debug symbols (PDB and DBG files)';
+ RsHintDefDebug = 'Debug and exception hooking specific options (JclDebug.pas and JclHookExcept.pas)';
+ RsHintDefHookDllExceptions = 'Hook exceptions raised in DLL compiled with the JCL';
+ RsHintDefDebugNoBinary = 'Disable support for JDBG files';
+ RsHintDefDebugNoMap = 'Disable support for MAP files';
+ RsHintDefDebugNoTD32 = 'Disable support for TD32 informations';
+ RsHintDefDebugNoExports = 'Disable support for export names of libraries';
+ RsHintDefDebugNoSymbols = 'Disable support for Microsoft debug symbols (PDB and DBG files)';
// EDI options
RsHintDefEDI = 'EDI specific options (JclEDI*.pas)';
RsHintDefEDIWeakPackageUnits = 'Mark EDI units as weak package units (check if you use the original EDI package)';
// PCRE options
- RsHintDefPCRE = 'PCRE specific options (pcre.pas and JclPCRE.pas)';
- RsHintDefPCREStaticLink = 'Code from PCRE is linked into JCL binaries';
- RsHintDefPCRELinkDLL = 'JCL binaries require pcre.dll to be present';
- RsHintDefPCRELinkOnRequest = 'JCL binaries require pcre.dll when calling PCRE functions';
+ RsHintDefPCRE = 'PCRE specific options (pcre.pas and JclPCRE.pas)';
+ RsHintDefPCREStaticLink = 'Code from PCRE is linked into JCL binaries';
+ RsHintDefPCRELinkDLL = 'JCL binaries require pcre.dll to be present';
+ RsHintDefPCRELinkOnRequest = 'JCL binaries require pcre.dll when calling PCRE functions';
// BZip2 options
- RsHintDefBZip2 = 'BZip2 specific options (bzip2.pas)';
- RsHintDefBZip2StaticLink = 'Code from BZip2 is linked into JCL binaries';
- RsHintDefBZip2LinkDLL = 'JCL binaries require bzip2.dll to be present';
- RsHintDefBZip2LinkOnRequest = 'JCL binaries require bzip2.dll when calling PCRE functions';
+ RsHintDefBZip2 = 'BZip2 specific options (bzip2.pas)';
+ RsHintDefBZip2StaticLink = 'Code from BZip2 is linked into JCL binaries';
+ RsHintDefBZip2LinkDLL = 'JCL binaries require bzip2.dll to be present';
+ RsHintDefBZip2LinkOnRequest = 'JCL binaries require bzip2.dll when calling PCRE functions';
+ // Unicode options
+ RsHintDefUnicode = 'Unicode specific option (JclUnicode.pas)';
+ RsHintDefUnicodeSilentFailure = 'Insert a replacement character if sequence is corrupted rather than raising an exception';
// post compilation
RsHintPdbCreate = 'Create detailed debug information for libraries';
@@ -562,6 +570,7 @@
(Id: -1; Caption: RsCaptionDefEDI; Hint: RsHintDefEDI), // joDefEDI
(Id: -1; Caption: RsCaptionDefPCRE; Hint: RsHintDefPCRE), // joDefPCRE
(Id: -1; Caption: RsCaptionDefBZip2; Hint: RsHintDefBZip2), // joDefBZip2
+ (Id: -1; Caption: RsCaptionDefUnicode; Hint: RsHintDefUnicode), // joDefUnicode
(Id: -1; Caption: RsCaptionDefThreadSafe; Hint: RsHintDefThreadSafe), // joDefThreadSafe
(Id: -1; Caption: RsCaptionDefDropObsoleteCode; Hint: RsHintDefDropObsoleteCode), // joDefDropObsoleteCode
(Id: -1; Caption: RsCaptionDefUnitVersioning; Hint: RsHintDefUnitVersioning), // joDefUnitVersioning
@@ -582,6 +591,7 @@
(Id: -1; Caption: RsCaptionDefBZip2StaticLink; Hint: RsHintDefBZip2StaticLink), // joDefBZip2StaticLink
(Id: -1; Caption: RsCaptionDefBZip2LinkDLL; Hint: RsHintDefBZip2LinkDLL), // joDefBZip2LinkDLL
(Id: -1; Caption: RsCaptionDefBZip2LinkOnRequest; Hint: RsHintDefBZip2LinkOnRequest), // joDefBZip2LinkOnRequest
+ (Id: -1; Caption: RsCaptionDefUnicodeSilentFailure; Hint: RsHintDefUnicodeSilentFailure), // joDefUnicodeSilentFailure
(Id: -1; Caption: RsCaptionEnvironment; Hint: RsHintEnvironment), // joEnvironment
(Id: -1; Caption: RsCaptionEnvLibPath; Hint: RsHintEnvLibPath), // joEnvLibPath
(Id: -1; Caption: RsCaptionEnvBrowsingPath; Hint: RsHintEnvBrowsingPath), // joEnvBrowsingPath
@@ -951,6 +961,10 @@
{$ENDIF MSWINDOWS}
AddOption(joDefBZip2LinkOnRequest, [goRadioButton, goChecked], joDefBZip2);
AddOption(joDefBZip2LinkDLL, [goRadioButton], joDefBZip2);
+ {$IFDEF MSWINDOWS}
+ AddOption(joDefUnicode, [goChecked], Parent);
+ AddOption(joDefUnicodeSilentFailure, [goChecked], joDefUnicode);
+ {$ENDIF MSWINDOWS}
end;
end;
@@ -1148,17 +1162,22 @@
Id, Index: Integer;
StoredValue: string;
ADemoList: TStrings;
+ ResetDefaultValue: Boolean;
begin
AConfiguration := InstallCore.Configuration;
if not Assigned(AConfiguration) then
Exit;
if AConfiguration.SectionExists(TargetName) then
begin
+ ResetDefaultValue := not AConfiguration.OptionAsBool[TargetName, OptionData[joLibrary].Id];
for Option := Low(TJclOption) to High(TJclOption) do
begin
Id := OptionData[Option].Id;
if AConfiguration.ValueExists(TargetName, Id) then
- GUIPage.OptionChecked[Id] := AConfiguration.OptionAsBool[TargetName, Id];
+ GUIPage.OptionChecked[Id] := AConfiguration.OptionAsBool[TargetName, Id]
+ else
+ if ResetDefaultValue then
+ GUIPage.OptionChecked[Id] := False;
end;
end
else
@@ -1404,14 +1423,14 @@
end;
const
- DefineNames: array [joDefThreadSafe..joDefBZip2LinkOnRequest] of string =
+ DefineNames: array [joDefThreadSafe..joDefUnicodeSilentFailure] of string =
( 'THREADSAFE', 'DROP_OBSOLETE_CODE', 'UNITVERSIONING',
'MATH_SINGLE_PRECISION', 'MATH_DOUBLE_PRECISION', 'MATH_EXTENDED_PRECISION',
'MATH_EXT_EXTREMEVALUES', 'HOOK_DLL_EXCEPTIONS',
'DEBUG_NO_BINARY', 'DEBUG_NO_TD32', 'DEBUG_NO_MAP', 'DEBUG_NO_EXPORTS',
'DEBUG_NO_SYMBOLS', 'EDI_WEAK_PACKAGE_UNITS', 'PCRE_STATICLINK',
'PCRE_LINKDLL', 'PCRE_LINKONREQUEST', 'BZIP2_STATICLINK',
- 'BZIP2_LINKDLL', 'BZIP2_LINKONREQUEST' );
+ 'BZIP2_LINKDLL', 'BZIP2_LINKONREQUEST', 'UNICODE_SILENT_FAILURE' );
var
Option: TJclOption;
Defines: TStrings;
Modified: trunk/jcl/source/common/JclResources.pas
===================================================================
--- trunk/jcl/source/common/JclResources.pas 2007-09-08 12:57:10 UTC (rev 2152)
+++ trunk/jcl/source/common/JclResources.pas 2007-09-08 13:37:06 UTC (rev 2153)
@@ -1830,6 +1830,8 @@
RsCasedUnicodeChar = 'cased Unicode character > $FFFFFF found';
RsDecomposedUnicodeChar = 'decomposed Unicode character > $FFFFFF found';
RsCombiningClassUnicodeChar = 'combining class for Unicode character > $FFFFFF found';
+ RsEUnexpectedEOSeq = 'Unexpected end of sequence';
+ RsEInvalidUCS2Char = 'Invalid UCS-2 character %.8x';
//=== JclUnitConv ============================================================
resourcestring
Modified: trunk/jcl/source/jcl.template.inc
===================================================================
--- trunk/jcl/source/jcl.template.inc 2007-09-08 12:57:10 UTC (rev 2152)
+++ trunk/jcl/source/jcl.template.inc 2007-09-08 13:37:06 UTC (rev 2153)
@@ -92,3 +92,7 @@
{.$DEFINE BZIP2_STATICLINK}
{.$DEFINE BZIP2_LINKDLL}
{.$DEFINE BZIP2_LINKONREQUEST}
+
+// Unicode options
+// insert a replacement character if sequence is corrupted rather than raising an exception
+{.$DEFINE UNICODE_SILENT_FAILURE}
Modified: trunk/jcl/source/windows/JclUnicode.pas
===================================================================
--- trunk/jcl/source/windows/JclUnicode.pas 2007-09-08 12:57:10 UTC (rev 2152)
+++ trunk/jcl/source/windows/JclUnicode.pas 2007-09-08 13:37:06 UTC (rev 2153)
@@ -26,6 +26,7 @@
{ Matthias Thoma (mthoma) }
{ Petr Vones (pvones) }
{ Peter Schraut (http://www.console-dev.de) }
+{ Florent Ouchet (outchy) }
{ }
{**************************************************************************************************}
{ }
@@ -1125,10 +1126,10 @@
MaximumUTF16: UCS4 = $0010FFFF;
MaximumUCS4: UCS4 = $7FFFFFFF;
- SurrogateHighStart: UCS4 = $D800;
- SurrogateHighEnd: UCS4 = $DBFF;
- SurrogateLowStart: UCS4 = $DC00;
- SurrogateLowEnd: UCS4 = $DFFF;
+ SurrogateHighStart = UCS4($D800);
+ SurrogateHighEnd = UCS4($DBFF);
+ SurrogateLowStart = UCS4($DC00);
+ SurrogateLowEnd = UCS4($DFFF);
// functions involving null-terminated strings
// NOTE: PWideChars as well as WideStrings are NOT managed by reference counting under Win32.
@@ -1268,11 +1269,81 @@
function TranslateString(const S: string; CP1, CP2: Word): string;
function WideStringToStringEx(const WS: WideString; CodePage: Word): string;
-// WideString conversion routines
+// conversion routines between WideString (handled as UCS-2), UTF-16, UCS-4 and UTF8
+
+// iterative conversions
+
+// UTF8GetNextChar = read next UTF8 sequence at StrPos
+// if UNICODE_SILENT_FAILURE is defined, invalid sequences will be replaced by ReplacementCharacter
+// otherwise StrPos is set to -1 on return to flag an error (invalid UTF8 sequence)
+// StrPos will be incremented by the number of chars that were read
+function UTF8GetNextChar(const S: AnsiString; var StrPos: Integer): UCS4;
+
+// UTF8SkipChars = skip NbSeq UTF8 sequences starting from StrPos
+// returns False if String is too small
+// if UNICODE_SILENT_FAILURE is not defined StrPos is set to -1 on error (invalid UTF8 sequence)
+// StrPos will be incremented by the number of chars that were skipped
+// On return, NbSeq contains the number of UTF8 sequences that were skipped
+function UTF8SkipChars(const S: AnsiString; var StrPos: Integer; var NbSeq: Integer): Boolean;
+
+// UTF8SetNextChar = append an UTF8 sequence at StrPos
+// returns False on error:
+// - if an UCS4 character cannot be stored to an UTF-8 string:
+// - if UNICODE_SILENT_FAILURE is defined, ReplacementCharacter is added
+// - if UNICODE_SILENT_FAILURE is not defined, StrPos is set to -1
+// - StrPos > -1 flags string being too small, callee did nothing, caller is responsible for allocating space
+// StrPos will be incremented by the number of chars that were written
+function UTF8SetNextChar(var S: AnsiString; var StrPos: Integer; Ch: UCS4): Boolean;
+
+// UTF16GetNextChar = read next UTF16 sequence at StrPos
+// if UNICODE_SILENT_FAILURE is defined, invalid sequences will be replaced by ReplacementCharacter
+// otherwise StrPos is set to -1 on return to flag an error (invalid UTF16 sequence)
+// StrPos will be incremented by the number of chars that were read
+function UTF16GetNextChar(const S: WideString; var StrPos: Integer): UCS4;
+
+// UTF16SkipChars = skip NbSeq UTF16 sequences starting from StrPos
+// returns False if String is too small
+// if UNICODE_SILENT_FAILURE is not defined StrPos is set to -1 on error (invalid UTF16 sequence)
+// StrPos will be incremented by the number of chars that were skipped
+// On return, NbChar contains the number of UTF16 sequences that were skipped
+function UTF16SkipChars(const S: WideString; var StrPos: Integer; var NbSeq: Integer): Boolean;
+
+// UTF16SetNextChar = append an UTF16 sequence at StrPos
+// returns False on error:
+// - if an UCS4 character cannot be stored to an UTF-8 string:
+// - if UNICODE_SILENT_FAILURE is defined, ReplacementCharacter is added
+// - if UNICODE_SILENT_FAILURE is not defined, StrPos is set to -1
+// - StrPos > -1 flags string being too small, callee did nothing and caller is responsible for allocating space
+// StrPos will be incremented by the number of chars that were written
+function UTF16SetNextChar(var S: WideString; var StrPos: Integer; Ch: UCS4): Boolean;
+
+// one shot conversions
procedure ExpandANSIString(const Source: PChar; Target: PWideChar; Count: Cardinal);
-function WideStringToUTF8(S: WideString): AnsiString;
-function UTF8ToWideString(S: AnsiString): WideString;
+function WideStringToUTF8(const S: WideString): AnsiString; // WideString = UCS2
+function UTF8ToWideString(const S: AnsiString): WideString; // WideString = UCS2
+function WideStringToUTF16(const S: WideString): WideString; // WideString = UCS2
+function UTF16ToWideString(const S: WideString): WideString; // WideString = UCS2
+function WideStringToUCS4(const S: WideString): TUCS4Array; // WideString = UCS2
+function UCS4ToWideString(const S: TUCS4Array): WideString; // WideString = UCS2
+function UTF8ToUTF16(const S: AnsiString): WideString;
+function UTF16ToUTF8(const S: WideString): AnsiString;
+function UTF8ToUCS4(const S: AnsiString): TUCS4Array;
+function UCS4ToUTF8(const S: TUCS4Array): AnsiString;
+function UTF16ToUCS4(const S: WideString): TUCS4Array;
+function UCS4ToUTF16(const S: TUCS4Array): WideString;
+// indexed conversions
+function UTF8CharCount(const S: AnsiString): Integer;
+function UTF16CharCount(const S: WideString): Integer;
+function UCS2CharCount(const S: WideString): Integer;
+function UCS4CharCount(const S: TUCS4Array): Integer;
+// returns False if string is too small
+// if UNICODE_SILENT_FAILURE is not defined and an invalid UTFX sequence is detected, an exception is raised
+// returns True on success and Value contains UCS4 character that was read
+function GetUCS4CharAt(const UTF8Str: AnsiString; Index: Integer; out Value: UCS4): Boolean; overload;
+function GetUCS4CharAt(const WideStr: WideString; Index: Integer; out Value: UCS4; IsUTF16: Boolean = False): Boolean; overload;
+function GetUCS4CharAt(const UCS4Str: TUCS4Array; Index: Integer; out Value: UCS4): Boolean; overload;
+
type
TCompareFunc = function (const W1, W2: WideString; Locale: LCID): Integer;
@@ -7308,8 +7379,11 @@
// EAX contains Source, EDX contains Target, ECX contains Count
procedure ExpandANSIString(const Source: PChar; Target: PWideChar; Count: Cardinal);
+// Source in EAX
+// Target in EDX
+// Count in ECX
asm
- JECXZ @@Finish // go out if there is nothing to do
+ JECXZ @@Finish // go out if there is nothing to do (ECX = 0)
PUSH ESI
MOV ESI, EAX
XOR EAX, EAX
@@ -7347,115 +7421,954 @@
FirstByteMark: array [0..6] of Byte =
($00, $00, $C0, $E0, $F0, $F8, $FC);
-function WideStringToUTF8(S: WideString): AnsiString;
+procedure FlagInvalidSequence(var StrPos: Integer; Increment: Integer; var Ch: UCS4); overload;
+begin
+ {$IFDEF UNICODE_SILENT_FAILURE}
+ Ch := ReplacementCharacter;
+ Inc(StrPos, Increment);
+ {$ELSE ~UNICODE_SILENT_FAILURE}
+ StrPos := -1;
+ {$ENDIF ~UNICODE_SILENT_FAILURE}
+end;
+
+procedure FlagInvalidUCS2Char(var Ch: UCS4);
+begin
+ {$IFDEF UNICODE_SILENT_FAILURE}
+ Ch := ReplacementCharacter;
+ {$ELSE ~UNICODE_SILENT_FAILURE}
+ raise EJclUnicodeError.CreateResFmt(@RsEInvalidUCS2Char, [Ch]);
+ {$ENDIF ~UNICODE_SILENT_FAILURE}
+end;
+
+procedure FlagInvalidSequence(var StrPos: Integer; Increment: Integer); overload;
+begin
+ {$IFDEF UNICODE_SILENT_FAILURE}
+ Inc(StrPos, Increment);
+ {$ELSE ~UNICODE_SILENT_FAILURE}
+ StrPos := -1;
+ {$ENDIF ~UNICODE_SILENT_FAILURE}
+end;
+
+// if UNICODE_SILENT_FAILURE is defined, invalid sequences will be replaced by ReplacementCharacter
+// otherwise StrPos is set to -1 on return to flag an error (invalid UTF8 sequence)
+// StrPos will be incremented by the number of chars that were read
+function UTF8GetNextChar(const S: AnsiString; var StrPos: Integer): UCS4;
var
+ StrLength: Integer;
+ ChNext: UCS4;
+begin
+ StrLength := Length(S);
+
+ if (StrPos <= StrLength) and (StrPos > 0) then
+ begin
+ Result := UCS4(S[StrPos]);
+
+ case Result of
+ $00..$7F:
+ // 1 byte to read
+ Inc(StrPos);
+ $C0..$DF:
+ begin
+ // 2 bytes to read
+ if StrPos >= StrLength then
+ begin
+ FlagInvalidSequence(StrPos, 1, Result);
+ Exit;
+ end;
+ ChNext := UCS4(S[StrPos + 1]);
+ if (ChNext and $C0) <> $80 then
+ begin
+ FlagInvalidSequence(StrPos, 1, Result);
+ Exit;
+ end;
+ Result := ((Result and $1F) shl 6) or (ChNext and $3F);
+ Inc(StrPos, 2);
+ end;
+ $E0..$EF:
+ begin
+ // 3 bytes to read
+ if (StrPos + 1) >= StrLength then
+ begin
+ FlagInvalidSequence(StrPos, 1, Result);
+ Exit;
+ end;
+ ChNext := UCS4(S[StrPos + 1]);
+ if (ChNext and $C0) <> $80 then
+ begin
+ FlagInvalidSequence(StrPos, 1, Result);
+ Exit;
+ end;
+ Result := ((Result and $0F) shl 12) or ((ChNext and $3F) shl 6);
+ ChNext := UCS4(S[StrPos + 2]);
+ if (ChNext and $C0) <> $80 then
+ begin
+ FlagInvalidSequence(StrPos, 2, Result);
+ Exit;
+ end;
+ Result := Result or (ChNext and $3F);
+ Inc(StrPos, 3);
+ end;
+ $F0..$F7:
+ begin
+ // 4 bytes to read
+ if (StrPos + 2) >= StrLength then
+ begin
+ FlagInvalidSequence(StrPos, 1, Result);
+ Exit;
+ end;
+ ChNext := UCS4(S[StrPos + 1]);
+ if (ChNext and $C0) <> $80 then
+ begin
+ FlagInvalidSequence(StrPos, 1, Result);
+ Exit;
+ end;
+ Result := ((Result and $07) shl 18) or ((ChNext and $3F) shl 12);
+ ChNext := UCS4(S[StrPos + 2]);
+ if (ChNext and $C0) <> $80 then
+ begin
+ FlagInvalidSequence(StrPos, 2, Result);
+ Exit;
+ end;
+ Result := Result or ((ChNext and $3F) shl 6);
+ ChNext := UCS4(S[StrPos + 3]);
+ if (ChNext and $C0) <> $80 then
+ begin
+ FlagInvalidSequence(StrPos, 3, Result);
+ Exit;
+ end;
+ Result := Result or (ChNext and $3F);
+ Inc(StrPos, 4);
+ end;
+ $F8..$FB:
+ begin
+ // 5 bytes to read
+ if (StrPos + 3) >= StrLength then
+ begin
+ FlagInvalidSequence(StrPos, 1, Result);
+ Exit;
+ end;
+ ChNext := UCS4(S[StrPos + 1]);
+ if (ChNext and $C0) <> $80 then
+ begin
+ FlagInvalidSequence(StrPos, 1, Result);
+ Exit;
+ end;
+ Result := ((Result and $03) shl 24) or ((ChNext and $3F) shl 18);
+ ChNext := UCS4(S[StrPos + 2]);
+ if (ChNext and $C0) <> $80 then
+ begin
+ FlagInvalidSequence(StrPos, 2, Result);
+ Exit;
+ end;
+ Result := Result or ((ChNext and $3F) shl 12);
+ ChNext := UCS4(S[StrPos + 3]);
+ if (ChNext and $C0) <> $80 then
+ begin
+ FlagInvalidSequence(StrPos, 3, Result);
+ Exit;
+ end;
+ Result := Result or ((ChNext and $3F) shl 6);
+ ChNext := UCS4(S[StrPos + 4]);
+ if (ChNext and $C0) <> $80 then
+ begin
+ FlagInvalidSequence(StrPos, 4, Result);
+ Exit;
+ end;
+ Result := Result or (ChNext and $3F);
+ Inc(StrPos, 5);
+ end;
+ $FC..$FD:
+ begin
+ // 6 bytes to read
+ if (StrPos + 4) >= StrLength then
+ begin
+ FlagInvalidSequence(StrPos, 1, Result);
+ Exit;
+ end;
+ ChNext := UCS4(S[StrPos + 1]);
+ if (ChNext and $C0) <> $80 then
+ begin
+ FlagInvalidSequence(StrPos, 1, Result);
+ Exit;
+ end;
+ Result := ((Result and $01) shl 30) or ((ChNext and $3F) shl 24);
+ ChNext := UCS4(S[StrPos + 2]);
+ if (ChNext and $C0) <> $80 then
+ begin
+ FlagInvalidSequence(StrPos, 2, Result);
+ Exit;
+ end;
+ Result := Result or ((ChNext and $3F) shl 18);
+ ChNext := UCS4(S[StrPos + 3]);
+ if (ChNext and $C0) <> $80 then
+ begin
+ FlagInvalidSequence(StrPos, 3, Result);
+ Exit;
+ end;
+ Result := Result or ((ChNext and $3F) shl 12);
+ ChNext := UCS4(S[StrPos + 4]);
+ if (ChNext and $C0) <> $80 then
+ begin
+ FlagInvalidSequence(StrPos, 4, Result);
+ Exit;
+ end;
+ Result := Result or ((ChNext and $3F) shl 6);
+ ChNext := UCS4(S[StrPos + 5]);
+ if (ChNext and $C0) <> $80 then
+ begin
+ FlagInvalidSequence(StrPos, 5, Result);
+ Exit;
+ end;
+ Result := Result or (ChNext and $3F);
+ Inc(StrPos, 6);
+ end;
+ else
+ FlagInvalidSequence(StrPos, 1, Result);
+ Exit;
+ end;
+ end
+ else
+ begin
+ // StrPos > StrLength
+ Result := 0;
+ FlagInvalidSequence(StrPos, 0, Result);
+ end;
+end;
+
+// returns False if String is too small
+// if UNICODE_SILENT_FAILURE is not defined StrPos is set to -1 on error (invalid UTF8 sequence)
+// StrPos will be incremented by the number of ansi chars that were skipped
+// On return, NbSeq contains the number of UTF8 sequences that were skipped
+function UTF8SkipChars(const S: AnsiString; var StrPos: Integer; var NbSeq: Integer): Boolean;
+var
+ StrLength: Integer;
Ch: UCS4;
- L, J, T,
- BytesToWrite: Cardinal;
- ByteMask: UCS4;
- ByteMark: UCS4;
+ Index: Integer;
begin
+ Result := True;
+ StrLength := Length(S);
+
+ Index := 0;
+ while (Index < NbSeq) and (StrPos > 0) do
+ begin
+ Ch := UCS4(S[StrPos]);
+
+ case Ch of
+ $00..$7F:
+ // 1 byte to skip
+ Inc(StrPos);
+ $C0..$DF:
+ // 2 bytes to skip
+ if (StrPos >= StrLength) or ((UCS4(S[StrPos + 1]) and $C0) <> $80) then
+ FlagInvalidSequence(StrPos, 1)
+ else
+ Inc(StrPos, 2);
+ $E0..$EF:
+ // 3 bytes to skip
+ if ((StrPos + 1) >= StrLength) or ((UCS4(S[StrPos + 1]) and $C0) <> $80) then
+ FlagInvalidSequence(StrPos, 1)
+ else
+ if (UCS4(S[StrPos + 2]) and $C0) <> $80 then
+ FlagInvalidSequence(StrPos, 2)
+ else
+ Inc(StrPos, 3);
+ $F0..$F7:
+ // 4 bytes to skip
+ if ((StrPos + 2) >= StrLength) or ((UCS4(S[StrPos + 1]) and $C0) <> $80) then
+ FlagInvalidSequence(StrPos, 1)
+ else
+ if (UCS4(S[StrPos + 2]) and $C0) <> $80 then
+ FlagInvalidSequence(StrPos, 2)
+ else
+ if (UCS4(S[StrPos + 3]) and $C0) <> $80 then
+ FlagInvalidSequence(StrPos, 3)
+ else
+ Inc(StrPos, 4);
+ $F8..$FB:
+ // 5 bytes to skip
+ if ((StrPos + 3) >= StrLength) or ((UCS4(S[StrPos + 1]) and $C0) <> $80) then
+ FlagInvalidSequence(StrPos, 1)
+ else
+ if (UCS4(S[StrPos + 2]) and $C0) <> $80 then
+ FlagInvalidSequence(StrPos, 2)
+ else
+ if (UCS4(S[StrPos + 3]) and $C0) <> $80 then
+ FlagInvalidSequence(StrPos, 3)
+ else
+ if (UCS4(S[StrPos + 4]) and $C0) <> $80 then
+ FlagInvalidSequence(StrPos, 4)
+ else
+ Inc(StrPos, 5);
+ $FC..$FD:
+ // 6 bytes to skip
+ if ((StrPos + 4) >= StrLength) or ((UCS4(S[StrPos + 1]) and $C0) <> $80) then
+ FlagInvalidSequence(StrPos, 1)
+ else
+ if (UCS4(S[StrPos + 2]) and $C0) <> $80 then
+ FlagInvalidSequence(StrPos, 2)
+ else
+ if (UCS4(S[StrPos + 3]) and $C0) <> $80 then
+ FlagInvalidSequence(StrPos, 3)
+ else
+ if (UCS4(S[StrPos + 4]) and $C0) <> $80 then
+ FlagInvalidSequence(StrPos, 4)
+ else
+ if (UCS4(S[StrPos + 5]) and $C0) <> $80 then
+ FlagInvalidSequence(StrPos, 5)
+ else
+ Inc(StrPos, 6);
+ else
+ FlagInvalidSequence(StrPos, 1);
+ end;
+
+ if StrPos <> -1 then
+ Inc(Index);
+ if (StrPos > StrLength) and (Index < NbSeq) then
+ begin
+ Result := False;
+ Break;
+ end;
+ end;
+ NbSeq := Index;
+end;
+
+// returns False on error:
+// - if an UCS4 character cannot be stored to an UTF-8 string:
+// - if UNICODE_SILENT_FAILURE is defined, ReplacementCharacter is added
+// - if UNICODE_SILENT_FAILURE is not defined, StrPos is set to -1
+// - StrPos > -1 flags string being too small, caller is responsible for allocating space
+// StrPos will be incremented by the number of chars that were written
+function UTF8SetNextChar(var S: AnsiString; var StrPos: Integer; Ch: UCS4): Boolean;
+var
+ StrLength: Integer;
+begin
+ StrLength := Length(S);
+
+ if Ch <= $7F then
+ begin
+ // 7 bits to store
+ Result := StrPos <= StrLength;
+ if Result then
+ begin
+ S[StrPos] := AnsiChar(Ch);
+ Inc(StrPos);
+ end;
+ end
+ else
+ if Ch <= $7FF then
+ begin
+ // 11 bits to store
+ Result := StrPos < StrLength;
+ if Result then
+ begin
+ S[StrPos] := AnsiChar($C0 or (Ch shr 6)); // 5 bits
+ S[StrPos + 1] := AnsiChar((Ch and $3F) or $80); // 6 bits
+ Inc(StrPos, 2);
+ end;
+ end
+ else
+ if Ch <= $FFFF then
+ begin
+ // 16 bits to store
+ Result := StrPos < (StrLength - 1);
+ if Result then
+ begin
+ S[StrPos] := AnsiChar($E0 or (Ch shr 12)); // 4 bits
+ S[StrPos + 1] := AnsiChar(((Ch shr 6) and $3F) or $80); // 6 bits
+ S[StrPos + 2] := AnsiChar((Ch and $3F) or $80); // 6 bits
+ Inc(StrPos, 3);
+ end;
+ end
+ else
+ if Ch <= $1FFFFF then
+ begin
+ // 21 bits to store
+ Result := StrPos < (StrLength - 2);
+ if Result then
+ begin
+ S[StrPos] := AnsiChar($F0 or (Ch shr 18)); // 3 bits
+ S[StrPos + 1] := AnsiChar(((Ch shr 12) and $3F) or $80); // 6 bits
+ S[StrPos + 2] := AnsiChar(((Ch shr 6) and $3F) or $80); // 6 bits
+ S[StrPos + 3] := AnsiChar((Ch and $3F) or $80); // 6 bits
+ Inc(StrPos, 4);
+ end;
+ end
+ else
+ if Ch <= $3FFFFFF then
+ begin
+ // 26 bits to store
+ Result := StrPos < (StrLength - 2);
+ if Result then
+ begin
+ S[StrPos] := AnsiChar($F8 or (Ch shr 24)); // 2 bits
+ S[StrPos + 1] := AnsiChar(((Ch shr 18) and $3F) or $80); // 6 bits
+ S[StrPos + 2] := AnsiChar(((Ch shr 12) and $3F) or $80); // 6 bits
+ S[StrPos + 3] := AnsiChar(((Ch shr 6) and $3F) or $80); // 6 bits
+ S[StrPos + 4] := AnsiChar((Ch and $3F) or $80); // 6 bits
+ Inc(StrPos, 5);
+ end;
+ end
+ else
+ if Ch <= MaximumUCS4 then
+ begin
+ // 31 bits to store
+ Result := StrPos < (StrLength - 3);
+ if Result then
+ begin
+ S[StrPos] := AnsiChar($FC or (Ch shr 30)); // 1 bits
+ S[StrPos + 1] := AnsiChar(((Ch shr 24) and $3F) or $80); // 6 bits
+ S[StrPos + 2] := AnsiChar(((Ch shr 18) and $3F) or $80); // 6 bits
+ S[StrPos + 3] := AnsiChar(((Ch shr 12) and $3F) or $80); // 6 bits
+ S[StrPos + 4] := AnsiChar(((Ch shr 6) and $3F) or $80); // 6 bits
+ S[StrPos + 5] := AnsiChar((Ch and $3F) or $80); // 6 bits
+ Inc(StrPos, 6);
+ end;
+ end
+ else
+ begin
+ {$IFDEF UNICOLE_SILENT_FAILURE}
+ // add ReplacementCharacter
+ Result := StrPos < (StrLength - 1);
+ if Result then
+ begin
+ S[StrPos] := AnsiChar($E0 or (ReplacementCharacter shr 12)); // 4 bits
+ S[StrPos + 1] := AnsiChar(((ReplacementCharacter shr 6) and $3F) or $80); // 6 bits
+ S[StrPos + 2] := AnsiChar((ReplacementCharacter and $3F) or $80); // 6 bits
+ Inc(StrPos, 3);
+ end;
+ {$ELSE ~UNICODE_SILENT_FAILURE}
+ StrPos := -1;
+ Result := False;
+ {$ENDIF ~UNICODE_SILENT_FAILURE}
+ end;
+end;
+
+// if UNICODE_SILENT_FAILURE is defined, invalid sequences will be replaced by ReplacementCharacter
+// otherwise StrPos is set to -1 on return to flag an error (invalid UTF16 sequence)
+// StrPos will be incremented by the number of chars that were read
+function UTF16GetNextChar(const S: WideString; var StrPos: Integer): UCS4;
+var
+ StrLength: Integer;
+ ChNext: UCS4;
+begin
+ StrLength := Length(S);
+
+ if (StrPos <= StrLength) and (StrPos > 0) then
+ begin
+ Result := UCS4(S[StrPos]);
+
+ case Result of
+ SurrogateHighStart..SurrogateHighEnd:
+ begin
+ // 2 bytes to read
+ if StrPos >= StrLength then
+ begin
+ FlagInvalidSequence(StrPos, 1, Result);
+ Exit;
+ end;
+ ChNext := UCS4(S[StrPos + 1]);
+ if (ChNext < SurrogateLowStart) or (ChNext > SurrogateLowEnd) then
+ begin
+ FlagInvalidSequence(StrPos, 1, Result);
+ Exit;
+ end;
+ Result := ((Result - SurrogateHighStart) shl HalfShift) + (ChNext - SurrogateLowStart) + HalfBase;
+ Inc(StrPos, 2);
+ end;
+ SurrogateLowStart..SurrogateLowEnd:
+ FlagInvalidSequence(StrPos, 1, Result);
+ else
+ // 1 byte to read
+ Inc(StrPos);
+ end;
+ end
+ else
+ begin
+ // StrPos > StrLength
+ Result := 0;
+ FlagInvalidSequence(StrPos, 0, Result);
+ end;
+end;
+
+// returns False if String is too small
+// if UNICODE_SILENT_FAILURE is not defined StrPos is set to -1 on error (invalid UTF16 sequence)
+// StrPos will be incremented by the number of chars that were skipped
+// On return, NbSeq contains the number of UTF16 sequences that were skipped
+function UTF16SkipChars(const S: WideString; var StrPos: Integer; var NbSeq: Integer): Boolean;
+var
+ StrLength, Index: Integer;
+ Ch, ChNext: UCS4;
+begin
+ Result := True;
+ StrLength := Length(S);
+
+ Index := 0;
+ while (Index < NbSeq) and (StrPos > 0) do
+ begin
+ Ch := UCS4(S[StrPos]);
+
+ case Ch of
+ SurrogateHighStart..SurrogateHighEnd:
+ // 2 bytes to skip
+ if (StrPos >= StrLength) then
+ FlagInvalidSequence(StrPos, 1)
+ else
+ begin
+ ChNext := UCS4(S[StrPos + 1]);
+ if (ChNext < SurrogateLowStart) or (ChNext > SurrogateLowEnd) then
+ FlagInvalidSequence(StrPos, 1)
+ else
+ Inc(StrPos, 2);
+ end;
+ SurrogateLowStart..SurrogateLowEnd:
+ // error
+ FlagInvalidSequence(StrPos, 1);
+ else
+ // 1 byte to skip
+ Inc(StrPos);
+ end;
+
+ if StrPos <> -1 then
+ Inc(Index);
+
+ if (StrPos > StrLength) and (Index < NbSeq) then
+ begin
+ Result := False;
+ Break;
+ end;
+ end;
+ NbSeq := Index;
+end;
+
+// returns False on error:
+// - if an UCS4 character cannot be stored to an UTF-8 string:
+// - if UNICODE_SILENT_FAILURE is defined, ReplacementCharacter is added
+// - if UNICODE_SILENT_FAILURE is not defined, StrPos is set to -1
+// - StrPos > -1 flags string being too small, caller is responsible for allocating space
+// StrPos will be incremented by the number of chars that were written
+function UTF16SetNextChar(var S: WideString; var StrPos: Integer; Ch: UCS4): Boolean;
+var
+ StrLength: Integer;
+begin
+ StrLength := Length(S);
+
+ if Ch <= MaximumUCS2 then
+ begin
+ // 16 bits to store in place
+ Result := StrPos <= StrLength;
+ if Result then
+ begin
+ S[StrPos] := WideChar(Ch);
+ Inc(StrPos);
+ end;
+ end
+ else
+ if Ch <= MaximumUTF16 then
+ begin
+ // stores a surrogate pair
+ Result := StrPos < StrLength;
+ if Result then
+ begin
+ Ch := Ch - HalfBase;
+ S[StrPos] := WideChar((Ch shr HalfShift) + SurrogateHighStart);
+ S[StrPos + 1] := WideChar((Ch and HalfMask) + SurrogateLowStart);
+ Inc(StrPos, 2);
+ end;
+ end
+ else
+ begin
+ {$IFDEF UNICOLE_SILENT_FAILURE}
+ // add ReplacementCharacter
+ Result := StrPos <= StrLength;
+ if Result then
+ begin
+ S[StrPos] := WideChar(ReplacementCharacter);
+ Inc(StrPos, 1);
+ end;
+ {$ELSE ~UNICODE_SILENT_FAILURE}
+ StrPos := -1;
+ Result := False;
+ {$ENDIF ~UNICODE_SILENT_FAILURE}
+ end;
+end;
+
+function WideStringToUTF8(const S: WideString): AnsiString;
+var
+ SrcIndex, SrcLength, DestIndex: Integer;
+begin
if S = '' then
Result := ''
else
begin
- SetLength(Result, Length(S) * 6); // assume worst case
- T := 1;
- ByteMask := $BF;
- ByteMark := $80;
+ SrcLength := Length(S);
+ SetLength(Result, SrcLength * 3); // assume worst case
+ DestIndex := 1;
- for J := 1 to Length(S) do
+ for SrcIndex := 1 to SrcLength do
begin
- Ch := UCS4(S[J]);
+ UTF8SetNextChar(Result, DestIndex, UCS4(S[SrcIndex]));
+ if DestIndex = -1 then
+ raise EJclUnicodeError.CreateRes(@RsEUnexpectedEOSeq);
+ end;
- if Ch < $80 then
- BytesToWrite := 1
- else
- if Ch < $800 then
- BytesToWrite := 2
- else
- if Ch < $10000 then
- BytesToWrite := 3
- else
- if Ch < $200000 then
- BytesToWrite := 4
- else
- if Ch < $4000000 then
- BytesToWrite := 5
- else
- if Ch <= MaximumUCS4 then
- BytesToWrite := 6
- else
- begin
- BytesToWrite := 2;
- Ch := ReplacementCharacter;
- end;
+ SetLength(Result, DestIndex - 1); // set to actual length
+ end;
+end;
- for L := BytesToWrite downto 2 do
- begin
- Result[T + L - 1] := Char((Ch or ByteMark) and ByteMask);
- Ch := Ch shr 6;
- end;
- Result[T] := Char(Ch or FirstByteMark[BytesToWrite]);
- Inc(T, BytesToWrite);
+function UTF8ToWideString(const S: AnsiString): WideString;
+var
+ SrcIndex, SrcLength, DestIndex: Integer;
+ Ch: UCS4;
+begin
+ if S = '' then
+ Result := ''
+ else
+ begin
+ SrcLength := Length(S);
+ SetLength(Result, SrcLength); // create enough room
+
+ SrcIndex := 1;
+ DestIndex := 1;
+ while SrcIndex <= SrcLength do
+ begin
+ Ch := UTF8GetNextChar(S, SrcIndex);
+ if SrcIndex = -1 then
+ raise EJclUnicodeError.CreateRes(@RsEUnexpectedEOSeq);
+
+ if Ch > MaximumUCS2 then
+ FlagInvalidUCS2Char(Ch);
+
+ Result[DestIndex] := UCS2(Ch);
+ Inc(DestIndex);
end;
- SetLength(Result, T - 1); // set to actual length
+ SetLength(Result, DestIndex - 1); // now fix up length
end;
end;
-function UTF8ToWideString(S: AnsiString): WideString;
+function WideStringToUTF16(const S: WideString): WideString;
var
- L, J, T: Cardinal;
+ SrcIndex, SrcLength, DestIndex: Integer;
+begin
+ if S = '' then
+ Result := ''
+ else
+ begin
+ SrcLength := Length(S);
+ SetLength(Result, SrcLength * 2); // assume worst case
+ DestIndex := 1;
+
+ for SrcIndex := 1 to SrcLength do
+ begin
+ UTF16SetNextChar(Result, DestIndex, UCS4(S[SrcIndex]));
+ if DestIndex = -1 then
+ raise EJclUnicodeError.CreateRes(@RsEUnexpectedEOSeq);
+ end;
+
+ SetLength(Result, DestIndex - 1); // set to actual length
+ end;
+end;
+
+function UTF16ToWideString(const S: WideString): WideString;
+var
+ SrcIndex, SrcLength, DestIndex: Integer;
Ch: UCS4;
- ExtraBytesToWrite: Word;
begin
if S = '' then
Result := ''
else
begin
- SetLength(Result, Length(S)); // create enough room
+ SrcLength := Length(S);
+ SetLength(Result, SrcLength); // create enough room
- L := 1;
- T := 1;
- while L <= Cardinal(Length(S)) do
+ SrcIndex := 1;
+ DestIndex := 1;
+ while SrcIndex <= SrcLength do
begin
- Ch := 0;
- ExtraBytesToWrite := BytesFromUTF8[Ord(S[L])];
+ Ch := UTF16GetNextChar(S, SrcIndex);
+ if SrcIndex = -1 then
+ raise EJclUnicodeError.CreateRes(@RsEUnexpectedEOSeq);
- for J := ExtraBytesToWrite downto 1 do
- begin
- Ch := Ch + Ord(S[L]);
- Inc(L);
- Ch := Ch shl 6;
- end;
- Ch := Ch + Ord(S[L]);
- Inc(L);
- Ch := Ch - OffsetsFromUTF8[ExtraBytesToWrite];
+ if Ch > MaximumUCS2 then
+ FlagInvalidUCS2Char(Ch);
- if Ch <= MaximumUCS2 then
- begin
- Result[T] := WideChar(Ch);
- Inc(T);
- end
- else
- if Ch > MaximumUCS4 then
- begin
- Result[T] := WideChar(ReplacementCharacter);
- Inc(T);
- end
- else
- begin
- Ch := Ch - HalfBase;
- Result[T] := WideChar((Ch shr HalfShift) + SurrogateHighStart);
- Inc(T);
- Result[T] := WideChar((Ch and HalfMask) + SurrogateLowStart);
- Inc(T);
- end;
+ Result[DestIndex] := UCS2(Ch);
+ Inc(DestIndex);
end;
- SetLength(Result, T - 1); // now fix up length
+ SetLength(Result, DestIndex - 1); // now fix up length
end;
end;
+function WideStringToUCS4(const S: WideString): TUCS4Array;
+var
+ Index, SrcLength: Integer;
+begin
+ if S <> '' then
+ begin
+ SrcLength := Length(S);
+ SetLength(Result, SrcLength); // same length
+
+ for Index := 0 to SrcLength - 1 do
+ Result[Index] := UCS4(S[Index + 1]);
+ end;
+end;
+
+function UCS4ToWideString(const S: TUCS4Array): WideString;
+var
+ Index, SrcLength: Integer;
+ Ch: UCS4;
+begin
+ SrcLength := Length(S);
+ if SrcLength = 0 then
+ Result := ''
+ else
+ begin
+ SetLength(Result, SrcLength); // same length
+
+ for Index := 0 to SrcLength - 1 do
+ begin
+ Ch := S[Index];
+
+ if Ch > MaximumUCS2 then
+ FlagInvalidUCS2Char(Ch);
+
+ Result[Index + 1] := WideChar(Ch);
+ end;
+ end;
+end;
+
+function UTF8ToUTF16(const S: AnsiString): WideString;
+var
+ SrcIndex, SrcLength, DestIndex: Integer;
+ Ch: UCS4;
+begin
+ if S = '' then
+ Result := ''
+ else
+ begin
+ SrcLength := Length(S);
+ SetLength(Result, SrcLength); // create enough room
+
+ SrcIndex := 1;
+ DestIndex := 1;
+ while SrcIndex <= SrcLength do
+ begin
+ Ch := UTF8GetNextChar(S, SrcIndex);
+ if SrcIndex = -1 then
+ raise EJclUnicodeError.CreateRes(@RsEUnexpectedEOSeq);
+
+ UTF16SetNextChar(Result, DestIndex, Ch);
+ end;
+ SetLength(Result, DestIndex - 1); // now fix up length
+ end;
+end;
+
+function UTF16ToUTF8(const S: WideString): AnsiString;
+var
+ SrcIndex, SrcLength, DestIndex: Integer;
+ Ch: UCS4;
+begin
+ if S = '' then
+ Result := ''
+ else
+ begin
+ SrcLength := Length(S);
+ SetLength(Result, SrcLength * 3); // worste case
+
+ SrcIndex := 1;
+ DestIndex := 1;
+ while SrcIndex <= SrcLength do
+ begin
+ Ch := UTF16GetNextChar(S, SrcIndex);
+ if SrcIndex = -1 then
+ raise EJclUnicodeError.CreateRes(@RsEUnexpectedEOSeq);
+
+ UTF8SetNextChar(Result, DestIndex, Ch);
+ end;
+ SetLength(Result, DestIndex - 1); // now fix up length
+ end;
+end;
+
+function UTF8ToUCS4(const S: AnsiString): TUCS4Array;
+var
+ SrcIndex, SrcLength, DestIndex: Integer;
+ Ch: UCS4;
+begin
+ if S <> '' then
+ begin
+ SrcLength := Length(S);
+ SetLength(Result, SrcLength); // create enough room
+
+ SrcIndex := 1;
+ DestIndex := 0;
+ while SrcIndex <= SrcLength do
+ begin
+ Ch := UTF8GetNextChar(S, SrcIndex);
+ if SrcIndex = -1 then
+ raise EJclUnicodeError.CreateRes(@RsEUnexpectedEOSeq);
+
+ Result[DestIndex] := Ch;
+ Inc(DestIndex);
+ end;
+ SetLength(Result, DestIndex); // now fix up length
+ end;
+end;
+
+function UCS4ToUTF8(const S: TUCS4Array): AnsiString;
+var
+ SrcIndex, SrcLength, DestIndex: Integer;
+begin
+ SrcLength := Length(S);
+ if Length(S) = 0 then
+ Result := ''
+ else
+ begin
+ SetLength(Result, SrcLength * 3); // assume worst case
+ DestIndex := 1;
+
+ for SrcIndex := 0 to SrcLength - 1 do
+ begin
+ UTF8SetNextChar(Result, DestIndex, S[SrcIndex]);
+ if DestIndex = -1 then
+ raise EJclUnicodeError.CreateRes(@RsEUnexpectedEOSeq);
+ end;
+
+ SetLength(Result, DestIndex - 1); // set to actual length
+ end;
+end;
+
+function UTF16ToUCS4(const S: WideString): TUCS4Array;
+var
+ SrcIndex, SrcLength, DestIndex: Integer;
+ Ch: UCS4;
+begin
+ if S <> '' then
+ begin
+ SrcLength := Length(S);
+ SetLength(Result, SrcLength); // create enough room
+
+ SrcIndex := 1;
+ DestIndex := 0;
+ while SrcIndex <= SrcLength do
+ begin
+ Ch := UTF16GetNextChar(S, SrcIndex);
+ if SrcIndex = -1 then
+ raise EJclUnicodeError.CreateRes(@RsEUnexpectedEOSeq);
+
+ Result[DestIndex] := Ch;
+ Inc(DestIndex);
+ end;
+ SetLength(Result, DestIndex); // now fix up length
+ end;
+end;
+
+function UCS4ToUTF16(const S: TUCS4Array): WideString;
+var
+ SrcIndex, SrcLength, DestIndex: Integer;
+begin
+ SrcLength := Length(S);
+ if SrcLength = 0 then
+ Result := ''
+ else
+ begin
+ SetLength(Result, SrcLength * 3); // assume worst case
+ DestIndex := 1;
+
+ for SrcIndex := 0 to SrcLength - 1 do
+ begin
+ UTF16SetNextChar(Result, DestIndex, S[SrcIndex]);
+ if DestIndex = -1 then
+ raise EJclUnicodeError.CreateRes(@RsEUnexpectedEOSeq);
+ end;
+
+ SetLength(Result, DestIndex - 1); // set to actual length
+ end;
+end;
+
+function UTF8CharCount(const S: AnsiString): Integer;
+var
+ StrPos: Integer;
+begin
+ StrPos := 1;
+ Result := Length(S);
+ UTF8SkipChars(S, StrPos, Result);
+ if StrPos = -1 then
+ raise EJclUnicodeError.CreateRes(@RsEUnexpectedEOSeq);
+end;
+
+function UTF16CharCount(const S: WideString): Integer;
+var
+ StrPos: Integer;
+begin
+ StrPos := 1;
+ Result := Length(S);
+ UTF16SkipChars(S, StrPos, Result);
+ if StrPos = -1 then
+ raise EJclUnicodeError.CreateRes(@RsEUnexpectedEOSeq);
+end;
+
+function UCS2CharCount(const S: WideString): Integer;
+begin
+ Result := Length(S);
+end;
+
+function UCS4CharCount(const S: TUCS4Array): Integer;
+begin
+ Result := Length(S);
+end;
+
+function GetUCS4CharAt(const UTF8Str: AnsiString; Index: Integer; out Value: UCS4): Boolean; overload;
+var
+ StrPos: Integer;
+begin
+ StrPos := 1;
+ Result := Index >= 0;
+ if Result then
+ Result := UTF8SkipChars(UTF8Str, StrPos, Index);
+ if StrPos = -1 then
+ raise EJclUnicodeError.CreateRes(@RsEUnexpectedEOSeq);
+ Result := Result and (StrPos <= Length(UTF8Str));
+ if Result then
+ begin
+ Value := UTF8GetNextChar(UTF8Str, StrPos);
+ if StrPos = -1 then
+ raise EJclUnicodeError.CreateRes(@RsEUnexpectedEOSeq);
+ end;
+end;
+
+function GetUCS4CharAt(const WideStr: WideString; Index: Integer; out Value: UCS4; IsUTF16: Boolean = False): Boolean; overload;
+var
+ StrPos: Integer;
+begin
+ if IsUTF16 then
+ begin
+ StrPos := 1;
+ Result := Index >= 0;
+ if Result then
+ Result := UTF16SkipChars(WideStr, StrPos, Index);
+ if StrPos = -1 then
+ raise EJclUnicodeError.CreateRes(@RsEUnexpectedEOSeq);
+ Result := Result and (StrPos <= Length(WideStr));
+ if Result then
+ begin
+ Value := UTF16GetNextChar(WideStr, StrPos);
+ if StrPos = -1 then
+ raise EJclUnicodeError.CreateRes(@RsEUnexpectedEOSeq);
+ end;
+ end
+ else
+ begin
+ Result := (Index >= 1) and (Index <= Length(WideStr));
+ Value := UCS4(WideStr[Index]);
+ end;
+end;
+
+function GetUCS4CharAt(const UCS4Str: TUCS4Array; Index: Integer; out Value: UCS4): Boolean; overload;
+begin
+ Result := (Index >= 0) and (Index < Length(UCS4Str));
+ if Result then
+ Value := UCS4Str[Index];
+end;
+
procedure PrepareUnicodeData;
// Prepares structures which are globally needed.
begin
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <ou...@us...> - 2007-09-08 12:57:12
|
Revision: 2152
http://jcl.svn.sourceforge.net/jcl/?rev=2152&view=rev
Author: outchy
Date: 2007-09-08 05:57:10 -0700 (Sat, 08 Sep 2007)
Log Message:
-----------
default value is kept if setting doesn't exist in ini file.
Modified Paths:
--------------
trunk/jcl/install/JclInstall.pas
Modified: trunk/jcl/install/JclInstall.pas
===================================================================
--- trunk/jcl/install/JclInstall.pas 2007-09-07 09:35:57 UTC (rev 2151)
+++ trunk/jcl/install/JclInstall.pas 2007-09-08 12:57:10 UTC (rev 2152)
@@ -1157,7 +1157,8 @@
for Option := Low(TJclOption) to High(TJclOption) do
begin
Id := OptionData[Option].Id;
- GUIPage.OptionChecked[Id] := AConfiguration.OptionAsBool[TargetName, Id];
+ if AConfiguration.ValueExists(TargetName, Id) then
+ GUIPage.OptionChecked[Id] := AConfiguration.OptionAsBool[TargetName, Id];
end;
end
else
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <ou...@us...> - 2007-09-07 09:36:03
|
Revision: 2151
http://jcl.svn.sourceforge.net/jcl/?rev=2151&view=rev
Author: outchy
Date: 2007-09-07 02:35:57 -0700 (Fri, 07 Sep 2007)
Log Message:
-----------
downgrading unicode data to 5.0.0 (which seems the latest stable version)
upgrading unicode blocks to 5.0.0
Modified Paths:
--------------
trunk/jcl/source/windows/JclUnicode.pas
trunk/jcl/source/windows/JclUnicode.rc
trunk/jcl/source/windows/JclUnicode.res
trunk/thirdparty/unicode_data_extractor/UDExtract.dpr
Modified: trunk/jcl/source/windows/JclUnicode.pas
===================================================================
--- trunk/jcl/source/windows/JclUnicode.pas 2007-09-06 19:27:39 UTC (rev 2150)
+++ trunk/jcl/source/windows/JclUnicode.pas 2007-09-07 09:35:57 UTC (rev 2151)
@@ -178,8 +178,6 @@
{$ENDIF MSWINDOWS}
{$ENDIF ~FPC}
-{$IFDEF SUPPORTS_WIDESTRING}
-
const
// definitions of often used characters:
// Note: Use them only for tests of a certain character not to determine character
@@ -328,6 +326,7 @@
// An Unicode block usually corresponds to a particular language script but
// can also represent special characters, musical symbols and the like.
+ // http://www.unicode.org/Public/5.0.0/ucd/Blocks.txt
TUnicodeBlock = (
ubUndefined,
ubBasicLatin,
@@ -337,8 +336,7 @@
ubIPAExtensions,
ubSpacingModifierLetters,
ubCombiningDiacriticalMarks,
- //ubGreekandCoptic,
- ubGreek,
+ ubGreekandCoptic,
ubCyrillic,
ubCyrillicSupplement,
ubArmenian,
@@ -347,6 +345,7 @@
ubSyriac,
ubArabicSupplement,
ubThaana,
+ ubNKo,
ubDevanagari,
ubBengali,
ubGurmukhi,
@@ -380,6 +379,7 @@
ubNewTaiLue,
ubKhmerSymbols,
ubBuginese,
+ ubBalinese,
ubPhoneticExtensions,
ubPhoneticExtensionsSupplement,
ubCombiningDiacriticalMarksSupplement,
@@ -388,8 +388,7 @@
ubGeneralPunctuation,
ubSuperscriptsandSubscripts,
ubCurrencySymbols,
- //ubCombiningDiacriticalMarksforSymbols,
- ubCombiningMarksforSymbols,
+ ubCombiningDiacriticalMarksforSymbols,
ubLetterlikeSymbols,
ubNumberForms,
ubArrows,
@@ -411,6 +410,7 @@
ubSupplementalMathematicalOperators,
ubMiscellaneousSymbolsandArrows,
ubGlagolitic,
+ ubLatinExtendedC,
ubCoptic,
ubGeorgianSupplement,
ubTifinagh,
@@ -436,13 +436,14 @@
ubYiSyllables,
ubYiRadicals,
ubModifierToneLetters,
+ ubLatinExtendedD,
ubSylotiNagri,
+ ubPhagsPa,
ubHangulSyllables,
ubHighSurrogates,
ubHighPrivateUseSurrogates,
ubLowSurrogates,
- //ubPrivateUseArea,
- ubPrivateUse,
+ ubPrivateUseArea,
ubCJKCompatibilityIdeographs,
ubAlphabeticPresentationForms,
ubArabicPresentationFormsA,
@@ -466,11 +467,15 @@
ubShavian,
ubOsmanya,
ubCypriotSyllabary,
+ ubPhoenician,
ubKharoshthi,
+ ubCuneiform,
+ ubCuneiformNumbersAndPunctuation,
ubByzantineMusicalSymbols,
ubMusicalSymbols,
ubAncientGreekMusicalNotation,
ubTaiXuanJingSymbols,
+ ubCountingRodNumerals,
ubMathematicalAlphanumericSymbols,
ubCJKUnifiedIdeographsExtensionB,
ubCJKCompatibilityIdeographsSupplement,
@@ -478,9 +483,173 @@
ubVariationSelectorsSupplement,
ubSupplementaryPrivateUseAreaA,
ubSupplementaryPrivateUseAreaB
-);
+ );
+ TUnicodeBlockData = record
+ Range: TUnicodeBlockRange;
+ Name: string;
+ end;
+ PUnicodeBlockData = ^TUnicodeBlockData;
+const
+ UnicodeBlockData: array [TUnicodeBlock] of TUnicodeBlockData =
+ ((Range:(RangeStart: $FFFFFFFF; RangeEnd: $0000); Name: 'No-block'),
+ (Range:(RangeStart: $0000; RangeEnd: $007F); Name: 'Basic Latin'),
+ (Range:(RangeStart: $0080; RangeEnd: $00FF); Name: 'Latin-1 Supplement'),
+ (Range:(RangeStart: $0100; RangeEnd: $017F); Name: 'Latin Extended-A'),
+ (Range:(RangeStart: $0180; RangeEnd: $024F); Name: 'Latin Extended-B'),
+ (Range:(RangeStart: $0250; RangeEnd: $02AF); Name: 'IPA Extensions'),
+ (Range:(RangeStart: $02B0; RangeEnd: $02FF); Name: 'Spacing Modifier Letters'),
+ (Range:(RangeStart: $0300; RangeEnd: $036F); Name: 'Combining Diacritical Marks'),
+ (Range:(RangeStart: $0370; RangeEnd: $03FF); Name: 'Greek and Coptic'),
+ (Range:(RangeStart: $0400; RangeEnd: $04FF); Name: 'Cyrillic'),
+ (Range:(RangeStart: $0500; RangeEnd: $052F); Name: 'Cyrillic Supplement'),
+ (Range:(RangeStart: $0530; RangeEnd: $058F); Name: 'Armenian'),
+ (Range:(RangeStart: $0590; RangeEnd: $05FF); Name: 'Hebrew'),
+ (Range:(RangeStart: $0600; RangeEnd: $06FF); Name: 'Arabic'),
+ (Range:(RangeStart: $0700; RangeEnd: $074F); Name: 'Syriac'),
+ (Range:(RangeStart: $0750; RangeEnd: $077F); Name: 'Arabic Supplement'),
+ (Range:(RangeStart: $0780; RangeEnd: $07BF); Name: 'Thaana'),
+ (Range:(RangeStart: $07C0; RangeEnd: $07FF); Name: 'NKo'),
+ (Range:(RangeStart: $0900; RangeEnd: $097F); Name: 'Devanagari'),
+ (Range:(RangeStart: $0980; RangeEnd: $09FF); Name: 'Bengali'),
+ (Range:(RangeStart: $0A00; RangeEnd: $0A7F); Name: 'Gurmukhi'),
+ (Range:(RangeStart: $0A80; RangeEnd: $0AFF); Name: 'Gujarati'),
+ (Range:(RangeStart: $0B00; RangeEnd: $0B7F); Name: 'Oriya'),
+ (Range:(RangeStart: $0B80; RangeEnd: $0BFF); Name: 'Tamil'),
+ (Range:(RangeStart: $0C00; RangeEnd: $0C7F); Name: 'Telugu'),
+ (Range:(RangeStart: $0C80; RangeEnd: $0CFF); Name: 'Kannada'),
+ (Range:(RangeStart: $0D00; RangeEnd: $0D7F); Name: 'Malayalam'),
+ (Range:(RangeStart: $0D80; RangeEnd: $0DFF); Name: 'Sinhala'),
+ (Range:(RangeStart: $0E00; RangeEnd: $0E7F); Name: 'Thai'),
+ (Range:(RangeStart: $0E80; RangeEnd: $0EFF); Name: 'Lao'),
+ (Range:(RangeStart: $0F00; RangeEnd: $0FFF); Name: 'Tibetan'),
+ (Range:(RangeStart: $1000; RangeEnd: $109F); Name: 'Myanmar'),
+ (Range:(RangeStart: $10A0; RangeEnd: $10FF); Name: 'Georgian'),
+ (Range:(RangeStart: $1100; RangeEnd: $11FF); Name: 'Hangul Jamo'),
+ (Range:(RangeStart: $1200; RangeEnd: $137F); Name: 'Ethiopic'),
+ (Range:(RangeStart: $1380; RangeEnd: $139F); Name: 'Ethiopic Supplement'),
+ (Range:(RangeStart: $13A0; RangeEnd: $13FF); Name: 'Cherokee'),
+ (Range:(RangeStart: $1400; RangeEnd: $167F); Name: 'Unified Canadian Aboriginal Syllabics'),
+ (Range:(RangeStart: $1680; RangeEnd: $169F); Name: 'Ogham'),
+ (Range:(RangeStart: $16A0; RangeEnd: $16FF); Name: 'Runic'),
+ (Range:(RangeStart: $1700; RangeEnd: $171F); Name: 'Tagalog'),
+ (Range:(RangeStart: $1720; RangeEnd: $173F); Name: 'Hanunoo'),
+ (Range:(RangeStart: $1740; RangeEnd: $175F); Name: 'Buhid'),
+ (Range:(RangeStart: $1760; RangeEnd: $177F); Name: 'Tagbanwa'),
+ (Range:(RangeStart: $1780; RangeEnd: $17FF); Name: 'Khmer'),
+ (Range:(RangeStart: $1800; RangeEnd: $18AF); Name: 'Mongolian'),
+ (Range:(RangeStart: $1900; RangeEnd: $194F); Name: 'Limbu'),
+ (Range:(RangeStart: $1950; RangeEnd: $197F); Name: 'Tai Le'),
+ (Range:(RangeStart: $1980; RangeEnd: $19DF); Name: 'New Tai Lue'),
+ (Range:(RangeStart: $19E0; RangeEnd: $19FF); Name: 'Khmer Symbols'),
+ (Range:(RangeStart: $1A00; RangeEnd: $1A1F); Name: 'Buginese'),
+ (Range:(RangeStart: $1B00; RangeEnd: $1B7F); Name: 'Balinese'),
+ (Range:(RangeStart: $1D00; RangeEnd: $1D7F); Name: 'Phonetic Extensions'),
+ (Range:(RangeStart: $1D80; RangeEnd: $1DBF); Name: 'Phonetic Extensions Supplement'),
+ (Range:(RangeStart: $1DC0; RangeEnd: $1DFF); Name: 'Combining Diacritical Marks Supplement'),
+ (Range:(RangeStart: $1E00; RangeEnd: $1EFF); Name: 'Latin Extended Additional'),
+ (Range:(RangeStart: $1F00; RangeEnd: $1FFF); Name: 'Greek Extended'),
+ (Range:(RangeStart: $2000; RangeEnd: $206F); Name: 'General Punctuation'),
+ (Range:(RangeStart: $2070; RangeEnd: $209F); Name: 'Superscripts and Subscripts'),
+ (Range:(RangeStart: $20A0; RangeEnd: $20CF); Name: 'Currency Symbols'),
+ (Range:(RangeStart: $20D0; RangeEnd: $20FF); Name: 'Combining Diacritical Marks for Symbols'),
+ (Range:(RangeStart: $2100; RangeEnd: $214F); Name: 'Letterlike Symbols'),
+ (Range:(RangeStart: $2150; RangeEnd: $218F); Name: 'Number Forms'),
+ (Range:(RangeStart: $2190; RangeEnd: $21FF); Name: 'Arrows'),
+ (Range:(RangeStart: $2200; RangeEnd: $22FF); Name: 'Mathematical Operators'),
+ (Range:(RangeStart: $2300; RangeEnd: $23FF); Name: 'Miscellaneous Technical'),
+ (Range:(RangeStart: $2400; RangeEnd: $243F); Name: 'Control Pictures'),
+ (Range:(RangeStart: $2440; RangeEnd: $245F); Name: 'Optical Character Recognition'),
+ (Range:(RangeStart: $2460; RangeEnd: $24FF); Name: 'Enclosed Alphanumerics'),
+ (Range:(RangeStart: $2500; RangeEnd: $257F); Name: 'Box Drawing'),
+ (Range:(RangeStart: $2580; RangeEnd: $259F); Name: 'Block Elements'),
+ (Range:(RangeStart: $25A0; RangeEnd: $25FF); Name: 'Geometric Shapes'),
+ (Range:(RangeStart: $2600; RangeEnd: $26FF); Name: 'Miscellaneous Symbols'),
+ (Range:(RangeStart: $2700; RangeEnd: $27BF); Name: 'Dingbats'),
+ (Range:(RangeStart: $27C0; RangeEnd: $27EF); Name: 'Miscellaneous Mathematical Symbols-A'),
+ (Range:(RangeStart: $27F0; RangeEnd: $27FF); Name: 'Supplemental Arrows-A'),
+ (Range:(RangeStart: $2800; RangeEnd: $28FF); Name: 'Braille Patterns'),
+ (Range:(RangeStart: $2900; RangeEnd: $297F); Name: 'Supplemental Arrows-B'),
+ (Range:(RangeStart: $2980; RangeEnd: $29FF); Name: 'Miscellaneous Mathematical Symbols-B'),
+ (Range:(RangeStart: $2A00; RangeEnd: $2AFF); Name: 'Supplemental Mathematical Operators'),
+ (Range:(RangeStart: $2B00; RangeEnd: $2BFF); Name: 'Miscellaneous Symbols and Arrows'),
+ (Range:(RangeStart: $2C00; RangeEnd: $2C5F); Name: 'Glagolitic'),
+ (Range:(RangeStart: $2C60; RangeEnd: $2C7F); Name: 'Latin Extended-C'),
+ (Range:(RangeStart: $2C80; RangeEnd: $2CFF); Name: 'Coptic'),
+ (Range:(RangeStart: $2D00; RangeEnd: $2D2F); Name: 'Georgian Supplement'),
+ (Range:(RangeStart: $2D30; RangeEnd: $2D7F); Name: 'Tifinagh'),
+ (Range:(RangeStart: $2D80; RangeEnd: $2DDF); Name: 'Ethiopic Extended'),
+ (Range:(RangeStart: $2E00; RangeEnd: $2E7F); Name: 'Supplemental Punctuation'),
+ (Range:(RangeStart: $2E80; RangeEnd: $2EFF); Name: 'CJK Radicals Supplement'),
+ (Range:(RangeStart: $2F00; RangeEnd: $2FDF); Name: 'Kangxi Radicals'),
+ (Range:(RangeStart: $2FF0; RangeEnd: $2FFF); Name: 'Ideographic Description Characters'),
+ (Range:(RangeStart: $3000; RangeEnd: $303F); Name: 'CJK Symbols and Punctuation'),
+ (Range:(RangeStart: $3040; RangeEnd: $309F); Name: 'Hiragana'),
+ (Range:(RangeStart: $30A0; RangeEnd: $30FF); Name: 'Katakana'),
+ (Range:(RangeStart: $3100; RangeEnd: $312F); Name: 'Bopomofo'),
+ (Range:(RangeStart: $3130; RangeEnd: $318F); Name: 'Hangul Compatibility Jamo'),
+ (Range:(RangeStart: $3190; RangeEnd: $319F); Name: 'Kanbun'),
+ (Range:(RangeStart: $31A0; RangeEnd: $31BF); Name: 'Bopomofo Extended'),
+ (Range:(RangeStart: $31C0; RangeEnd: $31EF); Name: 'CJK Strokes'),
+ (Range:(RangeStart: $31F0; RangeEnd: $31FF); Name: 'Katakana Phonetic Extensions'),
+ (Range:(RangeStart: $3200; RangeEnd: $32FF); Name: 'Enclosed CJK Letters and Months'),
+ (Range:(RangeStart: $3300; RangeEnd: $33FF); Name: 'CJK Compatibility'),
+ (Range:(RangeStart: $3400; RangeEnd: $4DBF); Name: 'CJK Unified Ideographs Extension A'),
+ (Range:(RangeStart: $4DC0; RangeEnd: $4DFF); Name: 'Yijing Hexagram Symbols'),
+ (Range:(RangeStart: $4E00; RangeEnd: $9FFF); Name: 'CJK Unified Ideographs'),
+ (Range:(RangeStart: $A000; RangeEnd: $A48F); Name: 'Yi Syllables'),
+ (Range:(RangeStart: $A490; RangeEnd: $A4CF); Name: 'Yi Radicals'),
+ (Range:(RangeStart: $A700; RangeEnd: $A71F); Name: 'Modifier Tone Letters'),
+ (Range:(RangeStart: $A720; RangeEnd: $A7FF); Name: 'Latin Extended-D'),
+ (Range:(RangeStart: $A800; RangeEnd: $A82F); Name: 'Syloti Nagri'),
+ (Range:(RangeStart: $A840; RangeEnd: $A87F); Name: 'Phags-pa'),
+ (Range:(RangeStart: $AC00; RangeEnd: $D7AF); Name: 'Hangul Syllables'),
+ (Range:(RangeStart: $D800; RangeEnd: $DB7F); Name: 'High Surrogates'),
+ (Range:(RangeStart: $DB80; RangeEnd: $DBFF); Name: 'High Private Use Surrogates'),
+ (Range:(RangeStart: $DC00; RangeEnd: $DFFF); Name: 'Low Surrogates'),
+ (Range:(RangeStart: $E000; RangeEnd: $F8FF); Name: 'Private Use Area'),
+ (Range:(RangeStart: $F900; RangeEnd: $FAFF); Name: 'CJK Compatibility Ideographs'),
+ (Range:(RangeStart: $FB00; RangeEnd: $FB4F); Name: 'Alphabetic Presentation Forms'),
+ (Range:(RangeStart: $FB50; RangeEnd: $FDFF); Name: 'Arabic Presentation Forms-A'),
+ (Range:(RangeStart: $FE00; RangeEnd: $FE0F); Name: 'Variation Selectors'),
+ (Range:(RangeStart: $FE10; RangeEnd: $FE1F); Name: 'Vertical Forms'),
+ (Range:(RangeStart: $FE20; RangeEnd: $FE2F); Name: 'Combining Half Marks'),
+ (Range:(RangeStart: $FE30; RangeEnd: $FE4F); Name: 'CJK Compatibility Forms'),
+ (Range:(RangeStart: $FE50; RangeEnd: $FE6F); Name: 'Small Form Variants'),
+ (Range:(RangeStart: $FE70; RangeEnd: $FEFF); Name: 'Arabic Presentation Forms-B'),
+ (Range:(RangeStart: $FF00; RangeEnd: $FFEF); Name: 'Halfwidth and Fullwidth Forms'),
+ (Range:(RangeStart: $FFF0; RangeEnd: $FFFF); Name: 'Specials'),
+ (Range:(RangeStart: $10000; RangeEnd: $1007F); Name: 'Linear B Syllabary'),
+ (Range:(RangeStart: $10080; RangeEnd: $100FF); Name: 'Linear B Ideograms'),
+ (Range:(RangeStart: $10100; RangeEnd: $1013F); Name: 'Aegean Numbers'),
+ (Range:(RangeStart: $10140; RangeEnd: $1018F); Name: 'Ancient Greek Numbers'),
+ (Range:(RangeStart: $10300; RangeEnd: $1032F); Name: 'Old Italic'),
+ (Range:(RangeStart: $10330; RangeEnd: $1034F); Name: 'Gothic'),
+ (Range:(RangeStart: $10380; RangeEnd: $1039F); Name: 'Ugaritic'),
+ (Range:(RangeStart: $103A0; RangeEnd: $103DF); Name: 'Old Persian'),
+ (Range:(RangeStart: $10400; RangeEnd: $1044F); Name: 'Deseret'),
+ (Range:(RangeStart: $10450; RangeEnd: $1047F); Name: 'Shavian'),
+ (Range:(RangeStart: $10480; RangeEnd: $104AF); Name: 'Osmanya'),
+ (Range:(RangeStart: $10800; RangeEnd: $1083F); Name: 'Cypriot Syllabary'),
+ (Range:(RangeStart: $10900; RangeEnd: $1091F); Name: 'Phoenician'),
+ (Range:(RangeStart: $10A00; RangeEnd: $10A5F); Name: 'Kharoshthi'),
+ (Range:(RangeStart: $12000; RangeEnd: $123FF); Name: 'Cuneiform'),
+ (Range:(RangeStart: $12400; RangeEnd: $1247F); Name: 'Cuneiform Numbers and Punctuation'),
+ (Range:(RangeStart: $1D000; RangeEnd: $1D0FF); Name: 'Byzantine Musical Symbols'),
+ (Range:(RangeStart: $1D100; RangeEnd: $1D1FF); Name: 'Musical Symbols'),
+ (Range:(RangeStart: $1D200; RangeEnd: $1D24F); Name: 'Ancient Greek Musical Notation'),
+ (Range:(RangeStart: $1D300; RangeEnd: $1D35F); Name: 'Tai Xuan Jing Symbols'),
+ (Range:(RangeStart: $1D360; RangeEnd: $1D37F); Name: 'Counting Rod Numerals'),
+ (Range:(RangeStart: $1D400; RangeEnd: $1D7FF); Name: 'Mathematical Alphanumeric Symbols'),
+ (Range:(RangeStart: $20000; RangeEnd: $2A6DF); Name: 'CJK Unified Ideographs Extension B'),
+ (Range:(RangeStart: $2F800; RangeEnd: $2FA1F); Name: 'CJK Compatibility Ideographs Supplement'),
+ (Range:(RangeStart: $E0000; RangeEnd: $E007F); Name: 'Tags'),
+ (Range:(RangeStart: $E0100; RangeEnd: $E01EF); Name: 'Variation Selectors Supplement'),
+ (Range:(RangeStart: $F0000; RangeEnd: $FFFFF); Name: 'Supplementary Private Use Area-A'),
+ (Range:(RangeStart: $100000; RangeEnd: $10FFFF); Name: 'Supplementary Private Use Area-B'));
+
+type
TWideStrings = class;
TSearchFlag = (
@@ -1110,8 +1279,6 @@
var
WideCompareText: TCompareFunc;
-{$ENDIF SUPPORTS_WIDESTRING}
-
type
EJclUnicodeError = class(EJclError);
@@ -1127,8 +1294,6 @@
implementation
-{$IFDEF SUPPORTS_WIDESTRING}
-
// Unicode data for case mapping, decomposition, numbers etc. This data is
// loaded on demand which means only those parts will be put in memory which are
// needed by one of the lookup functions.
@@ -1147,7 +1312,7 @@
{$ENDIF ~FPC}
{$ENDIF HAS_UNIT_RTLCONSTS}
SysUtils,
- JclResources, JclSynch;
+ JclResources, JclSynch, JclSysUtils;
const
{$IFDEF FPC} // declarations from unit [Rtl]Consts
@@ -6510,7 +6675,7 @@
end;
function WideDecompose(const S: WideString; Compatible: Boolean): WideString;
-// returns a string with all characters of S but decomposed, e.g. \xCA is returned as E^ etc.
+// returns a string with all characters of S but decomposed, e.g. is returned as E^ etc.
var
I, J: Integer;
Decomp: TUCS4Array;
@@ -6538,7 +6703,7 @@
// Note that most of the assigned code points don't have a case mapping and are therefore
// returned as they are. Other code points, however, might be converted into several characters
-// like the german \xDF (eszett) whose upper case mapping is SS.
+// like the german (eszett) whose upper case mapping is SS.
function WideCaseFolding(C: WideChar): WideString;
// Special case folding function to map a string to either its lower case or
@@ -7035,1345 +7200,48 @@
end;
function CodeBlockRange(const CB: TUnicodeBlock): TUnicodeBlockRange;
-// http://www.unicode.org/Public/4.1.0/ucd/Blocks.txt
+// http://www.unicode.org/Public/5.0.0/ucd/Blocks.txt
begin
- case CB of
- ubBasicLatin:
- begin
- Result.RangeStart := $0000;
- Result.RangeEnd := $007F;
- end;
- ubLatin1Supplement:
- begin
- Result.RangeStart := $0080;
- Result.RangeEnd := $00FF;
- end;
- ubLatinExtendedA:
- begin
- Result.RangeStart := $0100;
- Result.RangeEnd := $017F;
- end;
- ubLatinExtendedB:
- begin
- Result.RangeStart := $0180;
- Result.RangeEnd := $024F;
- end;
- ubIPAExtensions:
- begin
- Result.RangeStart := $0250;
- Result.RangeEnd := $02AF;
- end;
- ubSpacingModifierLetters:
- begin
- Result.RangeStart := $02B0;
- Result.RangeEnd := $02FF;
- end;
- ubCombiningDiacriticalMarks:
- begin
- Result.RangeStart := $0300;
- Result.RangeEnd := $036F;
- end;
- ubGreek:
- begin
- Result.RangeStart := $0370;
- Result.RangeEnd := $03FF;
- end;
- ubCyrillic:
- begin
- Result.RangeStart := $0400;
- Result.RangeEnd := $04FF;
- end;
- ubCyrillicSupplement:
- begin
- Result.RangeStart := $0500;
- Result.RangeEnd := $052F;
- end;
- ubArmenian:
- begin
- Result.RangeStart := $0530;
- Result.RangeEnd := $058F;
- end;
- ubHebrew:
- begin
- Result.RangeStart := $0590;
- Result.RangeEnd := $05FF;
- end;
- ubArabic:
- begin
- Result.RangeStart := $0600;
- Result.RangeEnd := $06FF;
- end;
- ubSyriac:
- begin
- Result.RangeStart := $0700;
- Result.RangeEnd := $074F;
- end;
- ubArabicSupplement:
- begin
- Result.RangeStart := $0750;
- Result.RangeEnd := $077F;
- end;
- ubThaana:
- begin
- Result.RangeStart := $0780;
- Result.RangeEnd := $07BF;
- end;
- ubDevanagari:
- begin
- Result.RangeStart := $0900;
- Result.RangeEnd := $097F;
- end;
- ubBengali:
- begin
- Result.RangeStart := $0980;
- Result.RangeEnd := $09FF;
- end;
- ubGurmukhi:
- begin
- Result.RangeStart := $0A00;
- Result.RangeEnd := $0A7F;
- end;
- ubGujarati:
- begin
- Result.RangeStart := $0A80;
- Result.RangeEnd := $0AFF;
- end;
- ubOriya:
- begin
- Result.RangeStart := $0B00;
- Result.RangeEnd := $0B7F;
- end;
- ubTamil:
- begin
- Result.RangeStart := $0B80;
- Result.RangeEnd := $0BFF;
- end;
- ubTelugu:
- begin
- Result.RangeStart := $0C00;
- Result.RangeEnd := $0C7F;
- end;
- ubKannada:
- begin
- Result.RangeStart := $0C80;
- Result.RangeEnd := $0CFF;
- end;
- ubMalayalam:
- begin
- Result.RangeStart := $0D00;
- Result.RangeEnd := $0D7F;
- end;
- ubSinhala:
- begin
- Result.RangeStart := $0D80;
- Result.RangeEnd := $0DFF;
- end;
- ubThai:
- begin
- Result.RangeStart := $0E00;
- Result.RangeEnd := $0E7F;
- end;
- ubLao:
- begin
- Result.RangeStart := $0E80;
- Result.RangeEnd := $0EFF;
- end;
- ubTibetan:
- begin
- Result.RangeStart := $0F00;
- Result.RangeEnd := $0FFF;
- end;
- ubMyanmar:
- begin
- Result.RangeStart := $1000;
- Result.RangeEnd := $109F;
- end;
- ubGeorgian:
- begin
- Result.RangeStart := $10A0;
- Result.RangeEnd := $10FF;
- end;
- ubHangulJamo:
- begin
- Result.RangeStart := $1100;
- Result.RangeEnd := $11FF;
- end;
- ubEthiopic:
- begin
- Result.RangeStart := $1200;
- Result.RangeEnd := $137F;
- end;
- ubEthiopicSupplement:
- begin
- Result.RangeStart := $1380;
- Result.RangeEnd := $139F;
- end;
- ubCherokee:
- begin
- Result.RangeStart := $13A0;
- Result.RangeEnd := $13FF;
- end;
- ubUnifiedCanadianAboriginalSyllabics:
- begin
- Result.RangeStart := $1400;
- Result.RangeEnd := $167F;
- end;
- ubOgham:
- begin
- Result.RangeStart := $1680;
- Result.RangeEnd := $169F;
- end;
- ubRunic:
- begin
- Result.RangeStart := $16A0;
- Result.RangeEnd := $16FF;
- end;
- ubTagalog:
- begin
- Result.RangeStart := $1700;
- Result.RangeEnd := $171F;
- end;
- ubHanunoo:
- begin
- Result.RangeStart := $1720;
- Result.RangeEnd := $173F;
- end;
- ubBuhid:
- begin
- Result.RangeStart := $1740;
- Result.RangeEnd := $175F;
- end;
- ubTagbanwa:
- begin
- Result.RangeStart := $1760;
- Result.RangeEnd := $177F;
- end;
- ubKhmer:
- begin
- Result.RangeStart := $1780;
- Result.RangeEnd := $17FF;
- end;
- ubMongolian:
- begin
- Result.RangeStart := $1800;
- Result.RangeEnd := $18AF;
- end;
- ubLimbu:
- begin
- Result.RangeStart := $1900;
- Result.RangeEnd := $194F;
- end;
- ubTaiLe:
- begin
- Result.RangeStart := $1950;
- Result.RangeEnd := $197F;
- end;
- ubNewTaiLue:
- begin
- Result.RangeStart := $1980;
- Result.RangeEnd := $19DF;
- end;
- ubKhmerSymbols:
- begin
- Result.RangeStart := $19E0;
- Result.RangeEnd := $19FF;
- end;
- ubBuginese:
- begin
- Result.RangeStart := $1A00;
- Result.RangeEnd := $1A1F;
- end;
- ubPhoneticExtensions:
- begin
- Result.RangeStart := $1D00;
- Result.RangeEnd := $1D7F;
- end;
- ubPhoneticExtensionsSupplement:
- begin
- Result.RangeStart := $1D80;
- Result.RangeEnd := $1DBF;
- end;
- ubCombiningDiacriticalMarksSupplement:
- begin
- Result.RangeStart := $1DC0;
- Result.RangeEnd := $1DFF;
- end;
- ubLatinExtendedAdditional:
- begin
- Result.RangeStart := $1E00;
- Result.RangeEnd := $1EFF;
- end;
- ubGreekExtended:
- begin
- Result.RangeStart := $1F00;
- Result.RangeEnd := $1FFF;
- end;
- ubGeneralPunctuation:
- begin
- Result.RangeStart := $2000;
- Result.RangeEnd := $206F;
- end;
- ubSuperscriptsandSubscripts:
- begin
- Result.RangeStart := $2070;
- Result.RangeEnd := $209F;
- end;
- ubCurrencySymbols:
- begin
- Result.RangeStart := $20A0;
- Result.RangeEnd := $20CF;
- end;
- ubCombiningMarksforSymbols:
- begin
- Result.RangeStart := $20D0;
- Result.RangeEnd := $20FF;
- end;
- ubLetterlikeSymbols:
- begin
- Result.RangeStart := $2100;
- Result.RangeEnd := $214F;
- end;
- ubNumberForms:
- begin
- Result.RangeStart := $2150;
- Result.RangeEnd := $218F;
- end;
- ubArrows:
- begin
- Result.RangeStart := $2190;
- Result.RangeEnd := $21FF;
- end;
- ubMathematicalOperators:
- begin
- Result.RangeStart := $2200;
- Result.RangeEnd := $22FF;
- end;
- ubMiscellaneousTechnical:
- begin
- Result.RangeStart := $2300;
- Result.RangeEnd := $23FF;
- end;
- ubControlPictures:
- begin
- Result.RangeStart := $2400;
- Result.RangeEnd := $243F;
- end;
- ubOpticalCharacterRecognition:
- begin
- Result.RangeStart := $2440;
- Result.RangeEnd := $245F;
- end;
- ubEnclosedAlphanumerics:
- begin
- Result.RangeStart := $2460;
- Result.RangeEnd := $24FF;
- end;
- ubBoxDrawing:
- begin
- Result.RangeStart := $2500;
- Result.RangeEnd := $257F;
- end;
- ubBlockElements:
- begin
- Result.RangeStart := $2580;
- Result.RangeEnd := $259F;
- end;
- ubGeometricShapes:
- begin
- Result.RangeStart := $25A0;
- Result.RangeEnd := $25FF;
- end;
- ubMiscellaneousSymbols:
- begin
- Result.RangeStart := $2600;
- Result.RangeEnd := $26FF;
- end;
- ubDingbats:
- begin
- Result.RangeStart := $2700;
- Result.RangeEnd := $27BF;
- end;
- ubMiscellaneousMathematicalSymbolsA:
- begin
- Result.RangeStart := $27C0;
- Result.RangeEnd := $27EF;
- end;
- ubSupplementalArrowsA:
- begin
- Result.RangeStart := $27F0;
- Result.RangeEnd := $27FF;
- end;
- ubBraillePatterns:
- begin
- Result.RangeStart := $2800;
- Result.RangeEnd := $28FF;
- end;
- ubSupplementalArrowsB:
- begin
- Result.RangeStart := $2900;
- Result.RangeEnd := $297F;
- end;
- ubMiscellaneousMathematicalSymbolsB:
- begin
- Result.RangeStart := $2980;
- Result.RangeEnd := $29FF;
- end;
- ubSupplementalMathematicalOperators:
- begin
- Result.RangeStart := $2A00;
- Result.RangeEnd := $2AFF;
- end;
- ubMiscellaneousSymbolsandArrows:
- begin
- Result.RangeStart := $2B00;
- Result.RangeEnd := $2BFF;
- end;
- ubGlagolitic:
- begin
- Result.RangeStart := $2C00;
- Result.RangeEnd := $2C5F;
- end;
- ubCoptic:
- begin
- Result.RangeStart := $2C80;
- Result.RangeEnd := $2CFF;
- end;
- ubGeorgianSupplement:
- begin
- Result.RangeStart := $2D00;
- Result.RangeEnd := $2D2F;
- end;
- ubTifinagh:
- begin
- Result.RangeStart := $2D30;
- Result.RangeEnd := $2D7F;
- end;
- ubEthiopicExtended:
- begin
- Result.RangeStart := $2D80;
- Result.RangeEnd := $2DDF;
- end;
- ubSupplementalPunctuation:
- begin
- Result.RangeStart := $2E00;
- Result.RangeEnd := $2E7F;
- end;
- ubCJKRadicalsSupplement:
- begin
- Result.RangeStart := $2E80;
- Result.RangeEnd := $2EFF;
- end;
- ubKangxiRadicals:
- begin
- Result.RangeStart := $2F00;
- Result.RangeEnd := $2FDF;
- end;
- ubIdeographicDescriptionCharacters:
- begin
- Result.RangeStart := $2FF0;
- Result.RangeEnd := $2FFF;
- end;
- ubCJKSymbolsandPunctuation:
- begin
- Result.RangeStart := $3000;
- Result.RangeEnd := $303F;
- end;
- ubHiragana:
- begin
- Result.RangeStart := $3040;
- Result.RangeEnd := $309F;
- end;
- ubKatakana:
- begin
- Result.RangeStart := $30A0;
- Result.RangeEnd := $30FF;
- end;
- ubBopomofo:
- begin
- Result.RangeStart := $3100;
- Result.RangeEnd := $312F;
- end;
- ubHangulCompatibilityJamo:
- begin
- Result.RangeStart := $3130;
- Result.RangeEnd := $318F;
- end;
- ubKanbun:
- begin
- Result.RangeStart := $3190;
- Result.RangeEnd := $319F;
- end;
- ubBopomofoExtended:
- begin
- Result.RangeStart := $31A0;
- Result.RangeEnd := $31BF;
- end;
- ubCJKStrokes:
- begin
- Result.RangeStart := $31C0;
- Result.RangeEnd := $31EF;
- end;
- ubKatakanaPhoneticExtensions:
- begin
- Result.RangeStart := $31F0;
- Result.RangeEnd := $31FF;
- end;
- ubEnclosedCJKLettersandMonths:
- begin
- Result.RangeStart := $3200;
- Result.RangeEnd := $32FF;
- end;
- ubCJKCompatibility:
- begin
- Result.RangeStart := $3300;
- Result.RangeEnd := $33FF;
- end;
- ubCJKUnifiedIdeographsExtensionA:
- begin
- Result.RangeStart := $3400;
- Result.RangeEnd := $4DBF;
- end;
- ubYijingHexagramSymbols:
- begin
- Result.RangeStart := $4DC0;
- Result.RangeEnd := $4DFF;
- end;
- ubCJKUnifiedIdeographs:
- begin
- Result.RangeStart := $4E00;
- Result.RangeEnd := $9FFF;
- end;
- ubYiSyllables:
- begin
- Result.RangeStart := $A000;
- Result.RangeEnd := $A48F;
- end;
- ubYiRadicals:
- begin
- Result.RangeStart := $A490;
- Result.RangeEnd := $A4CF;
- end;
- ubModifierToneLetters:
- begin
- Result.RangeStart := $A700;
- Result.RangeEnd := $A71F;
- end;
- ubSylotiNagri:
- begin
- Result.RangeStart := $A800;
- Result.RangeEnd := $A82F;
- end;
- ubHangulSyllables:
- begin
- Result.RangeStart := $AC00;
- Result.RangeEnd := $D7AF;
- end;
- ubHighSurrogates:
- begin
- Result.RangeStart := $D800;
- Result.RangeEnd := $DB7F;
- end;
- ubHighPrivateUseSurrogates:
- begin
- Result.RangeStart := $DB80;
- Result.RangeEnd := $DBFF;
- end;
- ubLowSurrogates:
- begin
- Result.RangeStart := $DC00;
- Result.RangeEnd := $DFFF;
- end;
- ubPrivateUse:
- begin
- Result.RangeStart := $E000;
- Result.RangeEnd := $F8FF;
- end;
- ubCJKCompatibilityIdeographs:
- begin
- Result.RangeStart := $F900;
- Result.RangeEnd := $FAFF;
- end;
- ubAlphabeticPresentationForms:
- begin
- Result.RangeStart := $FB00;
- Result.RangeEnd := $FB4F;
- end;
- ubArabicPresentationFormsA:
- begin
- Result.RangeStart := $FB50;
- Result.RangeEnd := $FDFF;
- end;
- ubVariationSelectors:
- begin
- Result.RangeStart := $FE00;
- Result.RangeEnd := $FE0F;
- end;
- ubVerticalForms:
- begin
- Result.RangeStart := $FE10;
- Result.RangeEnd := $FE1F;
- end;
- ubCombiningHalfMarks:
- begin
- Result.RangeStart := $FE20;
- Result.RangeEnd := $FE2F;
- end;
- ubCJKCompatibilityForms:
- begin
- Result.RangeStart := $FE30;
- Result.RangeEnd := $FE4F;
- end;
- ubSmallFormVariants:
- begin
- Result.RangeStart := $FE50;
- Result.RangeEnd := $FE6F;
- end;
- ubArabicPresentationFormsB:
- begin
- Result.RangeStart := $FE70;
- Result.RangeEnd := $FEFF;
- end;
- ubHalfwidthandFullwidthForms:
- begin
- Result.RangeStart := $FF00;
- Result.RangeEnd := $FFEF;
- end;
- ubSpecials:
- begin
- Result.RangeStart := $FFF0;
- Result.RangeEnd := $FFFF;
- end;
- ubLinearBSyllabary:
- begin
- Result.RangeStart := $10000;
- Result.RangeEnd := $1007F;
- end;
- ubLinearBIdeograms:
- begin
- Result.RangeStart := $10080;
- Result.RangeEnd := $100FF;
- end;
- ubAegeanNumbers:
- begin
- Result.RangeStart := $10100;
- Result.RangeEnd := $1013F;
- end;
- ubAncientGreekNumbers:
- begin
- Result.RangeStart := $10140;
- Result.RangeEnd := $1018F;
- end;
- ubOldItalic:
- begin
- Result.RangeStart := $10300;
- Result.RangeEnd := $1032F;
- end;
- ubGothic:
- begin
- Result.RangeStart := $10330;
- Result.RangeEnd := $1034F;
- end;
- ubUgaritic:
- begin
- Result.RangeStart := $10380;
- Result.RangeEnd := $1039F;
- end;
- ubOldPersian:
- begin
- Result.RangeStart := $103A0;
- Result.RangeEnd := $103DF;
- end;
- ubDeseret:
- begin
- Result.RangeStart := $10400;
- Result.RangeEnd := $1044F;
- end;
- ubShavian:
- begin
- Result.RangeStart := $10450;
- Result.RangeEnd := $1047F;
- end;
- ubOsmanya:
- begin
- Result.RangeStart := $10480;
- Result.RangeEnd := $104AF;
- end;
- ubCypriotSyllabary:
- begin
- Result.RangeStart := $10800;
- Result.RangeEnd := $1083F;
- end;
- ubKharoshthi:
- begin
- Result.RangeStart := $10A00;
- Result.RangeEnd := $10A5F;
- end;
- ubByzantineMusicalSymbols:
- begin
- Result.RangeStart := $1D000;
- Result.RangeEnd := $1D0FF;
- end;
- ubMusicalSymbols:
- begin
- Result.RangeStart := $1D100;
- Result.RangeEnd := $1D1FF;
- end;
- ubAncientGreekMusicalNotation:
- begin
- Result.RangeStart := $1D200;
- Result.RangeEnd := $1D24F;
- end;
- ubTaiXuanJingSymbols:
- begin
- Result.RangeStart := $1D300;
- Result.RangeEnd := $1D35F;
- end;
- ubMathematicalAlphanumericSymbols:
- begin
- Result.RangeStart := $1D400;
- Result.RangeEnd := $1D7FF;
- end;
- ubCJKUnifiedIdeographsExtensionB:
- begin
- Result.RangeStart := $20000;
- Result.RangeEnd := $2A6DF;
- end;
- ubCJKCompatibilityIdeographsSupplement:
- begin
- Result.RangeStart := $2F800;
- Result.RangeEnd := $2FA1F;
- end;
- ubTags:
- begin
- Result.RangeStart := $E0000;
- Result.RangeEnd := $E007F;
- end;
- ubVariationSelectorsSupplement:
- begin
- Result.RangeStart := $E0100;
- Result.RangeEnd := $E01EF;
- end;
- ubSupplementaryPrivateUseAreaA:
- begin
- Result.RangeStart := $F0000;
- Result.RangeEnd := $FFFFF;
- end;
- ubSupplementaryPrivateUseAreaB:
- begin
- Result.RangeStart := $100000;
- Result.RangeEnd := $10FFFF;
- end;
- else
- begin
- Result.RangeStart := 0;
- Result.RangeEnd := 0;
- end;
- end;
+ Result := UnicodeBlockData[CB].Range;
end;
-// Returns the CodeBlockName of the Block specified by CB
-// Names taken from http://www.unicode.org/Public/4.1.0/ucd/Blocks.txt
+// Names taken from http://www.unicode.org/Public/5.0.0/ucd/Blocks.txt
function CodeBlockName(const CB: TUnicodeBlock): string;
begin
- case CB of
- ubBasicLatin:
- Result := 'Basic Latin';
- ubLatin1Supplement:
- Result := 'Latin-1 Supplement';
- ubLatinExtendedA:
- Result := 'Latin Extended-A';
- ubLatinExtendedB:
- Result := 'Latin Extended-B';
- ubIPAExtensions:
- Result := 'IPA Extensions';
- ubSpacingModifierLetters:
- Result := 'Spacing Modifier Letters';
- ubCombiningDiacriticalMarks:
- Result := 'Combining Diacritical Marks';
- //ubGreekandCoptic:
- ubGreek:
- Result := 'Greek and Coptic';
- ubCyrillic:
- Result := 'Cyrillic';
- ubCyrillicSupplement:
- Result := 'Cyrillic Supplement';
- ubArmenian:
- Result := 'Armenian';
- ubHebrew:
- Result := 'Hebrew';
- ubArabic:
- Result := 'Arabic';
- ubSyriac:
- Result := 'Syriac';
- ubArabicSupplement:
- Result := 'Arabic Supplement';
- ubThaana:
- Result := 'Thaana';
- ubDevanagari:
- Result := 'Devanagari';
- ubBengali:
- Result := 'Bengali';
- ubGurmukhi:
- Result := 'Gurmukhi';
- ubGujarati:
- Result := 'Gujarati';
- ubOriya:
- Result := 'Oriya';
- ubTamil:
- Result := 'Tamil';
- ubTelugu:
- Result := 'Telugu';
- ubKannada:
- Result := 'Kannada';
- ubMalayalam:
- Result := 'Malayalam';
- ubSinhala:
- Result := 'Sinhala';
- ubThai:
- Result := 'Thai';
- ubLao:
- Result := 'Lao';
- ubTibetan:
- Result := 'Tibetan';
- ubMyanmar:
- Result := 'Myanmar';
- ubGeorgian:
- Result := 'Georgian';
- ubHangulJamo:
- Result := 'Hangul Jamo';
- ubEthiopic:
- Result := 'Ethiopic';
- ubEthiopicSupplement:
- Result := 'Ethiopic Supplement';
- ubCherokee:
- Result := 'Cherokee';
- ubUnifiedCanadianAboriginalSyllabics:
- Result := 'Unified Canadian Aboriginal Syllabics';
- ubOgham:
- Result := 'Ogham';
- ubRunic:
- Result := 'Runic';
- ubTagalog:
- Result := 'Tagalog';
- ubHanunoo:
- Result := 'Hanunoo';
- ubBuhid:
- Result := 'Buhid';
- ubTagbanwa:
- Result := 'Tagbanwa';
- ubKhmer:
- Result := 'Khmer';
- ubMongolian:
- Result := 'Mongolian';
- ubLimbu:
- Result := 'Limbu';
- ubTaiLe:
- Result := 'Tai Le';
- ubNewTaiLue:
- Result := 'New Tai Lue';
- ubKhmerSymbols:
- Result := 'Khmer Symbols';
- ubBuginese:
- Result := 'Buginese';
- ubPhoneticExtensions:
- Result := 'Phonetic Extensions';
- ubPhoneticExtensionsSupplement:
- Result := 'Phonetic Extensions Supplement';
- ubCombiningDiacriticalMarksSupplement:
- Result := 'Combining Diacritical Marks Supplement';
- ubLatinExtendedAdditional:
- Result := 'Latin Extended Additional';
- ubGreekExtended:
- Result := 'Greek Extended';
- ubGeneralPunctuation:
- Result := 'General Punctuation';
- ubSuperscriptsandSubscripts:
- Result := 'Superscripts and Subscripts';
- ubCurrencySymbols:
- Result := 'Currency Symbols';
- //ubCombiningDiacriticalMarksforSymbols:
- ubCombiningMarksforSymbols:
- Result := 'Combining Diacritical Marks for Symbols';
- ubLetterlikeSymbols:
- Result := 'Letterlike Symbols';
- ubNumberForms:
- Result := 'Number Forms';
- ubArrows:
- Result := 'Arrows';
- ubMathematicalOperators:
- Result := 'Mathematical Operators';
- ubMiscellaneousTechnical:
- Result := 'Miscellaneous Technical';
- ubControlPictures:
- Result := 'Control Pictures';
- ubOpticalCharacterRecognition:
- Result := 'Optical Character Recognition';
- ubEnclosedAlphanumerics:
- Result := 'Enclosed Alphanumerics';
- ubBoxDrawing:
- Result := 'Box Drawing';
- ubBlockElements:
- Result := 'Block Elements';
- ubGeometricShapes:
- Result := 'Geometric Shapes';
- ubMiscellaneousSymbols:
- Result := 'Miscellaneous Symbols';
- ubDingbats:
- Result := 'Dingbats';
- ubMiscellaneousMathematicalSymbolsA:
- Result := 'Miscellaneous Mathematical Symbols-A';
- ubSupplementalArrowsA:
- Result := 'Supplemental Arrows-A';
- ubBraillePatterns:
- Result := 'Braille Patterns';
- ubSupplementalArrowsB:
- Result := 'Supplemental Arrows-B';
- ubMiscellaneousMathematicalSymbolsB:
- Result := 'Miscellaneous Mathematical Symbols-B';
- ubSupplementalMathematicalOperators:
- Result := 'Supplemental Mathematical Operators';
- ubMiscellaneousSymbolsandArrows:
- Result := 'Miscellaneous Symbols and Arrows';
- ubGlagolitic:
- Result := 'Glagolitic';
- ubCoptic:
- Result := 'Coptic';
- ubGeorgianSupplement:
- Result := 'Georgian Supplement';
- ubTifinagh:
- Result := 'Tifinagh';
- ubEthiopicExtended:
- Result := 'Ethiopic Extended';
- ubSupplementalPunctuation:
- Result := 'Supplemental Punctuation';
- ubCJKRadicalsSupplement:
- Result := 'CJK Radicals Supplement';
- ubKangxiRadicals:
- Result := 'Kangxi Radicals';
- ubIdeographicDescriptionCharacters:
- Result := 'Ideographic Description Characters';
- ubCJKSymbolsandPunctuation:
- Result := 'CJK Symbols and Punctuation';
- ubHiragana:
- Result := 'Hiragana';
- ubKatakana:
- Result := 'Katakana';
- ubBopomofo:
- Result := 'Bopomofo';
- ubHangulCompatibilityJamo:
- Result := 'Hangul Compatibility Jamo';
- ubKanbun:
- Result := 'Kanbun';
- ubBopomofoExtended:
- Result := 'Bopomofo Extended';
- ubCJKStrokes:
- Result := 'CJK Strokes';
- ubKatakanaPhoneticExtensions:
- Result := 'Katakana Phonetic Extensions';
- ubEnclosedCJKLettersandMonths:
- Result := 'Enclosed CJK Letters and Months';
- ubCJKCompatibility:
- Result := 'CJK Compatibility';
- ubCJKUnifiedIdeographsExtensionA:
- Result := 'CJK Unified Ideographs Extension A';
- ubYijingHexagramSymbols:
- Result := 'Yijing Hexagram Symbols';
- ubCJKUnifiedIdeographs:
- Result := 'CJK Unified Ideographs';
- ubYiSyllables:
- Result := 'Yi Syllables';
- ubYiRadicals:
- Result := 'Yi Radicals';
- ubModifierToneLetters:
- Result := 'Modifier Tone Letters';
- ubSylotiNagri:
- Result := 'Syloti Nagri';
- ubHangulSyllables:
- Result := 'Hangul Syllables';
- ubHighSurrogates:
- Result := 'High Surrogates';
- ubHighPrivateUseSurrogates:
- Result := 'High Private Use Surrogates';
- ubLowSurrogates:
- Result := 'Low Surrogates';
- //ubPrivateUseArea:
- ubPrivateUse:
- Result := 'Private Use Area';
- ubCJKCompatibilityIdeographs:
- Result := 'CJK Compatibility Ideographs';
- ubAlphabeticPresentationForms:
- Result := 'Alphabetic Presentation Forms';
- ubArabicPresentationFormsA:
- Result := 'Arabic Presentation Forms-A';
- ubVariationSelectors:
- Result := 'Variation Selectors';
- ubVerticalForms:
- Result := 'Vertical Forms';
- ubCombiningHalfMarks:
- Result := 'Combining Half Marks';
- ubCJKCompatibilityForms:
- Result := 'CJK Compatibility Forms';
- ubSmallFormVariants:
- Result := 'Small Form Variants';
- ubArabicPresentationFormsB:
- Result := 'Arabic Presentation Forms-B';
- ubHalfwidthandFullwidthForms:
- Result := 'Halfwidth and Fullwidth Forms';
- ubSpecials:
- Result := 'Specials';
- ubLinearBSyllabary:
- Result := 'Linear B Syllabary';
- ubLinearBIdeograms:
- Result := 'Linear B Ideograms';
- ubAegeanNumbers:
- Result := 'Aegean Numbers';
- ubAncientGreekNumbers:
- Result := 'Ancient Greek Numbers';
- ubOldItalic:
- Result := 'Old Italic';
- ubGothic:
- Result := 'Gothic';
- ubUgaritic:
- Result := 'Ugaritic';
- ubOldPersian:
- Result := 'Old Persian';
- ubDeseret:
- Result := 'Deseret';
- ubShavian:
- Result := 'Shavian';
- ubOsmanya:
- Result := 'Osmanya';
- ubCypriotSyllabary:
- Result := 'Cypriot Syllabary';
- ubKharoshthi:
- Result := 'Kharoshthi';
- ubByzantineMusicalSymbols:
- Result := 'Byzantine Musical Symbols';
- ubMusicalSymbols:
- Result := 'Musical Symbols';
- ubAncientGreekMusicalNotation:
- Result := 'Ancient Greek Musical Notation';
- ubTaiXuanJingSymbols:
- Result := 'Tai Xuan Jing Symbols';
- ubMathematicalAlphanumericSymbols:
- Result := 'Mathematical Alphanumeric Symbols';
- ubCJKUnifiedIdeographsExtensionB:
- Result := 'CJK Unified Ideographs Extension B';
- ubCJKCompatibilityIdeographsSupplement:
- Result := 'CJK Compatibility Ideographs Supplement';
- ubTags:
- Result := 'Tags';
- ubVariationSelectorsSupplement:
- Result := 'Variation Selectors Supplement';
- ubSupplementaryPrivateUseAreaA:
- Result := 'Supplementary Private Use Area-A';
- ubSupplementaryPrivateUseAreaB:
- Result := 'Supplementary Private Use Area-B';
- else
- Result := 'Undefined';
- end;
+ Result := UnicodeBlockData[CB].Name;
end;
// Returns an ID for the Unicode code block to which C belongs.
// If C does not belong to any of the defined blocks then ubUndefined is returned.
-// Note: the code blocks listed here are based on Unicode Version 3.1.
+// Note: the code blocks listed here are based on Unicode Version 5.0.0
function CodeBlockFromChar(const C: UCS4): TUnicodeBlock;
-// http://www.unicode.org/Public/4.1.0/ucd/Blocks.txt
+// http://www.unicode.org/Public/5.0.0/ucd/Blocks.txt
+var
+ L, H, I: TUnicodeBlock;
begin
- case C of
- $0000..$007F:
- Result := ubBasicLatin;
- $0080..$00FF:
- Result := ubLatin1Supplement;
- $0100..$017F:
- Result := ubLatinExtendedA;
- $0180..$024F:
- Result := ubLatinExtendedB;
- $0250..$02AF:
- Result := ubIPAExtensions;
- $02B0..$02FF:
- Result := ubSpacingModifierLetters;
- $0300..$036F:
- Result := ubCombiningDiacriticalMarks;
- $0370..$03FF:
- Result := ubGreek; //ubGreekandCoptic;
- $0400..$04FF:
- Result := ubCyrillic;
- $0500..$052F:
- Result := ubCyrillicSupplement;
- $0530..$058F:
- Result := ubArmenian;
- $0590..$05FF:
- Result := ubHebrew;
- $0600..$06FF:
- Result := ubArabic;
- $0700..$074F:
- Result := ubSyriac;
- $0750..$077F:
- Result := ubArabicSupplement;
- $0780..$07BF:
- Result := ubThaana;
- $0900..$097F:
- Result := ubDevanagari;
- $0980..$09FF:
- Result := ubBengali;
- $0A00..$0A7F:
- Result := ubGurmukhi;
- $0A80..$0AFF:
- Result := ubGujarati;
- $0B00..$0B7F:
- Result := ubOriya;
- $0B80..$0BFF:
- Result := ubTamil;
- $0C00..$0C7F:
- Result := ubTelugu;
- $0C80..$0CFF:
- Result := ubKannada;
- $0D00..$0D7F:
- Result := ubMalayalam;
- $0D80..$0DFF:
- Result := ubSinhala;
- $0E00..$0E7F:
- Result := ubThai;
- $0E80..$0EFF:
- Result := ubLao;
- $0F00..$0FFF:
- Result := ubTibetan;
- $1000..$109F:
- Result := ubMyanmar;
- $10A0..$10FF:
- Result := ubGeorgian;
- $1100..$11FF:
- Result := ubHangulJamo;
- $1200..$137F:
- Result := ubEthiopic;
- $1380..$139F:
- Result := ubEthiopicSupplement;
- $13A0..$13FF:
- Result := ubCherokee;
- $1400..$167F:
- Result := ubUnifiedCanadianAboriginalSyllabics;
- $1680..$169F:
- Result := ubOgham;
- $16A0..$16FF:
- Result := ubRunic;
- $1700..$171F:
- Result := ubTagalog;
- $1720..$173F:
- Result := ubHanunoo;
- $1740..$175F:
- Result := ubBuhid;
- $1760..$177F:
- Result := ubTagbanwa;
- $1780..$17FF:
- Result := ubKhmer;
- $1800..$18AF:
- Result := ubMongolian;
- $1900..$194F:
- Result := ubLimbu;
- $1950..$197F:
- Result := ubTaiLe;
- $1980..$19DF:
- Result := ubNewTaiLue;
- $19E0..$19FF:
- Result := ubKhmerSymbols;
- $1A00..$1A1F:
- Result := ubBuginese;
- $1D00..$1D7F:
- Result := ubPhoneticExtensions;
- $1D80..$1DBF:
- Result := ubPhoneticExtensionsSupplement;
- $1DC0..$1DFF:
- Result := ubCombiningDiacriticalMarksSupplement;
- $1E00..$1EFF:
- Result := ubLatinExtendedAdditional;
- $1F00..$1FFF:
- Result := ubGreekExtended;
- $2000..$206F:
- Result := ubGeneralPunctuation;
- $2070..$209F:
- Result := ubSuperscriptsandSubscripts;
- $20A0..$20CF:
- Result := ubCurrencySymbols;
- $20D0..$20FF:
- Result := ubCombiningMarksforSymbols; //ubCombiningDiacriticalMarksforSymbols;
- $2100..$214F:
- Result := ubLetterlikeSymbols;
- $2150..$218F:
- Result := ubNumberForms;
- $2190..$21FF:
- Result := ubArrows;
- $2200..$22FF:
- Result := ubMathematicalOperators;
- $2300..$23FF:
- Result := ubMiscellaneousTechnical;
- $2400..$243F:
- Result := ubControlPictures;
- $2440..$245F:
- Result := ubOpticalCharacterRecognition;
- $2460..$24FF:
- Result := ubEnclosedAlphanumerics;
- $2500..$257F:
- Result := ubBoxDrawing;
- $2580..$259F:
- Result := ubBlockElements;
- $25A0..$25FF:
- Result := ubGeometricShapes;
- $2600..$26FF:
- Result := ubMiscellaneousSymbols;
- $2700..$27BF:
- Result := ubDingbats;
- $27C0..$27EF:
- Result := ubMiscellaneousMathematicalSymbolsA;
- $27F0..$27FF:
- Result := ubSupplementalArrowsA;
- $2800..$28FF:
- Result := ubBraillePatterns;
- $2900..$297F:
- Result := ubSupplementalArrowsB;
- $2980..$29FF:
- Result := ubMiscellaneousMathematicalSymbolsB;
- $2A00..$2AFF:
- Result := ubSupplementalMathematicalOperators;
- $2B00..$2BFF:
- Result := ubMiscellaneousSymbolsandArrows;
- $2C00..$2C5F:
- Result := ubGlagolitic;
- $2C80..$2CFF:
- Result := ubCoptic;
- $2D00..$2D2F:
- Result := ubGeorgianSupplement;
- $2D30..$2D7F:
- Result := ubTifinagh;
- $2D80..$2DDF:
- Result := ubEthiopicExtended;
- $2E00..$2E7F:
- Result := ubSupplementalPunctuation;
- $2E80..$2EFF:
- Result := ubCJKRadicalsSupplement;
- $2F00..$2FDF:
- Result := ubKangxiRadicals;
- $2FF0..$2FFF:
- Result := ubIdeographicDescriptionCharacters;
- $3000..$303F:
- Result := ubCJKSymbolsandPunctuation;
- $3040..$309F:
- Result := ubHiragana;
- $30A0..$30FF:
- Result := ubKatakana;
- $3100..$312F:
- Result := ubBopomofo;
- $3130..$318F:
- Result := ubHangulCompatibilityJamo;
- $3190..$319F:
- Result := ubKanbun;
- $31A0..$31BF:
- Result := ubBopomofoExtended;
- $31C0..$31EF:
- Result := ubCJKStrokes;
- $31F0..$31FF:
- Result := ubKatakanaPhoneticExtensions;
- $3200..$32FF:
- Result := ubEnclosedCJKLettersandMonths;
- $3300..$33FF:
- Result := ubCJKCompatibility;
- $3400..$4DBF:
- Result := ubCJKUnifiedIdeographsExtensionA;
- $4DC0..$4DFF:
- Result := ubYijingHexagramSymbols;
- $4E00..$9FFF:
- Result := ubCJKUnifiedIdeographs;
- $A000..$A48F:
- Result := ubYiSyllables;
- $A490..$A4CF:
- Result := ubYiRadicals;
- $A700..$A71F:
- Result := ubModifierToneLetters;
- $A800..$A82F:
- Result := ubSylotiNagri;
- $AC00..$D7AF:
- Result := ubHangulSyllables;
- $D800..$DB7F:
- Result := ubHighSurrogates;
- $DB80..$DBFF:
- Result := ubHighPrivateUseSurrogates;
- $DC00..$DFFF:
- Result := ubLowSurrogates;
- $E000..$F8FF:
- Result := ubPrivateUse; //ubPrivateUseArea;
- $F900..$FAFF:
- Result := ubCJKCompatibilityIdeographs;
- $FB00..$FB4F:
- Result := ubAlphabeticPresentationForms;
- $FB50..$FDFF:
- Result := ubArabicPresentationFormsA;
- $FE00..$FE0F:
- Result := ubVariationSelectors;
- $FE10..$FE1F:
- Result := ubVerticalForms;
- $FE20..$FE2F:
- Result := ubCombiningHalfMarks;
- $FE30..$FE4F:
- Result := ubCJKCompatibilityForms;
- $FE50..$FE6F:
- Result := ubSmallFormVariants;
- $FE70..$FEFF:
- Result := ubArabicPresentationFormsB;
- $FF00..$FFEF:
- Result := ubHalfwidthandFullwidthForms;
- $FFF0..$FFFF:
- Result := ubSpecials;
- $10000..$1007F:
- Result := ubLinearBSyllabary;
- $10080..$100FF:
- Result := ubLinearBIdeograms;
- $10100..$1013F:
- Result := ubAegeanNumbers;
- $10140..$1018F:
- Result := ubAncientGreekNumbers;
- $10300..$1032F:
- Result := ubOldItalic;
- $10330..$1034F:
- Result := ubGothic;
- $10380..$1039F:
- Result := ubUgaritic;
- $103A0..$103DF:
- Result := ubOldPersian;
- $10400..$1044F:
- Result := ubDeseret;
- $10450..$1047F:
- Result := ubShavian;
- $10480..$104AF:
- Result := ubOsmanya;
- $10800..$1083F:
- Result := ubCypriotSyllabary;
- $10A00..$10A5F:
- Result := ubKharoshthi;
- $1D000..$1D0FF:
- Result := ubByzantineMusicalSymbols;
- $1D100..$1D1FF:
- Result := ubMusicalSymbols;
- $1D200..$1D24F:
- Result := ubAncientGreekMusicalNotation;
- $1D300..$1D35F:
- Result := ubTaiXuanJingSymbols;
- $1D400..$1D7FF:
- Result := ubMathematicalAlphanumericSymbols;
- $20000..$2A6DF:
- Result := ubCJKUnifiedIdeographsExtensionB;
- $2F800..$2FA1F:
- Result := ubCJKCompatibilityIdeographsSupplement;
- $E0000..$E007F:
- Result := ubTags;
- $E0100..$E01EF:
- Result := ubVariationSelectorsSupplement;
- $F0000..$FFFFF:
- Result := ubSupplementaryPrivateUseAreaA;
- $100000..$10FFFF:
- Result := ubSupplementaryPrivateUseAreaB;
- else
- Result := ubUndefined;
+ Result := ubUndefined;
+ L := ubBasicLatin;
+ H := High(TUnicodeBlock);
+ while L <= H do
+ begin
+ I := TUnicodeBlock((Cardinal(L) + Cardinal(H)) shr 1);
+ if (C >= UnicodeBlockData[I].Range.RangeStart) and (C <= UnicodeBlockData[I].Range.RangeEnd) then
+ begin
+ Result := I;
+ Break;
+ end
+ else
+ if C < UnicodeBlockData[I].Range.RangeStart then
+ begin
+ Dec(I);
+ H := I;
+ end
+ else
+ begin
+ Inc(I);
+ L := I;
+ end;
end;
end;
@@ -8617,6 +7485,4 @@
{$ENDIF UNITVERSIONING}
FreeUnicodeData;
-{$ENDIF SUPPORTS_WIDESTRING}
-
end.
Modified: trunk/jcl/source/windows/JclUnicode.rc
===================================================================
--- trunk/jcl/source/windows/JclUnicode.rc 2007-09-06 19:27:39 UTC (rev 2150)
+++ trunk/jcl/source/windows/JclUnicode.rc 2007-09-07 09:35:57 UTC (rev 2151)
@@ -12,7 +12,7 @@
CATEGORIES UNICODEDATA LOADONCALL MOVEABLE DISCARDABLE
{
- '00 23 02 00 00 41 00 00 00 5A 00 00 00 C0 00 00 00 D6 00 00 00 D8 00 00 00 DE 00 00 00 00 01 00'
+ '00 ED 01 00 00 41 00 00 00 5A 00 00 00 C0 00 00 00 D6 00 00 00 D8 00 00 00 DE 00 00 00 00 01 00'
'00 00 01 00 00 02 01 00 00 02 01 00 00 04 01 00 00 04 01 00 00 06 01 00 00 06 01 00 00 08 01 00'
'00 08 01 00 00 0A 01 00 00 0A 01 00 00 0C 01 00 00 0C 01 00 00 0E 01 00 00 0E 01 00 00 10 01 00'
'00 10 01 00 00 12 01 00 00 12 01 00 00 14 01 00 00 14 01 00 00 16 01 00 00 16 01 00 00 18 01 00'
@@ -48,9 +48,8 @@
'00 2A 02 00 00 2C 02 00 00 2C 02 00 00 2E 02 00 00 2E 02 00 00 30 02 00 00 30 02 00 00 32 02 00'
'00 32 02 00 00 3A 02 00 00 3B 02 00 00 3D 02 00 00 3E 02 00 00 41 02 00 00 41 02 00 00 43 02 00'
'00 46 02 00 00 48 02 00 00 48 02 00 00 4A 02 00 00 4A 02 00 00 4C 02 00 00 4C 02 00 00 4E 02 00'
- '00 4E 02 00 00 70 03 00 00 70 03 00 00 72 03 00 00 72 03 00 00 76 03 00 00 76 03 00 00 86 03 00'
- '00 86 03 00 00 88 03 00 00 8A 03 00 00 8C 03 00 00 8C 03 00 00 8E 03 00 00 8F 03 00 00 91 03 00'
- '00 A1 03 00 00 A3 03 00 00 AB 03 00 00 CF 03 00 00 CF 03 00 00 D2 03 00 00 D4 03 00 00 D8 03 00'
+ '00 4E 02 00 00 86 03 00 00 86 03 00 00 88 03 00 00 8A 03 00 00 8C 03 00 00 8C 03 00 00 8E 03 00'
+ '00 8F 03 00 00 91 03 00 00 A1 03 00 00 A3 03 00 00 AB 03 00 00 D2 03 00 00 D4 03 00 00 D8 03 00'
'00 D8 03 00 00 DA 03 00 00 DA 03 00 00 DC 03 00 00 DC 03 00 00 DE 03 00 00 DE 03 00 00 E0 03 00'
'00 E0 03 00 00 E2 03 00 00 E2 03 00 00 E4 03 00 00 E4 03 00 00 E6 03 00 00 E6 03 00 00 E8 03 00'
'00 E8 03 00 00 EA 03 00 00 EA 03 00 00 EC 03 00 00 EC 03 00 00 EE 03 00 00 EE 03 00 00 F4 03 00'
@@ -106,146 +105,132 @@
'00 DC 1E 00 00 DE 1E 00 00 DE 1E 00 00 E0 1E 00 00 E0 1E 00 00 E2 1E 00 00 E2 1E 00 00 E4 1E 00'
'00 E4 1E 00 00 E6 1E 00 00 E6 1E 00 00 E8 1E 00 00 E8 1E 00 00 EA 1E 00 00 EA 1E 00 00 EC 1E 00'
'00 EC 1E 00 00 EE 1E 00 00 EE 1E 00 00 F0 1E 00 00 F0 1E 00 00 F2 1E 00 00 F2 1E 00 00 F4 1E 00'
- '00 F4 1E 00 00 F6 1E 00 00 F6 1E 00 00 F8 1E 00 00 F8 1E 00 00 FA 1E 00 00 FA 1E 00 00 FC 1E 00'
- '00 FC 1E 00 00 FE 1E 00 00 FE 1E 00 00 08 1F 00 00 0F 1F 00 00 18 1F 00 00 1D 1F 00 00 28 1F 00'
- '00 2F 1F 00 00 38 1F 00 00 3F 1F 00 00 48 1F 00 00 4D 1F 00 00 59 1F 00 00 59 1F 00 00 5B 1F 00'
- '00 5B 1F 00 00 5D 1F 00 00 5D 1F 00 00 5F 1F 00 00 5F 1F 00 00 68 1F 00 00 6F 1F 00 00 B8 1F 00'
- '00 BB 1F 00 00 C8 1F 00 00 CB 1F 00 00 D8 1F 00 00 DB 1F 00 00 E8 1F 00 00 EC 1F 00 00 F8 1F 00'
- '00 FB 1F 00 00 02 21 00 00 02 21 00 00 07 21 00 00 07 21 00 00 0B 21 00 00 0D 21 00 00 10 21 00'
- '00 12 21 00 00 15 21 00 00 15 21 00 00 19 21 00 00 1D 21 00 00 24 21 00 00 24 21 00 00 26 21 00'
- '00 26 21 00 00 28 21 00 00 28 21 00 00 2A 21 00 00 2D 21 00 00 30 21 00 00 33 21 00 00 3E 21 00'
- '00 3F 21 00 00 45 21 00 00 45 21 00 00 83 21 00 00 83 21 00 00 00 2C 00 00 2E 2C 00 00 60 2C 00'
- '00 60 2C 00 00 62 2C 00 00 64 2C 00 00 67 2C 00 00 67 2C 00 00 69 2C 00 00 69 2C 00 00 6B 2C 00'
- '00 6B 2C 00 00 6D 2C 00 00 6F 2C 00 00 72 2C 00 00 72 2C 00 00 75 2C 00 00 75 2C 00 00 80 2C 00'
- '00 80 2C 00 00 82 2C 00 00 82 2C 00 00 84 2C 00 00 84 2C 00 00 86 2C 00 00 86 2C 00 00 88 2C 00'
- '00 88 2C 00 00 8A 2C 00 00 8A 2C 00 00 8C 2C 00 00 8C 2C 00 00 8E 2C 00 00 8E 2C 00 00 90 2C 00'
- '00 90 2C 00 00 92 2C 00 00 92 2C 00 00 94 2C 00 00 94 2C 00 00 96 2C 00 00 96 2C 00 00 98 2C 00'
- '00 98 2C 00 00 9A 2C 00 00 9A 2C 00 00 9C 2C 00 00 9C 2C 00 00 9E 2C 00 00 9E 2C 00 00 A0 2C 00'
- '00 A0 2C 00 00 A2 2C 00 00 A2 2C 00 00 A4 2C 00 00 A4 2C 00 00 A6 2C 00 00 A6 2C 00 00 A8 2C 00'
- '00 A8 2C 00 00 AA 2C 00 00 AA 2C 00 00 AC 2C 00 00 AC 2C 00 00 AE 2C 00 00 AE 2C 00 00 B0 2C 00'
- '00 B0 2C 00 00 B2 2C 00 00 B2 2C 00 00 B4 2C 00 00 B4 2C 00 00 B6 2C 00 00 B6 2C 00 00 B8 2C 00'
- '00 B8 2C 00 00 BA 2C 00 00 BA 2C 00 00 BC 2C 00 00 BC 2C 00 00 BE 2C 00 00 BE 2C 00 00 C0 2C 00'
- '00 C0 2C 00 00 C2 2C 00 00 C2 2C 00 00 C4 2C 00 00 C4 2C 00 00 C6 2C 00 00 C6 2C 00 00 C8 2C 00'
- '00 C8 2C 00 00 CA 2C 00 00 CA 2C 00 00 CC 2C 00 00 CC 2C 00 00 CE 2C 00 00 CE 2C 00 00 D0 2C 00'
- '00 D0 2C 00 00 D2 2C 00 00 D2 2C 00 00 D4 2C 00 00 D4 2C 00 00 D6 2C 00 00 D6 2C 00 00 D8 2C 00'
- '00 D8 2C 00 00 DA 2C 00 00 DA 2C 00 00 DC 2C 00 00 DC 2C 00 00 DE 2C 00 00 DE 2C 00 00 E0 2C 00'
- '00 E0 2C 00 00 E2 2C 00 00 E2 2C 00 00 22 A7 00 00 22 A7 00 00 24 A7 00 00 24 A7 00 00 26 A7 00'
- '00 26 A7 00 00 28 A7 00 00 28 A7 00 00 2A A7 00 00 2A A7 00 00 2C A7 00 00 2C A7 00 00 2E A7 00'
- '00 2E A7 00 00 32 A7 00 00 32 A7 00 00 34 A7 00 00 34 A7 00 00 36 A7 00 00 36 A7 00 00 38 A7 00'
- '00 38 A7 00 00 3A A7 00 00 3A A7 00 00 3C A7 00 00 3C A7 00 00 3E A7 00 00 3E A7 00 00 40 A7 00'
- '00 40 A7 00 00 42 A7 00 00 42 A7 00 00 44 A7 00 00 44 A7 00 00 46 A7 00 00 46 A7 00 00 48 A7 00'
- '00 48 A7 00 00 4A A7 00 00 4A A7 00 00 4C A7 00 00 4C A7 00 00 4E A7 00 00 4E A7 00 00 50 A7 00'
- '00 50 A7 00 00 52 A7 00 00 52 A7 00 00 54 A7 00 00 54 A7 00 00 56 A7 00 00 56 A7 00 00 58 A7 00'
- '00 58 A7 00 00 5A A7 00 00 5A A7 00 00 5C A7 00 00 5C A7 00 00 5E A7 00 00 5E A7 00 00 60 A7 00'
- '00 60 A7 00 00 62 A7 00 00 62 A7 00 00 64 A7 00 00 64 A7 00 00 66 A7 00 00 66 A7 00 00 68 A7 00'
- '00 68 A7 00 00 6A A7 00 00 6A A7 00 00 6C A7 00 00 6C A7 00 00 6E A7 00 00 6E A7 00 00 79 A7 00'
- '00 79 A7 00 00 7B A7 00 00 7B A7 00 00 7D A7 00 00 7E A7 00 00 80 A7 00 00 80 A7 00 00 82 A7 00'
- '00 82 A7 00 00 84 A7 00 00 84 A7 00 00 86 A7 00 00 86 A7 00 00 21 FF 00 00 3A FF 00 00 00 04 01'
- '00 27 04 01 00 00 D4 01 00 19 D4 01 00 34 D4 01 00 4D D4 01 00 68 D4 01 00 81 D4 01 00 9C D4 01'
- '00 9C D4 01 00 9E D4 01 00 9F D4 01 00 A2 D4 01 00 A2 D4 01 00 A5 D4 01 00 A6 D4 01 00 A9 D4 01'
- '00 AC D4 01 00 AE D4 01 00 B5 D4 01 00 D0 D4 01 00 E9 D4 01 00 04 D5 01 00 05 D5 01 00 07 D5 01'
- '00 0A D5 01 00 0D D5 01 00 14 D5 01 00 16 D5 01 00 1C D5 01 00 38 D5 01 00 39 D5 01 00 3B D5 01'
- '00 3E D5 01 00 40 D5 01 00 44 D5 01 00 46 D5 01 00 46 D5 01 00 4A D5 01 00 50 D5 01 00 6C D5 01'
- '00 85 D5 01 00 A0 D5 01 00 B9 D5 01 00 D4 D5 01 00 ED D5 01 00 08 D6 01 00 21 D6 01 00 3C D6 01'
- '00 55 D6 01 00 70 D6 01 00 89 D6 01 00 A8 D6 01 00 C0 D6 01 00 E2 D6 01 00 FA D6 01 00 1C D7 01'
- '00 34 D7 01 00 56 D7 01 00 6E D7 01 00 90 D7 01 00 A8 D7 01 00 CA D7 01 00 CA D7 01 00 01 2B 02'
- '00 00 61 00 00 00 7A 00 00 00 AA 00 00 00 AA 00 00 00 B5 00 00 00 B5 00 00 00 BA 00 00 00 BA 00'
- '00 00 DF 00 00 00 F6 00 00 00 F8 00 00 00 FF 00 00 00 01 01 00 00 01 01 00 00 03 01 00 00 03 01'
- '00 00 05 01 00 0...
[truncated message content] |
|
From: <ou...@us...> - 2007-09-06 19:27:43
|
Revision: 2150
http://jcl.svn.sourceforge.net/jcl/?rev=2150&view=rev
Author: outchy
Date: 2007-09-06 12:27:39 -0700 (Thu, 06 Sep 2007)
Log Message:
-----------
mantis 4213 missing decompositions in JclUnicode (8055)
Modified Paths:
--------------
trunk/jcl/source/windows/JclUnicode.rc
trunk/jcl/source/windows/JclUnicode.res
trunk/thirdparty/unicode_data_extractor/UDExtract.dpr
Modified: trunk/jcl/source/windows/JclUnicode.rc
===================================================================
--- trunk/jcl/source/windows/JclUnicode.rc 2007-09-06 19:12:27 UTC (rev 2149)
+++ trunk/jcl/source/windows/JclUnicode.rc 2007-09-06 19:27:39 UTC (rev 2150)
@@ -766,174 +766,175 @@
'00 00 6B FE 00 00 01 FF 00 00 02 FF 00 00 06 FF 00 00 0A FF 00 00 1B FF 00 00 20 FF 00 00 3B FF'
'00 00 40 FF 00 00 5B FF 00 00 65 FF 00 00 E2 FF 00 00 E4 FF 00 00 E8 FF 00 00 EE FF 00 00 F9 FF'
'00 00 FD FF 00 00 01 01 01 00 01 01 01 00 40 01 01 00 8A 01 01 00 1F 09 01 00 1F 09 01 00 00 D2'
- '01 00 41 D2 01 00 45 D2 01 00 45 D2 01 00 00 D3 01 00 56 D3 01 00 2F DA 00 00 00 C0 00 00 00 C5'
+ '01 00 41 D2 01 00 45 D2 01 00 45 D2 01 00 00 D3 01 00 56 D3 01 00 2F DF 00 00 00 C0 00 00 00 C5'
'00 00 00 C7 00 00 00 CF 00 00 00 D1 00 00 00 D6 00 00 00 D9 00 00 00 DD 00 00 00 E0 00 00 00 E5'
'00 00 00 E7 00 00 00 EF 00 00 00 F1 00 00 00 F6 00 00 00 F9 00 00 00 FD 00 00 00 FF 00 00 00 0F'
'01 00 00 12 01 00 00 25 01 00 00 28 01 00 00 30 01 00 00 34 01 00 00 37 01 00 00 39 01 00 00 3E'
'01 00 00 43 01 00 00 48 01 00 00 4C 01 00 00 51 01 00 00 54 01 00 00 65 01 00 00 68 01 00 00 7E'
'01 00 00 A0 01 00 00 A1 01 00 00 AF 01 00 00 B0 01 00 00 CD 01 00 00 DC 01 00 00 DE 01 00 00 E3'
'01 00 00 E6 01 00 00 F0 01 00 00 F4 01 00 00 F5 01 00 00 F8 01 00 00 1B 02 00 00 1E 02 00 00 1F'
- '02 00 00 26 02 00 00 33 02 00 00 44 03 00 00 44 03 00 00 85 03 00 00 86 03 00 00 88 03 00 00 8A'
- '03 00 00 8C 03 00 00 8C 03 00 00 8E 03 00 00 90 03 00 00 AA 03 00 00 B0 03 00 00 CA 03 00 00 CE'
- '03 00 00 D3 03 00 00 D4 03 00 00 00 04 00 00 01 04 00 00 03 04 00 00 03 04 00 00 07 04 00 00 07'
- '04 00 00 0C 04 00 00 0E 04 00 00 19 04 00 00 19 04 00 00 39 04 00 00 39 04 00 00 50 04 00 00 51'
- '04 00 00 53 04 00 00 53 04 00 00 57 04 00 00 57 04 00 00 5C 04 00 00 5E 04 00 00 76 04 00 00 77'
- '04 00 00 C1 04 00 00 C2 04 00 00 D0 04 00 00 D3 04 00 00 D6 04 00 00 D7 04 00 00 DA 04 00 00 DF'
- '04 00 00 E2 04 00 00 E7 04 00 00 EA 04 00 00 F5 04 00 00 F8 04 00 00 F9 04 00 00 22 06 00 00 26'
- '06 00 00 C0 06 00 00 C0 06 00 00 C2 06 00 00 C2 06 00 00 D3 06 00 00 D3 06 00 00 29 09 00 00 29'
- '09 00 00 31 09 00 00 31 09 00 00 34 09 00 00 34 09 00 00 58 09 00 00 5F 09 00 00 CB 09 00 00 CC'
- '09 00 00 DC 09 00 00 DD 09 00 00 DF 09 00 00 DF 09 00 00 33 0A 00 00 33 0A 00 00 36 0A 00 00 36'
- '0A 00 00 59 0A 00 00 5B 0A 00 00 5E 0A 00 00 5E 0A 00 00 48 0B 00 00 48 0B 00 00 4B 0B 00 00 4C'
- '0B 00 00 5C 0B 00 00 5D 0B 00 00 94 0B 00 00 94 0B 00 00 CA 0B 00 00 CC 0B 00 00 48 0C 00 00 48'
- '0C 00 00 C0 0C 00 00 C0 0C 00 00 C7 0C 00 00 C8 0C 00 00 CA 0C 00 00 CB 0C 00 00 4A 0D 00 00 4C'
- '0D 00 00 DA 0D 00 00 DA 0D 00 00 DC 0D 00 00 DE 0D 00 00 43 0F 00 00 43 0F 00 00 4D 0F 00 00 4D'
- '0F 00 00 52 0F 00 00 52 0F 00 00 57 0F 00 00 57 0F 00 00 5C 0F 00 00 5C 0F 00 00 69 0F 00 00 69'
- '0F 00 00 73 0F 00 00 73 0F 00 00 75 0F 00 00 76 0F 00 00 78 0F 00 00 78 0F 00 00 81 0F 00 00 81'
- '0F 00 00 93 0F 00 00 93 0F 00 00 9D 0F 00 00 9D 0F 00 00 A2 0F 00 00 A2 0F 00 00 A7 0F 00 00 A7'
- '0F 00 00 AC 0F 00 00 AC 0F 00 00 B9 0F 00 00 B9 0F 00 00 26 10 00 00 26 10 00 00 06 1B 00 00 06'
- '1B 00 00 08 1B 00 00 08 1B 00 00 0A 1B 00 00 0A 1B 00 00 0C 1B 00 00 0C 1B 00 00 0E 1B 00 00 0E'
- '1B 00 00 12 1B 00 00 12 1B 00 00 3B 1B 00 00 3B 1B 00 00 3D 1B 00 00 3D 1B 00 00 40 1B 00 00 41'
- '1B 00 00 43 1B 00 00 43 1B 00 00 00 1E 00 00 99 1E 00 00 9B 1E 00 00 9B 1E 00 00 A0 1E 00 00 F9'
- '1E 00 00 00 1F 00 00 15 1F 00 00 18 1F 00 00 1D 1F 00 00 20 1F 00 00 45 1F 00 00 48 1F 00 00 4D'
- '1F 00 00 50 1F 00 00 57 1F 00 00 59 1F 00 00 59 1F 00 00 5B 1F 00 00 5B 1F 00 00 5D 1F 00 00 5D'
- '1F 00 00 5F 1F 00 00 70 1F 00 00 72 1F 00 00 72 1F 00 00 74 1F 00 00 74 1F 00 00 76 1F 00 00 76'
- '1F 00 00 78 1F 00 00 78 1F 00 00 7A 1F 00 00 7A 1F 00 00 7C 1F 00 00 7C 1F 00 00 80 1F 00 00 B4'
- '1F 00 00 B6 1F 00 00 BA 1F 00 00 BC 1F 00 00 BC 1F 00 00 C1 1F 00 00 C4 1F 00 00 C6 1F 00 00 C8'
- '1F 00 00 CA 1F 00 00 CA 1F 00 00 CC 1F 00 00 D2 1F 00 00 D6 1F 00 00 DA 1F 00 00 DD 1F 00 00 E2'
- '1F 00 00 E4 1F 00 00 EA 1F 00 00 EC 1F 00 00 ED 1F 00 00 F2 1F 00 00 F4 1F 00 00 F6 1F 00 00 F8'
- '1F 00 00 FA 1F 00 00 FA 1F 00 00 FC 1F 00 00 FC 1F 00 00 9A 21 00 00 9B 21 00 00 AE 21 00 00 AE'
- '21 00 00 CD 21 00 00 CF 21 00 00 04 22 00 00 04 22 00 00 09 22 00 00 09 22 00 00 0C 22 00 00 0C'
- '22 00 00 24 22 00 00 24 22 00 00 26 22 00 00 26 22 00 00 41 22 00 00 41 22 00 00 44 22 00 00 44'
- '22 00 00 47 22 00 00 47 22 00 00 49 22 00 00 49 22 00 00 60 22 00 00 60 22 00 00 62 22 00 00 62'
- '22 00 00 6D 22 00 00 71 22 00 00 74 22 00 00 75 22 00 00 78 22 00 00 79 22 00 00 80 22 00 00 81'
- '22 00 00 84 22 00 00 85 22 00 00 88 22 00 00 89 22 00 00 AC 22 00 00 AF 22 00 00 E0 22 00 00 E3'
- '22 00 00 EA 22 00 00 ED 22 00 00 DC 2A 00 00 DC 2A 00 00 4C 30 00 00 4C 30 00 00 4E 30 00 00 4E'
- '30 00 00 50 30 00 00 50 30 00 00 52 30 00 00 52 30 00 00 54 30 00 00 54 30 00 00 56 30 00 00 56'
- '30 00 00 58 30 00 00 58 30 00 00 5A 30 00 00 5A 30 00 00 5C 30 00 00 5C 30 00 00 5E 30 00 00 5E'
- '30 00 00 60 30 00 00 60 30 00 00 62 30 00 00 62 30 00 00 65 30 00 00 65 30 00 00 67 30 00 00 67'
- '30 00 00 69 30 00 00 69 30 00 00 70 30 00 00 71 30 00 00 73 30 00 00 74 30 00 00 76 30 00 00 77'
- '30 00 00 79 30 00 00 7A 30 00 00 7C 30 00 00 7D 30 00 00 94 30 00 00 94 30 00 00 9E 30 00 00 9E'
- '30 00 00 AC 30 00 00 AC 30 00 00 AE 30 00 00 AE 30 00 00 B0 30 00 00 B0 30 00 00 B2 30 00 00 B2'
- '30 00 00 B4 30 00 00 B4 30 00 00 B6 30 00 00 B6 30 00 00 B8 30 00 00 B8 30 00 00 BA 30 00 00 BA'
- '30 00 00 BC 30 00 00 BC 30 00 00 BE 30 00 00 BE 30 00 00 C0 30 00 00 C0 30 00 00 C2 30 00 00 C2'
- '30 00 00 C5 30 00 00 C5 30 00 00 C7 30 00 00 C7 30 00 00 C9 30 00 00 C9 30 00 00 D0 30 00 00 D1'
- '30 00 00 D3 30 00 00 D4 30 00 00 D6 30 00 00 D7 30 00 00 D9 30 00 00 DA 30 00 00 DC 30 00 00 DD'
- '30 00 00 F4 30 00 00 F4 30 00 00 F7 30 00 00 FA 30 00 00 FE 30 00 00 FE 30 00 00 1D FB 00 00 1D'
+ '02 00 00 26 02 00 00 33 02 00 00 40 03 00 00 41 03 00 00 43 03 00 00 44 03 00 00 74 03 00 00 74'
+ '03 00 00 7E 03 00 00 7E 03 00 00 85 03 00 00 8A 03 00 00 8C 03 00 00 8C 03 00 00 8E 03 00 00 90'
+ '03 00 00 AA 03 00 00 B0 03 00 00 CA 03 00 00 CE 03 00 00 D3 03 00 00 D4 03 00 00 00 04 00 00 01'
+ '04 00 00 03 04 00 00 03 04 00 00 07 04 00 00 07 04 00 00 0C 04 00 00 0E 04 00 00 19 04 00 00 19'
+ '04 00 00 39 04 00 00 39 04 00 00 50 04 00 00 51 04 00 00 53 04 00 00 53 04 00 00 57 04 00 00 57'
+ '04 00 00 5C 04 00 00 5E 04 00 00 76 04 00 00 77 04 00 00 C1 04 00 00 C2 04 00 00 D0 04 00 00 D3'
+ '04 00 00 D6 04 00 00 D7 04 00 00 DA 04 00 00 DF 04 00 00 E2 04 00 00 E7 04 00 00 EA 04 00 00 F5'
+ '04 00 00 F8 04 00 00 F9 04 00 00 22 06 00 00 26 06 00 00 C0 06 00 00 C0 06 00 00 C2 06 00 00 C2'
+ '06 00 00 D3 06 00 00 D3 06 00 00 29 09 00 00 29 09 00 00 31 09 00 00 31 09 00 00 34 09 00 00 34'
+ '09 00 00 58 09 00 00 5F 09 00 00 CB 09 00 00 CC 09 00 00 DC 09 00 00 DD 09 00 00 DF 09 00 00 DF'
+ '09 00 00 33 0A 00 00 33 0A 00 00 36 0A 00 00 36 0A 00 00 59 0A 00 00 5B 0A 00 00 5E 0A 00 00 5E'
+ '0A 00 00 48 0B 00 00 48 0B 00 00 4B 0B 00 00 4C 0B 00 00 5C 0B 00 00 5D 0B 00 00 94 0B 00 00 94'
+ '0B 00 00 CA 0B 00 00 CC 0B 00 00 48 0C 00 00 48 0C 00 00 C0 0C 00 00 C0 0C 00 00 C7 0C 00 00 C8'
+ '0C 00 00 CA 0C 00 00 CB 0C 00 00 4A 0D 00 00 4C 0D 00 00 DA 0D 00 00 DA 0D 00 00 DC 0D 00 00 DE'
+ '0D 00 00 43 0F 00 00 43 0F 00 00 4D 0F 00 00 4D 0F 00 00 52 0F 00 00 52 0F 00 00 57 0F 00 00 57'
+ '0F 00 00 5C 0F 00 00 5C 0F 00 00 69 0F 00 00 69 0F 00 00 73 0F 00 00 73 0F 00 00 75 0F 00 00 76'
+ '0F 00 00 78 0F 00 00 78 0F 00 00 81 0F 00 00 81 0F 00 00 93 0F 00 00 93 0F 00 00 9D 0F 00 00 9D'
+ '0F 00 00 A2 0F 00 00 A2 0F 00 00 A7 0F 00 00 A7 0F 00 00 AC 0F 00 00 AC 0F 00 00 B9 0F 00 00 B9'
+ '0F 00 00 26 10 00 00 26 10 00 00 06 1B 00 00 06 1B 00 00 08 1B 00 00 08 1B 00 00 0A 1B 00 00 0A'
+ '1B 00 00 0C 1B 00 00 0C 1B 00 00 0E 1B 00 00 0E 1B 00 00 12 1B 00 00 12 1B 00 00 3B 1B 00 00 3B'
+ '1B 00 00 3D 1B 00 00 3D 1B 00 00 40 1B 00 00 41 1B 00 00 43 1B 00 00 43 1B 00 00 00 1E 00 00 99'
+ '1E 00 00 9B 1E 00 00 9B 1E 00 00 A0 1E 00 00 F9 1E 00 00 00 1F 00 00 15 1F 00 00 18 1F 00 00 1D'
+ '1F 00 00 20 1F 00 00 45 1F 00 00 48 1F 00 00 4D 1F 00 00 50 1F 00 00 57 1F 00 00 59 1F 00 00 59'
+ '1F 00 00 5B 1F 00 00 5B 1F 00 00 5D 1F 00 00 5D 1F 00 00 5F 1F 00 00 7D 1F 00 00 80 1F 00 00 B4'
+ '1F 00 00 B6 1F 00 00 BC 1F 00 00 BE 1F 00 00 BE 1F 00 00 C1 1F 00 00 C4 1F 00 00 C6 1F 00 00 D3'
+ '1F 00 00 D6 1F 00 00 DB 1F 00 00 DD 1F 00 00 EF 1F 00 00 F2 1F 00 00 F4 1F 00 00 F6 1F 00 00 FD'
+ '1F 00 00 00 20 00 00 01 20 00 00 26 21 00 00 26 21 00 00 2A 21 00 00 2B 21 00 00 9A 21 00 00 9B'
+ '21 00 00 AE 21 00 00 AE 21 00 00 CD 21 00 00 CF 21 00 00 04 22 00 00 04 22 00 00 09 22 00 00 09'
+ '22 00 00 0C 22 00 00 0C 22 00 00 24 22 00 00 24 22 00 00 26 22 00 00 26 22 00 00 41 22 00 00 41'
+ '22 00 00 44 22 00 00 44 22 00 00 47 22 00 00 47 22 00 00 49 22 00 00 49 22 00 00 60 22 00 00 60'
+ '22 00 00 62 22 00 00 62 22 00 00 6D 22 00 00 71 22 00 00 74 22 00 00 75 22 00 00 78 22 00 00 79'
+ '22 00 00 80 22 00 00 81 22 00 00 84 22 00 00 85 22 00 00 88 22 00 00 89 22 00 00 AC 22 00 00 AF'
+ '22 00 00 E0 22 00 00 E3 22 00 00 EA 22 00 00 ED 22 00 00 29 23 00 00 2A 23 00 00 DC 2A 00 00 DC'
+ '2A 00 00 4C 30 00 00 4C 30 00 00 4E 30 00 00 4E 30 00 00 50 30 00 00 50 30 00 00 52 30 00 00 52'
+ '30 00 00 54 30 00 00 54 30 00 00 56 30 00 00 56 30 00 00 58 30 00 00 58 30 00 00 5A 30 00 00 5A'
+ '30 00 00 5C 30 00 00 5C 30 00 00 5E 30 00 00 5E 30 00 00 60 30 00 00 60 30 00 00 62 30 00 00 62'
+ '30 00 00 65 30 00 00 65 30 00 00 67 30 00 00 67 30 00 00 69 30 00 00 69 30 00 00 70 30 00 00 71'
+ '30 00 00 73 30 00 00 74 30 00 00 76 30 00 00 77 30 00 00 79 30 00 00 7A 30 00 00 7C 30 00 00 7D'
+ '30 00 00 94 30 00 00 94 30 00 00 9E 30 00 00 9E 30 00 00 AC 30 00 00 AC 30 00 00 AE 30 00 00 AE'
+ '30 00 00 B0 30 00 00 B0 30 00 00 B2 30 00 00 B2 30 00 00 B4 30 00 00 B4 30 00 00 B6 30 00 00 B6'
+ '30 00 00 B8 30 00 00 B8 30 00 00 BA 30 00 00 BA 30 00 00 BC 30 00 00 BC 30 00 00 BE 30 00 00 BE'
+ '30 00 00 C0 30 00 00 C0 30 00 00 C2 30 00 00 C2 30 00 00 C5 30 00 00 C5 30 00 00 C7 30 00 00 C7'
+ '30 00 00 C9 30 00 00 C9 30 00 00 D0 30 00 00 D1 30 00 00 D3 30 00 00 D4 30 00 00 D6 30 00 00 D7'
+ '30 00 00 D9 30 00 00 DA 30 00 00 DC 30 00 00 DD 30 00 00 F4 30 00 00 F4 30 00 00 F7 30 00 00 FA'
+ '30 00 00 FE 30 00 00 FE 30 00 00 00 F9 00 00 0D FA 00 00 10 FA 00 00 10 FA 00 00 12 FA 00 00 12'
+ 'FA 00 00 15 FA 00 00 1E FA 00 00 20 FA 00 00 20 FA 00 00 22 FA 00 00 22 FA 00 00 25 FA 00 00 26'
+ 'FA 00 00 2A FA 00 00 2D FA 00 00 30 FA 00 00 6A FA 00 00 70 FA 00 00 D9 FA 00 00 1D FB 00 00 1D'
'FB 00 00 1F FB 00 00 1F FB 00 00 2A FB 00 00 36 FB 00 00 38 FB 00 00 3C FB 00 00 3E FB 00 00 3E'
'FB 00 00 40 FB 00 00 41 FB 00 00 43 FB 00 00 44 FB 00 00 46 FB 00 00 4E FB 00 00 5E D1 01 00 64'
- 'D1 01 00 BB D1 01 00 C0 D1 01 00 36 C0 01 00 00 00 00 00 00 77 03 00 00 7A 03 00 00 7E 03 00 00'
- '84 03 00 00 8A 03 00 00 8C 03 00 00 8C 03 00 00 8E 03 00 00 A1 03 00 00 A3 03 00 00 86 04 00 00'
- '88 04 00 00 13 05 00 00 31 05 00 00 56 05 00 00 59 05 00 00 5F 05 00 00 61 05 00 00 87 05 00 00'
- '89 05 00 00 8A 05 00 00 91 05 00 00 C7 05 00 00 D0 05 00 00 EA 05 00 00 F0 05 00 00 F4 05 00 00'
- '00 06 00 00 03 06 00 00 06 06 00 00 15 06 00 00 1B 06 00 00 1B 06 00 00 1E 06 00 00 1F 06 00 00'
- '21 06 00 00 3A 06 00 00 40 06 00 00 5E 06 00 00 60 06 00 00 0D 07 00 00 0F 07 00 00 4A 07 00 00'
- '4D 07 00 00 7D 07 00 00 80 07 00 00 B1 07 00 00 C0 07 00 00 FA 07 00 00 01 09 00 00 39 09 00 00'
- '3C 09 00 00 4D 09 00 00 50 09 00 00 54 09 00 00 58 09 00 00 72 09 00 00 7B 09 00 00 7F 09 00 00'
- '81 09 00 00 83 09 00 00 85 09 00 00 8C 09 00 00 8F 09 00 00 90 09 00 00 93 09 00 00 A8 09 00 00'
- 'AA 09 00 00 B0 09 00 00 B2 09 00 00 B2 09 00 00 B6 09 00 00 B9 09 00 00 BC 09 00 00 C4 09 00 00'
- 'C7 09 00 00 C8 09 00 00 CB 09 00 00 CE 09 00 00 D7 09 00 00 D7 09 00 00 DC 09 00 00 DD 09 00 00'
- 'DF 09 00 00 E3 09 00 00 E6 09 00 00 FA 09 00 00 01 0A 00 00 03 0A 00 00 05 0A 00 00 0A 0A 00 00'
- '0F 0A 00 00 10 0A 00 00 13 0A 00 00 28 0A 00 00 2A 0A 00 00 30 0A 00 00 32 0A 00 00 33 0A 00 00'
- '35 0A 00 00 36 0A 00 00 38 0A 00 00 39 0A 00 00 3C 0A 00 00 3C 0A 00 00 3E 0A 00 00 42 0A 00 00'
- '47 0A 00 00 48 0A 00 00 4B 0A 00 00 4D 0A 00 00 51 0A 00 00 51 0A 00 00 59 0A 00 00 5C 0A 00 00'
- '5E 0A 00 00 5E 0A 00 00 66 0A 00 00 75 0A 00 00 81 0A 00 00 83 0A 00 00 85 0A 00 00 8D 0A 00 00'
- '8F 0A 00 00 91 0A 00 00 93 0A 00 00 A8 0A 00 00 AA 0A 00 00 B0 0A 00 00 B2 0A 00 00 B3 0A 00 00'
- 'B5 0A 00 00 B9 0A 00 00 BC 0A 00 00 C5 0A 00 00 C7 0A 00 00 C9 0A 00 00 CB 0A 00 00 CD 0A 00 00'
- 'D0 0A 00 00 D0 0A 00 00 E0 0A 00 00 E3 0A 00 00 E6 0A 00 00 EF 0A 00 00 F1 0A 00 00 F1 0A 00 00'
- '01 0B 00 00 03 0B 00 00 05 0B 00 00 0C 0B 00 00 0F 0B 00 00 10 0B 00 00 13 0B 00 00 28 0B 00 00'
- '2A 0B 00 00 30 0B 00 00 32 0B 00 00 33 0B 00 00 35 0B 00 00 39 0B 00 00 3C 0B 00 00 43 0B 00 00'
- '47 0B 00 00 48 0B 00 00 4B 0B 00 00 4D 0B 00 00 56 0B 00 00 57 0B 00 00 5C 0B 00 00 5D 0B 00 00'
- '5F 0B 00 00 61 0B 00 00 66 0B 00 00 71 0B 00 00 82 0B 00 00 83 0B 00 00 85 0B 00 00 8A 0B 00 00'
- '8E 0B 00 00 90 0B 00 00 92 0B 00 00 95 0B 00 00 99 0B 00 00 9A 0B 00 00 9C 0B 00 00 9C 0B 00 00'
- '9E 0B 00 00 9F 0B 00 00 A3 0B 00 00 A4 0B 00 00 A8 0B 00 00 AA 0B 00 00 AE 0B 00 00 B9 0B 00 00'
- 'BE 0B 00 00 C2 0B 00 00 C6 0B 00 00 C8 0B 00 00 CA 0B 00 00 CD 0B 00 00 D0 0B 00 00 D0 0B 00 00'
- 'D7 0B 00 00 D7 0B 00 00 E6 0B 00 00 FA 0B 00 00 01 0C 00 00 03 0C 00 00 05 0C 00 00 0C 0C 00 00'
- '0E 0C 00 00 10 0C 00 00 12 0C 00 00 28 0C 00 00 2A 0C 00 00 33 0C 00 00 35 0C 00 00 39 0C 00 00'
- '3D 0C 00 00 44 0C 00 00 46 0C 00 00 48 0C 00 00 4A 0C 00 00 4D 0C 00 00 55 0C 00 00 56 0C 00 00'
- '58 0C 00 00 59 0C 00 00 60 0C 00 00 63 0C 00 00 66 0C 00 00 6F 0C 00 00 78 0C 00 00 7F 0C 00 00'
- '82 0C 00 00 83 0C 00 00 85 0C 00 00 8C 0C 00 00 8E 0C 00 00 90 0C 00 00 92 0C 00 00 A8 0C 00 00'
- 'AA 0C 00 00 B3 0C 00 00 B5 0C 00 00 B9 0C 00 00 BC 0C 00 00 C4 0C 00 00 C6 0C 00 00 C8 0C 00 00'
- 'CA 0C 00 00 CD 0C 00 00 D5 0C 00 00 D6 0C 00 00 DE 0C 00 00 DE 0C 00 00 E0 0C 00 00 E3 0C 00 00'
- 'E6 0C 00 00 EF 0C 00 00 F1 0C 00 00 F2 0C 00 00 02 0D 00 00 03 0D 00 00 05 0D 00 00 0C 0D 00 00'
- '0E 0D 00 00 10 0D 00 00 12 0D 00 00 28 0D 00 00 2A 0D 00 00 39 0D 00 00 3D 0D 00 00 44 0D 00 00'
- '46 0D 00 00 48 0D 00 00 4A 0D 00 00 4D 0D 00 00 57 0D 00 00 57 0D 00 00 60 0D 00 00 62 0D 00 00'
- '66 0D 00 00 75 0D 00 00 79 0D 00 00 79 0D 00 00 82 0D 00 00 83 0D 00 00 85 0D 00 00 96 0D 00 00'
- '9A 0D 00 00 B1 0D 00 00 B3 0D 00 00 BB 0D 00 00 BD 0D 00 00 BD 0D 00 00 C0 0D 00 00 C6 0D 00 00'
- 'CA 0D 00 00 CA 0D 00 00 CF 0D 00 00 D4 0D 00 00 D6 0D 00 00 D6 0D 00 00 D8 0D 00 00 DF 0D 00 00'
- 'F2 0D 00 00 F4 0D 00 00 01 0E 00 00 3A 0E 00 00 3F 0E 00 00 5B 0E 00 00 81 0E 00 00 82 0E 00 00'
- '84 0E 00 00 84 0E 00 00 87 0E 00 00 88 0E 00 00 8A 0E 00 00 8A 0E 00 00 8D 0E 00 00 8D 0E 00 00'
- '94 0E 00 00 97 0E 00 00 99 0E 00 00 9F 0E 00 00 A1 0E 00 00 A3 0E 00 00 A5 0E 00 00 A5 0E 00 00'
- 'A7 0E 00 00 A7 0E 00 00 AA 0E 00 00 AB 0E 00 00 AD 0E 00 00 B9 0E 00 00 BB 0E 00 00 BD 0E 00 00'
- 'C0 0E 00 00 C4 0E 00 00 C6 0E 00 00 C6 0E 00 00 C8 0E 00 00 CD 0E 00 00 D0 0E 00 00 D9 0E 00 00'
- 'DC 0E 00 00 DD 0E 00 00 00 0F 00 00 47 0F 00 00 49 0F 00 00 6C 0F 00 00 71 0F 00 00 8B 0F 00 00'
- '90 0F 00 00 97 0F 00 00 99 0F 00 00 BC 0F 00 00 BE 0F 00 00 CC 0F 00 00 CE 0F 00 00 D4 0F 00 00'
- '00 10 00 00 21 10 00 00 23 10 00 00 64 10 00 00 A0 10 00 00 C5 10 00 00 D0 10 00 00 FC 10 00 00'
- '00 11 00 00 59 11 00 00 5F 11 00 00 A2 11 00 00 A8 11 00 00 F9 11 00 00 00 12 00 00 48 12 00 00'
- '4A 12 00 00 4D 12 00 00 50 12 00 00 56 12 00 00 58 12 00 00 58 12 00 00 5A 12 00 00 5D 12 00 00'
- '60 12 00 00 88 12 00 00 8A 12 00 00 8D 12 00 00 90 12 00 00 B0 12 00 00 B2 12 00 00 B5 12 00 00'
- 'B8 12 00 00 BE 12 00 00 C0 12 00 00 C0 12 00 00 C2 12 00 00 C5 12 00 00 C8 12 00 00 D6 12 00 00'
- 'D8 12 00 00 10 13 00 00 12 13 00 00 15 13 00 00 18 13 00 00 5A 13 00 00 5F 13 00 00 7C 13 00 00'
- '80 13 00 00 99 13 00 00 A0 13 00 00 F4 13 00 00 01 14 00 00 76 16 00 00 80 16 00 00 9C 16 00 00'
- 'A0 16 00 00 F0 16 00 00 00 17 00 00 0C 17 00 00 0E 17 00 00 14 17 00 00 20 17 00 00 36 17 00 00'
- '40 17 00 00 53 17 00 00 60 17 00 00 6C 17 00 00 6E 17 00 00 70 17 00 00 72 17 00 00 73 17 00 00'
- '80 17 00 00 DD 17 00 00 E0 17 00 00 E9 17 00 00 F0 17 00 00 F9 17 00 00 00 18 00 00 0E 18 00 00'
- '10 18 00 00 19 18 00 00 20 18 00 00 77 18 00 00 80 18 00 00 AA 18 00 00 00 19 00 00 1C 19 00 00'
- '20 19 00 00 2B 19 00 00 30 19 00 00 3B 19 00 00 40 19 00 00 40 19 00 00 44 19 00 00 6D 19 00 00'
- '70 19 00 00 74 19 00 00 80 19 00 00 A9 19 00 00 B0 19 00 00 C9 19 00 00 D0 19 00 00 D9 19 00 00'
- 'DE 19 00 00 1B 1A 00 00 1E 1A 00 00 1F 1A 00 00 00 1B 00 00 4B 1B 00 00 50 1B 00 00 7C 1B 00 00'
- '80 1B 00 00 AA 1B 00 00 AE 1B 00 00 B9 1B 00 00 00 1C 00 00 37 1C 00 00 3B 1C 00 00 49 1C 00 00'
- '4D 1C 00 00 7F 1C 00 00 00 1D 00 00 E6 1D 00 00 FE 1D 00 00 9D 1E 00 00 9F 1E 00 00 15 1F 00 00'
- '18 1F 00 00 1D 1F 00 00 20 1F 00 00 45 1F 00 00 48 1F 00 00 4D 1F 00 00 50 1F 00 00 57 1F 00 00'
- '59 1F 00 00 59 1F 00 00 5B 1F 00 00 5B 1F 00 00 5D 1F 00 00 5D 1F 00 00 5F 1F 00 00 7D 1F 00 00'
- '80 1F 00 00 B4 1F 00 00 B6 1F 00 00 C4 1F 00 00 C6 1F 00 00 D3 1F 00 00 D6 1F 00 00 DB 1F 00 00'
- 'DD 1F 00 00 EF 1F 00 00 F2 1F 00 00 F4 1F 00 00 F6 1F 00 00 FE 1F 00 00 00 20 00 00 63 20 00 00'
- '6A 20 00 00 71 20 00 00 74 20 00 00 8E 20 00 00 90 20 00 00 94 20 00 00 A0 20 00 00 B5 20 00 00'
- 'D0 20 00 00 EF 20 00 00 00 21 00 00 4E 21 00 00 53 21 00 00 84 21 00 00 90 21 00 00 E7 23 00 00'
- '00 24 00 00 26 24 00 00 40 24 00 00 4A 24 00 00 60 24 00 00 9D 26 00 00 A0 26 00 00 BC 26 00 00'
- '01 27 00 00 04 27 00 00 06 27 00 00 09 27 00 00 0C 27 00 00 27 27 00 00 29 27 00 00 4B 27 00 00'
- '4D 27 00 00 4D 27 00 00 4F 27 00 00 52 27 00 00 56 27 00 00 56 27 00 00 58 27 00 00 5E 27 00 00'
- '61 27 00 00 94 27 00 00 98 27 00 00 AF 27 00 00 B1 27 00 00 BE 27 00 00 C0 27 00 00 CA 27 00 00'
- 'D0 27 00 00 ED 27 00 00 F0 27 00 00 1A 2B 00 00 20 2B 00 00 23 2B 00 00 30 2B 00 00 44 2B 00 00'
- '47 2B 00 00 4C 2B 00 00 00 2C 00 00 2E 2C 00 00 30 2C 00 00 5E 2C 00 00 60 2C 00 00 6F 2C 00 00'
- '71 2C 00 00 7D 2C 00 00 80 2C 00 00 EA 2C 00 00 F9 2C 00 00 25 2D 00 00 30 2D 00 00 65 2D 00 00'
- '6F 2D 00 00 6F 2D 00 00 80 2D 00 00 96 2D 00 00 A0 2D 00 00 A6 2D 00 00 A8 2D 00 00 AE 2D 00 00'
- 'B0 2D 00 00 B6 2D 00 00 B8 2D 00 00 BE 2D 00 00 C0 2D 00 00 C6 2D 00 00 C8 2D 00 00 CE 2D 00 00'
- 'D0 2D 00 00 D6 2D 00 00 D8 2D 00 00 DE 2D 00 00 00 2E 00 00 18 2E 00 00 1C 2E 00 00 1D 2E 00 00'
- '80 2E 00 00 99 2E 00 00 9B 2E 00 00 F3 2E 00 00 00 2F 00 00 D5 2F 00 00 F0 2F 00 00 FB 2F 00 00'
- '00 30 00 00 3F 30 00 00 41 30 00 00 96 30 00 00 99 30 00 00 FF 30 00 00 05 31 00 00 2C 31 00 00'
- '31 31 00 00 8E 31 00 00 90 31 00 00 B7 31 00 00 C0 31 00 00 E3 31 00 00 F0 31 00 00 1E 32 00 00'
- '20 32 00 00 43 32 00 00 50 32 00 00 FE 32 00 00 00 33 00 00 FF 33 00 00 00 34 00 00 B5 4D 00 00'
- 'C0 4D 00 00 FF 4D 00 00 00 4E 00 00 BB 9F 00 00 00 A0 00 00 8C A4 00 00 90 A4 00 00 C6 A4 00 00'
- '00 A5 00 00 2B A6 00 00 00 A7 00 00 88 A7 00 00 00 A8 00 00 2B A8 00 00 40 A8 00 00 77 A8 00 00'
- '80 A8 00 00 C4 A8 00 00 CE A8 00 00 D9 A8 00 00 00 A9 00 00 53 A9 00 00 5F A9 00 00 5F A9 00 00'
- '00 AC 00 00 A3 D7 00 00 00 D8 00 00 7F DB 00 00 80 DB 00 00 FF DB 00 00 00 DC 00 00 FF DF 00 00'
- '00 E0 00 00 2D FA 00 00 30 FA 00 00 6A FA 00 00 70 FA 00 00 D9 FA 00 00 00 FB 00 00 06 FB 00 00'
- '13 FB 00 00 17 FB 00 00 1D FB 00 00 36 FB 00 00 38 FB 00 00 3C FB 00 00 3E FB 00 00 3E FB 00 00'
- '40 FB 00 00 41 FB 00 00 43 FB 00 00 44 FB 00 00 46 FB 00 00 B1 FB 00 00 D3 FB 00 00 3F FD 00 00'
- '50 FD 00 00 8F FD 00 00 92 FD 00 00 C7 FD 00 00 F0 FD 00 00 FD FD 00 00 00 FE 00 00 19 FE 00 00'
- '20 FE 00 00 23 FE 00 00 30 FE 00 00 52 FE 00 00 54 FE 00 00 66 FE 00 00 68 FE 00 00 6B FE 00 00'
- '70 FE 00 00 74 FE 00 00 76 FE 00 00 FC FE 00 00 FF FE 00 00 FF FE 00 00 01 FF 00 00 BE FF 00 00'
- 'C2 FF 00 00 C7 FF 00 00 CA FF 00 00 CF FF 00 00 D2 FF 00 00 D7 FF 00 00 DA FF 00 00 DC FF 00 00'
- 'E0 FF 00 00 E6 FF 00 00 E8 FF 00 00 EE FF 00 00 F9 FF 00 00 FD FF 00 00 00 00 01 00 0B 00 01 00'
- '0D 00 01 00 26 00 01 00 28 00 01 00 3A 00 01 00 3C 00 01 00 3D 00 01 00 3F 00 01 00 4D 00 01 00'
- '50 00 01 00 5D 00 01 00 80 00 01 00 FA 00 01 00 00 01 01 00 02 01 01 00 07 01 01 00 33 01 01 00'
- '37 01 01 00 8A 01 01 00 D0 01 01 00 FD 01 01 00 80 02 01 00 9C 02 01 00 A0 02 01 00 D0 02 01 00'
- '00 03 01 00 1E 03 01 00 20 03 01 00 23 03 01 00 30 03 01 00 4A 03 01 00 80 03 01 00 9D 03 01 00'
- '9F 03 01 00 C3 03 01 00 C8 03 01 00 D5 03 01 00 00 04 01 00 9D 04 01 00 A0 04 01 00 A9 04 01 00'
- '00 08 01 00 05 08 01 00 08 08 01 00 08 08 01 00 0A 08 01 00 35 08 01 00 37 08 01 00 38 08 01 00'
- '3C 08 01 00 3C 08 01 00 3F 08 01 00 3F 08 01 00 00 09 01 00 19 09 01 00 1F 09 01 00 39 09 01 00'
- '3F 09 01 00 3F 09 01 00 00 0A 01 00 03 0A 01 00 05 0A 01 00 06 0A 01 00 0C 0A 01 00 13 0A 01 00'
- '15 0A 01 00 17 0A 01 00 19 0A 01 00 33 0A 01 00 38 0A 01 00 3A 0A 01 00 3F 0A 01 00 47 0A 01 00'
- '50 0A 01 00 58 0A 01 00 00 20 01 00 6E 23 01 00 00 24 01 00 62 24 01 00 70 24 01 00 73 24 01 00'
- '00 D0 01 00 F5 D0 01 00 00 D1 01 00 26 D1 01 00 29 D1 01 00 DD D1 01 00 00 D2 01 00 45 D2 01 00'
- '00 D3 01 00 56 D3 01 00 60 D3 01 00 71 D3 01 00 00 D4 01 00 54 D4 01 00 56 D4 01 00 9C D4 01 00'
- '9E D4 01 00 9F D4 01 00 A2 D4 01 00 A2 D4 01 00 A5 D4 01 00 A6 D4 01 00 A9 D4 01 00 AC D4 01 00'
- 'AE D4 01 00 B9 D4 01 00 BB D4 01 00 BB D4 01 00 BD D4 01 00 C3 D4 01 00 C5 D4 01 00 05 D5 01 00'
- '07 D5 01 00 0A D5 01 00 0D D5 01 00 14 D5 01 00 16 D5 01 00 1C D5 01 00 1E D5 01 00 39 D5 01 00'
- '3B D5 01 00 3E D5 01 00 40 D5 01 00 44 D5 01 00 46 D5 01 00 46 D5 01 00 4A D5 01 00 50 D5 01 00'
- '52 D5 01 00 A5 D6 01 00 A8 D6 01 00 CB D7 01 00 CE D7 01 00 FF D7 01 00 00 00 02 00 D6 A6 02 00'
- '00 F8 02 00 1D FA 02 00 01 00 0E 00 01 00 0E 00 20 00 0E 00 7F 00 0E 00 00 01 0E 00 EF 01 0E 00'
- '00 00 0F 00 FD FF 0F 00 00 00 10 00 FD FF 10 00'
+ 'D1 01 00 BB D1 01 00 C0 D1 01 00 00 F8 02 00 1D FA 02 00 36 C0 01 00 00 00 00 00 00 77 03 00 00'
+ '7A 03 00 00 7E 03 00 00 84 03 00 00 8A 03 00 00 8C 03 00 00 8C 03 00 00 8E 03 00 00 A1 03 00 00'
+ 'A3 03 00 00 86 04 00 00 88 04 00 00 13 05 00 00 31 05 00 00 56 05 00 00 59 05 00 00 5F 05 00 00'
+ '61 05 00 00 87 05 00 00 89 05 00 00 8A 05 00 00 91 05 00 00 C7 05 00 00 D0 05 00 00 EA 05 00 00'
+ 'F0 05 00 00 F4 05 00 00 00 06 00 00 03 06 00 00 06 06 00 00 15 06 00 00 1B 06 00 00 1B 06 00 00'
+ '1E 06 00 00 1F 06 00 00 21 06 00 00 3A 06 00 00 40 06 00 00 5E 06 00 00 60 06 00 00 0D 07 00 00'
+ '0F 07 00 00 4A 07 00 00 4D 07 00 00 7D 07 00 00 80 07 00 00 B1 07 00 00 C0 07 00 00 FA 07 00 00'
+ '01 09 00 00 39 09 00 00 3C 09 00 00 4D 09 00 00 50 09 00 00 54 09 00 00 58 09 00 00 72 09 00 00'
+ '7B 09 00 00 7F 09 00 00 81 09 00 00 83 09 00 00 85 09 00 00 8C 09 00 00 8F 09 00 00 90 09 00 00'
+ '93 09 00 00 A8 09 00 00 AA 09 00 00 B0 09 00 00 B2 09 00 00 B2 09 00 00 B6 09 00 00 B9 09 00 00'
+ 'BC 09 00 00 C4 09 00 00 C7 09 00 00 C8 09 00 00 CB 09 00 00 CE 09 00 00 D7 09 00 00 D7 09 00 00'
+ 'DC 09 00 00 DD 09 00 00 DF 09 00 00 E3 09 00 00 E6 09 00 00 FA 09 00 00 01 0A 00 00 03 0A 00 00'
+ '05 0A 00 00 0A 0A 00 00 0F 0A 00 00 10 0A 00 00 13 0A 00 00 28 0A 00 00 2A 0A 00 00 30 0A 00 00'
+ '32 0A 00 00 33 0A 00 00 35 0A 00 00 36 0A 00 00 38 0A 00 00 39 0A 00 00 3C 0A 00 00 3C 0A 00 00'
+ '3E 0A 00 00 42 0A 00 00 47 0A 00 00 48 0A 00 00 4B 0A 00 00 4D 0A 00 00 51 0A 00 00 51 0A 00 00'
+ '59 0A 00 00 5C 0A 00 00 5E 0A 00 00 5E 0A 00 00 66 0A 00 00 75 0A 00 00 81 0A 00 00 83 0A 00 00'
+ '85 0A 00 00 8D 0A 00 00 8F 0A 00 00 91 0A 00 00 93 0A 00 00 A8 0A 00 00 AA 0A 00 00 B0 0A 00 00'
+ 'B2 0A 00 00 B3 0A 00 00 B5 0A 00 00 B9 0A 00 00 BC 0A 00 00 C5 0A 00 00 C7 0A 00 00 C9 0A 00 00'
+ 'CB 0A 00 00 CD 0A 00 00 D0 0A 00 00 D0 0A 00 00 E0 0A 00 00 E3 0A 00 00 E6 0A 00 00 EF 0A 00 00'
+ 'F1 0A 00 00 F1 0A 00 00 01 0B 00 00 03 0B 00 00 05 0B 00 00 0C 0B 00 00 0F 0B 00 00 10 0B 00 00'
+ '13 0B 00 00 28 0B 00 00 2A 0B 00 00 30 0B 00 00 32 0B 00 00 33 0B 00 00 35 0B 00 00 39 0B 00 00'
+ '3C 0B 00 00 43 0B 00 00 47 0B 00 00 48 0B 00 00 4B 0B 00 00 4D 0B 00 00 56 0B 00 00 57 0B 00 00'
+ '5C 0B 00 00 5D 0B 00 00 5F 0B 00 00 61 0B 00 00 66 0B 00 00 71 0B 00 00 82 0B 00 00 83 0B 00 00'
+ '85 0B 00 00 8A 0B 00 00 8E 0B 00 00 90 0B 00 00 92 0B 00 00 95 0B 00 00 99 0B 00 00 9A 0B 00 00'
+ '9C 0B 00 00 9C 0B 00 00 9E 0B 00 00 9F 0B 00 00 A3 0B 00 00 A4 0B 00 00 A8 0B 00 00 AA 0B 00 00'
+ 'AE 0B 00 00 B9 0B 00 00 BE 0B 00 00 C2 0B 00 00 C6 0B 00 00 C8 0B 00 00 CA 0B 00 00 CD 0B 00 00'
+ 'D0 0B 00 00 D0 0B 00 00 D7 0B 00 00 D7 0B 00 00 E6 0B 00 00 FA 0B 00 00 01 0C 00 00 03 0C 00 00'
+ '05 0C 00 00 0C 0C 00 00 0E 0C 00 00 10 0C 00 00 12 0C 00 00 28 0C 00 00 2A 0C 00 00 33 0C 00 00'
+ '35 0C 00 00 39 0C 00 00 3D 0C 00 00 44 0C 00 00 46 0C 00 00 48 0C 00 00 4A 0C 00 00 4D 0C 00 00'
+ '55 0C 00 00 56 0C 00 00 58 0C 00 00 59 0C 00 00 60 0C 00 00 63 0C 00 00 66 0C 00 00 6F 0C 00 00'
+ '78 0C 00 00 7F 0C 00 00 82 0C 00 00 83 0C 00 00 85 0C 00 00 8C 0C 00 00 8E 0C 00 00 90 0C 00 00'
+ '92 0C 00 00 A8 0C 00 00 AA 0C 00 00 B3 0C 00 00 B5 0C 00 00 B9 0C 00 00 BC 0C 00 00 C4 0C 00 00'
+ 'C6 0C 00 00 C8 0C 00 00 CA 0C 00 00 CD 0C 00 00 D5 0C 00 00 D6 0C 00 00 DE 0C 00 00 DE 0C 00 00'
+ 'E0 0C 00 00 E3 0C 00 00 E6 0C 00 00 EF 0C 00 00 F1 0C 00 00 F2 0C 00 00 02 0D 00 00 03 0D 00 00'
+ '05 0D 00 00 0C 0D 00 00 0E 0D 00 00 10 0D 00 00 12 0D 00 00 28 0D 00 00 2A 0D 00 00 39 0D 00 00'
+ '3D 0D 00 00 44 0D 00 00 46 0D 00 00 48 0D 00 00 4A 0D 00 00 4D 0D 00 00 57 0D 00 00 57 0D 00 00'
+ '60 0D 00 00 62 0D 00 00 66 0D 00 00 75 0D 00 00 79 0D 00 00 79 0D 00 00 82 0D 00 00 83 0D 00 00'
+ '85 0D 00 00 96 0D 00 00 9A 0D 00 00 B1 0D 00 00 B3 0D 00 00 BB 0D 00 00 BD 0D 00 00 BD 0D 00 00'
+ 'C0 0D 00 00 C6 0D 00 00 CA 0D 00 00 CA 0D 00 00 CF 0D 00 00 D4 0D 00 00 D6 0D 00 00 D6 0D 00 00'
+ 'D8 0D 00 00 DF 0D 00 00 F2 0D 00 00 F4 0D 00 00 01 0E 00 00 3A 0E 00 00 3F 0E 00 00 5B 0E 00 00'
+ '81 0E 00 00 82 0E 00 00 84 0E 00 00 84 0E 00 00 87 0E 00 00 88 0E 00 00 8A 0E 00 00 8A 0E 00 00'
+ '8D 0E 00 00 8D 0E 00 00 94 0E 00 00 97 0E 00 00 99 0E 00 00 9F 0E 00 00 A1 0E 00 00 A3 0E 00 00'
+ 'A5 0E 00 00 A5 0E 00 00 A7 0E 00 00 A7 0E 00 00 AA 0E 00 00 AB 0E 00 00 AD 0E 00 00 B9 0E 00 00'
+ 'BB 0E 00 00 BD 0E 00 00 C0 0E 00 00 C4 0E 00 00 C6 0E 00 00 C6 0E 00 00 C8 0E 00 00 CD 0E 00 00'
+ 'D0 0E 00 00 D9 0E 00 00 DC 0E 00 00 DD 0E 00 00 00 0F 00 00 47 0F 00 00 49 0F 00 00 6C 0F 00 00'
+ '71 0F 00 00 8B 0F 00 00 90 0F 00 00 97 0F 00 00 99 0F 00 00 BC 0F 00 00 BE 0F 00 00 CC 0F 00 00'
+ 'CE 0F 00 00 D4 0F 00 00 00 10 00 00 21 10 00 00 23 10 00 00 64 10 00 00 A0 10 00 00 C5 10 00 00'
+ 'D0 10 00 00 FC 10 00 00 00 11 00 00 59 11 00 00 5F 11 00 00 A2 11 00 00 A8 11 00 00 F9 11 00 00'
+ '00 12 00 00 48 12 00 00 4A 12 00 00 4D 12 00 00 50 12 00 00 56 12 00 00 58 12 00 00 58 12 00 00'
+ '5A 12 00 00 5D 12 00 00 60 12 00 00 88 12 00 00 8A 12 00 00 8D 12 00 00 90 12 00 00 B0 12 00 00'
+ 'B2 12 00 00 B5 12 00 00 B8 12 00 00 BE 12 00 00 C0 12 00 00 C0 12 00 00 C2 12 00 00 C5 12 00 00'
+ 'C8 12 00 00 D6 12 00 00 D8 12 00 00 10 13 00 00 12 13 00 00 15 13 00 00 18 13 00 00 5A 13 00 00'
+ '5F 13 00 00 7C 13 00 00 80 13 00 00 99 13 00 00 A0 13 00 00 F4 13 00 00 01 14 00 00 76 16 00 00'
+ '80 16 00 00 9C 16 00 00 A0 16 00 00 F0 16 00 00 00 17 00 00 0C 17 00 00 0E 17 00 00 14 17 00 00'
+ '20 17 00 00 36 17 00 00 40 17 00 00 53 17 00 00 60 17 00 00 6C 17 00 00 6E 17 00 00 70 17 00 00'
+ '72 17 00 00 73 17 00 00 80 17 00 00 DD 17 00 00 E0 17 00 00 E9 17 00 00 F0 17 00 00 F9 17 00 00'
+ '00 18 00 00 0E 18 00 00 10 18 00 00 19 18 00 00 20 18 00 00 77 18 00 00 80 18 00 00 AA 18 00 00'
+ '00 19 00 00 1C 19 00 00 20 19 00 00 2B 19 00 00 30 19 00 00 3B 19 00 00 40 19 00 00 40 19 00 00'
+ '44 19 00 00 6D 19 00 00 70 19 00 00 74 19 00 00 80 19 00 00 A9 19 00 00 B0 19 00 00 C9 19 00 00'
+ 'D0 19 00 00 D9 19 00 00 DE 19 00 00 1B 1A 00 00 1E 1A 00 00 1F 1A 00 00 00 1B 00 00 4B 1B 00 00'
+ '50 1B 00 00 7C 1B 00 00 80 1B 00 00 AA 1B 00 00 AE 1B 00 00 B9 1B 00 00 00 1C 00 00 37 1C 00 00'
+ '3B 1C 00 00 49 1C 00 00 4D 1C 00 00 7F 1C 00 00 00 1D 00 00 E6 1D 00 00 FE 1D 00 00 9D 1E 00 00'
+ '9F 1E 00 00 15 1F 00 00 18 1F 00 00 1D 1F 00 00 20 1F 00 00 45 1F 00 00 48 1F 00 00 4D 1F 00 00'
+ '50 1F 00 00 57 1F 00 00 59 1F 00 00 59 1F 00 00 5B 1F 00 00 5B 1F 00 00 5D 1F 00 00 5D 1F 00 00'
+ '5F 1F 00 00 7D 1F 00 00 80 1F 00 00 B4 1F 00 00 B6 1F 00 00 C4 1F 00 00 C6 1F 00 00 D3 1F 00 00'
+ 'D6 1F 00 00 DB 1F 00 00 DD 1F 00 00 EF 1F 00 00 F2 1F 00 00 F4 1F 00 00 F6 1F 00 00 FE 1F 00 00'
+ '00 20 00 00 63 20 00 00 6A 20 00 00 71 20 00 00 74 20 00 00 8E 20 00 00 90 20 00 00 94 20 00 00'
+ 'A0 20 00 00 B5 20 00 00 D0 20 00 00 EF 20 00 00 00 21 00 00 4E 21 00 00 53 21 00 00 84 21 00 00'
+ '90 21 00 00 E7 23 00 00 00 24 00 00 26 24 00 00 40 24 00 00 4A 24 00 00 60 24 00 00 9D 26 00 00'
+ 'A0 26 00 00 BC 26 00 00 01 27 00 00 04 27 00 00 06 27 00 00 09 27 00 00 0C 27 00 00 27 27 00 00'
+ '29 27 00 00 4B 27 00 00 4D 27 00 00 4D 27 00 00 4F 27 00 00 52 27 00 00 56 27 00 00 56 27 00 00'
+ '58 27 00 00 5E 27 00 00 61 27 00 00 94 27 00 00 98 27 00 00 AF 27 00 00 B1 27 00 00 BE 27 00 00'
+ 'C0 27 00 00 CA 27 00 00 D0 27 00 00 ED 27 00 00 F0 27 00 00 1A 2B 00 00 20 2B 00 00 23 2B 00 00'
+ '30 2B 00 00 44 2B 00 00 47 2B 00 00 4C 2B 00 00 00 2C 00 00 2E 2C 00 00 30 2C 00 00 5E 2C 00 00'
+ '60 2C 00 00 6F 2C 00 00 71 2C 00 00 7D 2C 00 00 80 2C 00 00 EA 2C 00 00 F9 2C 00 00 25 2D 00 00'
+ '30 2D 00 00 65 2D 00 00 6F 2D 00 00 6F 2D 00 00 80 2D 00 00 96 2D 00 00 A0 2D 00 00 A6 2D 00 00'
+ 'A8 2D 00 00 AE 2D 00 00 B0 2D 00 00 B6 2D 00 00 B8 2D 00 00 BE 2D 00 00 C0 2D 00 00 C6 2D 00 00'
+ 'C8 2D 00 00 CE 2D 00 00 D0 2D 00 00 D6 2D 00 00 D8 2D 00 00 DE 2D 00 00 00 2E 00 00 18 2E 00 00'
+ '1C 2E 00 00 1D 2E 00 00 80 2E 00 00 99 2E 00 00 9B 2E 00 00 F3 2E 00 00 00 2F 00 00 D5 2F 00 00'
+ 'F0 2F 00 00 FB 2F 00 00 00 30 00 00 3F 30 00 00 41 30 00 00 96 30 00 00 99 30 00 00 FF 30 00 00'
+ '05 31 00 00 2C 31 00 00 31 31 00 00 8E 31 00 00 90 31 00 00 B7 31 00 00 C0 31 00 00 E3 31 00 00'
+ 'F0 31 00 00 1E 32 00 00 20 32 00 00 43 32 00 00 50 32 00 00 FE 32 00 00 00 33 00 00 FF 33 00 00'
+ '00 34 00 00 B5 4D 00 00 C0 4D 00 00 FF 4D 00 00 00 4E 00 00 BB 9F 00 00 00 A0 00 00 8C A4 00 00'
+ '90 A4 00 00 C6 A4 00 00 00 A5 00 00 2B A6 00 00 00 A7 00 00 88 A7 00 00 00 A8 00 00 2B A8 00 00'
+ '40 A8 00 00 77 A8 00 00 80 A8 00 00 C4 A8 00 00 CE A8 00 00 D9 A8 00 00 00 A9 00 00 53 A9 00 00'
+ '5F A9 00 00 5F A9 00 00 00 AC 00 00 A3 D7 00 00 00 D8 00 00 7F DB 00 00 80 DB 00 00 FF DB 00 00'
+ '00 DC 00 00 FF DF 00 00 00 E0 00 00 2D FA 00 00 30 FA 00 00 6A FA 00 00 70 FA 00 00 D9 FA 00 00'
+ '00 FB 00 00 06 FB 00 00 13 FB 00 00 17 FB 00 00 1D FB 00 00 36 FB 00 00 38 FB 00 00 3C FB 00 00'
+ '3E FB 00 00 3E FB 00 00 40 FB 00 00 41 FB 00 00 43 FB 00 00 44 FB 00 00 46 FB 00 00 B1 FB 00 00'
+ 'D3 FB 00 00 3F FD 00 00 50 FD 00 00 8F FD 00 00 92 FD 00 00 C7 FD 00 00 F0 FD 00 00 FD FD 00 00'
+ '00 FE 00 00 19 FE 00 00 20 FE 00 00 23 FE 00 00 30 FE 00 00 52 FE 00 00 54 FE 00 00 66 FE 00 00'
+ '68 FE 00 00 6B FE 00 00 70 FE 00 00 74 FE 00 00 76 FE 00 00 FC FE 00 00 FF FE 00 00 FF FE 00 00'
+ '01 FF 00 00 BE FF 00 00 C2 FF 00 00 C7 FF 00 00 CA FF 00 00 CF FF 00 00 D2 FF 00 00 D7 FF 00 00'
+ 'DA FF 00 00 DC FF 00 00 E0 FF 00 00 E6 FF 00 00 E8 FF 00 00 EE FF 00 00 F9 FF 00 00 FD FF 00 00'
+ '00 00 01 00 0B 00 01 00 0D 00 01 00 26 00 01 00 28 00 01 00 3A 00 01 00 3C 00 01 00 3D 00 01 00'
+ '3F 00 01 00 4D 00 01 00 50 00 01 00 5D 00 01 00 80 00 01 00 FA 00 01 00 00 01 01 00 02 01 01 00'
+ '07 01 01 00 33 01 01 00 37 01 01 00 8A 01 01 00 D0 01 01 00 FD 01 01 00 80 02 01 00 9C 02 01 00'
+ 'A0 02 01 00 D0 02 01 00 00 03 01 00 1E 03 01 00 20 03 01 00 23 03 01 00 30 03 01 00 4A 03 01 00'
+ '80 03 01 00 9D 03 01 00 9F 03 01 00 C3 03 01 00 C8 03 01 00 D5 03 01 00 00 04 01 00 9D 04 01 00'
+ 'A0 04 01 00 A9 04 01 00 00 08 01 00 05 08 01 00 08 08 01 00 08 08 01 00 0A 08 01 00 35 08 01 00'
+ '37 08 01 00 38 08 01 00 3C 08 01 00 3C 08 01 00 3F 08 01 00 3F 08 01 00 00 09 01 00 19 09 01 00'
+ '1F 09 01 00 39 09 01 00 3F 09 01 00 3F 09 01 00 00 0A 01 00 03 0A 01 00 05 0A 01 00 06 0A 01 00'
+ '0C 0A 01 00 13 0A 01 00 15 0A 01 00 17 0A 01 00 19 0A 01 00 33 0A 01 00 38 0A 01 00 3A 0A 01 00'
+ '3F 0A 01 00 47 0A 01 00 50 0A 01 00 58 0A 01 00 00 20 01 00 6E 23 01 00 00 24 01 00 62 24 01 00'
+ '70 24 01 00 73 24 01 00 00 D0 01 00 F5 D0 01 00 00 D1 01 00 26 D1 01 00 29 D1 01 00 DD D1 01 00'
+ '00 D2 01 00 45 D2 01 00 00 D3 01 00 56 D3 01 00 60 D3 01 00 71 D3 01 00 00 D4 01 00 54 D4 01 00'
+ '56 D4 01 00 9C D4 01 00 9E D4 01 00 9F D4 01 00 A2 D4 01 00 A2 D4 01 00 A5 D4 01 00 A6 D4 01 00'
+ 'A9 D4 01 00 AC D4 01 00 AE D4 01 00 B9 D4 01 00 BB D4 01 00 BB D4 01 00 BD D4 01 00 C3 D4 01 00'
+ 'C5 D4 01 00 05 D5 01 00 07 D5 01 00 0A D5 01 00 0D D5 01 00 14 D5 01 00 16 D5 01 00 1C D5 01 00'
+ '1E D5 01 00 39 D5 01 00 3B D5 01 00 3E D5 01 00 40 D5 01 00 44 D5 01 00 46 D5 01 00 46 D5 01 00'
+ '4A D5 01 00 50 D5 01 00 52 D5 01 00 A5 D6 01 00 A8 D6 01 00 CB D7 01 00 CE D7 01 00 FF D7 01 00'
+ '00 00 02 00 D6 A6 02 00 00 F8 02 00 1D FA 02 00 01 00 0E 00 01 00 0E 00 20 00 0E 00 7F 00 0E 00'
+ '00 01 0E 00 EF 01 0E 00 00 00 0F 00 FD FF 0F 00 00 00 10 00 FD FF 10 00'
}
@@ -2763,7 +2764,7 @@
DECOMPOSITION UNICODEDATA LOADONCALL MOVEABLE DISCARDABLE
{
- 'F5 03 00 00 C0 00 00 00 02 00 00 00 41 00 00 00 00 03 00 00 C1 00 00 00 02 00 00 00 41 00 00 00'
+ 'FB 07 00 00 C0 00 00 00 02 00 00 00 41 00 00 00 00 03 00 00 C1 00 00 00 02 00 00 00 41 00 00 00'
'01 03 00 00 C2 00 00 00 02 00 00 00 41 00 00 00 02 03 00 00 C3 00 00 00 02 00 00 00 41 00 00 00'
'03 03 00 00 C4 00 00 00 02 00 00 00 41 00 00 00 08 03 00 00 C5 00 00 00 02 00 00 00 41 00 00 00'
'0A 03 00 00 C7 00 00 00 02 00 00 00 43 00 00 00 27 03 00 00 C8 00 00 00 02 00 00 00 45 00 00 00'
@@ -2891,422 +2892,811 @@
'2D 02 00 00 03 00 00 00 6F 00 00 00 03 03 00 00 04 03 00 00 2E 02 00 00 02 00 00 00 4F 00 00 00'
'07 03 00 00 2F 02 00 00 02 00 00 00 6F 00 00 00 07 03 00 00 30 02 00 00 03 00 00 00 4F 00 00 00'
'07 03 00 00 04 03 00 00 31 02 00 00 03 00 00 00 6F 00 00 00 07 03 00 00 04 03 00 00 32 02 00 00'
- '02 00 00 00 59 00 00 00 04 03 00 00 33 02 00 00 02 00 00 00 79 00 00 00 04 03 00 00 44 03 00 00'
- '02 00 00 00 08 03 00 00 01 03 00 00 85 03 00 00 02 00 00 00 A8 00 00 00 01 03 00 00 86 03 00 00'
- '02 00 00 00 91 03 00 00 01 03 00 00 88 03 00 00 02 00 00 00 95 03 00 00 01 03 00 00 89 03 00 00'
- '02 00 00 00 97 03 00 00 01 03 00 00 8A 03 00 00 02 00 00 00 99 03 00 00 01 03 00 00 8C 03 00 00'
- '02 00 00 00 9F 03 00 00 01 03 00 00 8E 03 00 00 02 00 00 00 A5 03 00 00 01 03 00 00 8F 03 00 00'
- '02 00 00 00 A9 03 00 00 01 03 00 00 90 03 00 00 03 00 00 00 B9 03 00 00 08 03 00 00 01 03 00 00'
- 'AA 03 00 00 02 00 00 00 99 03 00 00 08 03 00 00 AB 03 00 00 02 00 00 00 A5 03 00 00 08 03 00 00'
- 'AC 03 00 00 02 00 00 00 B1 03 00 00 01 03 00 00 AD 03 00 00 02 00 00 00 B5 03 00 00 01 03 00 00'
- 'AE 03 00 00 02 00 00 00 B7 03 00 00 01 03 00 00 AF 03 00 00 02 00 00 00 B9 03 00 00 01 03 00 00'
- 'B0 03 00 00 03 00 00 00 C5 03 00 00 08 03 00 00 01 03 00 00 CA 03 00 00 02 00 00 00 B9 03 00 00'
- '08 03 00 00 CB 03 00 00 02 00 00 00 C5 03 00 00 08 03 00 00 CC 03 00 00 02 00 00 00 BF 03 00 00'
- '01 03 00 00 CD 03 00 00 02 00 00 00 C5 03 00 00 01 03 00 00 CE 03 00 00 02 00 00 00 C9 03 00 00'
- '01 03 00 00 D3 03 00 00 02 00 00 00 D2 03 00 00 01 03 00 00 D4 03 00 00 02 00 00 00 D2 03 00 00'
- '08 03 00 00 00 04 00 00 02 00 00 00 15 04 00 00 00 03 00 00 01 04 00 00 02 00 00 00 15 04 00 00'
- '08 03 00 00 03 04 00 00 02 00 00 00 13 04 00 00 01 03 00 00 07 04 00 00 02 00 00 00 06 04 00 00'
- '08 03 00 00 0C 04 00 00 02 00 00 00 1A 04 00 00 01 03 00 00 0D 04 00 00 02 00 00 00 18 04 00 00'
- '00 03 00 00 0E 04 00 00 02 00 00 00 23 04 00 00 06 03 00 00 19 04 00 00 02 00 00 00 18 04 00 00'
- '06 03 00 00 39 04 00 00 02 00 00 00 38 04 00 00 06 03 00 00 50 04 00 00 02 00 00 00 35 04 00 00'
- '00 03 00 00 51 04 00 00 02 00 00 00 35 04 00 00 08 03 00 00 53 04 00 00 02 00 00 00 33 04 00 00'
- '01 03 00 00 57 04 00 00 02 00 00 00 56 04 00 00 08 03 00 00 5C 04 00 00 02 00 00 00 3A 04 00 00'
- '01 03 00 00 5D 04 00 00 02 00 00 00 38 04 00 00 00 03 00 00 5E 04 00 00 02 00 00 00 43 04 00 00'
- '06 03 00 00 76 04 00 00 02 00 00 00 74 04 00 00 0F 03 00 00 77 04 00 00 02 00 00 00 75 04 00 00'
- '0F 03 00 00 C1 04 00 00 02 00 00 00 16 04 00 00 06 03 00 00 C2 04 00 00 02 00 00 00 36 04 00 00'
- '06 03 00 00 D0 04 00 00 02 00 00 00 10 04 00 00 06 03 00 00 D1 04 00 00 02 00 00 00 30 04 00 00'
- '06 03 00 00 D2 04 00 00 02 00 00 00 10 04 00 00 08 03 00 00 D3 04 00 00 02 00 00 00 30 04 00 00'
- '08 03 00 00 D6 04 00 00 02 00 00 00 15 04 00 00 06 03 00 00 D7 04 00 00 02 00 00 00 35 04 00 00'
- '06 03 00 00 DA 04 00 00 02 00 00 00 D8 04 00 00 08 03 00 00 DB 04 00 00 02 00 00 00 D9 04 00 00'
- '08 03 00 00 DC 04 00 00 02 00 00 00 16 04 00 00 08 03 00 00 DD 04 00 00 02 00 00 00 36 04 00 00'
- '08 03 00 00 DE 04 00 00 02 00 00 00 17 04 00 00 08 03 00 00 DF 04 00 00 02 00 00 00 37 04 00 00'
- '08 03 00 00 E2 04 00 00 02 00 00 00 18 04 00 00 04 03 00 00 E3 04 00 00 02 00 00 00 38 04 00 00'
- '04 03 00 00 E4 04 00 00 02 00 00 00 18 04 00 00 08 03 00 00 E5 04 00 00 02 00 00 00 38 04 00 00'
- '08 03 00 00 E6 04 00 00 02 00 00 00 1E 04 00 00 08 03 00 00 E7 04 00 00 02 00 00 00 3E 04 00 00'
- '08 03 00 00 EA 04 00 00 02 00 00 00 E8 04 00 00 08 03 00 00 EB 04 00 00 02 00 00 00 E9 04 00 00'
- '08 03 00 00 EC 04 00 00 02 00 00 00 2D 04 00 00 08 03 00 00 ED 04 00 00 02 00 00 00 4D 04 00 00'
- '08 03 00 00 EE 04 00 00 02 00 00 00 23 04 00 00 04 03 00 00 EF 04 00 00 02 00 00 00 43 04 00 00'
- '04 03 00 00 F0 04 00 00 02 00 00 00 23 04 00 00 08 03 00 00 F1 04 00 00 02 00 00 00 43 04 00 00'
- '08 03 00 00 F2 04 00 00 02 00 00 00 23 04 00 00 0B 03 00 00 F3 04 00 00 02 00 00 00 43 04 00 00'
- '0B 03 00 00 F4 04 00 00 02 00 00 00 27 04 00 00 08 03 00 00 F5 04 00 00 02 00 00 00 47 04 00 00'
- '08 03 00 00 F8 04 00 00 02 00 00 00 2B 04 00 00 08 03 00 00 F9 04 00 00 02 00 00 00 4B 04 00 00'
- '08 03 00 00 22 06 00 00 02 00 00 00 27 06 00 00 53 06 00 00 23 06 00 00 02 00 00 00 27 06 00 00'
- '54 06 00 00 24 06 00 00 02 00 00 00 48 06 00 00 54 06 00 00 25 06 00 00 02 00 00 00 27 06 00 00'
- '55 06 00 00 26 06 00 00 02 00 00 00 4A 06 00 00 54 06 00 00 C0 06 00 00 02 00 00 00 D5 06 00 00'
- '54 06 00 00 C2 06 00 00 02 00 00 00 C1 06 00 00 54 06 00 00 D3 06 00 00 02 00 00 00 D2 06 00 00'
- '54 06 00 00 29 09 00 00 02 00 00 00 28 09 00 00 3C 09 00 00 31 09 00 00 02 00 00 00 30 09 00 00'
- '3C 09 00 00 34 09 00 00 02 00 00 00 33 09 00 00 3C 09 00 00 58 09 00 00 02 00 00 00 15 09 00 00'
- '3C 09 00 00 59 09 00 00 02 00 00 00 16 09 00 00 3C 09 00 00 5A 09 00 00 02 00 00 00 17 09 00 00'
- '3C 09 00 00 5B 09 00 00 02 00 00 00 1C 09 00 00 3C 09 00 00 5C 09 00 00 02 00 00 00 21 09 00 00'
- '3C 09 00 00 5D 09 00 00 02 00 00 00 22 09 00 00 3C 09 00 00 5E 09 00 00 02 00 00 00 2B 09 00 00'
- '3C 09 00 00 5F 09 00 00 02 00 00 00 2F 09 00 00 3C 09 00 00 CB 09 00 00 02 00 00 00 C7 09 00 00'
- 'BE 09 00 00 CC 09 00 00 02 00 00 00 C7 09 00 00 D7 09 00 00 DC 09 00 00 02 00 00 00 A1 09 00 00'
- 'BC 09 00 00 DD 09 00 00 02 00 00 00 A2 09 00 00 BC 09 00 00 DF 09 00 00 02 00 00 00 AF 09 00 00'
- 'BC 09 00 00 33 0A 00 00 02 00 00 00 32 0A 00 00 3C 0A 00 00 36 0A 00 00 02 00 00 00 38 0A 00 00'
- '3C 0A 00 00 59 0A 00 00 02 00 00 00 16 0A 00 00 3C 0A 00 00 5A 0A 00 00 02 00 00 00 17 0A 00 00'
- '3C 0A 00 00 5B 0A 00 00 02 00 00 00 1C 0A 00 00 3C 0A 00 00 5E 0A 00 00 02 00 00 00 2B 0A 00 00'
- '3C 0A 00 00 48 0B 00 00 02 00 00 00 47 0B 00 00 56 0B 00 00 4B 0B 00 00 02 00 00 00 47 0B 00 00'
- '3E 0B 00 00 4C 0B 00 00 02 00 00 00 47 0B 00 00 57 0B 00 00 5C 0B 00 00 02 00 00 00 21 0B 00 00'
- '3C 0B 00 00 5D 0B 00 00 02 00 00 00 22 0B 00 00 3C 0B 00 00 94 0B 00 00 02 00 00 00 92 0B 00 00'
- 'D7 0B 00 00 CA 0B 00 00 02 00 00 00 C6 0B 00 00 BE 0B 00 00 CB 0B 00 00 02 00 00 00 C7 0B 00 00'
- 'BE 0B 00 00 CC 0B 00 00 02 00 00 00 C6 0B 00 00 D7 0B 00 00 48 0C 00 00 02 00 00 00 46 0C 00 00'
- '56 0C 00 00 C0 0C 00 00 02 00 00 00 BF 0C 00 00 D5 0C 00 00 C7 0C 00 00 02 00 00 00 C6 0C 00 00'
- 'D5 0C 00 00 C8 0C 00 00 02 00 00 00 C6 0C 00 00 D6 0C 00 00 CA 0C 00 00 02 00 00 00 C6 0C 00 00'
- 'C2 0C 00 00 CB 0C 00 00 03 00 00 00 C6 0C 00 00 C2 0C 00 00 D5 0C 00 00 4A 0D 00 00 02 00 00 00'
- '46 0D 00 00 3E 0D 00 00 4B 0D 00 00 02 00 00 00 47 0D 00 00 3E 0D 00 00 4C 0D 00 00 02 00 00 00'
- '46 0D 00 00 57 0D 00 00 DA 0D 00 00 02 00 00 00 D9 0D 00 00 CA 0D 00 00 DC 0D 00 00 02 00 00 00'
- 'D9 0D 00 00 CF 0D 00 00 DD 0D 00 00 03 00 00 00 D9 0D 00 00 CF 0D 00 00 CA 0D 00 00 DE 0D 00 00'
- '02 00 00 00 D9 0D 00 00 DF 0D 00 00 43 0F 00 00 02 00 00 00 42 0F 00 00 B7 0F 00 00 4D 0F 00 00'
- '02 00 00 00 4C 0F 00 00 B7 0F 00 00 52 0F 00 00 02 00 00 00 51 0F 00 00 B7 0F 00 00 57 0F 00 00'
- '02 00 00 00 56 0F 00 00 B7 0F 00 00 5C 0F 00 00 02 00 00 00 5B 0F 00 00 B7 0F 00 00 69 0F 00 00'
- '02 00 00 00 40 0F 00 00 B5 0F 00 00 73 0F 00 00 02 00 00 00 71 0F 00 00 72 0F 00 00 75 0F 00 00'
- '02 00 00 00 71 0F 00 00 74 0F 00 00 76 0F 00 00 02 00 00 00 B2 0F 00 00 80 0F 00 00 78 0F 00 00'
- '02 00 00 00 B3 0F 00 00 80 0F 00 00 81 0F 00 00 02 00 00 00 71 0F 00 00 80 0F 00 00 93 0F 00 00'
- '02 00 00 00 92 0F 00 00 B7 0F 00 00 9D 0F 00 00 02 00 00 00 9C 0F 00 00 B7 0F 00 00 A2 0F 00 00'
- '02 00 00 00 A1 0F 00 00 B7 0F 00 00 A7 0F 00 00 02 00 00 00 A6 0F 00 00 B7 0F 00 00 AC 0F 00 00'
- '02 00 00 00 AB 0F 00 00 B7 0F 00 00 B9 0F 00 00 02 00 00 00 90 0F 00 00 B5 0F 00 00 26 10 00 00'
- '02 00 00 00 25 10 00 00 2E 10 00 00 06 1B 00 00 02 00 00 00 05 1B 00 00 35 1B 00 00 08 1B 00 00'
- '02 00 00 00 07 1B 00 00 35 1B 00 00 0A 1B 00 00 02 00 00 00 09 1B 00 00 35 1B 00 00 0C 1B 00 00'
- '02 00 00 00 0B 1B 00 00 35 1B 00 00 0E 1B 00 00 02 00 00 00 0D 1B 00 00 35 1B 00 00 12 1B 00 00'
- '02 00 00 00 11 1B 00 00 35 1B 00 00 3B 1B 00 00 02 00 00 00 3A 1B 00 00 35 1B 00 00 3D 1B 00 00'
- '02 00 00 00 3C 1B 00 00 35 1B 00 00 40 1B 00 00 02 00 00 00 3E 1B 00 00 35 1B 00 00 41 1B 00 00'
- '02 00 00 00 3F 1B 00 00 35 1B 00 00 43 1B 00 00 02 00 00 00 42 1B 00 00 35 1B 00 00 00 1E 00 00'
- '02 00 00 00 41 00 00 00 25 03 00 00 01 1E 00 00 02 00 00 00 61 00 00 00 25 03 00 00 02 1E 00 00'
- '02 00 00 00 42 00 00 00 07 03 00 00 03 1E 00 00 02 00 00 00 62 00 00 00 07 03 00 00 04 1E 00 00'
- '02 00 00 00 42 00 00 00 23 03 00 00 05 1E 00 00 02 00 00 00 62 00 00 00 23 03 00 00 06 1E 00 00'
- '02 00 00 00 42 00 00 00 31 03 00 00 07 1E 00 00 02 00 00 00 62 00 00 00 31 03 00 00 08 1E 00 00'
- '03 00 00 00 43 00 00 00 27 03 00 00 01 03 00 00 09 1E 00 00 03 00 00 00 63 00 00 00 27 03 00 00'
- '01 03 00 00 0A 1E 00 00 02 00 00 00 44 00 00 00 07 03 00 00 0B 1E 00 00 02 00 00 00 64 00 00 00'
- '07 03 00 00 0C 1E 00 00 02 00 00 00 44 00 00 00 23 03 00 00 0D 1E 00 00 02 00 00 00 64 00 00 00'
- '23 03 00 00 0E 1E 00 00 02 00 00 00 44 00 00 00 31 03 00 00 0F 1E 00 00 02 00 00 00 64 00 00 00'
- '31 03 00 00 10 1E 00 00 02 00 00 00 44 00 00 00 27 03 00 00 11 1E 00 00 02 00 00 00 64 00 00 00'
- '27 03 00 00 12 1E 00 00 02 00 00 00 44 00 00 00 2D 03 00 00 13 1E 00 00 02 00 00 00 64 00 00 00'
- '2D 03 00 00 14 1E 00 00 03 00 00 00 45 00 00 00 04 03 00 00 00 03 00 00 15 1E 00 00 03 00 00 00'
- '65 00 00 00 04 03 00 00 00 03 00 00 16 1E 00 00 03 00 00 00 45 00 00 00 04 03 00 00 01 03 00 00'
- '17 1E 00 00 03 00 00 00 65 00 00 00 04 03 00 00 01 03 00 00 18 1E 00 00 02 00 00 00 45 00 00 00'
- '2D 03 00 00 19 1E 00 00 02 00 00 00 65 00 00 00 2D 03 00 00 1A 1E 00 00 02 00 00 00 45 00 00 00'
- '30 03 00 00 1B 1E 00 00 02 00 00 00 65 00 00 00 30 03 00 00 1C 1E 00 00 03 00 00 00 45 00 00 00'
- '27 03 00 00 06 03 00 00 1D 1E 00 00 03 00 00 00 65 00 00 00 27 03 00 00 06 03 00 00 1E 1E 00 00'
- '02 00 00 00 46 00 00 00 07 03 00 00 1F 1E 00 00 02 00 00 00 66 00 00 00 07 03 00 00 20 1E 00 00'
- '02 00 00 00 47 00 00 00 04 03 00 00 21 1E 00 00 02 00 00 00 67 00 00 00 04 03 00 00 22 1E 00 00'
- '02 00 00 00 48 00 00 00 07 03 00 00 23 1E 00 00 02 00 00 00 68 00 00 00 07 03 00 00 24 1E 00 00'
- '02 00 00 00 48 00 00 00 23 03 00 00 25 1E 00 00 02 00 00 00 68 00 00 00 23 03 00 00 26 1E 00 00'
- '02 00 00 00 48 00 00 00 08 03 00 00 27 1E 00 00 02 00 00 00 68 00 00 00 08 03 00 00 28 1E 00 00'
- '02 00 00 00 48 00 00 00 27 03 00 00 29 1E 00 00 02 00 00 00 68 00 00 00 27 03 00 00 2A 1E 00 00'
- '02 00 00 00 48 00 00 00 2E 03 00 00 2B 1E 00 00 02 00 00 00 68 00 00 00 2E 03 00 00 2C 1E 00 00'
- '02 00 00 00 49 00 00 00 30 03 00 00 2D 1E 00 00 02 00 00 00 69 00 00 00 30 03 00 00 2E 1E 00 00'
- '03 00 00 00 49 00 00 00 08 03 00 00 01 03 00 00 2F 1E 00 00 03 00 00 00 69 00 00 00 08 03 00 00'
- '01 03 00 00 30 1E 00 00 02 00 00 00 4B 00 00 00 01 03 00 00 31 1E 00 00 02 00 00 00 6B 00 00 00'
- '01 03 00 00 32 1E 00 00 02 00 00 00 4B 00 00 00 23 03 00 00 33 1E 00 00 02 00 00 00 6B 00 00 00'
- '23 03 00 00 34 1E 00 00 02 00 00 00 4B 00 00 00 31 03 00 00 35 1E 00 00 02 00 00 00 6B 00 00 00'
- '31 03 00 00 36 1E 00 00 02 00 00 00 4C 00 00 00 23 03 00 00 37 1E 00 00 02 00 00 00 6C 00 00 00'
- '23 03 00 00 38 1E 00 00 03 00 00 00 4C 00 00 00 23 03 00 00 04 03 00 00 39 1E 00 00 03 00 00 00'
- '6C 00 00 00 23 03 00 00 04 03 00 00 3A 1E 00 00 02 00 00 00 4C 00 00 00 31 03 00 00 3B 1E 00 00'
- '02 00 00 00 6C 00 00 00 31 03 00 00 3C 1E 00 00 02 00 00 00 4C 00 00 00 2D 03 00 00 3D 1E 00 00'
- '02 00 00 00 6C 00 00 00 2D 03 00 00 3E 1E 00 00 02 00 00 00 4D 00 00 00 01 03 00 00 3F 1E 00 00'
- '02 00 00 00 6D 00 00 00 01 03 00 00 40 1E 00 00 02 00 00 00 4D 00 00 00 07 03 00 00 41 1E 00 00'
- '02 00 00 00 6D 00 00 00 07 03 00 00 42 1E 00 00 02 00 00 00 4D 00 00 00 23 03 00 00 43 1E 00 00'
- '02 00 00 00 6D 00 00 00 23 03 00 00 44 1E 00 00 02 00 00 00 4E 00 00 00 07 03 00 00 45 1E 00 00'
- '02 00 00 00 6E 00 00 00 07 03 00 00 46 1E 00 00 02 00 00 00 4E 00 00 00 23 03 00 00 47 1E 00 00'
- '02 00 00 00 6E 00 00 00 23 03 00 00 48 1E 00 00 02 00 00 00 4E 00 00 00 31 03 00 00 49 1E 00 00'
- '02 00 00 00 6E 00 00 00 31 03 00 00 4A 1E 00 00 02 00 00 00 4E 00 00 00 2D 03 00 00 4B 1E 00 00'
- '02 00 00 00 6E 00 00 00 2D 03 00 00 4C 1E 00 00 03 00 00 00 4F 00 00 00 03 03 00 00 01 03 00 00'
- '4D 1E 00 00 03 00 00 00 6F 00 00 00 03 03 00 00 01 03 00 00 4E 1E 00 00 03 00 00 00 4F 00 00 00'
- '03 03 00 00 08 03 00 00 4F 1E 00 00 03 00 00 00 6F 00 00 00 03 03 00 00 08 03 00 00 50 1E 00 00'
- '03 00 00 00 4F 00 00 00 04 03 00 00 00 03 00 00 51 1E 00 00 03 00 00 00 6F 00 00 00 04 03 00 00'
- '00 03 00 00 52 1E 00 00 03 00 00 00 4F 00 00 00 04 03 00 00 01 03 00 00 53 1E 00 00 03 00 00 00'
- '6F 00 00 00 04 03 00 00 01 03 00 00 54 1E 00 00 02 00 00 00 50 00 00 00 01 03 00 00 55 1E 00 00'
- '02 00 00 00 70 00 00 00 01 03 00 00 56 1E 00 00 02 00 00 00 50 00 00 00 07 03 00 00 57 1E 00 00'
- '02 00 00 00 70 00 00 00 07 03 00 00 58 1E 00 00 02 00 00 00 52 00 00 00 07 03 00 00 59 1E 00 00'
- '02 00 00 00 72 00 00 00 07 03 00 00 5A 1E 00 00 02 00 00 00 52 00 00 00 23 03 00 00 5B 1E 00 00'
- '02 00 00 00 72 00 00 00 23 03 00 00 5C 1E 00 00 03 00 00 00 52 00 00 00 23 03 00 00 04 03 00 00'
- '5D 1E 00 00 03 00 00 00 72 00 00 00 23 03 00 00 04 03 00 00 5E 1E 00 00 02 00 00 00 52 00 00 00'
- '31 03 00 00 5F 1E 00 00 02 00 00 00 72 00 00 00 31 03 00 00 60 1E 00 00 02 00 00 00 53 00 00 00'
- '07 03 00 00 61 1E 00 00 02 00 00 00 73 00 00 00 07 03 00 00 62 1E 00 00 02 00 00 00 53 00 00 00'
- '23 03 00 00 63 1E 00 00 02 00 00 00 73 00 00 00 23 03 00 00 64 1E 00 00 03 00 00 00 53 00 00 00'
- '01 03 00 00 07 03 00 00 65 1E 00 00 03 00 00 00 73 00 00 00 01 03 00 00 07 03 00 00 66 1E 00 00'
- '03 00 00 00 53 00 00 00 0C 03 00 00 07 03 00 00 67 1E 00 00 03 00 00 00 73 00 00 00 0C 03 00 00'
- '07 03 00 00 68 1E 00 00 03 00 00 00 53 00 00 00 23 03 00 00 07 03 00 00 69 1E 00 00 03 00 00 00'
- '73 00 00 00 23 03 00 00 07 03 00 00 6A 1E 00 00 02 00 00 00 54 00 00 00 07 03 00 00 6B 1E 00 00'
- '02 00 00 00 74 00 00 00 07 03 00 00 6C 1E 00 00 02 00 00 00 54 00 00 00 23 03 00 00 6D 1E 00 00'
- '02 00 00 00 74 00 00 00 23 03 00 00 6E 1E 00 00 02 00 00 00 54 00 00 00 31 03 00 00 6F 1E 00 00'
- '02 00 00 00 74 00 00 00 31 03 00 00 70 1E 00 00 02 00 00 00 54 00 00 00 2D 03 00 00 71 1E 00 00'
- '02 00 00 00 74 00 00 00 2D 03 00 00 72 1E 00 00 02 00 00 00 55 00 00 00 24 03 00 00 73 1E 00 00'
- '02 00 00 00 75 00 00 00 24 03 00 00 74 1E 00 00 02 00 00 00 55 00 00 00 30 03 00 00 75 1E 00 00'
- '02 00 00 00 75 00 00 00 30 03 00 00 76 1E 00 00 02 00 00 00 55 00 00 00 2D 03 00 00 77 1E 00 00'
- '02 00 00 00 75 00 00 00 2D 03 00 00 78 1E 00 00 03 00 00 00 55 00 00 00 03 03 00 00 01 03 00 00'
- '79 1E 00 00 03 00 00 00 75 00 00 00 03 03 00 00 01 03 00 00 7A 1E 00 00 03 00 00 00 55 00 00 00'
- '04 03 00 00 08 03 00 00 7B 1E 00 00 03 00 00 00 75 00 00 00 04 03 00 00 08 03 00 00 7C 1E 00 00'
- '02 00 00 00 56 00 00 00 03 03 00 00 7D 1E 00 00 02 00 00 00 76 00 00 00 03 03 00 00 7E 1E 00 00'
- '02 00 00 00 56 00 00 00 23 03 00 00 7F 1E 00 00 02 00 00 00 76 00 00 00 23 03 00 00 80 1E 00 00'
- '02 00 00 00 57 00 00 00 00 03 00 00 81 1E 00 00 02 00 00 00 77 00 00 00 00 03 00 00 82 1E 00 00'
- '02 00 00 00 57 00 00 00 01 03 00 00 83 1E 00 00 02 00 00 00 77 00 00 00 01 03 00 00 84 1E 00 00'
- '02 00 00 00 57 00 00 00 08 03 00 00 85 1E 00 00 02 00 00 00 77 00 00 00 08 03 00 00 86 1E 00 00'
- '02 00 00 00 57 00 00 00 07 03 00 00 87 1E 00 00 02 00 00 00 77 00 00 00 07 03 00 00 88 1E 00 00'
- '02 00 00 00 57 00 00 00 23 03 00 00 89 1E 00 00 02 00 00 00 77 00 00 00 23 03 00 00 8A 1E 00 00'
- '02 00 00 00 58 00 00 00 07 03 00 00 8B 1E 00 00 02 00 00 00 78 00 00 00 07 03 00 00 8C 1E 00 00'
- '02 00 00 00 58 00 00 00 08 03 00 00 8D 1E 00 00 02 00 00 00 78 00 00 00 08 03 00 00 8E 1E 00 00'
- '02 00 00 00 59 00 00 00 07 03 00 00 8F 1E 00 00 02 00 00 00 79 00 00 00 07 03 00 00 90 1E 00 00'
- '02 00 00 00 5A 00 00 00 02 03 00 00 91 1E 00 00 02 00 00 00 7A 00 00 00 02 03 00 00 92 1E 00 00'
- '02 00 00 00 5A 00 00 00 23 03 00 00 93 1E 00 00 02 00 00 00 7A 00 00 00 23 03 00 00 94 1E 00 00'
- '02 00 00 00 5A 00 00 00 31 03 00 00 95 1E 00 00 02 00 00 00 7A 00 00 00 31 03 00 00 96 1E 00 00'
- '02 00 00 00 68 00 00 00 31 03 00 00 97 1E 00 00 02 00 00 00 74 00 00 00 08 03 00 00 98 1E 00 00'
- '02 00 00 00 77 00 00 00 0A 03 00 00 99 1E 00 00 02 00 00 00 79 00 00 00 0A 03 00 00 9B 1E 00 00'
- '02 00 00 00 7F 01 00 00 07 03 00 00 A0 1E 00 00 02 00 00 00 41 00 00 00 23 03 00 00 A1 1E 00 00'
- '02 00 00 00 61 00 00 00 23 03 00 00 A2 1E 00 00 02 00 00 00 41 00 00 00 09 03 00 00 A3 1E 00 00'
- '02 00 00 00 61 00 00 00 09 03 00 00 A4 1E 00 00 03 00 00 00 41 00 00 00 02 03 00 00 01 03 00 00'
- 'A5 1E 00 00 03 00 00 00 61 00 00 00 02 03 00 00 01 03 00 00 A6 1E 00 00 03 00 00 00 41 00 00 00'
- '02 03 00 00 00 03 00 00 A7 1E 00 00 03 00 00 00 61 00 00 00 02 03 00 00 00 03 00 00 A8 1E 00 00'
- '03 00 00 00 41 00 00 00 02 03 00 00 09 03 00 00 A9 1E 00 00 03 00 00 00 61 00 00 00 02 03 00 00'
- '09 03 00 00 AA 1E 00 00 03 00 00 00 41 00 00 00 02 03 00 00 03 03 00 00 AB 1E 00 00 03 00 00 00'
- '61 00 00 00 02 03 00 00 03 03 00 00 AC 1E 00 00 03 00 00 00 41 00 00 00 23 03 00 00 02 03 00 00'
- 'AD 1E 00 00 03 00 00 00 61 00 00 00 23 03 00 00 02 03 00 00 AE 1E 00 00 03 00 00 00 41 00 00 00'
- '06 03 00 00 01 03 00 00 AF 1E 00 00 03 00 00 00 61 00 00 00 06 03 00 00 01 03 00 00 B0 1E 00 00'
- '03 00 00 00 41 00 00 00 06 03 00 00 00 03 00 00 B1 1E 00 00 03 00 00 00 61 00 00 00 06 03 00 00'
- '00 03 00 00 B2 1E 00 00 03 00 00 00 41 00 00 00 06 03 00 00 09 03 00 00 B3 1E 00 00 03 00 00 00'
- '61 00 00 00 06 03 00 00 09 03 00 00 B4 1E 00 00 03 00 00 00 41 00 00 00 06 03 00 00 03 03 00 00'
- 'B5 1E 00 00 03 00 00 00 61 00 00 00 06 03 00 00 03 03 00 00 B6 1E 00 00 03 00 00 00 41 00 00 00'
- '23 03 00 00 06 03 00 00 B7 1E 00 00 03 00 00 00 61 00 00 00 23 03 00 00 06 03 00 00 B8 1E 00 00'
- '02 00 00 00 45 00 00 00 23 03 00 00 B9 1E 00 00 02 00 00 00 65 00 00 00 23 03 00 00 BA 1E 00 00'
- '02 00 00 00 45 00 00 00 09 03 00 00 BB 1E 00 00 02 00 00 00 65 00 00 00 09 03 00 00 BC 1E 00 00'
- '02 00 00 00 45 00 00 00 03 03 00 00 BD 1E 00 00 02 00 00 00 65 00 00 00 03 03 00 00 BE 1E 00 00'
- '03 00 00 00 45 00 00 00 02 03 00 00 01 03 00 00 BF 1E 00 00 03 00 00 00 65 00 00 00 02 03 00 00'
- '01 03 00 00 C0 1E 00 00 03 00 00 00 45 00 00 00 02 03 00 00 00 03 00 00 C1 1E 00 00 03 00 00 00'
- '65 00 00 00 02 03 00 00 00 03 00 00 C2 1E 00 00 03 00 00 00 45 00 00 00 02 03 00 00 09 03 00 00'
- 'C3 1E 00 00 03 00 00 00 65 00 00 00 02 03 00 00 09 03 00 00 C4 1E 00 00 03 00 00 00 45 00 00 00'
- '02 03 00 00 03 03 00 00 C5 1E 00 00 03 00 00 00 65 00 00 00 02 03 00 00 03 03 00 00 C6 1E 00 00'
- '03 00 00 00 45 00 00 00 23 03 00 00 02 03 00 00 C7 1E 00 00 03 00 00 00 65 00 00 00 23 03 00 00'
- '02 03 00 00 C8 1E 00 00 02 00 00 00 49 00 00 00 09 03 00 00 C9 1E 00 00 02 00 00 00 69 00 00 00'
- '09 03 00 00 CA 1E 00 00 02 00 00 00 49 00 00 00 23 03 00 00 CB 1E 00 00 02 00 00 00 69 00 00 00'
- '23 03 00 00 CC 1E 00 00 02 00 00 00 4F 00 00 00 23 03 00 00 CD 1E 00 00 02 00 00 00 6F 00 00 00'
- '23 03 00 00 CE 1E 00 00 02 00 00 00 4F 00 00 00 09 03 00 00 CF 1E 00 00 02 00 00 00 6F 00 00 00'
- '09 03 00 00 D0 1E 00 00 03 00 00 00 4F 00 00 00 02 03 00 00 01 03 00 00 D1 1E 00 00 03 00 00 00'
- '6F 00 00 00 02 03 00 00 01 03 00 00 D2 1E 00 00 03 00 00 00 4F 00 00 00 02 03 00 00 00 03 00 00'
- 'D3 1E 00 00 03 00 00 00 6F 00 00 00 02 03 00 00 00 03 00 00 D4 1E 00 00 03 00 00 00 4F 00 00 00'
- '02 03 00 00 09 03 00 00 D5 1E 00 00 03 00 00 00 6F 00 00 00 02 03 00 00 09 03 00 00 D6 1E 00 00'
- '03 00 00 00 4F 00 00 00 02 03 00 00 03 03 00 00 D7 1E 00 00 03 00 00 00 6F 00 00 00 02 03 00 00'
- '03 03 00 00 D8 1E 00 00 03 00 00 00 4F 00 00 00 23 03 00 00 02 03 00 00 D9 1E 00 00 03 00 00 00'
- '6F 00 00 00 23 03 00 00 02 03 00 00 DA 1E 00 00 03 00 00 00 4F 00 00 00 1B 03 00 00 01 03 00 00'
- 'DB 1E 00 00 03 00 00 00 6F 00 00 00 1B 03 00 00 01 03 00 00 DC 1E 00 00 03 00 00 00 4F 00 00 00'
- '1B 03 00 00 00 03 00 00 DD 1E 00 00 03 00 00 00 6F 00 00 00 1B 03 00 00 00 03 00 00 DE 1E 00 00'
- '03 00 00 00 4F 00 00 00 1B 03 00 00 09 03 00 00 DF 1E 00 00 03 00 00 00 6F 00 00 00 1B 03 00 00'
- '09 03 00 00 E0 1E 00 00 03 00 00 00 4F 00 00 00 1B 03 00 00 03 03 00 00 E1 1E 00 00 03 00 00 00'
- '6F 00 00 00 1B 03 00 00 03 03 00 00 E2 1E 00 00 03 00 00 00 4F 00 00 00 1B 03 00 00 23 03 00 00'
- 'E3 1E 00 00 03 00 00 00 6F 00 00 00 1B 03 00 00 23 03 00 00 E4 1E 00 00 02 00 00 00 55 00 00 00'
- '23 03 00 00 E5 1E 00 00 02 00 00 00 75 00 00 00 23 03 00 00 E6 1E 00 00 02 00 00 00 55 00 00 00'
- '09 03 00 00 E7 1E 00 00 02 00 00 00 75 00 00 00 09 03 00 00 E8 1E 00 00 03 00 00 00 55 00 00 00'
- '1B 03 00 00 01 03 00 00 E9 1E 00 00 03 00 00 00 75 00 00 00 1B 03 00 00 01 03 00 00 EA 1E 00 00'
- '03 00 00 00 55 00 00 00 1B 03 00 00 00 03 00 00 EB 1E 00 00 03 00 00 00 75 00 00 00 1B 03 00 00'
- '00 03 00 00 EC 1E 00 00 03 00 00 00 55 00 00 00 1B 03 00 00 09 03 00 00 ED 1E 00 00 03 00 00 00'
- '75 00 00 00 1B 03 00 00 09 03 00 00 EE 1E 00 00 03 00 00 00 55 00 00 00 1B 03 00 00 03 03 00 00'
- 'EF 1E 00 00 03 00 00 00 75 00 00 00 1B 03 00 00 03 03 00 00 F0 1E 00 00 03 00 00 00 55 00 00 00'
- '1B 03 00 00 23 03 00 00 F1 1E 00 00 03 00 00 00 75 00 00 00 1B 03 00 00 23 03 00 00 F2 1E 00 00'
- '02 00 00 00 59 00 00 00 00 03 00 00 F3 1E 00 00 02 00 00 00 79 00 00 00 00 03 00 00 F4 1E 00 00'
- '02 00 00 00 59 00 00 00 23 03 00 00 F5 1E 00 00 02 00 00 00 79 00 00 00 23 03 00 00 F6 1E 00 00'
- '02 00 00 00 59 00 00 00 09 03 00 00 F7 1E 00 00 02 00 00 00 79 00 00 00 09 03 00 00 F8 1E 00 00'
- '02 00 00 00 59 00 00 00 03 03 00 00 F9 1E 00 00 02 00 00 00 79 00 00 00 03 03 00 00 00 1F 00 00'
- '02 00 00 00 B1 03 00 00 13 03 00 00 01 1F 00 00 02 00 00 00 B1 03 00 00 14 03 00 00 02 1F 00 00'
- '03 00 00 00 B1 03 00 00 13 03 00 00 00 03 00 00 03 1F 00 00 03 00 00 00 B1 03 00 00 14 03 00 00'
- '00 03 00 00 04 1F 00 00 03 00 00 00 B1 03 00 00 13 03 00 00 01 03 00 00 05 1F 00 00 03 00 00 00'
- 'B1 03 00 00 14 03 00 00 01 03 00 00 06 1F 00 00 03 00 00 00 B1 03 00 00 13 03 00 00 42 03 00 00'
- '07 1F 00 00 03 00 00 00 B1 03 00 00 14 03 00 00 42 03 00 00 08 1F 00 00 02 00 00 00 91 03 00 00'
- '13 03 00 00 09 1F 00 00 02 00 00 00 91 03 00 00 14 03 00 00 0A 1F 00 00 03 00 00 00 91 03 00 00'
- '13 03 00 00 00 03 00 00 0B 1F 00 00 03 00 00 00 91 03 00 00 14 03 00 00 00 03 00 00 0C 1F 00 00'
- '03 00 00 00 91 03 00 00 13 03 00 00 01 03 00 00 0D 1F 00 00 03 00 00 00 91 03 00 00 14 03 00 00'
- '01 03 00 00 0E 1F 00 00 03 00 00 00 91 03 00 00 13 03 00 00 42 03 00 00 0F 1F 00 00 03 00 00 00'
- '91 03 00 00 14 03 00 00 42 03 00 00 10 1F 00 00 02 00 00 00 B5 03 00 00 13 03 00 00 11 1F 00 00'
- '02 00 00 00 B5 03 00 00 14 03 00 00 12 1F 00 00 03 00 00 00 B5 03 00 00 13 03 00 00 00 03 00 00'
- '13 1F 00 00 03 00 00 00 B5 03 00 00 14 03 00 00 00 03 00 00 14 1F 00 00 03 00 00 00 B5 03 00 00'
- '13 03 00 00 01 03 00 00 15 1F 00 00 03 00 00 00 B5 03 00 00 14 03 00 00 01 03 00 00 18 1F 00 00'
- '02 00 00 00 95 03 00 00 13 03 00 00 19 1F 00 00 02 00 00 00 95 03 00 00 14 03 00 00 1A 1F 00 00'
- '03 00 00 00 95 03 00 00 13 03 00 00 00 03 00 00 1B 1F 00 00 03 00 00 00 95 03 00 00 14 03 00 00'
- '00 03 00 00 1C 1F 00 00 03 00 00 00 95 03 00 00 13 03 00 00 01 03 00 00 1D 1F 00 00 03 00 00 00'
- '95 03 00 00 14 03 00 00 01 03 00 00 20 1F 00 00 02 00 00 00 B7 03 00 00 13 03 00 00 21 1F 00 00'
- '02 00 00 00 B7 03 00 00 14 03 00 00 22 1F 00 00 03 00 00 00 B7 03 00 00 13 03 00 00 00 03 00 00'
- '23 1F 00 00 03 00 00 00 B7 03 00 00 14 03 00 00 00 03 00 00 24 1F 00 00 03 00 00 00 B7 03 00 00'
- '13 03 00 00 01 03 00 00 25 1F 00 00 03 00 00 00 B7 03 00 00 14 03 00 00 01 03 00 00 26 1F 00 00'
- '03 00 00 00 B7 03 00 00 13 03 00 00 42 03 00 00 27 1F 00 00 03 00 00 00 B7 03 00 00 14 03 00 00'
- '42 03 00 00 28 1F 00 00 02 00 00 00 97 03 00 00 13 03 00 00 29 1F 00 00 02 00 00 00 97 03 00 00'
- '14 03 00 00 2A 1F 00 00 03 00 00 00 97 03 00 00 13 03 00 00 00 03 00 00 2B 1F 00 00 03 00 00 00'
- '97 03 00 00 14 03 00 00 00 03 00 00 2C 1F 00 00 03 00 00 00 97 03 00 00 13 03 00 00 01 03 00 00'
- '2D 1F 00 00 03 00 00 00 97 03 00 00 14 03 00 00 01 03 00 00 2E 1F 00 00 03 00 00 00 97 03 00 00'
- '13 03 00 00 42 03 00 00 2F 1F 00 00 03 00 00 00 97 03 00 00 14 03 00 00 42 03 00 00 30 1F 00 00'
- '02 00 00 00 B9 03 00 00 13 03 00 00 31 1F 00 00 02 00 00 00 B9 03 00 00 14 03 00 00 32 1F 00 00'
- '03 00 00 00 B9 03 00 00 13 03 00 00 00 03 00 00 33 1F 00 00 03 00 00 00 B9 03 00 00 14 03 00 00'
- '00 03 00 00 34 1F 00 00 03 00 00 00 B9 03 00 00 13 03 00 00 01 03 00 00 35 1F 00 00 03 00 00 00'
- 'B9 03 00 00 14 03 00 00 01 03 00 00 36 1F 00 00 03 00 00 00 B9 03 00 00 13 03 00 00 42 03 00 00'
- '37 1F 00 00 03 00 00 00 B9 03 00 00 14 03 00 00 42 03 00 00 38 1F 00 00 02 00 00 00 99 03 00 00'
- '13 03 00 00 39 1F 00 00 02 00 00 00 99 03 00 00 14 03 00 00 3A 1F 00 00 03 00 00 00 99 03 00 00'
- '13 03 00 00 00 03 00 00 3B 1F 00 00 03 00 00 00 99 03 00 00 14 03 00 00 00 03 00 00 3C 1F 00 00'
- '03 00 00 00 99 03 00 00 13 03 00 00 01 03 00 00 3D 1F 00 00 03 00 00 00 99 03 00 00 14 03 00 00'
- '01 03 00 00 3E 1F 00 00 03 00 00 00 99 03 00 00 13 03 00 00 42 03 00 00 3F 1F 00 00 03 00 00 00'
- '99 03 00 00 14 03 00 00 42 03 00 00 40 1F 00 00 02 00 00 00 BF 03 00 00 13 03 00 00 41 1F 00 00'
- '02 00 00 00 BF 03 00 00 14 03 00 00 42 1F 00 00 03 00 00 00 BF 03 00 00 13 03 00 00 00 03 00 00'
- '43 1F 00 00 03 00 00 00 BF 03 00 00 14 03 00 00 00 03 00 00 44 1F 00 00 03 00 00 00 BF 03 00 00'
- '13 03 00 00 01 03 00 00 45 1F 00 00 03 00 00 00 BF 03 00 00 14 03 00 00 01 03 00 00 48 1F 00 00'
- '02 00 00 00 9F 03 00 00 13 03 00 00 49 1F 00 00 02 00 00 00 9F 03 00...
[truncated message content] |
|
From: <ou...@us...> - 2007-09-06 19:12:36
|
Revision: 2149
http://jcl.svn.sourceforge.net/jcl/?rev=2149&view=rev
Author: outchy
Date: 2007-09-06 12:12:27 -0700 (Thu, 06 Sep 2007)
Log Message:
-----------
improving bpl output path for Delphi 2007 update 2
Modified Paths:
--------------
trunk/jcl/source/common/JclBorlandTools.pas
Modified: trunk/jcl/source/common/JclBorlandTools.pas
===================================================================
--- trunk/jcl/source/common/JclBorlandTools.pas 2007-09-06 18:50:58 UTC (rev 2148)
+++ trunk/jcl/source/common/JclBorlandTools.pas 2007-09-06 19:12:27 UTC (rev 2149)
@@ -4911,10 +4911,11 @@
3, 4:
Result := inherited GetBPLOutputPath;
5:
- if bpBCBuilder32 in Personalities then
- Result := SubstitutePath(GetMsBuildEnvOption(MsBuildCBuilderBPLOutputPathNodeName))
- else
- Result := SubstitutePath(GetMsBuildEnvOption(MsBuildWin32DLLOutputPathNodeName));
+ begin
+ Result := SubstitutePath(GetMsBuildEnvOption(MsBuildCBuilderBPLOutputPathNodeName));
+ if Result = '' then
+ Result := SubstitutePath(GetMsBuildEnvOption(MsBuildWin32DLLOutputPathNodeName));
+ end;
else
Result := SubstitutePath(GetMsBuildEnvOption(MsBuildWin32DLLOutputPathNodeName));
end;
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <ou...@us...> - 2007-09-06 18:51:02
|
Revision: 2148
http://jcl.svn.sourceforge.net/jcl/?rev=2148&view=rev
Author: outchy
Date: 2007-09-06 11:50:58 -0700 (Thu, 06 Sep 2007)
Log Message:
-----------
mantis 4212 additional fix (options for managed targets have to be saved)
Modified Paths:
--------------
trunk/jcl/install/JclInstall.pas
Modified: trunk/jcl/install/JclInstall.pas
===================================================================
--- trunk/jcl/install/JclInstall.pas 2007-09-06 17:16:05 UTC (rev 2147)
+++ trunk/jcl/install/JclInstall.pas 2007-09-06 18:50:58 UTC (rev 2148)
@@ -1153,20 +1153,27 @@
if not Assigned(AConfiguration) then
Exit;
if AConfiguration.SectionExists(TargetName) then
+ begin
for Option := Low(TJclOption) to High(TJclOption) do
- begin
- Id := OptionData[Option].Id;
- GUIPage.OptionChecked[Id] := AConfiguration.OptionAsBool[TargetName, Id];
- end;
+ begin
+ Id := OptionData[Option].Id;
+ GUIPage.OptionChecked[Id] := AConfiguration.OptionAsBool[TargetName, Id];
+ end;
+ end
+ else
+ GUIPage.OptionChecked[OptionData[joLibrary].Id] := True;
- if not Target.IsTurboExplorer and FRunTimeInstallation and (CLRVersion = '') then
+ if not Target.IsTurboExplorer then
begin
- ADemoList := GetDemoList;
- if AConfiguration.SectionExists(FDemoSectionName) then
- for Index := 0 to ADemoList.Count - 1 do
+ if FRunTimeInstallation and (CLRVersion = '') then
begin
- Id := Integer(ADemoList.Objects[Index]);
- GUIPage.OptionChecked[Id] := AConfiguration.OptionAsBool[FDemoSectionName, Id];
+ ADemoList := GetDemoList;
+ if AConfiguration.SectionExists(FDemoSectionName) then
+ for Index := 0 to ADemoList.Count - 1 do
+ begin
+ Id := Integer(ADemoList.Objects[Index]);
+ GUIPage.OptionChecked[Id] := AConfiguration.OptionAsBool[FDemoSectionName, Id];
+ end;
end;
StoredValue := AConfiguration.OptionAsStringByName[TargetName, RsNameBPLPath];
@@ -2269,22 +2276,26 @@
if not (Assigned(AConfiguration) and Assigned(GUIPage)) then
Exit;
- // clean section before adding new options
+ // clean section before saving options
AConfiguration.DeleteSection(TargetName);
+ AConfiguration.DeleteSection(FDemoSectionName);
+
for Option := Low(TJclOption) to High(TJclOption) do
begin
Id := OptionData[Option].Id;
AConfiguration.OptionAsBool[TargetName, Id] := GUIPage.OptionChecked[Id];
end;
- AConfiguration.DeleteSection(FDemoSectionName);
- if (not Target.IsTurboExplorer) and FRuntimeInstallation and (CLRVersion = '') then
+ if not Target.IsTurboExplorer then
begin
- ADemoList := GetDemoList;
- for Index := 0 to ADemoList.Count - 1 do
+ if FRuntimeInstallation and (CLRVersion = '') then
begin
- Id := Integer(ADemoList.Objects[Index]);
- AConfiguration.OptionAsBool[FDemoSectionName, Id] := GUIPage.OptionChecked[Id];
+ ADemoList := GetDemoList;
+ for Index := 0 to ADemoList.Count - 1 do
+ begin
+ Id := Integer(ADemoList.Objects[Index]);
+ AConfiguration.OptionAsBool[FDemoSectionName, Id] := GUIPage.OptionChecked[Id];
+ end;
end;
AConfiguration.OptionAsStringByName[TargetName, RsNameBPLPath] := GUIPage.Directories[FGUIBPLPathIndex];
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <ou...@us...> - 2007-09-06 17:16:09
|
Revision: 2147
http://jcl.svn.sourceforge.net/jcl/?rev=2147&view=rev
Author: outchy
Date: 2007-09-06 10:16:05 -0700 (Thu, 06 Sep 2007)
Log Message:
-----------
mantis 4206 preferring design time package over dll experts
Modified Paths:
--------------
trunk/jcl/install/JclInstall.pas
Modified: trunk/jcl/install/JclInstall.pas
===================================================================
--- trunk/jcl/install/JclInstall.pas 2007-09-06 17:06:53 UTC (rev 2146)
+++ trunk/jcl/install/JclInstall.pas 2007-09-06 17:16:05 UTC (rev 2147)
@@ -1103,8 +1103,8 @@
AddOption(joExpertsDsgnPackages, [goRadioButton, goChecked], joExperts)
else
begin
- AddOption(joExpertsDLL, [goRadioButton, goChecked], joExperts);
- AddOption(joExpertsDsgnPackages, [goRadioButton], joExperts);
+ AddOption(joExpertsDLL, [goRadioButton], joExperts);
+ AddOption(joExpertsDsgnPackages, [goRadioButton, goChecked], joExperts);
end;
if RunTimeInstallation then
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <ou...@us...> - 2007-09-06 17:06:55
|
Revision: 2146
http://jcl.svn.sourceforge.net/jcl/?rev=2146&view=rev
Author: outchy
Date: 2007-09-06 10:06:53 -0700 (Thu, 06 Sep 2007)
Log Message:
-----------
mantis 4212 top level node always checked in the installer
Modified Paths:
--------------
trunk/jcl/install/JclInstall.pas
trunk/jcl/install/prototypes/JediGUIInstall.pas
Modified: trunk/jcl/install/JclInstall.pas
===================================================================
--- trunk/jcl/install/JclInstall.pas 2007-09-01 16:29:03 UTC (rev 2145)
+++ trunk/jcl/install/JclInstall.pas 2007-09-06 17:06:53 UTC (rev 2146)
@@ -1159,7 +1159,7 @@
GUIPage.OptionChecked[Id] := AConfiguration.OptionAsBool[TargetName, Id];
end;
- if not Target.IsTurboExplorer then
+ if not Target.IsTurboExplorer and FRunTimeInstallation and (CLRVersion = '') then
begin
ADemoList := GetDemoList;
if AConfiguration.SectionExists(FDemoSectionName) then
@@ -2269,13 +2269,16 @@
if not (Assigned(AConfiguration) and Assigned(GUIPage)) then
Exit;
+ // clean section before adding new options
+ AConfiguration.DeleteSection(TargetName);
for Option := Low(TJclOption) to High(TJclOption) do
begin
Id := OptionData[Option].Id;
AConfiguration.OptionAsBool[TargetName, Id] := GUIPage.OptionChecked[Id];
end;
- if not Target.IsTurboExplorer then
+ AConfiguration.DeleteSection(FDemoSectionName);
+ if (not Target.IsTurboExplorer) and FRuntimeInstallation and (CLRVersion = '') then
begin
ADemoList := GetDemoList;
for Index := 0 to ADemoList.Count - 1 do
Modified: trunk/jcl/install/prototypes/JediGUIInstall.pas
===================================================================
--- trunk/jcl/install/prototypes/JediGUIInstall.pas 2007-09-01 16:29:03 UTC (rev 2145)
+++ trunk/jcl/install/prototypes/JediGUIInstall.pas 2007-09-06 17:06:53 UTC (rev 2146)
@@ -514,7 +514,7 @@
procedure TInstallFrame.SetCaption(const Value: string);
begin
(Parent as TTabSheet).Caption := Value;
- AddInstallOption(JediTargetOption, [goExpandable, goChecked], Value, RsHintTarget, -1);
+ AddInstallOption(JediTargetOption, [goExpandable], Value, RsHintTarget, -1);
end;
function TInstallFrame.GetHintAtPos(ScreenX, ScreenY: Integer): string;
@@ -599,8 +599,14 @@
ANode: TTreeNode;
begin
ANode := GetNode(Id);
- if Assigned(ANode) then
+ while Assigned(ANode) do
+ begin
UpdateNode(ANode, Value);
+ // if an option is checked, ensure that all parent options are checked too
+ if IsRadioButton(ANode) or not Value then
+ Break;
+ ANode := ANode.Parent;
+ end;
end;
function TInstallFrame.GetDirectoryCount: Integer;
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <ah...@us...> - 2007-09-01 16:29:13
|
Revision: 2145
http://jcl.svn.sourceforge.net/jcl/?rev=2145&view=rev
Author: ahuser
Date: 2007-09-01 09:29:03 -0700 (Sat, 01 Sep 2007)
Log Message:
-----------
Cleanup caused script error
Modified Paths:
--------------
trunk/thirdparty/InnoSetup/ComponentInstallerScript.iss
Modified: trunk/thirdparty/InnoSetup/ComponentInstallerScript.iss
===================================================================
--- trunk/thirdparty/InnoSetup/ComponentInstallerScript.iss 2007-09-01 15:32:31 UTC (rev 2144)
+++ trunk/thirdparty/InnoSetup/ComponentInstallerScript.iss 2007-09-01 16:29:03 UTC (rev 2145)
@@ -419,9 +419,6 @@
begin
Components := TStringList.Create;
try
- Components.CommaText := WizardSelectedComponents(False);
- UserUnregisterComponents(Components); // remove a failed installation first
-
ChangeComponentRegistration(True, Components);
UserRegisterComponents(Components);
finally
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <ah...@us...> - 2007-09-01 15:32:34
|
Revision: 2144
http://jcl.svn.sourceforge.net/jcl/?rev=2144&view=rev
Author: ahuser
Date: 2007-09-01 08:32:31 -0700 (Sat, 01 Sep 2007)
Log Message:
-----------
Fixed registry cleanup code
Modified Paths:
--------------
trunk/thirdparty/InnoSetup/ComponentInstallerScript.iss
Modified: trunk/thirdparty/InnoSetup/ComponentInstallerScript.iss
===================================================================
--- trunk/thirdparty/InnoSetup/ComponentInstallerScript.iss 2007-09-01 11:24:48 UTC (rev 2143)
+++ trunk/thirdparty/InnoSetup/ComponentInstallerScript.iss 2007-09-01 15:32:31 UTC (rev 2144)
@@ -419,7 +419,9 @@
begin
Components := TStringList.Create;
try
+ Components.CommaText := WizardSelectedComponents(False);
UserUnregisterComponents(Components); // remove a failed installation first
+
ChangeComponentRegistration(True, Components);
UserRegisterComponents(Components);
finally
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <ah...@us...> - 2007-09-01 11:24:54
|
Revision: 2143
http://jcl.svn.sourceforge.net/jcl/?rev=2143&view=rev
Author: ahuser
Date: 2007-09-01 04:24:48 -0700 (Sat, 01 Sep 2007)
Log Message:
-----------
Fixed package unregister
Modified Paths:
--------------
trunk/thirdparty/InnoSetup/ComponentInstallerScript.iss
trunk/thirdparty/InnoSetup/Install.iss
Removed Paths:
-------------
trunk/thirdparty/InnoSetup/DownloadScript.iss
Modified: trunk/thirdparty/InnoSetup/ComponentInstallerScript.iss
===================================================================
--- trunk/thirdparty/InnoSetup/ComponentInstallerScript.iss 2007-08-31 16:26:15 UTC (rev 2142)
+++ trunk/thirdparty/InnoSetup/ComponentInstallerScript.iss 2007-09-01 11:24:48 UTC (rev 2143)
@@ -419,6 +419,7 @@
begin
Components := TStringList.Create;
try
+ UserUnregisterComponents(Components); // remove a failed installation first
ChangeComponentRegistration(True, Components);
UserRegisterComponents(Components);
finally
Deleted: trunk/thirdparty/InnoSetup/DownloadScript.iss
===================================================================
--- trunk/thirdparty/InnoSetup/DownloadScript.iss 2007-08-31 16:26:15 UTC (rev 2142)
+++ trunk/thirdparty/InnoSetup/DownloadScript.iss 2007-09-01 11:24:48 UTC (rev 2143)
@@ -1,71 +0,0 @@
-[Files]
-Source: isxdl.dll; DestDir: {tmp}; Flags: dontcopy
-
-[Code]
-procedure istool_AddFile(URL, Filename: PChar);
- external 'isxdl_AddFile@files:isxdl.dll stdcall';
-function istool_DownloadFiles(hWnd: Integer): Integer;
- external 'isxdl_DownloadFiles@files:isxdl.dll stdcall';
-procedure istool_ClearFiles;
- external 'isxdl_ClearFiles@files:isxdl.dll stdcall';
-
-type
- ISXDL = record
- Source: string;
- DestDir: string;
- DestName: string;
- Tasks: string;
- Components: string;
- Languages: string;
- Flags: Cardinal;
- end;
-
-var
- istool_files: array of ISXDL;
-
-procedure istool_download_init();
-begin
- SetArrayLength(istool_files, 1);
- // Delphi 5
- istool_files[0].Source := 'http://jvcl.sourceforge.net/daily/JVCL3-Latest.zip';
- istool_files[0].DestDir := ExpandConstant('{tmp}');
- istool_files[0].DestName := 'JVCL3-Latest.zip';
- istool_files[0].Tasks := '';
- istool_files[0].Components := 'IDE\Delphi5';
- istool_files[0].Languages := '';
- istool_files[0].Flags := 0;
-end;
-
-function istool_checklanguages(const Languages: String): Boolean;
-begin
- Result := (Languages = '') or (Pos(ActiveLanguage, Languages) > 0);
-end;
-
-function istool_download(CurPage: Integer): boolean;
-var
- i, NumFiles: Integer;
- DestFile, DestDir: string;
-begin
- Result := True;
- if CurPage <> wpReady then
- Exit;
- istool_ClearFiles();
- istool_download_init();
- NumFiles := GetArrayLength(istool_files);
- for i := 0 to NumFiles - 1 do
- begin
- if IsComponentSelected(istool_files[i].Components) and
- IsTaskSelected(istool_files[i].Tasks) and
- istool_checklanguages(istool_files[i].Languages) then
- begin
- DestDir := AddBackslash(istool_files[i].DestDir);
- if istool_files[i].DestName = '' then
- DestFile := DestDir + 'dlfile.' + IntToStr(i)
- else
- DestFile := DestDir + istool_files[i].DestName;
- istool_AddFile(istool_files[i].Source, DestFile);
- end;
- end;
- //Result := 0 <> istool_DownloadFiles(StrToInt(ExpandConstant('{wizardhwnd}')));
- Result := 0 <> istool_DownloadFiles(0);
-end;
Modified: trunk/thirdparty/InnoSetup/Install.iss
===================================================================
--- trunk/thirdparty/InnoSetup/Install.iss 2007-08-31 16:26:15 UTC (rev 2142)
+++ trunk/thirdparty/InnoSetup/Install.iss 2007-09-01 11:24:48 UTC (rev 2143)
@@ -310,11 +310,6 @@
Name: "{group}\{cm:ProgramOnTheWeb,{#MyAppName}}"; Filename: "{#MyAppURL}"
Name: "{group}\{cm:UninstallProgram,{#MyAppName}}"; Filename: "{uninstallexe}"
-; Downloading script
-//#ifdef Include_Binaries
-//#include "DownloadScript.iss"
-//#endif
-
#include "ComponentInstallerScript.iss"
[Code]
@@ -347,7 +342,7 @@
for IdeIndex := 0 to IdeList.Count - 1 do
begin
ExtractIdeInfo(IdeList[IdeIndex], IdeKind, Version);
- UninstallExpertsPrefixed(IdeKind, Version, 'Jv');
+ UninstallExpertsPrefixed(IdeKind, Version, 'Jcl');
end;
finally
IdeList.Free;
@@ -423,15 +418,6 @@
UnregisterComponents;
end;
-#ifdef Include_Binaries
-// Function generated by ISTool.
-function NextButtonClick(CurPage: Integer): Boolean;
-begin
- //Result := istool_download(CurPage);
- Result := True;
-end;
-#endif
-
// Skin
procedure CurPageChanged(CurPageID: Integer);
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <ah...@us...> - 2007-08-31 16:26:24
|
Revision: 2142
http://jcl.svn.sourceforge.net/jcl/?rev=2142&view=rev
Author: ahuser
Date: 2007-08-31 09:26:15 -0700 (Fri, 31 Aug 2007)
Log Message:
-----------
Not used
Removed Paths:
-------------
trunk/thirdparty/InnoSetup/isxdl.dll
Deleted: trunk/thirdparty/InnoSetup/isxdl.dll
===================================================================
(Binary files differ)
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <ah...@us...> - 2007-08-30 20:46:33
|
Revision: 2141
http://jcl.svn.sourceforge.net/jcl/?rev=2141&view=rev
Author: ahuser
Date: 2007-08-30 13:46:28 -0700 (Thu, 30 Aug 2007)
Log Message:
-----------
Web-Package support (needs special version of InnoSetup)
Modified Paths:
--------------
trunk/thirdparty/InnoSetup/Install.iss
trunk/thirdparty/InnoSetup/Skin/isxskin.iss
Modified: trunk/thirdparty/InnoSetup/Install.iss
===================================================================
--- trunk/thirdparty/InnoSetup/Install.iss 2007-08-22 21:30:28 UTC (rev 2140)
+++ trunk/thirdparty/InnoSetup/Install.iss 2007-08-30 20:46:28 UTC (rev 2141)
@@ -12,6 +12,7 @@
#define MyAppVerName "Jedi Code Library " + JclVersionStr
#define MyAppPublisher "JCL Team"
#define MyAppURL "http://jcl.sourceforge.net/"
+#define downloadurl "http://jvcl.sourceforge.net/websetup/jcl"
#define Include_Binaries
#define Include_Examples
@@ -76,7 +77,7 @@
DefaultGroupName=DelphiComponents\JEDI Code Library
DisableProgramGroupPage=no
;LicenseFile={#JclRoot}\help\MPL-1.1.html
-OutputBaseFilename=setup
+OutputBaseFilename=JCLSetup
#ifdef DEBUGGING
Compression=zip/1
#else
@@ -84,7 +85,10 @@
#endif
SolidCompression=yes
ShowLanguageDialog=auto
+OptimizedChecks=yes
+WebSetupUpdateURL={#downloadurl}
+
// for skin
#define MyWizardBottomImageFile "Skin\images\wizardbottom.bmp"
#define MyWizardButtonImageFile "Skin\images\button.bmp"
@@ -99,7 +103,6 @@
Name: "french"; MessagesFile: "compiler:Languages\French.isl"
Name: "german"; MessagesFile: "compiler:Languages\German.isl"
-
#ifdef Include_Binaries
[Types]
Name: "full"; Description: "Full installation"
@@ -114,6 +117,15 @@
#endif
#ifdef Include_Binaries
+
+[Packages]
+Name: delphi5; Description: "Delphi 5 binary files"; Source: "{#downloadurl}/jcldelphi5.isz"; Flags: localcopy;
+Name: delphi6; Description: "Delphi 6 binary files"; Source: "{#downloadurl}/jcldelphi6.isz"; Flags: localcopy;
+Name: delphi7; Description: "Delphi 7 binary files"; Source: "{#downloadurl}/jcldelphi7.isz"; Flags: localcopy;
+Name: delphi9; Description: "Delphi 2005 binary files"; Source: "{#downloadurl}/jcldelphi9.isz"; Flags: localcopy;
+Name: delphi10; Description: "Delphi/C++Builder 2006 binary files"; Source: "{#downloadurl}/jcldelphi10.isz"; Flags: localcopy;
+Name: delphi11; Description: "Delphi/C++Builder 2007 binary files"; Source: "{#downloadurl}/jcldelphi11.isz"; Flags: localcopy;
+
#include "IdeComponents.iss"
[Components]
@@ -126,7 +138,7 @@
Name: "Experts\JclSIMDViewExpert"; Description: "SIMD-View Expert"; Types: full prefered
Name: "Experts\JclThreadNameExpert"; Description: "Thread Name Expert"; Types: full prefered
Name: "Experts\JclUsesExpert"; Description: "Uses Expert"; Types: full prefered
-Name: "Experts\JclVersionControlExpert"; Description: "Version Control Expert"; Types: full prefered
+Name: "Experts\JclVersionControlExpert"; Description: "Version Control Expert"
#endif
[Dirs]
@@ -153,47 +165,47 @@
#ifdef Include_Binaries
#ifdef Include_Delphi5
; SolidBreak;
-Source: {#JclRoot}\lib\d5\*; DestDir: "{app}\lib\d5"; Excludes: ".svn,__history,*.txt"; Components: "IDE\Delphi5"; Flags: ignoreversion recursesubdirs sortfilesbyextension createallsubdirs solidbreak
-Source: {#Delphi5Bpl}\Jcl*.*; DestDir: "{code:GetDelphiBplDir|5}"; Components: "IDE\Delphi5"; Flags: ignoreversion recursesubdirs sortfilesbyextension createallsubdirs
+Source: {#JclRoot}\lib\d5\*; DestDir: "{app}\lib\d5"; Excludes: ".svn,__history,*.txt"; Components: "IDE\Delphi5"; Package: delphi5; Flags: ignoreversion recursesubdirs sortfilesbyextension createallsubdirs solidbreak
+Source: {#Delphi5Bpl}\Jcl*.*; DestDir: "{code:GetDelphiBplDir|5}"; Components: "IDE\Delphi5"; Package: delphi5; Flags: ignoreversion recursesubdirs sortfilesbyextension createallsubdirs
#endif
#ifdef Include_BCB5
; SolidBreak;
-Source: {#JclRoot}\lib\c5\*; DestDir: "{app}\lib\c5"; Excludes: ".svn,__history,*.txt"; Components: "IDE\BCB5"; Flags: ignoreversion recursesubdirs sortfilesbyextension createallsubdirs solidbreak
-Source: {#BCB5Bpl}\Jcl*.*; DestDir: "{code:GetBCBBplDir|5}"; Components: "IDE\BCB5"; Flags: ignoreversion recursesubdirs sortfilesbyextension createallsubdirs
-Source: {#BCB5Root}\Include\Vcl\Jcl*.hpp; DestDir: "{code:GetBCBDir|5}\Include\Vcl"; Components: "IDE\BCB5"; Flags: ignoreversion recursesubdirs sortfilesbyextension createallsubdirs
+Source: {#JclRoot}\lib\c5\*; DestDir: "{app}\lib\c5"; Excludes: ".svn,__history,*.txt"; Components: "IDE\BCB5"; Package: bcb5; Flags: ignoreversion recursesubdirs sortfilesbyextension createallsubdirs solidbreak
+Source: {#BCB5Bpl}\Jcl*.*; DestDir: "{code:GetBCBBplDir|5}"; Components: "IDE\BCB5"; Package: bcb5; Flags: ignoreversion recursesubdirs sortfilesbyextension createallsubdirs
+Source: {#BCB5Root}\Include\Vcl\Jcl*.hpp; DestDir: "{code:GetBCBDir|5}\Include\Vcl"; Components: "IDE\BCB5"; Package: bcb5; Flags: ignoreversion recursesubdirs sortfilesbyextension createallsubdirs
#endif
#ifdef Include_Delphi6
; SolidBreak;
-Source: {#JclRoot}\lib\d6\*; DestDir: "{app}\lib\d6"; Excludes: ".svn,__history,*.txt"; Components: "IDE\Delphi6"; Flags: ignoreversion recursesubdirs sortfilesbyextension createallsubdirs solidbreak
-Source: {#Delphi6Bpl}\Jcl*.*; DestDir: "{code:GetDelphiBplDir|6}"; Components: "IDE\Delphi6"; Flags: ignoreversion recursesubdirs sortfilesbyextension createallsubdirs
+Source: {#JclRoot}\lib\d6\*; DestDir: "{app}\lib\d6"; Excludes: ".svn,__history,*.txt"; Components: "IDE\Delphi6"; Package: delphi6; Flags: ignoreversion recursesubdirs sortfilesbyextension createallsubdirs solidbreak
+Source: {#Delphi6Bpl}\Jcl*.*; DestDir: "{code:GetDelphiBplDir|6}"; Components: "IDE\Delphi6"; Package: delphi6; Flags: ignoreversion recursesubdirs sortfilesbyextension createallsubdirs
#endif
#ifdef Include_BCB6
; SolidBreak;
-Source: {#JclRoot}\lib\c6\*; DestDir: "{app}\lib\c6"; Excludes: ".svn,__history,*.txt"; Components: "IDE\BCB6"; Flags: ignoreversion recursesubdirs sortfilesbyextension createallsubdirs solidbreak
-Source: {#BCB6Bpl}\Jcl*.*; DestDir: "{code:GetBCBBplDir|6}"; Components: "IDE\BCB6"; Flags: ignoreversion recursesubdirs sortfilesbyextension createallsubdirs
-Source: {#BCB6Root}\Include\Vcl\Jcl*.hpp; DestDir: "{code:GetBCBDir|6}\Include\Vcl"; Components: "IDE\BCB6"; Flags: ignoreversion recursesubdirs sortfilesbyextension createallsubdirs
+Source: {#JclRoot}\lib\c6\*; DestDir: "{app}\lib\c6"; Excludes: ".svn,__history,*.txt"; Components: "IDE\BCB6"; Package: jclbcb6; Flags: ignoreversion recursesubdirs sortfilesbyextension createallsubdirs solidbreak
+Source: {#BCB6Bpl}\Jcl*.*; DestDir: "{code:GetBCBBplDir|6}"; Components: "IDE\BCB6"; Package: jclbcb6; Flags: ignoreversion recursesubdirs sortfilesbyextension createallsubdirs
+Source: {#BCB6Root}\Include\Vcl\Jcl*.hpp; DestDir: "{code:GetBCBDir|6}\Include\Vcl"; Components: "IDE\BCB6"; Package: jclbcb6; Flags: ignoreversion recursesubdirs sortfilesbyextension createallsubdirs
#endif
#ifdef Include_Delphi7
; SolidBreak;
-Source: {#JclRoot}\lib\d7\*; DestDir: "{app}\lib\d7"; Excludes: ".svn,__history,*.txt"; Components: "IDE\Delphi7"; Flags: ignoreversion recursesubdirs sortfilesbyextension createallsubdirs solidbreak
-Source: {#Delphi7Bpl}\Jcl*.*; DestDir: "{code:GetDelphiBplDir|7}"; Components: "IDE\Delphi7"; Flags: ignoreversion recursesubdirs sortfilesbyextension createallsubdirs
+Source: {#JclRoot}\lib\d7\*; DestDir: "{app}\lib\d7"; Excludes: ".svn,__history,*.txt"; Components: "IDE\Delphi7"; Package: delphi7; Flags: ignoreversion recursesubdirs sortfilesbyextension createallsubdirs solidbreak
+Source: {#Delphi7Bpl}\Jcl*.*; DestDir: "{code:GetDelphiBplDir|7}"; Components: "IDE\Delphi7"; Package: delphi7; Flags: ignoreversion recursesubdirs sortfilesbyextension createallsubdirs
#endif
#ifdef Include_Delphi9
; SolidBreak;
-Source: {#JclRoot}\lib\d9\*; DestDir: "{app}\lib\d9"; Excludes: ".svn,__history,*.txt"; Components: "IDE\Delphi9"; Flags: ignoreversion recursesubdirs sortfilesbyextension createallsubdirs solidbreak
-Source: {#Delphi9Bpl}\Jcl*9*.*; DestDir: "{code:GetDelphiBplDir|9}"; Components: "IDE\Delphi9"; Flags: ignoreversion recursesubdirs sortfilesbyextension createallsubdirs
+Source: {#JclRoot}\lib\d9\*; DestDir: "{app}\lib\d9"; Excludes: ".svn,__history,*.txt"; Components: "IDE\Delphi9"; Package: delphi9; Flags: ignoreversion recursesubdirs sortfilesbyextension createallsubdirs solidbreak
+Source: {#Delphi9Bpl}\Jcl*9*.*; DestDir: "{code:GetDelphiBplDir|9}"; Components: "IDE\Delphi9"; Package: delphi9; Flags: ignoreversion recursesubdirs sortfilesbyextension createallsubdirs
#endif
#ifdef Include_Delphi10
; SolidBreak;
-Source: {#JclRoot}\lib\d10\*; DestDir: "{app}\lib\d10"; Excludes: ".svn,__history,*.txt"; Components: "IDE\Delphi10"; Flags: ignoreversion recursesubdirs sortfilesbyextension createallsubdirs solidbreak
-Source: {#Delphi10Bpl}\Jcl*10*.*; DestDir: "{code:GetDelphiBplDir|10}"; Components: "IDE\Delphi10"; Flags: ignoreversion recursesubdirs sortfilesbyextension createallsubdirs
-Source: {#Delphi10Root}\Include\Vcl\Jcl*.hpp; DestDir: "{code:GetDelphiDir|10}\Include\Vcl"; Components: "IDE\Delphi10"; Flags: ignoreversion recursesubdirs sortfilesbyextension createallsubdirs
+Source: {#JclRoot}\lib\d10\*; DestDir: "{app}\lib\d10"; Excludes: ".svn,__history,*.txt"; Components: "IDE\Delphi10"; Package: delphi10; Flags: ignoreversion recursesubdirs sortfilesbyextension createallsubdirs solidbreak
+Source: {#Delphi10Bpl}\Jcl*10*.*; DestDir: "{code:GetDelphiBplDir|10}"; Components: "IDE\Delphi10"; Package: delphi10; Flags: ignoreversion recursesubdirs sortfilesbyextension createallsubdirs
+Source: {#Delphi10Root}\Include\Vcl\Jcl*.hpp; DestDir: "{code:GetDelphiDir|10}\Include\Vcl"; Components: "IDE\Delphi10"; Package: delphi10; Flags: ignoreversion recursesubdirs sortfilesbyextension createallsubdirs
#endif
#ifdef Include_Delphi11
; SolidBreak;
-Source: {#JclRoot}\lib\d11\*; DestDir: "{app}\lib\d11"; Excludes: ".svn,__history,*.txt"; Components: "IDE\Delphi11"; Flags: ignoreversion recursesubdirs sortfilesbyextension createallsubdirs solidbreak
-Source: {#Delphi11Bpl}\Jcl*.*; DestDir: "{code:GetDelphiBplDir|11}"; Components: "IDE\Delphi11"; Flags: ignoreversion recursesubdirs sortfilesbyextension createallsubdirs
-Source: {#Delphi11Root}\Include\Vcl\Jcl*.hpp; DestDir: "{code:GetDelphiDir|10}\Include\Vcl"; Components: "IDE\Delphi11"; Flags: ignoreversion recursesubdirs sortfilesbyextension createallsubdirs
+Source: {#JclRoot}\lib\d11\*; DestDir: "{app}\lib\d11"; Excludes: ".svn,__history,*.txt"; Components: "IDE\Delphi11"; Package: delphi11; Flags: ignoreversion recursesubdirs sortfilesbyextension createallsubdirs solidbreak
+Source: {#Delphi11Bpl}\Jcl*.*; DestDir: "{code:GetDelphiBplDir|11}"; Components: "IDE\Delphi11"; Package: delphi11; Flags: ignoreversion recursesubdirs sortfilesbyextension createallsubdirs
+Source: {#Delphi11Root}\Include\Vcl\Jcl*.hpp; DestDir: "{code:GetDelphiDir|10}\Include\Vcl"; Components: "IDE\Delphi11"; Package: delphi11; Flags: ignoreversion recursesubdirs sortfilesbyextension createallsubdirs
#endif
#endif
Modified: trunk/thirdparty/InnoSetup/Skin/isxskin.iss
===================================================================
--- trunk/thirdparty/InnoSetup/Skin/isxskin.iss 2007-08-22 21:30:28 UTC (rev 2140)
+++ trunk/thirdparty/InnoSetup/Skin/isxskin.iss 2007-08-30 20:46:28 UTC (rev 2141)
@@ -20,12 +20,12 @@
ButtonPanels: array [0..4] of TPanel;
ButtonImages: array [0..4] of TBitmapImage;
ButtonLabels: array [0..4] of TLabel;
-
-procedure UpdateButton(AButton: TButton;AButtonIndex: integer);
+
+procedure UpdateButton(AButton: TButton; AButtonIndex: integer);
begin
ButtonLabels[AButtonIndex].Caption:=AButton.Caption;
- ButtonPanels[AButtonIndex].visible:=AButton.Visible;
- ButtonLabels[AButtonIndex].Enabled:=Abutton.Enabled;
+ ButtonPanels[AButtonIndex].Visible:=AButton.Visible;
+ ButtonLabels[AButtonIndex].Enabled:=AButton.Enabled;
end;
procedure ButtonLabelClick(Sender: TObject);
@@ -110,6 +110,8 @@
Left:=0;
Width:=panel.ClientWidth;
Parent:=panel;
+ if AButtonIndex = bidNext then
+ Font.Style := [fsBold];
Font.Color:=clWhite;
Caption:=AButton.Caption;
OnClick:=@ButtonLabelClick;
@@ -484,6 +486,24 @@
Width:=465
Height:=21
end
+ with WebDownloadFilenameLabel do begin
+ Left:=0+10
+ Top:=16+10+80
+ Width:=465
+ Height:=16
+ end
+ with WebDownloadStatusLabel do begin
+ Left:=0+10
+ Top:=0+10+80
+ Width:=465
+ Height:=16
+ end
+ with WebDownloadProgressGauge do begin
+ Left:=0+10
+ Top:=42+10+80
+ Width:=465
+ Height:=21
+ end
end
with InfoAfterPage do begin
with InfoAfterMemo do begin
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <ou...@us...> - 2007-08-22 21:30:30
|
Revision: 2140
http://jcl.svn.sourceforge.net/jcl/?rev=2140&view=rev
Author: outchy
Date: 2007-08-22 14:30:28 -0700 (Wed, 22 Aug 2007)
Log Message:
-----------
Some progression: archive update support
File deletion is not functional yet, still need to be heavily tested.
Modified Paths:
--------------
branches/compression/jcl/examples/windows/compression/archive/UMain.dfm
branches/compression/jcl/examples/windows/compression/archive/UMain.pas
branches/compression/jcl/source/common/JclCompression.pas
Modified: branches/compression/jcl/examples/windows/compression/archive/UMain.dfm
===================================================================
--- branches/compression/jcl/examples/windows/compression/archive/UMain.dfm 2007-08-21 14:01:17 UTC (rev 2139)
+++ branches/compression/jcl/examples/windows/compression/archive/UMain.dfm 2007-08-22 21:30:28 UTC (rev 2140)
@@ -14,82 +14,11 @@
OnDestroy = FormDestroy
PixelsPerInch = 96
TextHeight = 13
- object Panel1: TPanel
- Left = 0
- Top = 0
- Width = 691
- Height = 49
- Align = alTop
- TabOrder = 0
- object Bevel1: TBevel
- Left = 271
- Top = -1
- Width = 2
- Height = 50
- Shape = bsLeftLine
- end
- object ButtonOpen: TButton
- Left = 8
- Top = 13
- Width = 75
- Height = 25
- Action = ActionOpen
- TabOrder = 0
- end
- object ButtonExtractSelected: TButton
- Left = 89
- Top = 13
- Width = 96
- Height = 25
- Action = ActionExtractSelected
- TabOrder = 1
- end
- object ButtonExtractAll: TButton
- Left = 191
- Top = 13
- Width = 75
- Height = 25
- Action = ActionExtractAll
- TabOrder = 2
- end
- object ButtonNew: TButton
- Left = 279
- Top = 13
- Width = 75
- Height = 25
- Action = ActionNew
- TabOrder = 3
- end
- object ButtonAddFile: TButton
- Left = 360
- Top = 13
- Width = 75
- Height = 25
- Action = ActionAddFile
- TabOrder = 4
- end
- object ButtonAddDirectory: TButton
- Left = 441
- Top = 13
- Width = 75
- Height = 25
- Action = ActionAddDirectory
- TabOrder = 5
- end
- object ButtonSave: TButton
- Left = 522
- Top = 13
- Width = 75
- Height = 25
- Action = ActionSave
- TabOrder = 6
- end
- end
object ListView1: TListView
Left = 0
- Top = 49
+ Top = 81
Width = 691
- Height = 236
+ Height = 204
Align = alClient
Columns = <
item
@@ -143,7 +72,7 @@
MultiSelect = True
OwnerData = True
RowSelect = True
- TabOrder = 1
+ TabOrder = 0
ViewStyle = vsReport
OnData = ListView1Data
end
@@ -153,53 +82,211 @@
Width = 691
Height = 16
Align = alBottom
+ TabOrder = 1
+ end
+ object PageControl1: TPageControl
+ Left = 0
+ Top = 0
+ Width = 691
+ Height = 81
+ ActivePage = TabSheetReadOnly
+ Align = alTop
TabOrder = 2
+ object TabSheetReadOnly: TTabSheet
+ Caption = 'Read-only'
+ object ButtonOpen: TButton
+ Left = 16
+ Top = 16
+ Width = 75
+ Height = 25
+ Action = ActionOpen
+ TabOrder = 0
+ end
+ object ButtonExtractSelected: TButton
+ Left = 97
+ Top = 16
+ Width = 96
+ Height = 25
+ Action = ActionExtractSelected
+ TabOrder = 1
+ end
+ object ButtonExtractAll: TButton
+ Left = 199
+ Top = 16
+ Width = 75
+ Height = 25
+ Action = ActionExtractAll
+ TabOrder = 2
+ end
+ end
+ object TabSheetWriteOnly: TTabSheet
+ Caption = 'Write-only'
+ ImageIndex = 1
+ object ButtonNew: TButton
+ Left = 16
+ Top = 16
+ Width = 75
+ Height = 25
+ Action = ActionNew
+ TabOrder = 0
+ end
+ object ButtonAddFile: TButton
+ Left = 97
+ Top = 16
+ Width = 75
+ Height = 25
+ Action = ActionAddFile
+ TabOrder = 1
+ end
+ object ButtonAddDirectory: TButton
+ Left = 178
+ Top = 16
+ Width = 75
+ Height = 25
+ Action = ActionAddDirectory
+ TabOrder = 2
+ end
+ object ButtonSave: TButton
+ Left = 259
+ Top = 16
+ Width = 75
+ Height = 25
+ Action = ActionSave
+ TabOrder = 3
+ end
+ end
+ object TabSheetReadWrite: TTabSheet
+ Caption = 'Read and write'
+ ImageIndex = 2
+ object ButtonNewRW: TButton
+ Left = 16
+ Top = 16
+ Width = 75
+ Height = 25
+ Action = ActionNewRW
+ TabOrder = 0
+ end
+ object ButtonOpenRW: TButton
+ Left = 97
+ Top = 16
+ Width = 75
+ Height = 25
+ Action = ActionOpenRW
+ TabOrder = 1
+ end
+ object ButtonDeleteRW: TButton
+ Left = 178
+ Top = 16
+ Width = 75
+ Height = 25
+ Action = ActionDelete
+ TabOrder = 2
+ end
+ object ButtonAddFileRW: TButton
+ Left = 259
+ Top = 16
+ Width = 75
+ Height = 25
+ Action = ActionAddFile
+ TabOrder = 3
+ end
+ object ButtonAddDirectoryRW: TButton
+ Left = 340
+ Top = 16
+ Width = 75
+ Height = 25
+ Action = ActionAddDirectory
+ TabOrder = 4
+ end
+ object ButtonExtractSelectedRW: TButton
+ Left = 421
+ Top = 16
+ Width = 92
+ Height = 25
+ Action = ActionExtractSelected
+ TabOrder = 5
+ end
+ object ButtonExtractAllRW: TButton
+ Left = 519
+ Top = 16
+ Width = 75
+ Height = 25
+ Action = ActionExtractAll
+ TabOrder = 6
+ end
+ object ButtonSaveRW: TButton
+ Left = 600
+ Top = 16
+ Width = 75
+ Height = 25
+ Action = ActionSave
+ TabOrder = 7
+ end
+ end
end
object ActionList1: TActionList
- Left = 128
- Top = 80
+ Left = 64
+ Top = 152
object ActionOpen: TAction
- Category = 'Decompress'
+ Category = 'ReadOnly'
Caption = '&Open'
OnExecute = ActionOpenExecute
OnUpdate = ActionAlwaysEnabled
end
object ActionExtractSelected: TAction
- Category = 'Decompress'
+ Category = 'ReadOnly'
Caption = '&Extract selected'
OnExecute = ActionExtractSelectedExecute
OnUpdate = ActionExtractSelectedUpdate
end
object ActionExtractAll: TAction
- Category = 'Decompress'
+ Category = 'ReadOnly'
Caption = 'Extract &all'
OnExecute = ActionExtractAllExecute
OnUpdate = ActionExtractAllUpdate
end
object ActionNew: TAction
- Category = 'Compression'
+ Category = 'WriteOnly'
Caption = '&New'
OnExecute = ActionNewExecute
OnUpdate = ActionAlwaysEnabled
end
object ActionAddFile: TAction
- Category = 'Compression'
+ Category = 'WriteOnly'
Caption = 'Add &file'
OnExecute = ActionAddFileExecute
OnUpdate = ActionAddFileUpdate
end
object ActionAddDirectory: TAction
- Category = 'Compression'
+ Category = 'WriteOnly'
Caption = 'Add &directory'
OnExecute = ActionAddDirectoryExecute
OnUpdate = ActionAddDirectoryUpdate
end
object ActionSave: TAction
- Category = 'Compression'
+ Category = 'WriteOnly'
Caption = '&Save'
OnExecute = ActionSaveExecute
OnUpdate = ActionSaveUpdate
end
+ object ActionDelete: TAction
+ Category = 'ReadWrite'
+ Caption = '&Delete'
+ OnExecute = ActionDeleteExecute
+ OnUpdate = ActionDeleteUpdate
+ end
+ object ActionNewRW: TAction
+ Category = 'ReadWrite'
+ Caption = '&New'
+ OnExecute = ActionNewRWExecute
+ OnUpdate = ActionAlwaysEnabled
+ end
+ object ActionOpenRW: TAction
+ Category = 'ReadWrite'
+ Caption = '&Open'
+ OnExecute = ActionOpenRWExecute
+ OnUpdate = ActionAlwaysEnabled
+ end
end
object OpenDialogArchive: TOpenDialog
Filter =
@@ -211,10 +298,10 @@
'(*.chm)|*.chm|Rpm archive (*.rpm)|*.rpm|Deb archive (*.deb)|*.de' +
'b|Cpio archive (*.cpio)|*.cpio|Split archive (*.001)|*.001'
FilterIndex = 0
- Options = [ofPathMustExist, ofFileMustExist, ofEnableSizing]
- Title = 'Open an archive'
- Left = 168
- Top = 80
+ Options = [ofHideReadOnly, ofPathMustExist, ofFileMustExist, ofEnableSizing]
+ Title = 'Open an archive for extraction'
+ Left = 104
+ Top = 152
end
object SaveDialogArchive: TSaveDialog
DefaultExt = '*.zip'
@@ -225,14 +312,25 @@
FilterIndex = 0
Options = [ofOverwritePrompt, ofHideReadOnly, ofPathMustExist, ofCreatePrompt, ofNoReadOnlyReturn, ofEnableSizing]
Title = 'Create a new archive'
- Left = 208
- Top = 80
+ Left = 144
+ Top = 152
end
object OpenDialogFile: TOpenDialog
Filter = 'All files (*.*)|*.*'
FilterIndex = 0
Options = [ofHideReadOnly, ofPathMustExist, ofFileMustExist, ofEnableSizing]
- Left = 168
- Top = 120
+ Left = 104
+ Top = 216
end
+ object OpenDialogArchiveRW: TOpenDialog
+ Filter =
+ 'Zip archive (*.zip)|*.zip|BZip2 archive (*.bz2)|*.bz2|Sevenzip a' +
+ 'rchive (*.7z)|*.7z|Tar archive (*.tar)|*.tar|GZip archive (*.gz)' +
+ '|*.gz|Split archive (*.001)|*.001'
+ FilterIndex = 0
+ Options = [ofHideReadOnly, ofPathMustExist, ofFileMustExist, ofEnableSizing]
+ Title = 'Open an archive for modification'
+ Left = 104
+ Top = 184
+ end
end
Modified: branches/compression/jcl/examples/windows/compression/archive/UMain.pas
===================================================================
--- branches/compression/jcl/examples/windows/compression/archive/UMain.pas 2007-08-21 14:01:17 UTC (rev 2139)
+++ branches/compression/jcl/examples/windows/compression/archive/UMain.pas 2007-08-22 21:30:28 UTC (rev 2140)
@@ -8,7 +8,6 @@
type
TForm1 = class(TForm)
- Panel1: TPanel;
ActionList1: TActionList;
ActionOpen: TAction;
ActionExtractSelected: TAction;
@@ -17,10 +16,15 @@
ActionAddFile: TAction;
ActionAddDirectory: TAction;
ActionSave: TAction;
- Bevel1: TBevel;
ListView1: TListView;
OpenDialogArchive: TOpenDialog;
SaveDialogArchive: TSaveDialog;
+ OpenDialogFile: TOpenDialog;
+ ProgressBar1: TProgressBar;
+ PageControl1: TPageControl;
+ TabSheetReadOnly: TTabSheet;
+ TabSheetWriteOnly: TTabSheet;
+ TabSheetReadWrite: TTabSheet;
ButtonOpen: TButton;
ButtonExtractSelected: TButton;
ButtonExtractAll: TButton;
@@ -28,8 +32,18 @@
ButtonAddFile: TButton;
ButtonAddDirectory: TButton;
ButtonSave: TButton;
- OpenDialogFile: TOpenDialog;
- ProgressBar1: TProgressBar;
+ ActionDelete: TAction;
+ ActionNewRW: TAction;
+ ActionOpenRW: TAction;
+ ButtonNewRW: TButton;
+ ButtonOpenRW: TButton;
+ ButtonDeleteRW: TButton;
+ ButtonAddFileRW: TButton;
+ ButtonAddDirectoryRW: TButton;
+ ButtonExtractSelectedRW: TButton;
+ ButtonExtractAllRW: TButton;
+ ButtonSaveRW: TButton;
+ OpenDialogArchiveRW: TOpenDialog;
procedure ActionAlwaysEnabled(Sender: TObject);
procedure ActionExtractSelectedUpdate(Sender: TObject);
procedure ActionExtractAllUpdate(Sender: TObject);
@@ -45,6 +59,10 @@
procedure ListView1Data(Sender: TObject; Item: TListItem);
procedure ActionExtractAllExecute(Sender: TObject);
procedure ActionExtractSelectedExecute(Sender: TObject);
+ procedure ActionDeleteUpdate(Sender: TObject);
+ procedure ActionDeleteExecute(Sender: TObject);
+ procedure ActionNewRWExecute(Sender: TObject);
+ procedure ActionOpenRWExecute(Sender: TObject);
private
FArchive: TJclCompressionArchive;
procedure CloseArchive;
@@ -94,8 +112,7 @@
procedure TForm1.ActionAddDirectoryUpdate(Sender: TObject);
begin
- (Sender as TAction).Enabled := (FArchive is TJclZipCompressArchive)
- or (FArchive is TJcl7zCompressArchive) or (FArchive is TJclTarCompressArchive);
+ (Sender as TAction).Enabled := (FArchive is TJclCompressArchive) and FArchive.MultipleItemContainer;
end;
procedure TForm1.ActionAddFileExecute(Sender: TObject);
@@ -109,9 +126,8 @@
procedure TForm1.ActionAddFileUpdate(Sender: TObject);
begin
- (Sender as TAction).Enabled := (FArchive is TJclZipCompressArchive)
- or (FArchive is TJcl7zCompressArchive) or (FArchive is TJclTarCompressArchive)
- or ((ListView1.Items.Count = 0) and (FArchive is TJclCompressionArchive));
+ (Sender as TAction).Enabled := (FArchive is TJclCompressArchive)
+ and (FArchive.MultipleItemContainer or (ListView1.Items.Count = 0));
end;
procedure TForm1.ActionAlwaysEnabled(Sender: TObject);
@@ -119,17 +135,42 @@
(Sender as TAction).Enabled := True;
end;
+procedure TForm1.ActionDeleteExecute(Sender: TObject);
+var
+ Index: Integer;
+begin
+ for Index := ListView1.Items.Count - 1 downto 0 do
+ if ListView1.Items[Index].Selected then
+ begin
+ (FArchive as TJclUpdateArchive).DeleteItem(Index);
+ Break;
+ end;
+
+ ListView1.Items.Count := FArchive.ItemCount;
+end;
+
+procedure TForm1.ActionDeleteUpdate(Sender: TObject);
+begin
+ (Sender as TAction).Enabled := (FArchive is TJclUpdateArchive) and (ListView1.SelCount = 1);
+end;
+
procedure TForm1.ActionExtractAllExecute(Sender: TObject);
var
Directory: string;
begin
if FileCtrl.SelectDirectory('Target directory', '', Directory, [sdNewUI], Self) then
- (FArchive as TJclDecompressArchive).ExtractAll(Directory, True);
+ begin
+ if FArchive is TJclDecompressArchive then
+ TJclDecompressArchive(FArchive).ExtractAll(Directory, True)
+ else
+ if FArchive is TJclUpdateArchive then
+ TJclUpdateArchive(FArchive).ExtractAll(Directory, True);
+ end;
end;
procedure TForm1.ActionExtractAllUpdate(Sender: TObject);
begin
- (Sender as TAction).Enabled := FArchive is TJclDecompressArchive;
+ (Sender as TAction).Enabled := (FArchive is TJclDecompressArchive) or (FArchive is TJclUpdateArchive);
end;
procedure TForm1.ActionExtractSelectedExecute(Sender: TObject);
@@ -142,13 +183,18 @@
for Index := 0 to ListView1.Items.Count - 1 do
FArchive.Items[Index].Selected := ListView1.Items.Item[Index].Selected;
- (FArchive as TJclDecompressArchive).ExtractSelected(Directory, True);
+ if FArchive is TJclDecompressArchive then
+ TJclDecompressArchive(FArchive).ExtractSelected(Directory, True)
+ else
+ if FArchive is TJclUpdateArchive then
+ TJclUpdateArchive(FArchive).ExtractSelected(Directory, True);
end;
end;
procedure TForm1.ActionExtractSelectedUpdate(Sender: TObject);
begin
-// (Sender as TAction).Enabled := (FArchive is TJclDecompressArchive) and (ListView1.SelCount > 0);
+ (Sender as TAction).Enabled := ((FArchive is TJclDecompressArchive) or (FArchive is TJclUpdateArchive))
+ and (ListView1.SelCount > 0);
end;
procedure TForm1.ActionNewExecute(Sender: TObject);
@@ -202,6 +248,57 @@
end;
end;
+procedure TForm1.ActionNewRWExecute(Sender: TObject);
+var
+ ArchiveFileName, ArchiveExt, VolumeSizeStr, Password: string;
+ VolumeSize: Int64;
+ Code: Integer;
+begin
+ if SaveDialogArchive.Execute then
+ begin
+ CloseArchive;
+
+ ArchiveFileName := SaveDialogArchive.FileName;
+ VolumeSizeStr := '0';
+ repeat
+ if InputQuery('Split archive?', 'Volume size in byte:', VolumeSizeStr) then
+ Val(VolumeSizeStr, VolumeSize, Code)
+ else
+ begin
+ VolumeSize := 0;
+ Code := 0;
+ end;
+ until Code = 0;
+
+ InputQuery('Archive password', 'Value', Password);
+
+ ArchiveExt := ExtractFileExt(ArchiveFileName);
+ if VolumeSize <> 0 then
+ ArchiveFileName := ArchiveFileName + '.%d';
+
+ if AnsiSameText(ArchiveExt, '.zip') then
+ FArchive := TJclZipUpdateArchive.Create(ArchiveFileName, VolumeSize, VolumeSize <> 0)
+ else
+ if AnsiSameText(ArchiveExt, '.tar') then
+ FArchive := TJclTarUpdateArchive.Create(ArchiveFileName, VolumeSize, VolumeSize <> 0)
+ else
+ if AnsiSameText(ArchiveExt, '.7z') then
+ FArchive := TJcl7zUpdateArchive.Create(ArchiveFileName, VolumeSize, VolumeSize <> 0)
+ else
+ if AnsiSameText(ArchiveExt, '.bz2') then
+ FArchive := TJclBZ2UpdateArchive.Create(ArchiveFileName, VolumeSize, VolumeSize <> 0)
+ else
+ if AnsiSameText(ArchiveExt, '.gz') then
+ FArchive := TJclGZipUpdateArchive.Create(ArchiveFileName, VolumeSize, VolumeSize <> 0);
+
+ if Assigned(FArchive) then
+ begin
+ FArchive.Password := Password;
+ FArchive.OnProgress := ArchiveProgress;
+ end;
+ end;
+end;
+
procedure TForm1.ActionOpenExecute(Sender: TObject);
var
ArchiveFileName, ArchiveFileExt, Password: string;
@@ -275,7 +372,13 @@
begin
FArchive.Password := Password;
FArchive.OnProgress := ArchiveProgress;
- (FArchive as TJclDecompressArchive).ListFiles;
+
+ if FArchive is TJclDecompressArchive then
+ TJclDecompressArchive(FArchive).ListFiles
+ else
+ if FArchive is TJclUpdateArchive then
+ TJclUpdateArchive(FArchive).ListFiles;
+
ListView1.Items.BeginUpdate;
try
while ListView1.Items.Count < FArchive.ItemCount do
@@ -287,6 +390,64 @@
end;
end;
+procedure TForm1.ActionOpenRWExecute(Sender: TObject);
+var
+ ArchiveFileName, ArchiveFileExt, Password: string;
+ SplitArchive: Boolean;
+begin
+ if OpenDialogArchiveRW.Execute then
+ begin
+ CloseArchive;
+
+ ArchiveFileName := OpenDialogArchiveRW.FileName;
+ ArchiveFileExt := ExtractFileExt(ArchiveFileName);
+ SplitArchive := AnsiSameText(ArchiveFileExt, '.001');
+ if SplitArchive then
+ begin
+ ArchiveFileName := ChangeFileExt(ArchiveFileName, '');
+ ArchiveFileExt := ExtractFileExt(ArchiveFileName);
+ ArchiveFileName := ArchiveFileName + '.%d';
+ end;
+
+ InputQuery('Archive password', 'Value', Password);
+
+ if AnsiSameText(ArchiveFileExt, '.zip') then
+ FArchive := TJclZipUpdateArchive.Create(ArchiveFileName, 0, SplitArchive)
+ else
+ if AnsiSameText(ArchiveFileExt, '.bz2') then
+ FArchive := TJclBZ2UpdateArchive.Create(ArchiveFileName, 0, SplitArchive)
+ else
+ if AnsiSameText(ArchiveFileExt, '.7z') then
+ FArchive := TJcl7zUpdateArchive.Create(ArchiveFileName, 0, SplitArchive)
+ else
+ if AnsiSameText(ArchiveFileExt, '.tar') then
+ FArchive := TJclTarUpdateArchive.Create(ArchiveFileName, 0, SplitArchive)
+ else
+ if AnsiSameText(ArchiveFileExt, '.gz') then
+ FArchive := TJclGZipUpdateArchive.Create(ArchiveFileName, 0, SplitArchive);
+
+ if Assigned(FArchive) then
+ begin
+ FArchive.Password := Password;
+ FArchive.OnProgress := ArchiveProgress;
+
+ if FArchive is TJclDecompressArchive then
+ TJclDecompressArchive(FArchive).ListFiles
+ else
+ if FArchive is TJclUpdateArchive then
+ TJclUpdateArchive(FArchive).ListFiles;
+
+ ListView1.Items.BeginUpdate;
+ try
+ while ListView1.Items.Count < FArchive.ItemCount do
+ ListView1.Items.Add;
+ finally
+ ListView1.Items.EndUpdate;
+ end;
+ end;
+ end;
+end;
+
procedure TForm1.ActionSaveExecute(Sender: TObject);
begin
(FArchive as TJclCompressArchive).Compress;
@@ -304,7 +465,7 @@
begin
MyValue := Value;
MyMaxValue := MaxValue;
-
+
while MyMaxValue > High(Word) do
begin
MyMaxValue := MyMaxValue shr 8;
Modified: branches/compression/jcl/source/common/JclCompression.pas
===================================================================
--- branches/compression/jcl/source/common/JclCompression.pas 2007-08-21 14:01:17 UTC (rev 2139)
+++ branches/compression/jcl/source/common/JclCompression.pas 2007-08-22 21:30:28 UTC (rev 2140)
@@ -474,7 +474,7 @@
// miscellaneous
FValidProperties: TJclCompressionItemProperties;
FModifiedProperties: TJclCompressionItemProperties;
- FPackedIndex: Integer;
+ FPackedIndex: Cardinal;
FSelected: Boolean;
FOperationSuccess: TJclCompressionOperationSuccess;
// file properties
@@ -496,6 +496,7 @@
// property checkers
procedure CheckGetProperty(AProperty: TJclCompressionItemProperty); virtual; abstract;
procedure CheckSetProperty(AProperty: TJclCompressionItemProperty); virtual; abstract;
+ function ValidateExtraction(Index: Integer): Boolean; virtual;
// property getters
function GetAttributes: Cardinal;
function GetComment: WideString;
@@ -512,7 +513,7 @@
function GetMethod: WideString;
function GetPackedName: WideString;
function GetPackedSize: Int64;
- function GetStream: TStream; virtual; abstract;
+ function GetStream: TStream;
function GetUser: WideString;
// property setters
procedure SetAttributes(const Value: Cardinal);
@@ -563,7 +564,7 @@
property ValidProperties: TJclCompressionItemProperties read FValidProperties;
property ModifiedProperties: TJclCompressionItemProperties read FModifiedProperties
write FModifiedProperties;
- property PackedIndex: Integer read FPackedIndex;
+ property PackedIndex: Cardinal read FPackedIndex;
property Selected: Boolean read FSelected write FSelected;
end;
@@ -585,6 +586,8 @@
property VolumeMaxSize: Int64 read FVolumeMaxSize;
end;
+ TJclStreamAccess = (saCreate, saReadOnly, saWriteOnly, saReadWrite);
+
TJclCompressionArchive = class
private
FOnProgress: TJclCompressionProgressEvent;
@@ -595,6 +598,7 @@
FVolumeIndexOffset: Integer;
FVolumeMaxSize: Int64;
FVolumeNameMask: string;
+ FProgressMax: Int64;
function GetItemCount: Integer;
function GetItem(Index: Integer): TJclCompressionItem;
function GetVolumeCount: Integer;
@@ -606,13 +610,18 @@
procedure CreateCompressionObject; virtual;
procedure FreeCompressionObject; virtual;
- function InternalOpenVolume(const FileName: TFileName): TStream; virtual; abstract;
+ function InternalOpenVolume(const FileName: TFileName): TStream;
+ function TranslateItemPath(const ItemPath, OldBase, NewBase: WideString): WideString;
procedure DoProgress(const Value, MaxValue: Int64);
function NeedVolume(Index: Integer): TStream;
function NeedVolumeMaxSize(Index: Integer): Int64;
function GetItemClass: TJclCompressionItemClass; virtual; abstract;
public
+ class function MultipleItemContainer: Boolean; virtual;
+ class function VolumeAccess: TJclStreamAccess; virtual; abstract;
+ class function ItemAccess: TJclStreamAccess; virtual; abstract;
+
constructor Create(Volume0: TStream; AVolumeMaxSize: Int64 = 0;
AOwnVolume: Boolean = False); overload;
constructor Create(const VolumeName: string; AVolumeMaxSize: Int64 = 0;
@@ -657,7 +666,6 @@
protected
procedure CheckGetProperty(AProperty: TJclCompressionItemProperty); override;
procedure CheckSetProperty(AProperty: TJclCompressionItemProperty); override;
- function GetStream: TStream; override;
end;
TJclCompressArchive = class(TJclCompressionArchive)
@@ -665,15 +673,15 @@
FBaseRelName: WideString;
FBaseDirName: string;
FAddFilesInDir: Boolean;
- function InternalGetRelItemName(const ItemName: TFileName): WideString;
procedure InternalAddFile(const Directory: string; const FileInfo: TSearchRec);
procedure InternalAddDirectory(const Directory: string);
protected
FCompressing: Boolean;
procedure CheckNotCompressing;
+ public
+ class function VolumeAccess: TJclStreamAccess; override;
+ class function ItemAccess: TJclStreamAccess; override;
- function InternalOpenVolume(const FileName: TFileName): TStream; override;
- public
function AddDirectory(const PackedName: WideString;
const DirName: string = ''; RecurseIntoDir: Boolean = False;
AddFilesInDir: Boolean = False): Integer; overload; virtual;
@@ -688,8 +696,7 @@
protected
procedure CheckGetProperty(AProperty: TJclCompressionItemProperty); override;
procedure CheckSetProperty(AProperty: TJclCompressionItemProperty); override;
- function GetStream: TStream; override;
- function ValidateExtraction(Index: Integer): Boolean; virtual;
+ function ValidateExtraction(Index: Integer): Boolean; override;
end;
// return False not to extract this file
@@ -709,10 +716,12 @@
procedure CheckNotDecompressing;
procedure CheckListing;
- function InternalOpenVolume(const FileName: TFileName): TStream; override;
- function ValidateExtraction(Index: Integer; out FileName: TFileName; var AStream: TStream;
+ function ValidateExtraction(Index: Integer; var FileName: TFileName; var AStream: TStream;
var AOwnsStream: Boolean): Boolean; virtual;
public
+ class function VolumeAccess: TJclStreamAccess; override;
+ class function ItemAccess: TJclStreamAccess; override;
+
procedure ListFiles; virtual; abstract;
procedure ExtractSelected(const ADestinationDir: string = '';
AAutoCreateSubDir: Boolean = True); virtual; abstract;
@@ -724,6 +733,44 @@
property AutoCreateSubDir: Boolean read FAutoCreateSubDir;
end;
+ TJclUpdateItem = class(TJclCompressionItem)
+ protected
+ procedure CheckGetProperty(AProperty: TJclCompressionItemProperty); override;
+ procedure CheckSetProperty(AProperty: TJclCompressionItemProperty); override;
+ function ValidateExtraction(Index: Integer): Boolean; override;
+ end;
+
+ TJclUpdateArchive = class(TJclCompressArchive)
+ private
+ FOnExtract: TJclCompressionExtractEvent;
+ FAutoCreateSubDir: Boolean;
+ protected
+ FDecompressing: Boolean;
+ FListing: Boolean;
+ FDestinationDir: string;
+ FExtractingAllIndex: Integer;
+ procedure CheckNotDecompressing;
+ procedure CheckListing;
+
+ function ValidateExtraction(Index: Integer; var FileName: TFileName; var AStream: TStream;
+ var AOwnsStream: Boolean): Boolean; virtual;
+ public
+ class function VolumeAccess: TJclStreamAccess; override;
+ class function ItemAccess: TJclStreamAccess; override;
+
+ procedure ListFiles; virtual; abstract;
+ procedure ExtractSelected(const ADestinationDir: string = '';
+ AAutoCreateSubDir: Boolean = True); virtual; abstract;
+ procedure ExtractAll(const ADestinationDir: string = '';
+ AAutoCreateSubDir: Boolean = True); virtual; abstract;
+ procedure DeleteItem(Index: Integer); virtual; abstract;
+ procedure RemoveItem(const PackedName: WideString); virtual; abstract;
+
+ property OnExtract: TJclCompressionExtractEvent read FOnExtract write FOnExtract;
+ property DestinationDir: string read FDestinationDir;
+ property AutoCreateSubDir: Boolean read FAutoCreateSubDir;
+ end;
+
// sevenzip classes for compression
type
TJclSevenzipCompressArchive = class(TJclCompressArchive)
@@ -732,7 +779,6 @@
FCompressionLevel: Cardinal;
procedure SetCompressionLevel(Value: Cardinal);
protected
- FProgressMax: Int64;
procedure CreateCompressionObject; override;
procedure FreeCompressionObject; override;
function GetCLSID: TGUID; virtual; abstract;
@@ -757,6 +803,7 @@
function GetCLSID: TGUID; override;
procedure SetCompressionProperties; override;
public
+ class function MultipleItemContainer: Boolean; override;
property DefaultMethod: TJclZipMethod read FDefaultMethod write SetDefaultMethod;
end;
@@ -770,6 +817,8 @@
protected
procedure CreateCompressionObject; override;
function GetCLSID: TGUID; override;
+ public
+ class function MultipleItemContainer: Boolean; override;
end;
TJclTarCompressArchive = class(TJclSevenzipCompressArchive)
@@ -777,6 +826,8 @@
procedure CreateCompressionObject; override;
function GetCLSID: TGUID; override;
procedure SetCompressionProperties; override;
+ public
+ class function MultipleItemContainer: Boolean; override;
end;
TJclGZipCompressArchive = class(TJclSevenzipCompressArchive)
@@ -791,10 +842,7 @@
private
FInArchive: IInArchive;
FOpened: Boolean;
- FListed: Boolean;
- FInStream: IInStream;
protected
- FProgressMax: Int64;
procedure OpenArchive;
procedure CreateCompressionObject; override;
procedure FreeCompressionObject; override;
@@ -813,6 +861,8 @@
TJclZipDecompressArchive = class(TJclSevenzipDecompressArchive)
protected
function GetCLSID: TGUID; override;
+ public
+ class function MultipleItemContainer: Boolean; override;
end;
TJclBZ2DecompressArchive = class(TJclSevenzipDecompressArchive)
@@ -823,46 +873,64 @@
TJclRarDecompressArchive = class(TJclSevenzipDecompressArchive)
protected
function GetCLSID: TGUID; override;
+ public
+ class function MultipleItemContainer: Boolean; override;
end;
TJclArjDecompressArchive = class(TJclSevenzipDecompressArchive)
protected
function GetCLSID: TGUID; override;
+ public
+ class function MultipleItemContainer: Boolean; override;
end;
TJclZDecompressArchive = class(TJclSevenzipDecompressArchive)
protected
function GetCLSID: TGUID; override;
+ public
+ class function MultipleItemContainer: Boolean; override;
end;
TJclLzhDecompressArchive = class(TJclSevenzipDecompressArchive)
protected
function GetCLSID: TGUID; override;
+ public
+ class function MultipleItemContainer: Boolean; override;
end;
TJcl7zDecompressArchive = class(TJclSevenzipDecompressArchive)
protected
function GetCLSID: TGUID; override;
+ public
+ class function MultipleItemContainer: Boolean; override;
end;
TJclNsisDecompressArchive = class(TJclSevenzipDecompressArchive)
protected
function GetCLSID: TGUID; override;
+ public
+ class function MultipleItemContainer: Boolean; override;
end;
TJclIsoDecompressArchive = class(TJclSevenzipDecompressArchive)
protected
function GetCLSID: TGUID; override;
+ public
+ class function MultipleItemContainer: Boolean; override;
end;
TJclCabDecompressArchive = class(TJclSevenzipDecompressArchive)
protected
function GetCLSID: TGUID; override;
+ public
+ class function MultipleItemContainer: Boolean; override;
end;
TJclChmDecompressArchive = class(TJclSevenzipDecompressArchive)
protected
function GetCLSID: TGUID; override;
+ public
+ class function MultipleItemContainer: Boolean; override;
end;
TJclSplitDecompressArchive = class(TJclSevenzipDecompressArchive)
@@ -873,27 +941,106 @@
TJclRpmDecompressArchive = class(TJclSevenzipDecompressArchive)
protected
function GetCLSID: TGUID; override;
+ public
+ class function MultipleItemContainer: Boolean; override;
end;
TJclDebDecompressArchive = class(TJclSevenzipDecompressArchive)
protected
function GetCLSID: TGUID; override;
+ public
+ class function MultipleItemContainer: Boolean; override;
end;
TJclCpioDecompressArchive = class(TJclSevenzipDecompressArchive)
protected
function GetCLSID: TGUID; override;
+ public
+ class function MultipleItemContainer: Boolean; override;
end;
TJclTarDecompressArchive = class(TJclSevenzipDecompressArchive)
protected
function GetCLSID: TGUID; override;
+ public
+ class function MultipleItemContainer: Boolean; override;
end;
TJclGZipDecompressArchive = class(TJclSevenzipDecompressArchive)
protected
function GetCLSID: TGUID; override;
end;
+
+//sevenzip classes for updates (read and write)
+type
+ TJclSevenzipUpdateArchive = class(TJclUpdateArchive)
+ private
+ FInArchive: IInArchive;
+ FOutArchive: IOutArchive;
+ FOpened: Boolean;
+ FCompressionLevel: Cardinal;
+ procedure SetCompressionLevel(Value: Cardinal);
+ protected
+ procedure OpenArchive;
+ procedure CreateCompressionObject; override;
+ procedure FreeCompressionObject; override;
+ function GetCLSID: TGUID; virtual; abstract;
+ function GetItemClass: TJclCompressionItemClass; override;
+ procedure SetCompressionProperties; virtual;
+ public
+ procedure ListFiles; override;
+ procedure ExtractSelected(const ADestinationDir: string = '';
+ AAutoCreateSubDir: Boolean = True); override;
+ procedure ExtractAll(const ADestinationDir: string = '';
+ AAutoCreateSubDir: Boolean = True); override;
+ procedure Compress; override;
+ procedure DeleteItem(Index: Integer); override;
+ procedure RemoveItem(const PackedName: WideString); override;
+
+ property CompressionLevel: Cardinal read FCompressionLevel write SetCompressionLevel; // X9
+ end;
+
+ TJclZipUpdateArchive = class(TJclSevenzipUpdateArchive)
+ private
+ FDefaultMethod: TJclZipMethod;
+ procedure SetDefaultMethod(Value: TJclZipMethod);
+ protected
+ procedure CreateCompressionObject; override;
+ function GetCLSID: TGUID; override;
+ procedure SetCompressionProperties; override;
+ public
+ class function MultipleItemContainer: Boolean; override;
+ property DefaultMethod: TJclZipMethod read FDefaultMethod write SetDefaultMethod;
+ end;
+
+ TJclBZ2UpdateArchive = class(TJclSevenzipUpdateArchive)
+ protected
+ procedure CreateCompressionObject; override;
+ function GetCLSID: TGUID; override;
+ end;
+
+ TJcl7zUpdateArchive = class(TJclSevenzipUpdateArchive)
+ protected
+ procedure CreateCompressionObject; override;
+ function GetCLSID: TGUID; override;
+ public
+ class function MultipleItemContainer: Boolean; override;
+ end;
+
+ TJclTarUpdateArchive = class(TJclSevenzipUpdateArchive)
+ protected
+ procedure CreateCompressionObject; override;
+ function GetCLSID: TGUID; override;
+ procedure SetCompressionProperties; override;
+ public
+ class function MultipleItemContainer: Boolean; override;
+ end;
+
+ TJclGZipUpdateArchive = class(TJclSevenzipUpdateArchive)
+ protected
+ procedure CreateCompressionObject; override;
+ function GetCLSID: TGUID; override;
+ end;
{$ENDIF MSWINDOWS}
{$IFDEF UNITVERSIONING}
@@ -2191,12 +2338,39 @@
end;
end;
+{$IFDEF MSWINDOWS}
+
+function OpenFileStream(const FileName: TFileName; StreamAccess: TJclStreamAccess): TStream;
+begin
+ Result := nil;
+ case StreamAccess of
+ saCreate:
+ Result := TFileStream.Create(FileName, fmCreate);
+ saReadOnly:
+ if FileExists(FileName) then
+ Result := TFileStream.Create(FileName, fmOpenRead or fmShareDenyWrite);
+ saWriteOnly:
+ if FileExists(FileName) then
+ Result := TFileStream.Create(FileName, fmOpenWrite)
+ else
+ if FileName <> '' then
+ Result := TFileStream.Create(FileName, fmCreate);
+ saReadWrite:
+ if FileExists(FileName) then
+ Result := TFileStream.Create(FileName, fmOpenReadWrite)
+ else
+ if FileName <> '' then
+ Result := TFileStream.Create(FileName, fmCreate);
+ end;
+end;
+
//=== { TJclCompressionItem } ================================================
-{$IFDEF MSWINDOWS}
+
constructor TJclCompressionItem.Create(AArchive: TJclCompressionArchive);
begin
inherited Create;
FArchive := AArchive;
+ FPackedIndex := $FFFFFFFF;
end;
destructor TJclCompressionItem.Destroy;
@@ -2298,6 +2472,14 @@
Result := FPackedSize;
end;
+function TJclCompressionItem.GetStream: TStream;
+begin
+ if not Assigned(FStream) and (FileName <> '') then
+ FStream := OpenFileStream(FileName, Archive.ItemAccess);
+
+ Result := FStream;
+end;
+
function TJclCompressionItem.GetUser: WideString;
begin
CheckGetProperty(ipUser);
@@ -2458,6 +2640,11 @@
Include(FValidProperties, ipUser);
end;
+function TJclCompressionItem.ValidateExtraction(Index: Integer): Boolean;
+begin
+ Result := False;
+end;
+
//=== { TJclCompressionVolume } ==============================================
constructor TJclCompressionVolume.Create(AStream: TStream; AOwnsStream: Boolean;
@@ -2605,6 +2792,17 @@
Result := FVolumes.Count;
end;
+function TJclCompressionArchive.InternalOpenVolume(
+ const FileName: TFileName): TStream;
+begin
+ Result := OpenFileStream(FileName, VolumeAccess);
+end;
+
+class function TJclCompressionArchive.MultipleItemContainer: Boolean;
+begin
+ Result := True;
+end;
+
function TJclCompressionArchive.NeedVolume(Index: Integer): TStream;
var
AVolume: TJclCompressionVolume;
@@ -2713,6 +2911,12 @@
TJclCompressionItem(FItems.Items[Index]).Selected := True;
end;
+function TJclCompressionArchive.TranslateItemPath(const ItemPath, OldBase,
+ NewBase: WideString): WideString;
+begin
+ Result := PathGetRelativePath(NewBase, PathGetRelativePath(OldBase, ItemPath));
+end;
+
procedure TJclCompressionArchive.UnselectAll;
var
Index: Integer;
@@ -2737,16 +2941,6 @@
(Archive as TJclCompressArchive).CheckNotCompressing;
end;
-function TJclCompressItem.GetStream: TStream;
-begin
- if not Assigned(FStream) and (FileName <> '') then
- begin
- FStream := TFileStream.Create(FileName, fmOpenRead or fmShareDenyWrite);
- FOwnsStream := True;
- end;
- Result := FStream;
-end;
-
//=== { TJclCompressArchive } ================================================
procedure TJclCompressArchive.CheckNotCompressing;
@@ -2832,7 +3026,7 @@
procedure TJclCompressArchive.InternalAddDirectory(const Directory: string);
begin
- AddDirectory(InternalGetRelItemName(Directory), Directory, False, FAddFilesInDir);
+ AddDirectory(TranslateItemPath(Directory, FBaseDirName, FBaseRelName), Directory, False, FAddFilesInDir);
end;
procedure TJclCompressArchive.InternalAddFile(const Directory: string;
@@ -2845,7 +3039,7 @@
AItem := GetItemClass.Create(Self);
try
- AItem.PackedName := InternalGetRelItemName(AFileName);
+ AItem.PackedName := TranslateItemPath(AFileName, FBaseDirName, FBaseRelName);
AItem.FileName := AFileName;
except
AItem.Destroy;
@@ -2855,21 +3049,14 @@
FItems.Add(AItem);
end;
-function TJclCompressArchive.InternalGetRelItemName(
- const ItemName: TFileName): WideString;
-var
- RelPath: string;
+class function TJclCompressArchive.ItemAccess: TJclStreamAccess;
begin
- RelPath := PathGetRelativePath(FBaseDirName, ItemName);
- if (RelPath <> '.') and (RelPath <> '') then
- Result := FBaseRelName + DirDelimiter + RelPath
- else
- Result := FBaseRelName;
+ Result := saReadOnly;
end;
-function TJclCompressArchive.InternalOpenVolume(const FileName: TFileName): TStream;
+class function TJclCompressArchive.VolumeAccess: TJclStreamAccess;
begin
- Result := TFileStream.Create(FileName, fmCreate or fmShareExclusive);
+ Result := saWriteOnly;
end;
//=== { TJclDecompressItem } =================================================
@@ -2886,16 +3073,6 @@
(Archive as TJclDecompressArchive).CheckListing;
end;
-function TJclDecompressItem.GetStream: TStream;
-begin
- if not Assigned(FStream) and (FileName <> '') then
- begin
- FStream := TFileStream.Create(FileName, fmCreate or fmShareDenyWrite);
- FOwnsStream := True;
- end;
- Result := FStream;
-end;
-
function TJclDecompressItem.ValidateExtraction(Index: Integer): Boolean;
begin
Result := (FArchive as TJclDecompressArchive).ValidateExtraction(Index,
@@ -2916,22 +3093,20 @@
raise EJclCompressionError.CreateRes(@RsCompressionDecompressingError);
end;
-function TJclDecompressArchive.InternalOpenVolume(const FileName: TFileName): TStream;
+class function TJclDecompressArchive.ItemAccess: TJclStreamAccess;
begin
- if FileExists(FileName) then
- Result := TFileStream.Create(FileName, fmOpenRead or fmShareDenyWrite)
- else
- Result := nil;
+ Result := saCreate;
end;
function TJclDecompressArchive.ValidateExtraction(Index: Integer;
- out FileName: TFileName; var AStream: TStream; var AOwnsStream: Boolean): Boolean;
+ var FileName: TFileName; var AStream: TStream; var AOwnsStream: Boolean): Boolean;
begin
if FExtractingAllIndex <> -1 then
// extracting all
FExtractingAllIndex := Index;
- FileName := PathGetRelativePath(FDestinationDir, Items[Index].PackedName);
+ if FileName = '' then
+ FileName := PathGetRelativePath(FDestinationDir, Items[Index].PackedName);
Result := True;
if Assigned(FOnExtract) then
@@ -2946,6 +3121,79 @@
end;
end;
+class function TJclDecompressArchive.VolumeAccess: TJclStreamAccess;
+begin
+ Result := saReadOnly;
+end;
+
+//=== { TJclUpdateItem } =====================================================
+
+procedure TJclUpdateItem.CheckGetProperty(
+ AProperty: TJclCompressionItemProperty);
+begin
+ // TODO
+end;
+
+procedure TJclUpdateItem.CheckSetProperty(
+ AProperty: TJclCompressionItemProperty);
+begin
+ (Archive as TJclCompressArchive).CheckNotCompressing;
+end;
+
+function TJclUpdateItem.ValidateExtraction(Index: Integer): Boolean;
+begin
+ Result := (Archive as TJclUpdateArchive).ValidateExtraction(Index, FFileName,
+ FStream, FOwnsStream);
+end;
+
+//=== { TJclUpdateArchive } ==================================================
+
+procedure TJclUpdateArchive.CheckListing;
+begin
+ if not FListing then
+ raise EJclCompressionError.CreateRes(@RsCompressionUnavailableProperty);
+end;
+
+procedure TJclUpdateArchive.CheckNotDecompressing;
+begin
+ if FDecompressing then
+ raise EJclCompressionError.CreateRes(@RsCompressionDecompressingError);
+end;
+
+class function TJclUpdateArchive.ItemAccess: TJclStreamAccess;
+begin
+ Result := saReadWrite;
+end;
+
+function TJclUpdateArchive.ValidateExtraction(Index: Integer;
+ var FileName: TFileName; var AStream: TStream;
+ var AOwnsStream: Boolean): Boolean;
+begin
+ if FExtractingAllIndex <> -1 then
+ // extracting all
+ FExtractingAllIndex := Index;
+
+ if FileName = '' then
+ FileName := PathGetRelativePath(FDestinationDir, Items[Index].PackedName);
+ Result := True;
+
+ if Assigned(FOnExtract) then
+ Result := FOnExtract(Self, Index, FileName, AStream, AOwnsStream);
+
+ if Result and not Assigned(AStream) and AutoCreateSubDir then
+ begin
+ if (Items[Index].Attributes and faDirectory) <> 0 then
+ ForceDirectories(FileName)
+ else
+ ForceDirectories(ExtractFilePath(FileName));
+ end;
+end;
+
+class function TJclUpdateArchive.VolumeAccess: TJclStreamAccess;
+begin
+ Result := saReadWrite;
+end;
+
//=== { TJclSevenzipOutStream } ==============================================
type
@@ -2953,13 +3201,13 @@
IOutStream, IUnknown)
private
FArchive: TJclCompressionArchive;
- FFileIndex: Integer;
+ FItemIndex: Integer;
FStream: TStream;
FOwnsStream: Boolean;
procedure NeedStream;
procedure ReleaseStream;
public
- constructor Create(AArchive: TJclCompressionArchive; AFileIndex: Integer); overload;
+ constructor Create(AArchive: TJclCompressionArchive; AItemIndex: Integer); overload;
constructor Create(AStream: TStream; AOwnsStream: Boolean); overload;
destructor Destroy; override;
// ISequentialOutStream
@@ -2969,12 +3217,12 @@
function SetSize(NewSize: Int64): HRESULT; stdcall;
end;
-constructor TJclSevenzipOutStream.Create(AArchive: TJclCompressionArchive; AFileIndex: Integer);
+constructor TJclSevenzipOutStream.Create(AArchive: TJclCompressionArchive; AItemIndex: Integer);
begin
inherited Create;
FArchive := AArchive;
- FFileIndex := AFileIndex;
+ FItemIndex := AItemIndex;
FStream := nil;
FOwnsStream := False;
end;
@@ -2984,7 +3232,7 @@
inherited Create;
FArchive := nil;
- FFileIndex := -1;
+ FItemIndex := -1;
FStream := AStream;
FOwnsStream := AOwnsStream;
end;
@@ -2998,8 +3246,8 @@
procedure TJclSevenzipOutStream.NeedStream;
begin
- if Assigned(FArchive) then
- FStream := FArchive.Items[FFileIndex].Stream;
+ if Assigned(FArchive) and not Assigned(FStream) then
+ FStream := FArchive.Items[FItemIndex].Stream;
if not Assigned(FStream) then
raise EJclCompressionError.CreateRes(@RsCompression7zUnassignedStream);
@@ -3008,7 +3256,7 @@
procedure TJclSevenzipOutStream.ReleaseStream;
begin
if Assigned(FArchive) then
- FArchive.Items[FFileIndex].ReleaseStream
+ FArchive.Items[FItemIndex].ReleaseStream
else if FOwnsStream then
FStream.Free;
end;
@@ -3057,13 +3305,13 @@
IInStream, IStreamGetSize, IUnknown)
private
FArchive: TJclCompressionArchive;
- FFileIndex: Integer;
+ FItemIndex: Integer;
FStream: TStream;
FOwnsStream: Boolean;
procedure NeedStream;
procedure ReleaseStream;
public
- constructor Create(AArchive: TJclCompressionArchive; AFileIndex: Integer); overload;
+ constructor Create(AArchive: TJclCompressionArchive; AItemIndex: Integer); overload;
constructor Create(AStream: TStream; AOwnsStream: Boolean); overload;
destructor Destroy; override;
// ISequentialInStream
@@ -3074,12 +3322,12 @@
function GetSize(Size: PInt64): HRESULT; stdcall;
end;
-constructor TJclSevenzipInStream.Create(AArchive: TJclCompressionArchive; AFileIndex: Integer);
+constructor TJclSevenzipInStream.Create(AArchive: TJclCompressionArchive; AItemIndex: Integer);
begin
inherited Create;
FArchive := AArchive;
- FFileIndex := AFileIndex;
+ FItemIndex := AItemIndex;
FStream := nil;
FOwnsStream := False;
end;
@@ -3089,7 +3337,7 @@
inherited Create;
FArchive := nil;
- FFileIndex := -1;
+ FItemIndex := -1;
FStream := AStream;
FOwnsStream := AOwnsStream;
end;
@@ -3112,7 +3360,7 @@
procedure TJclSevenzipInStream.NeedStream;
begin
if Assigned(FArchive) and not Assigned(FStream) then
- FStream := FArchive.Items[FFileIndex].Stream;
+ FStream := FArchive.Items[FItemIndex].Stream;
if not Assigned(FStream) then
raise EJclCompressionError.CreateRes(@RsCompression7zUnassignedStream);
@@ -3134,7 +3382,7 @@
procedure TJclSevenzipInStream.ReleaseStream;
begin
if Assigned(FArchive) then
- FArchive.Items[FFileIndex].ReleaseStream
+ FArchive.Items[FItemIndex].ReleaseStream
else if FOwnsStream then
FStream.Free;
end;
@@ -3145,7 +3393,7 @@
NewPos: Int64;
begin
NeedStream;
-
+
// STREAM_SEEK_SET = 0 = soFromBeginning
// STREAM_SEEK_CUR = 1 = soFromCurrent
// STREAM_SEEK_END = 2 = soFromEnd
@@ -3163,13 +3411,13 @@
raise EJclCompressionError.CreateResFmt(@RsCompression7zReturnError, [Value, SysErrorMessage(Value)]);
end;
-function Get7zWideStringProp(const AArchive: IInArchive; FileIndex: Integer;
+function Get7zWideStringProp(const AArchive: IInArchive; ItemIndex: Integer;
PropID: Cardinal): WideString;
var
Value: TPropVariant;
begin
ZeroMemory(@Value, SizeOf(Value));
- SevenzipCheck(AArchive.GetProperty(FileIndex, PropID, Value));
+ SevenzipCheck(AArchive.GetProperty(ItemIndex, PropID, Value));
case Value.vt of
VT_EMPTY, VT_NULL:
Result := '';
@@ -3187,13 +3435,13 @@
end;
end;
-function Get7zCardinalProp(const AArchive: IInArchive; FileIndex: Integer;
+function Get7zCardinalProp(const AArchive: IInArchive; ItemIndex: Integer;
PropID: Cardinal): Cardinal;
var
Value: TPropVariant;
begin
ZeroMemory(@Value, SizeOf(Value));
- SevenzipCheck(AArchive.GetProperty(FileIndex, PropID, Value));
+ SevenzipCheck(AArchive.GetProperty(ItemIndex, PropID, Value));
case Value.vt of
VT_EMPTY, VT_NULL:
Result := 0;
@@ -3218,13 +3466,13 @@
end;
end;
-function Get7zInt64Prop(const AArchive: IInArchive; FileIndex: Integer;
+function Get7zInt64Prop(const AArchive: IInArchive; ItemIndex: Integer;
PropID: Cardinal): Int64;
var
Value: TPropVariant;
begin
ZeroMemory(@Value, SizeOf(Value));
- SevenzipCheck(AArchive.GetProperty(FileIndex, PropID, Value));
+ SevenzipCheck(AArchive.GetProperty(ItemIndex, PropID, Value));
case Value.vt of
VT_EMPTY, VT_NULL:
Result := 0;
@@ -3249,13 +3497,13 @@
end;
end;
-function Get7zFileTimeProp(const AArchive: IInArchive; FileIndex: Integer;
+function Get7zFileTimeProp(const AArchive: IInArchive; ItemIndex: Integer;
PropID: Cardinal): TFileTime;
var
Value: TPropVariant;
begin
ZeroMemory(@Value, SizeOf(Value));
- SevenzipCheck(AArchive.GetProperty(FileIndex, PropID, Value));
+ SevenzipCheck(AArchive.GetProperty(ItemIndex, PropID, Value));
case Value.vt of
VT_EMPTY, VT_NULL:
begin
@@ -3269,26 +3517,27 @@
end;
end;
-procedure Load7zFileAttribute(AInArchive: IInArchive; FileIndex: Integer;
+procedure Load7zFileAttribute(AInArchive: IInArchive; ItemIndex: Integer;
AItem: TJclCompressionItem);
begin
- AItem.PackedName := Get7zWideStringProp(AInArchive, FileIndex, kpidPath);
+ AItem.PackedName := Get7zWideStringProp(AInArchive, ItemIndex, kpidPath);
+ AItem.FPackedIndex := ItemIndex;
AItem.FileName := '';
AItem.Stream := nil;
AItem.OwnsStream := False;
- AItem.Attributes := Get7zCardinalProp(AInArchive, FileIndex, kpidAttributes);
- AItem.FileSize := Get7zInt64Prop(AInArchive, FileIndex, kpidSize);
- AItem.PackedSize := Get7zInt64Prop(AInArchive, FileIndex, kpidPackedSize);
- AItem.CreationTime := Get7zFileTimeProp(AInArchive, FileIndex, kpidCreationTime);
- AItem.LastAccessTime := Get7zFileTimeProp(AInArchive, FileIndex, kpidLastAccessTime);
- AItem.LastWriteTime := Get7zFileTimeProp(AInArchive, FileIndex, kpidLastWriteTime);
- AItem.Comment := Get7zWideStringProp(AInArchive, FileIndex, kpidComment);
- AItem.HostOS := Get7zWideStringProp(AInArchive, FileIndex, kpidHostOS);
- AItem.HostFS := Get7zWideStringProp(AInArchive, FileIndex, kpidFileSystem);
- AItem.User := Get7zWideStringProp(AInArchive, FileIndex, kpidUser);
- AItem.Group := Get7zWideStringProp(AInArchive, FileIndex, kpidGroup);
- AItem.CRC := Get7zCardinalProp(AInArchive, FileIndex, kpidCRC);
- AItem.Method := Get7zWideStringProp(AInArchive, FileIndex, kpidMethod);
+ AItem.Attributes := Get7zCardinalProp(AInArchive, ItemIndex, kpidAttributes);
+ AItem.FileSize := Get7zInt64Prop(AInArchive, ItemIndex, kpidSize);
+ AItem.PackedSize := Get7zInt64Prop(AInArchive, ItemIndex, kpidPackedSize);
+ AItem.CreationTime := Get7zFileTimeProp(AInArchive, ItemIndex, kpidCreationTime);
+ AItem.LastAccessTime := Get7zFileTimeProp(AInArchive, ItemIndex, kpidLastAccessTime);
+ AItem.LastWriteTime := Get7zFileTimeProp(AInArchive, ItemIndex, kpidLastWriteTime);
+ AItem.Comment := Get7zWideStringProp(AInArchive, ItemIndex, kpidComment);
+ AItem.HostOS := Get7zWideStringProp(AInArchive, ItemIndex, kpidHostOS);
+ AItem.HostFS := Get7zWideStringProp(AInArchive, ItemIndex, kpidFileSystem);
+ AItem.User := Get7zWideStringProp(AInArchive, ItemIndex, kpidUser);
+ AItem.Group := Get7zWideStringProp(AInArchive, ItemIndex, kpidGroup);
+ AItem.CRC := Get7zCardinalProp(AInArchive, ItemIndex, kpidCRC);
+ AItem.Method := Get7zWideStringProp(AInArchive, ItemIndex, kpidMethod);
// reset modified flags
AItem.ModifiedProperties := [];
@@ -3300,10 +3549,10 @@
TJclSevenzipUpdateCallback = class(TInterfacedObject, IUnknown, IProgress,
IArchiveUpdateCallback, IArchiveUpdateCallback2, ICryptoGetTextPassword2)
private
- FCompressionArchive: TJclSevenzipCompressArchive;
+ FArchive: TJclCompressionArchive;
FLastStream: Cardinal;
public
- constructor Create(ACompressionArchive: TJclSevenzipCompressArchive);
+ constructor Create(AArchive: TJclCompressionArchive);
// IProgress
function SetCompleted(CompleteValue: PInt64): HRESULT; stdcall;
function SetTotal(Total: Int64): HRESULT; stdcall;
@@ -3323,10 +3572,10 @@
end;
constructor TJclSevenzipUpdateCallback.Create(
- ACompressionArchive: TJclSevenzipCompressArchive);
+ AArchive: TJclCompressionArchive);
begin
inherited Create;
- FCompressionArchive := ACompressionArchive;
+ FArchive := AArchive;
end;
function TJclSevenzipUpdateCallback.CryptoGetTextPassword2(
@@ -3334,13 +3583,13 @@
begin
if Assigned(PasswordIsDefined) then
begin
- if FCompressionArchive.Password <> '' then
+ if FArchive.Password <> '' then
PasswordIsDefined^ := Integer($FFFFFFFF)
else
PasswordIsDefined^ := 0;
end;
if Assigned(Password) then
- Password^ := SysAllocString(PWideChar(FCompressionArchive.Password));
+ Password^ := SysAllocString(PWideChar(FArchive.Password));
Result := S_OK;
end;
@@ -3350,7 +3599,7 @@
AItem: TJclCompressionItem;
begin
Result := S_OK;
- AItem := FCompressionArchive.Items[Index];
+ AItem := FArchive.Items[Index];
case PropID of
kpidNoProperty:
Value.vt := VT_NULL;
@@ -3433,7 +3682,7 @@
out InStream: ISequentialInStream): HRESULT;
begin
FLastStream := Index;
- InStream := TJclSevenzipInStream.Create(FCompressionArchive, Index);
+ InStream := TJclSevenzipInStream.Create(FArchive, Index);
Result := S_OK;
end;
@@ -3442,7 +3691,7 @@
var
CompressionItem: TJclCompressionItem;
begin
- CompressionItem := FCompressionArchive.Items[Index];
+ CompressionItem := FArchive.Items[Index];
if Assigned(NewData) then
begin
@@ -3462,7 +3711,7 @@
// TODO
if Assigned(IndexInArchive) then
- IndexInArchive^ := $FFFFFFFF; //Index;
+ IndexInArchive^ := CompressionItem.PackedIndex;
Result := S_OK;
end;
@@ -3486,7 +3735,7 @@
CompleteValue: PInt64): HRESULT;
begin
if Assigned(CompleteValue) then
- FCompressionArchive.DoProgress(CompleteValue^, FCompressionArchive.FProgressMax);
+ FArchive.DoProgress(CompleteValue^, FArchive.FProgressMax);
Result := S_OK;
end;
@@ -3495,15 +3744,15 @@
begin
case OperationResult of
kOK:
- FCompressionArchive.Items[FLastStream].OperationSuccess := osOK;
+ FArchive.Items[FLastStream].OperationSuccess := osOK;
kUnSupportedMethod:
- FCompressionArchive.Items[FLastStream].OperationSuccess := osUnsupportedMethod;
+ FArchive.Items[FLastStream].OperationSuccess := osUnsupportedMethod;
kDataError:
- FCompressionArchive.Items[FLastStream].OperationSuccess := osDataError;
+ FArchive.Items[FLastStream].OperationSuccess := osDataError;
kCRCError:
- FCompressionArchive.Items[FLastStream].OperationSuccess := osCRCError;
+ FArchive.Items[FLastStream].OperationSuccess := osCRCError;
else
- FCompressionArchive.Items[FLastStream].OperationSuccess := osUnknownError;
+ FArchive.Items[FLastStream].OperationSuccess := osUnknownError;
end;
Result := S_OK;
@@ -3511,7 +3760,7 @@
function TJclSevenzipUpdateCallback.SetTotal(Total: Int64): HRESULT;
begin
- FCompressionArchive.FProgressMax := Total;
+ FArchive.FProgressMax := Total;
Result := S_OK;
end;
@@ -3587,6 +3836,32 @@
end;
end;
+procedure SetZipCompressionProperties(AOutArchive: IOutArchive; ZipMethod: TJclZipMethod;
+ Level: Cardinal);
+var
+ PropertiesSetter: ISetProperties;
+ PropNames: array [0..1] of PWideChar;
+ PropValues: array [0..1] of TPropVariant;
+const
+ CompressionMethodNames: array [TJclZipMethod] of WideString =
+ ( kDeflateMethodName {zmDeflate}, kDeflate64MethodName {zmDeflate64},
+ kCopyMethod {zmCopy}, kBZip2MethodName {zmBZip2} );
+begin
+ if Supports(AOutArchive, ISetProperties, PropertiesSetter) and Assigned(PropertiesSetter) then
+ begin
+ PropNames[0] := 'X';
+ PropValues[0].vt := VT_UI4;
+ PropValues[0].ulVal := Level;
+ PropNames[1] := 'M';
+ PropValues[1].vt := VT_BSTR;
+ PropValues[1].bstrVal := SysAllocString(PWideChar(CompressionMethodNames[ZipMethod]));
+
+ SevenzipCheck(PropertiesSetter.SetProperties(@PropNames[0], @PropValues[0], Length(PropNames)));
+ end
+ else
+ raise EJclCompressionError.CreateRes(@RsCompression7zNoProperties);
+end;
+
//=== { TJcl7zCompressArchive } ==============================================
procedure TJcl7zCompressArchive.CreateCompressionObject;
@@ -3600,6 +3875,11 @@
Result := CLSID_CFormat7z;
end;
+class function TJcl7zCompressArchive.MultipleItemContainer: Boolean;
+begin
+ Result := True;
+end;
+
//=== { TJclZipCompressArchive } =============================================
procedure TJclZipCompressArchive.CreateCompressionObject;
@@ -3613,29 +3893,14 @@
Result := CLSID_CFormatZip;
end;
+class function TJclZipCompressArchive.MultipleItemContainer: Boolean;
+begin
+ Result := True;
+end;
+
procedure TJclZipCompressArchive.SetCompressionProperties;
-var
- PropertiesSetter: ISetProperties;
- PropNames: array [0..1] of PWideChar;
- PropValues: array [0..1] of TPropVariant;
-const
- CompressionMethodNames: array [TJclZipMethod] of WideString =
- ( kDeflateMethodName {zmDeflate}, kDeflate64MethodName {zmDeflate64},
- kCopyMethod {zmCopy}, kBZip2MethodName {zmBZip2} );
begin
- if Supports(FOutArchive, ISetProperties, PropertiesSetter) and Assigned(PropertiesSetter) then
- begin
- PropNames[0] := 'X';
- PropValues[0].vt := VT_UI4;
- PropValues[0].ulVal := CompressionLevel;
- PropNames[1] := 'M';
- PropValues[1].vt := VT_BSTR;
- PropValues[1].bstrVal := SysAllocString(PWideChar(CompressionMethodNames[DefaultMethod]));
-
- SevenzipCheck(PropertiesSetter.SetProperties(@PropNames[0], @PropValues[0], Length(PropNames)));
- end
- else
- raise EJclCompressionError.CreateRes(@RsCompression7zNoProperties);
+ SetZipCompressionProperties(FOutArchive, DefaultMethod, CompressionLevel);
end;
procedure TJclZipCompressArchive.SetDefaultMethod(Value: TJclZipMethod);
@@ -3671,6 +3936,11 @@
Result := CLSID_CFormatTar;
end;
+class function TJclTarCompressArchive.MultipleItemContainer: Boolean;
+begin
+ Result := True;
+end;
+
procedure TJclTarCompressArchive.SetCompressionProperties;
begin
// no properties
@@ -3695,9 +3965,9 @@
TJclSevenzipOpenCallback = class(TInterfacedObject, IArchiveOpenCallback,
ICryptoGetTextPassword, IUnknown)
private
- FDecompressionArchive: TJclSevenzipDecompressArchive;
+ FArchive: TJclCompressionArchive;
public
- constructor Create(ADecompressionArchive: TJclSevenzipDecompressArchive);
+ constructor Create(AArchive: TJclCompressionArchive);
// IArchiveOpenCallback
function SetCompleted(Files: PInt64; Bytes: PInt64): HRESULT; stdcall;
function SetTotal(Files: PInt64; Bytes: PInt64): HRESULT; stdcall;
@@ -3706,31 +3976,31 @@
end;
constructor TJclSevenzipOpenCallback.Create(
- ADecompressionArchive: TJclSevenzipDecompressArchive);
+ AArchive: TJclCompressionArchive);
begin
inherited Create;
- FDecompressionArchive := ADecompressionArchive;
+ FArchive := AArchive;
end;
function TJclSevenzipOpenCallback.CryptoGetTextPassword(
password: PBStr): HRESULT;
begin
if Assigned(password) then
- password^ := SysAllocString(PWideChar(FDecompressionArchive.Password));
+ password^ := SysAllocString(PWideChar(FArchive.Password));
Result := S_OK;
end;
function TJclSevenzipOpenCallback.SetCompleted(Files, Bytes: PInt64): HRESULT;
begin
if Assigned(Files) then
- FDecompressionArchive.DoProgress(Files^, FDecompressionArchive.FProgressMax);
+ FArchive.DoProgress(Files^, FArchive.FProgressMax);
Result := S_OK;
end;
function TJclSevenzipOpenCallback.SetTotal(Files, Bytes: PInt64): HRESULT;
begin
if Assigned(Files) then
- FDecompressionArchive.FProgressMax := Files^;
+ FArchive.FProgressMax := Files^;
Result := S_OK;
end;
@@ -3740,10 +4010,10 @@
TJclSevenzipExtractCallback = class(TInterfacedObject, IUnknown, IProgress,
IArchiveExtractCallback, ICryptoGetTextPassword)
private
- FDecompressionArchive: TJclSevenzipDecompressArchive;
+ FArchive: TJclCompressionArchive;
FLastStream: Cardinal;
public
- constructor Create(ADecompressionArchive: TJclSevenzipDecompressArchive);
+ constructor Create(AArchive: TJclCompressionArchive);
// IArchiveExtractCallback
function GetStream(Index: Cardinal; out OutStream: ISequentialOutStream;
askExtractMode: Cardinal): HRESULT; stdcall;
@@ -3757,17 +4027,17 @@
end;
constructor TJclSevenzipExtractCallback.Create(
- ADecompressionArchive: TJclSevenzipDecompressArchive);
+ AArchive: TJclCompressionArchive);
begin
inherited Create;
- FDecompressionArchive := ADecompressionArchive;
+ FArchive := AArchive;
end;
function TJclSevenzipExtractCallback.CryptoGetTextPassword(
password: PBStr): HRESULT;
begin
if Assigned(password) then
- password^ := SysAllocString(PWideChar(FDecompressionArchive.Password));
+ password^ := SysAllocString(PWideChar(FArchive.Password));
Resu...
[truncated message content] |
|
From: <ou...@us...> - 2007-08-21 14:01:19
|
Revision: 2139
http://jcl.svn.sourceforge.net/jcl/?rev=2139&view=rev
Author: outchy
Date: 2007-08-21 07:01:17 -0700 (Tue, 21 Aug 2007)
Log Message:
-----------
deleted empty exception files
JclWideFormat.pas now compiles with C++Builder 5 and C++Builder 6
Removed Paths:
-------------
trunk/jcl/lib/c5/windows.exc
trunk/jcl/lib/c6/windows.exc
trunk/jcl/lib/d5/windows.exc
trunk/jcl/lib/d6/windows.exc
trunk/jcl/lib/d7/windows.exc
trunk/jcl/lib/d9/windows.exc
Deleted: trunk/jcl/lib/c5/windows.exc
===================================================================
--- trunk/jcl/lib/c5/windows.exc 2007-08-19 17:44:13 UTC (rev 2138)
+++ trunk/jcl/lib/c5/windows.exc 2007-08-21 14:01:17 UTC (rev 2139)
@@ -1 +0,0 @@
-JclWideFormat.pas
\ No newline at end of file
Deleted: trunk/jcl/lib/c6/windows.exc
===================================================================
--- trunk/jcl/lib/c6/windows.exc 2007-08-19 17:44:13 UTC (rev 2138)
+++ trunk/jcl/lib/c6/windows.exc 2007-08-21 14:01:17 UTC (rev 2139)
@@ -1 +0,0 @@
-JclWideFormat.pas
Deleted: trunk/jcl/lib/d5/windows.exc
===================================================================
Deleted: trunk/jcl/lib/d6/windows.exc
===================================================================
Deleted: trunk/jcl/lib/d7/windows.exc
===================================================================
Deleted: trunk/jcl/lib/d9/windows.exc
===================================================================
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <ou...@us...> - 2007-08-19 17:44:19
|
Revision: 2138
http://jcl.svn.sourceforge.net/jcl/?rev=2138&view=rev
Author: outchy
Date: 2007-08-19 10:44:13 -0700 (Sun, 19 Aug 2007)
Log Message:
-----------
Preparing structure for read-write operations on archives
New property to read compression method for file (read-only)
Moving some string constants about compression method to sevenzip.pas
fixed issue: properties marked as modified after a load
Modified Paths:
--------------
branches/compression/jcl/source/common/JclCompression.pas
branches/compression/jcl/source/windows/sevenzip.pas
Modified: branches/compression/jcl/source/common/JclCompression.pas
===================================================================
--- branches/compression/jcl/source/common/JclCompression.pas 2007-08-19 12:12:36 UTC (rev 2137)
+++ branches/compression/jcl/source/common/JclCompression.pas 2007-08-19 17:44:13 UTC (rev 2138)
@@ -94,27 +94,37 @@
| |-- TJclGZipCompressArchive handled by sevenzip http://sevenzip.sourceforge.net/
|
|-- TJclDecompressArchive
+ | |
+ | |-- TJclSevenZipDecompressArchive
+ | |
+ | |-- TJclZipDecompressArchive handled by sevenzip http://sevenzip.sourceforge.net/
+ | |-- TJclBZ2DecompressArchive handled by sevenzip http://sevenzip.sourceforge.net/
+ | |-- TJclRarDecompressArchive handled by sevenzip http://sevenzip.sourceforge.net/
+ | |-- TJclArjDecompressArchive handled by sevenzip http://sevenzip.sourceforge.net/
+ | |-- TJclZDecompressArchive handled by sevenzip http://sevenzip.sourceforge.net/
+ | |-- TJclLzhDecompressArchive handled by sevenzip http://sevenzip.sourceforge.net/
+ | |-- TJcl7zDecompressArchive handled by sevenzip http://sevenzip.sourceforge.net/
+ | |-- TJclNsisDecompressArchive handled by sevenzip http://sevenzip.sourceforge.net/
+ | |-- TJclIsoDecompressArchive handled by sevenzip http://sevenzip.sourceforge.net/
+ | |-- TJclCabDecompressArchive handled by sevenzip http://sevenzip.sourceforge.net/
+ | |-- TJclChmDecompressArchive handled by sevenzip http://sevenzip.sourceforge.net/
+ | |-- TJclSplitDecompressArchive handled by sevenzip http://sevenzip.sourceforge.net/
+ | |-- TJclRpmDecompressArchive handled by sevenzip http://sevenzip.sourceforge.net/
+ | |-- TJclDebDecompressArchive handled by sevenzip http://sevenzip.sourceforge.net/
+ | |-- TJclCpioDecompressArchive handled by sevenzip http://sevenzip.sourceforge.net/
+ | |-- TJclTarDecompressArchive handled by sevenzip http://sevenzip.sourceforge.net/
+ | |-- TJclGZipDecompressArchive handled by sevenzip http://sevenzip.sourceforge.net/
+ |
+ |-- TJclUpdateArchive
|
- |-- TJclSevenZipDecompressArchive
+ |-- TJclSevenzipUpdateArchive
|
- |-- TJclZipDecompressArchive handled by sevenzip http://sevenzip.sourceforge.net/
- |-- TJclBZ2DecompressArchive handled by sevenzip http://sevenzip.sourceforge.net/
- |-- TJclRarDecompressArchive handled by sevenzip http://sevenzip.sourceforge.net/
- |-- TJclArjDecompressArchive handled by sevenzip http://sevenzip.sourceforge.net/
- |-- TJclZDecompressArchive handled by sevenzip http://sevenzip.sourceforge.net/
- |-- TJclLzhDecompressArchive handled by sevenzip http://sevenzip.sourceforge.net/
- |-- TJcl7zDecompressArchive handled by sevenzip http://sevenzip.sourceforge.net/
- |-- TJclNsisDecompressArchive handled by sevenzip http://sevenzip.sourceforge.net/
- |-- TJclIsoDecompressArchive handled by sevenzip http://sevenzip.sourceforge.net/
- |-- TJclCabDecompressArchive handled by sevenzip http://sevenzip.sourceforge.net/
- |-- TJclChmDecompressArchive handled by sevenzip http://sevenzip.sourceforge.net/
- |-- TJclSplitDecompressArchive handled by sevenzip http://sevenzip.sourceforge.net/
- |-- TJclRpmDecompressArchive handled by sevenzip http://sevenzip.sourceforge.net/
- |-- TJclDebDecompressArchive handled by sevenzip http://sevenzip.sourceforge.net/
- |-- TJclCpioDecompressArchive handled by sevenzip http://sevenzip.sourceforge.net/
- |-- TJclTarDecompressArchive handled by sevenzip http://sevenzip.sourceforge.net/
- |-- TJclGZipDecompressArchive handled by sevenzip http://sevenzip.sourceforge.net/
-
+ |-- TJclZipUpdateArchive handled by sevenzip http://sevenzip.sourceforge.net/
+ |-- TJclBZ2UpdateArchive handled by sevenzip http://sevenzip.sourceforge.net/
+ |-- TJcl7zUpdateArchive handled by sevenzip http://sevenzip.sourceforge.net/
+ |-- TJclTarUpdateArchive handled by sevenzip http://sevenzip.sourceforge.net/
+ |-- TJclGZipUpdateArchive handled by sevenzip http://sevenzip.sourceforge.net/
+
**************************************************************************************************}
type
@@ -444,7 +454,7 @@
TJclCompressionItemProperty = (ipPackedName, ipPackedSize, ipFileSize,
ipFileName, ipAttributes, ipCreationTime, ipLastAccessTime, ipLastWriteTime,
- ipComment, ipHostOS, ipHostFS, ipUser, ipGroup, ipCRC, ipStream);
+ ipComment, ipHostOS, ipHostFS, ipUser, ipGroup, ipCRC, ipStream, ipMethod);
TJclCompressionItemProperties = set of TJclCompressionItemProperty;
TJclCompressionItemKind = (ikFile, ikDirectory);
@@ -481,6 +491,7 @@
FUser: WideString;
FGroup: WideString;
FCRC: Cardinal;
+ FMethod: WideString;
protected
// property checkers
procedure CheckGetProperty(AProperty: TJclCompressionItemProperty); virtual; abstract;
@@ -498,6 +509,7 @@
function GetItemKind: TJclCompressionItemKind;
function GetLastAccessTime: TFileTime;
function GetLastWriteTime: TFileTime;
+ function GetMethod: WideString;
function GetPackedName: WideString;
function GetPackedSize: Int64;
function GetStream: TStream; virtual; abstract;
@@ -514,6 +526,7 @@
procedure SetHostOS(const Value: WideString);
procedure SetLastAccessTime(const Value: TFileTime);
procedure SetLastWriteTime(const Value: TFileTime);
+ procedure SetMethod(const Value: WideString);
procedure SetPackedName(const Value: WideString);
procedure SetPackedSize(const Value: Int64);
procedure SetStream(const Value: TStream);
@@ -535,6 +548,7 @@
property Kind: TJclCompressionItemKind read GetItemKind;
property LastAccessTime: TFileTime read GetLastAccessTime write SetLastAccessTime;
property LastWriteTime: TFileTime read GetLastWriteTime write SetLastWriteTime;
+ property Method: WideString read GetMethod write SetMethod;
property PackedName: WideString read GetPackedName write SetPackedName;
property PackedSize: Int64 read GetPackedSize write SetPackedSize;
property User: WideString read GetUser write SetUser;
@@ -736,14 +750,14 @@
TJclZipCompressArchive = class(TJclSevenzipCompressArchive)
private
- FMethod: TJclZipMethod;
- procedure SetMethod(Value: TJclZipMethod);
+ FDefaultMethod: TJclZipMethod;
+ procedure SetDefaultMethod(Value: TJclZipMethod);
protected
procedure CreateCompressionObject; override;
function GetCLSID: TGUID; override;
procedure SetCompressionProperties; override;
public
- property Method: TJclZipMethod read FMethod write SetMethod;
+ property DefaultMethod: TJclZipMethod read FDefaultMethod write SetDefaultMethod;
end;
TJclBZ2CompressArchive = class(TJclSevenzipCompressArchive)
@@ -2266,6 +2280,12 @@
Result := FLastWriteTime;
end;
+function TJclCompressionItem.GetMethod: WideString;
+begin
+ CheckGetProperty(ipMethod);
+ Result := FMethod;
+end;
+
function TJclCompressionItem.GetPackedName: WideString;
begin
CheckGetProperty(ipPackedName);
@@ -2397,6 +2417,14 @@
Include(FValidProperties, ipLastWriteTime);
end;
+procedure TJclCompressionItem.SetMethod(const Value: WideString);
+begin
+ CheckSetProperty(ipMethod);
+ FMethod := Value;
+ Include(FModifiedProperties, ipMethod);
+ Include(FValidProperties, ipMethod);
+end;
+
procedure TJclCompressionItem.SetPackedName(const Value: WideString);
begin
CheckSetProperty(ipPackedName);
@@ -2704,6 +2732,8 @@
procedure TJclCompressItem.CheckSetProperty(
AProperty: TJclCompressionItemProperty);
begin
+ if AProperty in [ipMethod] then
+ raise EJclCompressionError.CreateRes(@RsCompressionWriteNotSupported);
(Archive as TJclCompressArchive).CheckNotCompressing;
end;
@@ -3258,6 +3288,10 @@
AItem.User := Get7zWideStringProp(AInArchive, FileIndex, kpidUser);
AItem.Group := Get7zWideStringProp(AInArchive, FileIndex, kpidGroup);
AItem.CRC := Get7zCardinalProp(AInArchive, FileIndex, kpidCRC);
+ AItem.Method := Get7zWideStringProp(AInArchive, FileIndex, kpidMethod);
+
+ // reset modified flags
+ AItem.ModifiedProperties := [];
end;
//=== { TJclSevenzipOutputCallback } =========================================
@@ -3412,7 +3446,7 @@
if Assigned(NewData) then
begin
- if (CompressionItem.FileName <> '') or Assigned(CompressionItem.Stream) then
+ if ([ipFileName, ipStream] * CompressionItem.ModifiedProperties) <> [] then
NewData^ := 1
else
NewData^ := 0;
@@ -3420,7 +3454,7 @@
if Assigned(NewProperties) then
begin
- if CompressionItem.ModifiedProperties <> [] then
+ if (CompressionItem.ModifiedProperties - [ipFileName, ipStream]) <> [] then
NewProperties^ := 1
else
NewProperties^ := 0;
@@ -3580,13 +3614,14 @@
end;
procedure TJclZipCompressArchive.SetCompressionProperties;
-const
- MethodValues: array [TJclZipMethod] of PWideChar =
- ( 'DEFLATE', 'DEFLATE64', 'COPY', 'BZIP2' );
var
PropertiesSetter: ISetProperties;
PropNames: array [0..1] of PWideChar;
PropValues: array [0..1] of TPropVariant;
+const
+ CompressionMethodNames: array [TJclZipMethod] of WideString =
+ ( kDeflateMethodName {zmDeflate}, kDeflate64MethodName {zmDeflate64},
+ kCopyMethod {zmCopy}, kBZip2MethodName {zmBZip2} );
begin
if Supports(FOutArchive, ISetProperties, PropertiesSetter) and Assigned(PropertiesSetter) then
begin
@@ -3595,7 +3630,7 @@
PropValues[0].ulVal := CompressionLevel;
PropNames[1] := 'M';
PropValues[1].vt := VT_BSTR;
- PropValues[1].bstrVal := SysAllocString(MethodValues[Method]);
+ PropValues[1].bstrVal := SysAllocString(PWideChar(CompressionMethodNames[DefaultMethod]));
SevenzipCheck(PropertiesSetter.SetProperties(@PropNames[0], @PropValues[0], Length(PropNames)));
end
@@ -3603,11 +3638,11 @@
raise EJclCompressionError.CreateRes(@RsCompression7zNoProperties);
end;
-procedure TJclZipCompressArchive.SetMethod(Value: TJclZipMethod);
+procedure TJclZipCompressArchive.SetDefaultMethod(Value: TJclZipMethod);
begin
CheckNotCompressing;
- FMethod := Value;
+ FDefaultMethod := Value;
end;
//=== { TJclBZ2CompressArchive } =============================================
Modified: branches/compression/jcl/source/windows/sevenzip.pas
===================================================================
--- branches/compression/jcl/source/windows/sevenzip.pas 2007-08-19 12:12:36 UTC (rev 2137)
+++ branches/compression/jcl/source/windows/sevenzip.pas 2007-08-19 17:44:13 UTC (rev 2138)
@@ -137,6 +137,16 @@
kpidUserDefined = $10000;
+// HandlerOut.cpp
+
+ kCopyMethod = WideString('Copy');
+ kLZMAMethodName = WideString('LZMA');
+ kLZMA2MethodName = WideString('LZMA2');
+ kBZip2MethodName = WideString('BZip2');
+ kPpmdMethodName = WideString('PPMd');
+ kDeflateMethodName = WideString('Deflate');
+ kDeflate64MethodName = WideString('Deflate64');
+
// ICoder.h
type
ICompressProgressInfo = interface(IUnknown)
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|