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...> - 2010-01-25 13:21:47
|
Revision: 3143 http://jcl.svn.sourceforge.net/jcl/?rev=3143&view=rev Author: outchy Date: 2010-01-25 13:21:41 +0000 (Mon, 25 Jan 2010) Log Message: ----------- unused code. Modified Paths: -------------- trunk/jcl/devtools/jpp/JppParser.pas Modified: trunk/jcl/devtools/jpp/JppParser.pas =================================================================== --- trunk/jcl/devtools/jpp/JppParser.pas 2010-01-25 13:18:41 UTC (rev 3142) +++ trunk/jcl/devtools/jpp/JppParser.pas 2010-01-25 13:21:41 UTC (rev 3143) @@ -68,7 +68,6 @@ procedure RemoveOrphanedLineBreaks; protected procedure AddResult(const S: string); - procedure Emit(const AText: string); function IsExcludedInclude(const FileName: string): Boolean; procedure NextToken; @@ -301,11 +300,6 @@ Inc(FResultLen, Length(AResult)); end; -procedure TJppParser.Emit(const AText: string); -begin - FResult := FResult + AText; -end; - function TJppParser.IsExcludedInclude(const FileName: string): Boolean; begin Result := State.IsFileExcluded(FileName); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ou...@us...> - 2010-01-25 13:19:14
|
Revision: 3142 http://jcl.svn.sourceforge.net/jcl/?rev=3142&view=rev Author: outchy Date: 2010-01-25 13:18:41 +0000 (Mon, 25 Jan 2010) Log Message: ----------- Lazarus generates .bak files for backup. Modified Paths: -------------- trunk/jcl/clean.bat trunk/jcl/clean.sh Modified: trunk/jcl/clean.bat =================================================================== --- trunk/jcl/clean.bat 2010-01-25 13:16:43 UTC (rev 3141) +++ trunk/jcl/clean.bat 2010-01-25 13:18:41 UTC (rev 3142) @@ -1,7 +1,7 @@ @echo cleaning... @REM do not delete precompiled installer @for %%f in (bin\*.exe) do @if not %%f==bin\JediInstaller.exe (del %%f) -@del /f /s *.~* *.bk bin\*.dll *.a *.bpi *.dcp *.dcu *.hpp *.jdbg *.map *.o +@del /f /s *.~* *.bak *.bk bin\*.dll *.a *.bpi *.dcp *.dcu *.hpp *.jdbg *.map *.o @cd lib @del /f /s *.obj *.res *.lib *.bpi @cd .. Modified: trunk/jcl/clean.sh =================================================================== --- trunk/jcl/clean.sh 2010-01-25 13:16:43 UTC (rev 3141) +++ trunk/jcl/clean.sh 2010-01-25 13:18:41 UTC (rev 3142) @@ -1,6 +1,8 @@ #!/bin/bash rm -f `find -name \*~` +rm -f `find -name *.bk` +rm -f `find -name *.bak` rm -f `find -name *.~*` rm -f `find -name *.a` rm -f `find -name *.bpi` This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ou...@us...> - 2010-01-25 13:16:55
|
Revision: 3141 http://jcl.svn.sourceforge.net/jcl/?rev=3141&view=rev Author: outchy Date: 2010-01-25 13:16:43 +0000 (Mon, 25 Jan 2010) Log Message: ----------- JclWideFormat functions were designed for D5 and C5 that did not have built-in WideFormat functions. This unit is now useless since D5 and C5 are not supported anymore. Modified Paths: -------------- trunk/jcl/install/HeaderTest/jcl_a2z.cpp trunk/jcl/install/HeaderTest/jcl_z2a.cpp trunk/jcl/packages/d10/Jcl.dpk trunk/jcl/packages/d11/Jcl.dpk trunk/jcl/packages/d11/Jcl.dproj trunk/jcl/packages/d12/Jcl.dpk trunk/jcl/packages/d12/Jcl.dproj trunk/jcl/packages/d14/Jcl.dpk trunk/jcl/packages/d14/Jcl.dproj trunk/jcl/packages/d6/Jcl.dpk trunk/jcl/packages/d7/Jcl.dpk trunk/jcl/packages/d9/Jcl.dpk trunk/jcl/packages/xml/Jcl-R.xml trunk/jcl/source/common/JclResources.pas Removed Paths: ------------- trunk/jcl/source/windows/JclWideFormat.pas Modified: trunk/jcl/install/HeaderTest/jcl_a2z.cpp =================================================================== --- trunk/jcl/install/HeaderTest/jcl_a2z.cpp 2010-01-25 13:02:28 UTC (rev 3140) +++ trunk/jcl/install/HeaderTest/jcl_a2z.cpp 2010-01-25 13:16:43 UTC (rev 3141) @@ -290,9 +290,6 @@ #ifdef TEST_VCL #include <JclVersionCtrlSVNImpl.hpp> #endif TEST_VCL -#ifdef TEST_WINDOWS -#include <JclWideFormat.hpp> -#endif TEST_WINDOWS #ifdef TEST_COMMON #include <JclWideStrings.hpp> #endif TEST_COMMON @@ -341,4 +338,4 @@ return 0; } //--------------------------------------------------------------------------- - \ No newline at end of file + Modified: trunk/jcl/install/HeaderTest/jcl_z2a.cpp =================================================================== --- trunk/jcl/install/HeaderTest/jcl_z2a.cpp 2010-01-25 13:02:28 UTC (rev 3140) +++ trunk/jcl/install/HeaderTest/jcl_z2a.cpp 2010-01-25 13:16:43 UTC (rev 3141) @@ -41,9 +41,6 @@ #ifdef TEST_COMMON #include <JclWideStrings.hpp> #endif TEST_COMMON -#ifdef TEST_WINDOWS -#include <JclWideFormat.hpp> -#endif TEST_WINDOWS #ifdef TEST_VCL #include <JclVersionCtrlSVNImpl.hpp> #endif TEST_VCL @@ -341,4 +338,4 @@ return 0; } //--------------------------------------------------------------------------- - \ No newline at end of file + Modified: trunk/jcl/packages/d10/Jcl.dpk =================================================================== --- trunk/jcl/packages/d10/Jcl.dpk 2010-01-25 13:02:28 UTC (rev 3140) +++ trunk/jcl/packages/d10/Jcl.dpk 2010-01-25 13:16:43 UTC (rev 3141) @@ -4,7 +4,7 @@ DO NOT EDIT THIS FILE, IT IS GENERATED BY THE PACKAGE GENERATOR ALWAYS EDIT THE RELATED XML FILE (Jcl-R.xml) - Last generated: 03-01-2010 21:25:07 UTC + Last generated: 25-01-2010 13:10:50 UTC ----------------------------------------------------------------------------- } @@ -120,7 +120,6 @@ JclTask in '..\..\source\windows\JclTask.pas' , JclTD32 in '..\..\source\windows\JclTD32.pas' , JclTimeZones in '..\..\source\windows\JclTimeZones.pas' , - JclWideFormat in '..\..\source\windows\JclWideFormat.pas' , JclWin32 in '..\..\source\windows\JclWin32.pas' , JclWin32Ex in '..\..\source\windows\JclWin32Ex.pas' , JclWinMIDI in '..\..\source\windows\JclWinMIDI.pas' , Modified: trunk/jcl/packages/d11/Jcl.dpk =================================================================== --- trunk/jcl/packages/d11/Jcl.dpk 2010-01-25 13:02:28 UTC (rev 3140) +++ trunk/jcl/packages/d11/Jcl.dpk 2010-01-25 13:16:43 UTC (rev 3141) @@ -4,7 +4,7 @@ DO NOT EDIT THIS FILE, IT IS GENERATED BY THE PACKAGE GENERATOR ALWAYS EDIT THE RELATED XML FILE (Jcl-R.xml) - Last generated: 03-01-2010 21:25:07 UTC + Last generated: 25-01-2010 13:10:50 UTC ----------------------------------------------------------------------------- } @@ -120,7 +120,6 @@ JclTask in '..\..\source\windows\JclTask.pas' , JclTD32 in '..\..\source\windows\JclTD32.pas' , JclTimeZones in '..\..\source\windows\JclTimeZones.pas' , - JclWideFormat in '..\..\source\windows\JclWideFormat.pas' , JclWin32 in '..\..\source\windows\JclWin32.pas' , JclWin32Ex in '..\..\source\windows\JclWin32Ex.pas' , JclWinMIDI in '..\..\source\windows\JclWinMIDI.pas' , Modified: trunk/jcl/packages/d11/Jcl.dproj =================================================================== --- trunk/jcl/packages/d11/Jcl.dproj 2010-01-25 13:02:28 UTC (rev 3140) +++ trunk/jcl/packages/d11/Jcl.dproj 2010-01-25 13:16:43 UTC (rev 3141) @@ -163,7 +163,6 @@ <DCCReference Include="..\..\source\windows\JclTask.pas" /> <DCCReference Include="..\..\source\windows\JclTD32.pas" /> <DCCReference Include="..\..\source\windows\JclTimeZones.pas" /> - <DCCReference Include="..\..\source\windows\JclWideFormat.pas" /> <DCCReference Include="..\..\source\windows\JclWin32.pas" /> <DCCReference Include="..\..\source\windows\JclWin32Ex.pas" /> <DCCReference Include="..\..\source\windows\JclWinMIDI.pas" /> Modified: trunk/jcl/packages/d12/Jcl.dpk =================================================================== --- trunk/jcl/packages/d12/Jcl.dpk 2010-01-25 13:02:28 UTC (rev 3140) +++ trunk/jcl/packages/d12/Jcl.dpk 2010-01-25 13:16:43 UTC (rev 3141) @@ -4,7 +4,7 @@ DO NOT EDIT THIS FILE, IT IS GENERATED BY THE PACKAGE GENERATOR ALWAYS EDIT THE RELATED XML FILE (Jcl-R.xml) - Last generated: 03-01-2010 21:25:08 UTC + Last generated: 25-01-2010 13:10:50 UTC ----------------------------------------------------------------------------- } @@ -120,7 +120,6 @@ JclTask in '..\..\source\windows\JclTask.pas' , JclTD32 in '..\..\source\windows\JclTD32.pas' , JclTimeZones in '..\..\source\windows\JclTimeZones.pas' , - JclWideFormat in '..\..\source\windows\JclWideFormat.pas' , JclWin32 in '..\..\source\windows\JclWin32.pas' , JclWin32Ex in '..\..\source\windows\JclWin32Ex.pas' , JclWinMIDI in '..\..\source\windows\JclWinMIDI.pas' , Modified: trunk/jcl/packages/d12/Jcl.dproj =================================================================== --- trunk/jcl/packages/d12/Jcl.dproj 2010-01-25 13:02:28 UTC (rev 3140) +++ trunk/jcl/packages/d12/Jcl.dproj 2010-01-25 13:16:43 UTC (rev 3141) @@ -138,7 +138,6 @@ <DCCReference Include="..\..\source\windows\JclTask.pas" /> <DCCReference Include="..\..\source\windows\JclTD32.pas" /> <DCCReference Include="..\..\source\windows\JclTimeZones.pas" /> - <DCCReference Include="..\..\source\windows\JclWideFormat.pas" /> <DCCReference Include="..\..\source\windows\JclWin32.pas" /> <DCCReference Include="..\..\source\windows\JclWin32Ex.pas" /> <DCCReference Include="..\..\source\windows\JclWinMIDI.pas" /> Modified: trunk/jcl/packages/d14/Jcl.dpk =================================================================== --- trunk/jcl/packages/d14/Jcl.dpk 2010-01-25 13:02:28 UTC (rev 3140) +++ trunk/jcl/packages/d14/Jcl.dpk 2010-01-25 13:16:43 UTC (rev 3141) @@ -4,7 +4,7 @@ DO NOT EDIT THIS FILE, IT IS GENERATED BY THE PACKAGE GENERATOR ALWAYS EDIT THE RELATED XML FILE (Jcl-R.xml) - Last generated: 03-01-2010 21:25:09 UTC + Last generated: 25-01-2010 13:10:51 UTC ----------------------------------------------------------------------------- } @@ -120,7 +120,6 @@ JclTask in '..\..\source\windows\JclTask.pas' , JclTD32 in '..\..\source\windows\JclTD32.pas' , JclTimeZones in '..\..\source\windows\JclTimeZones.pas' , - JclWideFormat in '..\..\source\windows\JclWideFormat.pas' , JclWin32 in '..\..\source\windows\JclWin32.pas' , JclWin32Ex in '..\..\source\windows\JclWin32Ex.pas' , JclWinMIDI in '..\..\source\windows\JclWinMIDI.pas' , Modified: trunk/jcl/packages/d14/Jcl.dproj =================================================================== --- trunk/jcl/packages/d14/Jcl.dproj 2010-01-25 13:02:28 UTC (rev 3140) +++ trunk/jcl/packages/d14/Jcl.dproj 2010-01-25 13:16:43 UTC (rev 3141) @@ -140,7 +140,6 @@ <DCCReference Include="..\..\source\windows\JclTask.pas" /> <DCCReference Include="..\..\source\windows\JclTD32.pas" /> <DCCReference Include="..\..\source\windows\JclTimeZones.pas" /> - <DCCReference Include="..\..\source\windows\JclWideFormat.pas" /> <DCCReference Include="..\..\source\windows\JclWin32.pas" /> <DCCReference Include="..\..\source\windows\JclWin32Ex.pas" /> <DCCReference Include="..\..\source\windows\JclWinMIDI.pas" /> Modified: trunk/jcl/packages/d6/Jcl.dpk =================================================================== --- trunk/jcl/packages/d6/Jcl.dpk 2010-01-25 13:02:28 UTC (rev 3140) +++ trunk/jcl/packages/d6/Jcl.dpk 2010-01-25 13:16:43 UTC (rev 3141) @@ -4,7 +4,7 @@ DO NOT EDIT THIS FILE, IT IS GENERATED BY THE PACKAGE GENERATOR ALWAYS EDIT THE RELATED XML FILE (Jcl-R.xml) - Last generated: 03-01-2010 21:25:04 UTC + Last generated: 25-01-2010 13:10:50 UTC ----------------------------------------------------------------------------- } @@ -119,7 +119,6 @@ JclTask in '..\..\source\windows\JclTask.pas' , JclTD32 in '..\..\source\windows\JclTD32.pas' , JclTimeZones in '..\..\source\windows\JclTimeZones.pas' , - JclWideFormat in '..\..\source\windows\JclWideFormat.pas' , JclWin32 in '..\..\source\windows\JclWin32.pas' , JclWin32Ex in '..\..\source\windows\JclWin32Ex.pas' , JclWinMIDI in '..\..\source\windows\JclWinMIDI.pas' , Modified: trunk/jcl/packages/d7/Jcl.dpk =================================================================== --- trunk/jcl/packages/d7/Jcl.dpk 2010-01-25 13:02:28 UTC (rev 3140) +++ trunk/jcl/packages/d7/Jcl.dpk 2010-01-25 13:16:43 UTC (rev 3141) @@ -4,7 +4,7 @@ DO NOT EDIT THIS FILE, IT IS GENERATED BY THE PACKAGE GENERATOR ALWAYS EDIT THE RELATED XML FILE (Jcl-R.xml) - Last generated: 03-01-2010 21:25:04 UTC + Last generated: 25-01-2010 13:10:50 UTC ----------------------------------------------------------------------------- } @@ -119,7 +119,6 @@ JclTask in '..\..\source\windows\JclTask.pas' , JclTD32 in '..\..\source\windows\JclTD32.pas' , JclTimeZones in '..\..\source\windows\JclTimeZones.pas' , - JclWideFormat in '..\..\source\windows\JclWideFormat.pas' , JclWin32 in '..\..\source\windows\JclWin32.pas' , JclWin32Ex in '..\..\source\windows\JclWin32Ex.pas' , JclWinMIDI in '..\..\source\windows\JclWinMIDI.pas' , Modified: trunk/jcl/packages/d9/Jcl.dpk =================================================================== --- trunk/jcl/packages/d9/Jcl.dpk 2010-01-25 13:02:28 UTC (rev 3140) +++ trunk/jcl/packages/d9/Jcl.dpk 2010-01-25 13:16:43 UTC (rev 3141) @@ -4,7 +4,7 @@ DO NOT EDIT THIS FILE, IT IS GENERATED BY THE PACKAGE GENERATOR ALWAYS EDIT THE RELATED XML FILE (Jcl-R.xml) - Last generated: 03-01-2010 21:25:06 UTC + Last generated: 25-01-2010 13:10:50 UTC ----------------------------------------------------------------------------- } @@ -119,7 +119,6 @@ JclTask in '..\..\source\windows\JclTask.pas' , JclTD32 in '..\..\source\windows\JclTD32.pas' , JclTimeZones in '..\..\source\windows\JclTimeZones.pas' , - JclWideFormat in '..\..\source\windows\JclWideFormat.pas' , JclWin32 in '..\..\source\windows\JclWin32.pas' , JclWin32Ex in '..\..\source\windows\JclWin32Ex.pas' , JclWinMIDI in '..\..\source\windows\JclWinMIDI.pas' , Modified: trunk/jcl/packages/xml/Jcl-R.xml =================================================================== --- trunk/jcl/packages/xml/Jcl-R.xml 2010-01-25 13:02:28 UTC (rev 3140) +++ trunk/jcl/packages/xml/Jcl-R.xml 2010-01-25 13:16:43 UTC (rev 3141) @@ -88,7 +88,6 @@ <File Name="..\..\source\windows\JclTask.pas" Targets="Windows" Formname="" Condition=""/> <File Name="..\..\source\windows\JclTD32.pas" Targets="Windows" Formname="" Condition=""/> <File Name="..\..\source\windows\JclTimeZones.pas" Targets="Windows" Formname="" Condition=""/> - <File Name="..\..\source\windows\JclWideFormat.pas" Targets="Delphi" Formname="" Condition=""/> <File Name="..\..\source\windows\JclWin32.pas" Targets="Windows" Formname="" Condition=""/> <File Name="..\..\source\windows\JclWin32Ex.pas" Targets="Windows" Formname="" Condition=""/> <File Name="..\..\source\windows\JclWinMIDI.pas" Targets="Windows" Formname="" Condition=""/> Modified: trunk/jcl/source/common/JclResources.pas =================================================================== --- trunk/jcl/source/common/JclResources.pas 2010-01-25 13:02:28 UTC (rev 3140) +++ trunk/jcl/source/common/JclResources.pas 2010-01-25 13:16:43 UTC (rev 3141) @@ -2208,14 +2208,6 @@ RsTempConvTypeError = 'An invalid type has been provided for the %s parameter'; RsConvTempBelowAbsoluteZero = 'Temperature can not be below Absolute Zero!'; -//=== JclWideFormat ========================================================== -resourcestring - RsFormatSyntaxError = 'Syntax error at index %u'; - RsFormatNoArgument = 'No argument at index %u'; - RsFormatBadArgumentType = 'Invalid argument type (%s) at index %u. Expected [%s]'; - RsFormatBadArgumentTypeEx = 'Invalid argument type (%s) at index %u for format ''%s''. Expected [%s]'; - RsFormatNoArgumentEx = 'No argument at index %u for format ''%s'''; - //=== JclWin32 =============================================================== resourcestring RsWin32Error = 'Win32 error: %s (%u)%s%s'; Deleted: trunk/jcl/source/windows/JclWideFormat.pas =================================================================== --- trunk/jcl/source/windows/JclWideFormat.pas 2010-01-25 13:02:28 UTC (rev 3140) +++ trunk/jcl/source/windows/JclWideFormat.pas 2010-01-25 13:16:43 UTC (rev 3141) @@ -1,972 +0,0 @@ -{**************************************************************************************************} -{ } -{ Project JEDI Code Library (JCL) } -{ } -{ The contents of this file are subject to the Mozilla Public License Version 1.1 (the "License"); } -{ you may not use this file except in compliance with the License. You may obtain a copy of the } -{ License at http://www.mozilla.org/MPL/ } -{ } -{ Software distributed under the License is distributed on an "AS IS" basis, WITHOUT WARRANTY OF } -{ ANY KIND, either express or implied. See the License for the specific language governing rights } -{ and limitations under the License. } -{ } -{ The Original Code is FormatW.pas. } -{ } -{ The Initial Developer of the Original Code is Rob Kennedy, rkennedy att cs dott wisc dott edu. } -{ Portions created by Rob Kennedy are Copyright Rob Kennedy. All rights reserved. } -{ } -{ Contributors (in alphabetical order): } -{ } -{**************************************************************************************************} -{ } -{ Comments by Rob Kennedy: } -{ } -{ This unit provides a Unicode version of the SysUtils.Format function for } -{ Delphi 5. Later Delphi versions already have such a function. To the best of } -{ my knowledge, this function is bug-free. (Famous last words?) If there are any } -{ questions regarding the workings of the format parser's state machine, please } -{ do not hesitate to contact me. I understand all the state transitions, but } -{ find it hard to document en masse. } -{ } -{**************************************************************************************************} -{ } -{ Last modified: $Date:: $ } -{ Revision: $Rev:: $ } -{ Author: $Author:: $ } -{ } -{**************************************************************************************************} - -{ TODO : Replacing the calls to MultiBytetoWideChar is all what's needed to make this crossplatform } -{ TODO : Fix Internal Error DBG1384 in BCB 6 compilation } - -unit JclWideFormat; - -{$I jcl.inc} -{$I windowsonly.inc} - -interface - -{$IFDEF UNITVERSIONING} -uses - JclUnitVersioning; -{$ENDIF UNITVERSIONING} - -{ With FORMAT_EXTENSIONS defined, WideFormat will accept more argument types - than Borland's Format function. In particular, it will accept Variant - arguments for the D, E, F, G, M, N, U, and X format types, it will accept - Boolean and TClass arguments for the S format type, and it will accept PChar, - PWideChar, interface, and object arguments for the P format type. - In addition, WideFormat can use Int64 and Variant arguments for index, width, - and precision specifiers used by the asterisk character. } -{$DEFINE FORMAT_EXTENSIONS} - -{ If the format type is D, U, or X, and if the format string contains a - precision specifier greater than 16, then the precision specifier is ignored. - This is consistent with observed Format behavior, although it is not so - documented. Likewise, if the format type is E, F, G, M, or N and the precision - specifier is greater than 18, then it too will be ignored. - - There is one known difference between the behaviors of Format and WideFormat. - WideFormat interprets a width specifier as a signed 32-bit integer. If it is - negative, then it will be treated as 0. Format interprets it as a very large - unsigned integer, which can lead to an access violation or buffer overrun. - - WideFormat detects the same errors as Format, but it reports them differently. - Because of differences in the parsers, WideFormat is unable to provide the - entire format string in the error message every time. When the full string is - not available, it will provide the offending character index instead. In the - case of an invalid argument type, WideFormat will include the allowed types - and the argument index in the error message. Despite the different error - messages, the exception class is still EConvertError. } -function WideFormat(const Format: WideString; const Args: array of const): WideString; - -{$IFDEF UNITVERSIONING} -const - UnitVersioning: TUnitVersionInfo = ( - RCSfile: '$URL$'; - Revision: '$Revision$'; - Date: '$Date$'; - LogPath: 'JCL\source\windows'; - Extra: ''; - Data: nil - ); -{$ENDIF UNITVERSIONING} - -implementation - -uses - Windows, // for MultiBytetoWideChar - {$IFDEF FORMAT_EXTENSIONS} - Variants, // for VarType - {$ENDIF FORMAT_EXTENSIONS} - SysUtils, // for exceptions and FloatToText - Classes, // for TStrings, in error-reporting code - JclBase, // for PByte and PCardinal - JclMath, // for TDelphiSet - JclResources, // for resourcestrings - JclStrings, // for StrLen - JclSysUtils, // for BooleanToStr - JclWideStrings; // for StrLenW, MoveWideChar - -type - { WideFormat uses a finite-state machine to do its parsing. The states are - represented by the TState type below. The progression from one state to the - next is determined by the StateTable constant, which combines the previous - state with the class of the current character (represented by the TCharClass - type). - - Some anomolies: It's possible to go directly from stDot to one of the - specifier states, which according to the documentation should be a syntax - error, but SysUtils.Format accepts it and uses the default -1 for Prec. - Therefore, there are special stPrecDigit and stPrecStar modes that differ - from stDigit and stStar by checking for and overriding the default Prec - value when necessary. } - TState = (stError, stBeginAcc, stAcc, stPercent, stDigit, stPrecDigit, stStar, stPrecStar, stColon, stDash, stDot, stFloat, stInt, stPointer, stString); - TCharClass = (ccOther, ccPercent, ccDigit, ccStar, ccColon, ccDash, ccDot, ccSpecF, ccSpecI, ccSpecP, ccSpecS); - - { The buffer is 64 bytes long. When converting a floating-point value, this - buffer holds AnsiChars. This is the size of the buffer that SysUtils.Format - uses, so we assume it's large enough. When converting an integer value, this - buffer holds WideChars. This buffer can hold 32 WideChars, which is enough - for any 64-bit integer represented in decimal or hexadecimal form. Thus, - this fixed-size buffer does not have the potential to overflow. } - PConversionBuffer = ^TConversionBuffer; - TConversionBuffer = array [0..63] of Byte; - -const - WidePercent = WideChar('%'); - WideLittleX = WideChar('x'); - WideSpace = WideChar(' '); // Also defined in JclUnicode; should be consolidated into JclWideStrings - - NoPrecision = Cardinal(-1); - - // For converting strings - DefaultCodePage = cp_ACP; - - { This array classifies characters within the range of characters considered - special to the format syntax. Characters outside the range are implicitly - classified as ccOther. The value from this table combines with the current - state to yield the next state, as determined by StateTable below. } - CharClassTable: array [WidePercent..WideLittleX] of TCharClass = ( - {%}ccPercent, {&}ccOther, {'}ccOther, {(}ccOther, {)}ccOther, {*}ccStar, - {+}ccOther, {,}ccOther, {-}ccDash, {.}ccDot, {/}ccOther, {0}ccDigit, - {1}ccDigit, {2}ccDigit, {3}ccDigit, {4}ccDigit, {5}ccDigit, {6}ccDigit, - {7}ccDigit, {8}ccDigit, {9}ccDigit, {:}ccColon, {;}ccOther, {<}ccOther, - {=}ccOther, {>}ccOther, {?}ccOther, {@}ccOther, {A}ccOther, {B}ccOther, - {C}ccOther, {D}ccSpecI, {E}ccSpecF, {F}ccSpecF, {G}ccSpecF, {H}ccOther, - {I}ccOther, {J}ccOther, {K}ccOther, {L}ccOther, {M}ccSpecF, {N}ccSpecF, - {O}ccOther, {P}ccSpecP, {Q}ccOther, {R}ccOther, {S}ccSpecS, {T}ccOther, - {U}ccSpecI, {V}ccOther, {W}ccOther, {X}ccSpecI, {Y}ccOther, {Z}ccOther, - {[}ccOther, {\}ccOther, {]}ccOther, {^}ccOther, {_}ccOther, {`}ccOther, - {a}ccOther, {b}ccOther, {c}ccOther, {d}ccSpecI, {e}ccSpecF, {f}ccSpecF, - {g}ccSpecF, {h}ccOther, {i}ccOther, {j}ccOther, {k}ccOther, {l}ccOther, - {m}ccSpecF, {n}ccSpecF, {o}ccOther, {p}ccSpecP, {q}ccOther, {r}ccOther, - {s}ccSpecS, {t}ccOther, {u}ccSpecI, {v}ccOther, {w}ccOther, {x}ccSpecI - ); - { Given the previous state and the class of the current character, this table - determines what the next state should be. } - StateTable: array [TState{old state}, TCharClass{new char}] of TState {new state}= ( - { ccOther, ccPercent, ccDigit, ccStar, ccColon, ccDash, ccDot, ccSpecF, ccSpecI, ccSpecP, ccSpecS } - {stError} (stBeginAcc, stPercent, stBeginAcc, stBeginAcc, stBeginAcc, stBeginAcc, stBeginAcc, stBeginAcc, stBeginAcc, stBeginAcc, stBeginAcc), - {stBeginAcc} (stAcc, stPercent, stAcc, stAcc, stAcc, stAcc, stAcc, stAcc, stAcc, stAcc, stAcc), - {stAcc} (stAcc, stPercent, stAcc, stAcc, stAcc, stAcc, stAcc, stAcc, stAcc, stAcc, stAcc), - {stPercent} (stError, stBeginAcc, stDigit, stStar, stError, stDash, stDot, stFloat, stInt, stPointer, stString), - {stDigit} (stError, stError, stDigit, stError, stColon, stError, stDot, stFloat, stInt, stPointer, stString), - {stPrecDigit}(stError, stError, stPrecDigit, stError, stError, stError, stError, stFloat, stInt, stPointer, stString), - {stStar} (stError, stError, stError, stError, stColon, stError, stDot, stFloat, stInt, stPointer, stString), - {stPrecStar} (stError, stError, stError, stError, stError, stError, stError, stFloat, stInt, stPointer, stString), - {stColon} (stError, stError, stDigit, stStar, stError, stDash, stDot, stFloat, stInt, stPointer, stString), - {stDash} (stError, stError, stDigit, stStar, stError, stError, stDot, stFloat, stInt, stPointer, stString), - {stDot} (stError, stError, stPrecDigit, stPrecStar, stError, stError, stError, stFloat, stInt, stPointer, stString), - {stFloat} (stBeginAcc, stPercent, stBeginAcc, stBeginAcc, stBeginAcc, stBeginAcc, stBeginAcc, stBeginAcc, stBeginAcc, stBeginAcc, stBeginAcc), - {stInt} (stBeginAcc, stPercent, stBeginAcc, stBeginAcc, stBeginAcc, stBeginAcc, stBeginAcc, stBeginAcc, stBeginAcc, stBeginAcc, stBeginAcc), - {stPointer} (stBeginAcc, stPercent, stBeginAcc, stBeginAcc, stBeginAcc, stBeginAcc, stBeginAcc, stBeginAcc, stBeginAcc, stBeginAcc, stBeginAcc), - {stString} (stBeginAcc, stPercent, stBeginAcc, stBeginAcc, stBeginAcc, stBeginAcc, stBeginAcc, stBeginAcc, stBeginAcc, stBeginAcc, stBeginAcc) - ); - { This table is used in converting an ordinal value to a string in either - decimal or hexadecimal format. } - ConvertChars: array [0..$f] of WideChar = ('0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'); - -// Argument-prepration routines -procedure FetchStarArgument(const Arg: PVarRec; const ArgIndex: Cardinal; - out Value: Cardinal); forward; -function PrepareFloat(const Format: WideString; const C: WideChar; Prec: Cardinal; - const Buffer: PConversionBuffer; const FormatStart, Src, ArgIndex: Cardinal; - const Arg: PVarRec; out CharCount: Cardinal): PAnsiChar; forward; -function PrepareInt(const Format: WideString; const C: WideChar; Prec: Cardinal; - const Buffer: PConversionBuffer; const FormatStart, Src, ArgIndex: Cardinal; - const Arg: PVarRec; out CharCount: Cardinal): PWideChar; forward; -function PreparePointer(const Format: WideString; const Buffer: PConversionBuffer; - const FormatStart, Src, ArgIndex: Cardinal; const Arg: PVarRec; - out CharCount: Cardinal): PWideChar; forward; -function PrepareString(const Format: WideString; const Buffer: PConversionBuffer; - const FormatStart, Src, ArgIndex: Cardinal; const Arg: PVarRec; - out CharCount: Cardinal): Pointer; forward; - -// WideFormat support routines -function EnsureStringLen(const NeededLen, CurrentLen: Cardinal; var S: WideString): Cardinal; forward; -procedure CopyBuffer(var Dest: WideString; const CharCount: Cardinal; const Source: Pointer; var ResultLen, DestIndex: Cardinal); forward; -function FillWideChar(var X; Count: Cardinal; const Value: WideChar): Cardinal; forward; - -{ Error-reporting routines - - Using separate functions for creating exceptions helps to streamline the - WideFormat code. The stack is not cluttered with space for temporary strings - and open arrays needed for calling the exceptions' constructors, and the - function's prologue and epilogue don't execute code for initializing and - finalizing those hidden stack variables. The extra stack space is thus only - used in the case when WideFormat actually needs to raise an exception. By - returning the Exception object instead of raising it within these functions, - we move the "raise" command into WideFormat, which allows the compiler to - detect which execution paths use variables and which don't, and that reduces - the number of inaccurate compiler hints and warnings. } -function FormatNoArgumentError(const ArgIndex: Cardinal): Exception; forward; -function FormatNoArgumentErrorEx(const Format: WideString; const FormatStart, FormatEnd, ArgIndex: Cardinal): Exception; forward; -function FormatSyntaxError(const CharIndex: Cardinal): Exception; forward; -function FormatBadArgumentTypeError(const VType: Byte; const ArgIndex: Cardinal; const Allowed: TDelphiSet): Exception; forward; -function FormatBadArgumentTypeErrorEx(const Format: WideString; const FormatStart, FormatEnd: Cardinal; const VType: Byte; const ArgIndex: Cardinal; const Allowed: TDelphiSet): Exception; forward; - -// === WideFormat ============================================================== - -function WideFormat(const Format: WideString; const Args: array of const): WideString; -var - // Basic parsing values - State: TState; // Maintain the finite-state machine - C: WideChar; // Cache value of Format[Src] - Src, Dest: Cardinal; // Indices into Format and Result - FormatLen: Cardinal; // Alias for Length(Format) - ResultLen: Cardinal; // Alias for Length(Result) - // Parser's formatting variables - ArgIndex: Cardinal; // Which argument to read from the Args array - Arg: PVarRec; // Pointer to current argument - LeftAlign: Boolean; // Whether the "-" character is present - Width: Cardinal; // Value of width specifier - Prec: Cardinal; // Value of precision specifier - // Error-reporting support - FormatStart: Cardinal; // First character of a format string - // Variables for generating the result - P: Pointer; // Pointer to character buffer. Either Wide or Ansi. - Wide: Boolean; // Tells whether P is PWideChar or PAnsiChar - CharCount: Cardinal; // How many characters are pointed to by P - AnsiCount: Cardinal; - Buffer: TConversionBuffer; // Buffer for numerical conversions - TempWS: WideString; // Buffer for Variant and Boolean string conversions - MinWidth, SpacesNeeded: Cardinal; -begin - FormatLen := Length(Format); - // Start with an estimated result length - ResultLen := FormatLen * 4; - SetLength(Result, ResultLen); - if FormatLen = 0 then - Exit; - - Dest := 1; - State := stError; - ArgIndex := 0; - CharCount := 0; - - // Avoid compiler warnings - LeftAlign := False; - AnsiCount := 0; - FormatStart := 0; - P := nil; - - for Src := 1 to FormatLen do - begin - C := Format[Src]; - if (Low(CharClassTable) <= C) and (C <= High(CharClassTable)) then - State := StateTable[State, CharClassTable[C]] - else - State := StateTable[State, ccOther]; - case State of - stError: - raise FormatSyntaxError(Src); // syntax error at index [Src] - stBeginAcc: - begin - // Begin accumulating characters to copy to Result - P := @Format[Src]; - CharCount := 1; - end; - stAcc: - Inc(CharCount); - stPercent: - begin - if CharCount > 0 then - begin - // Copy accumulated characters into result - CopyBuffer(Result, CharCount, P, ResultLen, Dest); - CharCount := 0; - end; - // Prepare a new format string - Width := 0; - Prec := NoPrecision; - FormatStart := Src; - LeftAlign := False; - end; - stDigit: - begin - // We read into Width, but we might actually be reading the ArgIndex - // value. If that turns out to be the case, it gets addressed in the - // stColon state below and Width is reset to its default value, 0. - Width := Width * 10 + Cardinal(Ord(C) - Ord('0')); - end; - stPrecDigit: - begin - if Prec = NoPrecision then - Prec := 0; - Prec := Prec * 10 + Cardinal(Ord(C) - Ord('0')); - end; - stStar, stPrecStar: - begin - if ArgIndex > Cardinal(High(Args)) then - raise FormatNoArgumentError(ArgIndex); - // (Prec|Width) := Args[ArgIndex++] - Arg := @Args[ArgIndex]; - if State = stStar then - FetchStarArgument(Arg, ArgIndex, Width) - else - FetchStarArgument(Arg, ArgIndex, Prec); - Inc(ArgIndex); - end; - stColon: - begin - ArgIndex := Width; - Width := 0; - end; - stDash: - LeftAlign := True; - stDot: ; - stFloat, stInt, stPointer, stString: - begin - if ArgIndex > Cardinal(High(Args)) then - raise FormatNoArgumentErrorEx(Format, FormatStart, Src, ArgIndex); - Arg := @Args[ArgIndex]; - case State of - stFloat: - begin - P := PrepareFloat(Format, C, Prec, @Buffer, FormatStart, Src, ArgIndex, Arg, AnsiCount); - CharCount := AnsiCount; - Wide := False; - end; - stInt: - begin - P := PrepareInt(Format, C, Prec, @Buffer, FormatStart, Src, ArgIndex, Arg, CharCount); - Wide := True; - end; - stPointer: - begin - P := PreparePointer(Format, @Buffer, FormatStart, Src, ArgIndex, Arg, CharCount); - Wide := True; - end; - else {stString:} - begin - Wide := Arg^.VType in [vtWideChar, vtPWideChar, vtBoolean, vtVariant, vtWideString]; - case Arg^.VType of - vtVariant: - begin - TempWS := Arg^.VVariant^; - CharCount := Length(TempWS); - P := Pointer(TempWS); - end; - {$IFDEF FORMAT_EXTENSIONS} - vtBoolean: - begin - TempWS := BooleanToStr(Arg^.VBoolean); - CharCount := Length(TempWS); - P := Pointer(TempWS); - end; - {$ENDIF FORMAT_EXTENSIONS} - else - P := PrepareString(Format, @Buffer, FormatStart, Src, ArgIndex, Arg, CharCount); - end; - // We want the length in WideChars, not AnsiChars; they aren't - // necessarily the same. - if not Wide then - begin - AnsiCount := CharCount; - if CharCount > 0 then - CharCount := MultiByteToWideChar(DefaultCodePage, 0, P, AnsiCount, nil, 0); - end; - // For strings, Prec can only truncate, never lengthen. - if Prec < CharCount then - CharCount := Prec; - end; // stString case - end; // case State - Inc(ArgIndex); - - if Integer(Width) < 0 then - Width := 0; - if (Width = 0) and (CharCount = 0) then continue; - - // This code prepares for the buffer-copying code. - MinWidth := CharCount; - if Width > MinWidth then - SpacesNeeded := Width - MinWidth - else - SpacesNeeded := 0; - ResultLen := EnsureStringLen(Pred(Dest + MinWidth + SpacesNeeded), ResultLen, Result); - - // This code fills the resultant buffer. - if (SpacesNeeded > 0) and not LeftAlign then - Inc(Dest, FillWideChar(Result[Dest], SpacesNeeded, WideSpace)); - if Wide then - MoveWideChar(P^, Result[Dest], CharCount) - else - MultiByteToWideChar(DefaultCodePage, 0, P, Integer(AnsiCount), @Result[Dest], Integer(CharCount)); - Inc(Dest, CharCount); - CharCount := 0; - if (SpacesNeeded > 0) and LeftAlign then - Inc(Dest, FillWideChar(Result[Dest], SpacesNeeded, WideSpace)); - end; // case stFloat, stInt, stPointer, stString - end; // case C - end; // for - if CharCount > 0 then - CopyBuffer(Result, CharCount, P, ResultLen, Dest); - if ResultLen >= Dest then - SetLength(Result, Pred(Dest)); - { I would prefer to call the following, instead of SetLength, because - SetLength _always_ re-allocates the string buffer whereas this function - will sometimes just change the string's length field and return the - original value. Using this function, though, goes contrary to the goal of - having this unit be cross-platform. } - // SysReAllocStringLen(PWideChar(Pointer(Result)), PWideChar(Pointer(Result)), Dest - 1); -end; - -// === Argument-prepration support routines ==================================== - -function ModDiv32(const Dividend, Divisor: Cardinal; out Quotient: Cardinal): Cardinal; -{ Returns the quotient and modulus of the two inputs while performing only one - division operation. - Quotient := Dividend div Divisor; - Result := Dividend mod Divisor; } -asm - {$IFDEF CPU32} - // --> EAX Dividend - // EDX Divisor - // ECX Quotient - // <-- EAX Result - PUSH ECX - MOV ECX, EDX - XOR EDX, EDX - DIV ECX - POP ECX - MOV [ECX], EAX - MOV EAX, EDX - {$ENDIF CPU32} - {$IFDEF CPU64} - // --> ECX Dividend - // EDX Divisor - // R8 Quotient - // <-- RAX Result - MOV EAX, ECX - MOV ECX, EDX - XOR EDX, EDX - // EAX Dividend - // ECX Divisor - // R8 Quotient - DIV ECX - // EAX Quotient - // EDX Remainder - MOV [R8], EAX - XOR RAX, RAX - MOV EAX, EDX - {$ENDIF CPU64} -end; - -function ConvertInt32(Value: Cardinal; const Base: Cardinal; var Buffer: PWideChar): Cardinal; -// Buffer: Pointer to the END of the buffer to be filled. Upon return, Buffer -// will point to the first character in the string. The buffer will NOT be -// null-terminated. -// Result: Number of characters filled in buffer -begin - Result := 0; - repeat - Inc(Result); - Dec(Buffer); - Buffer^ := ConvertChars[ModDiv32(Value, Base, Value)]; - until Value = 0; -end; - -function ModDiv64({$IFDEF CPU32}var{$ENDIF CPU32} Dividend: Int64; const Divisor: Cardinal; out Quotient: Int64): Int64; -{ Returns the quotient and modulus of the two inputs using unsigned division - Unsigned 64-bit division is not available in Delphi 5, but the System unit - does provide division and modulus functions accessible through assembler. - Quotient := Dividend div Divisor; - Result := Dividend mod Divisor; } -asm - {$IFDEF CPU32} - // --> EAX Dividend - // EDX Divisor - // ECX Quotient - // <-- EAX Result - PUSH 0 // prepare for second division - PUSH EDX - - PUSH DWORD PTR [EAX] // save dividend - PUSH DWORD PTR [EAX+4] - - PUSH ECX // save quotient - - PUSH 0 // prepare for first division - PUSH EDX - MOV EDX, [EAX+4] - MOV EAX, [EAX] - CALL System.@_lludiv - POP ECX // restore quotient - MOV [ECX], EAX // store quotient - MOV [ECX+4], EDX - - POP EDX // restore dividend - POP EAX - CALL System.@_llumod - {$ENDIF CPU32} - {$IFDEF CPU64} - // --> RCX Dividend - // RDX Divisor - // R8 Quotient - // <-- RAX Result - MOV RAX, RCX - MOV RCX, RDX - XOR RDX, RDX - // RAX Dividend - // RCX Divisor - // R8 Quotient - DIV RCX - // RAX Quotient - // RDX Remainder - MOV [R8], RAX - MOV RAX, RDX - {$ENDIF CPU64} -end; - -function ConvertInt64(Value: Int64; const Base: Cardinal; var Buffer: PWideChar): Cardinal; -{ See ConvertInt32 for details - Result: Number of characters filled in buffer - Buffer: Pointer to first valid character in buffer } -begin - Result := 0; - repeat - Inc(Result); - Dec(Buffer); - Buffer^ := ConvertChars[ModDiv64(Value, Base, Value)]; - until Value = 0; -end; - -{$IFDEF FORMAT_EXTENSIONS} -function GetPClassName(const Cls: TClass): PShortString; -{ GetPClassName is similar to calling Cls.ClassName, but avoids the necessary - memory copy inherent in the function call. It also avoids a conversion from - ShortString to AnsiString, which would happen when the function's result got - type cast to PChar. Since all we really need is a pointer to the first byte - of the string, the bytes in the VMT are just as good as the bytes in a normal - AnsiString. - Result := JclSysUtils.GetVirtualMethod(Cls, vmtClassName div SizeOf(Pointer)); } -asm - {$IFDEF CPU32} - // --> EAX Cls - // <-- EAX Result - MOV EAX, [EAX].vmtClassName - {$ENDIF CPU32} - {$IFDEF CPU64} - // --> RCX Cls - // <-- RAX Result - MOV RAX, [ECX].vmtClassName - {$ENDIF CPU64} -end; -{$ENDIF FORMAT_EXTENSIONS} - -{ The compiler's overflow checking must be disabled for the following two - procedures, which negate integers. For the rest of the code in this unit, - overflow isn't relevant. } - -{$OVERFLOWCHECKS OFF} - -procedure SafeNegate32(var Int: Integer); -begin - Int := -Int; -end; - -procedure SafeNegate64(var Int: Int64); -begin - Int := -Int; -end; - -{$IFDEF OVERFLOWCHECKS_ON} -{$OVERFLOWCHECKS ON} -{$ENDIF OVERFLOWCHECKS_ON} - -// === Argument-preparation routines =========================================== - -procedure FetchStarArgument(const Arg: PVarRec; const ArgIndex: Cardinal; out Value: Cardinal); -const - AllowedStarTypes: TDelphiSet = [vtInteger{$IFDEF FORMAT_EXTENSIONS}, vtInt64, vtVariant{$ENDIF}]; -begin - case Arg^.VType of - vtInteger: - Value := Arg^.VInteger; - {$IFDEF FORMAT_EXTENSIONS} - vtVariant: - Value := Arg^.VVariant^; - vtInt64: - Value := Arg^.VInt64^; - {$ENDIF FORMAT_EXTENSIONS} - else - raise FormatBadArgumentTypeError(Arg.VType, ArgIndex, AllowedStarTypes); - end; -end; - -function PrepareFloat(const Format: WideString; const C: WideChar; - Prec: Cardinal; const Buffer: PConversionBuffer; const FormatStart, Src, ArgIndex: Cardinal; - const Arg: PVarRec; out CharCount: Cardinal): PAnsiChar; -{ The floating-point formats are all similar. The conversion eventually happens - in FloatToText. } -const - AllowedFloatTypes: TDelphiSet = [vtExtended, vtCurrency{$IFDEF FORMAT_EXTENSIONS}, vtVariant{$ENDIF}]; - // These default values are taken from the behavior of SysUtils.Format. - DefaultGeneralPrecision = 15; - GeneralDigits = 3; - DefaultFixedDigits = 2; - FixedPrecision = 18; - MaxFloatPrecision = 18; -var - ValueType: TFloatValue; - FloatVal: Pointer; - FloatFormat: TFloatFormat; - {$IFDEF FORMAT_EXTENSIONS} - TempCurr: Currency; - TempExt: Extended; - {$ENDIF FORMAT_EXTENSIONS} -begin - case Arg.VType of - vtExtended: - begin - ValueType := fvExtended; - FloatVal := Arg.VExtended; - end; - vtCurrency: - begin - ValueType := fvCurrency; - FloatVal := Arg.VCurrency; - end; - {$IFDEF FORMAT_EXTENSIONS} - vtVariant: - begin - // We can't give FloatToText a pointer to a Variant, so we extract the - // Variant's value and point to a temporary value instead. - if VarType(Arg.VVariant^) and varCurrency <> 0 then - begin - TempCurr := Arg.VVariant^; - FloatVal := @TempCurr; - ValueType := fvCurrency; - end - else - begin - TempExt := Arg.VVariant^; - FloatVal := @TempExt; - ValueType := fvExtended; - end; - end; - {$ENDIF FORMAT_EXTENSIONS} - else - raise FormatBadArgumentTypeErrorEx(Format, FormatStart, Src, Arg.VType, ArgIndex, AllowedFloatTypes); - end; // case Arg.VType - case C of - 'e', 'E': - FloatFormat := ffExponent; - 'f', 'F': - FloatFormat := ffFixed; - 'g', 'G': - FloatFormat := ffGeneral; - 'm', 'M': - FloatFormat := ffCurrency; - else {'n', 'N':} - FloatFormat := ffNumber; - end; - Result := PAnsiChar(Buffer); - // Prec is interpeted differently depending on the format. - if FloatFormat in [ffGeneral, ffExponent] then - begin - if (Prec = NoPrecision) or (Prec > MaxFloatPrecision) then - Prec := DefaultGeneralPrecision; - CharCount := FloatToText(Result, FloatVal^, ValueType, FloatFormat, Prec, GeneralDigits); - end - else {[ffFixed, ffNumber, ffCurrency]} - begin - if (Prec = NoPrecision) or (Prec > MaxFloatPrecision) then - begin - if FloatFormat = ffCurrency then - Prec := SysUtils.CurrencyDecimals - else - Prec := DefaultFixedDigits; - end; - CharCount := FloatToText(Result, FloatVal^, ValueType, FloatFormat, FixedPrecision, Prec); - end; -end; - -function PrepareInt(const Format: WideString; const C: WideChar; Prec: Cardinal; - const Buffer: PConversionBuffer; const FormatStart, Src, ArgIndex: Cardinal; - const Arg: PVarRec; out CharCount: Cardinal): PWideChar; -const - MaxIntPrecision = 16; - AllowedIntegerTypes: TDelphiSet = [vtInteger, vtInt64{$IFDEF FORMAT_EXTENSIONS}, vtVariant{$ENDIF}]; -var - // Integer-conversion variables - Base: Cardinal; // For decimal or hexadecimal - Temp32: Cardinal; - Temp64: Int64; - Neg: Boolean; -begin - if (C = 'x') or (C = 'X') then - Base := 16 - else - Base := 10; - case Arg^.VType of - vtInteger {$IFDEF FORMAT_EXTENSIONS}, vtVariant {$ENDIF}: - begin - {$IFDEF FORMAT_EXTENSIONS} - if Arg^.VType <> vtInteger then - Temp32 := Arg^.VVariant^ - else - {$ENDIF FORMAT_EXTENSIONS} - Temp32 := Cardinal(Arg^.VInteger); - // The value may be signed and negative, but the converter only - // interprets unsigned values. - Neg := ((C = 'd') or (C = 'D')) and (Integer(Temp32) < 0); - if Neg then - SafeNegate32(Integer(Temp32)); - Result := @Buffer[High(Buffer^)]; - CharCount := ConvertInt32(Temp32, Base, Result); - end; - vtInt64: - begin - Temp64 := Arg^.VInt64^; - // The value may be signed and negative, but the converter only - // interprets unsigned values. - Neg := ((C = 'd') or (C = 'D')) and (Temp64 < 0); - if Neg then - SafeNegate64(Temp64); - Result := @Buffer[High(Buffer^)]; - CharCount := ConvertInt64(Temp64, Base, Result); - end; - else - raise FormatBadArgumentTypeErrorEx(Format, FormatStart, Src, Arg.VType, ArgIndex, AllowedIntegerTypes); - end; - // If Prec was specified, then we need to see whether any - // zero-padding is necessary - if Prec > MaxIntPrecision then - Prec := NoPrecision; - if Prec <> NoPrecision then - while Prec > CharCount do - begin - Dec(PWideChar(Result)); - PWideChar(Result)^ := '0'; - Inc(CharCount); - end; - if Neg then - begin - Dec(PWideChar(Result)); - PWideChar(Result)^ := '-'; - Inc(CharCount); - end; - Assert(PWideChar(Result) >= Buffer); -end; - -function PreparePointer(const Format: WideString; const Buffer: PConversionBuffer; - const FormatStart, Src, ArgIndex: Cardinal; const Arg: PVarRec; - out CharCount: Cardinal): PWideChar; -{ The workings are similar to the integer-converting code above, but the pointer - specifier accepts a few more types that make it worth writing separate code. } -const - AllowedPointerTypes: TDelphiSet = [vtPointer{$IFDEF FORMAT_EXTENSIONS}, vtInterface, vtObject, vtPChar, vtPWideChar{$ENDIF}]; -begin - if Arg.VType in AllowedPointerTypes then - begin - Result := @Buffer[High(Buffer^)]; - CharCount := ConvertInt32(Cardinal(Arg.VInteger), 16, Result); - end - else - raise FormatBadArgumentTypeErrorEx(Format, FormatStart, Src, Arg.VType, ArgIndex, AllowedPointerTypes); - // Prec is ignored. Alternatively, it is assumed to be 8 - while (2 * SizeOf(Pointer)) > CharCount do - begin - Dec(PWideChar(Result)); - PWideChar(Result)^ := '0'; - Inc(CharCount); - end; - Assert(PWideChar(Result) >= Buffer); -end; - -function PrepareString(const Format: WideString; const Buffer: PConversionBuffer; - const FormatStart, Src, ArgIndex: Cardinal; const Arg: PVarRec; - out CharCount: Cardinal): Pointer; -{ This routine does not handle ALL the argument types for the %s specifier. It - does not handle Variant, and when FORMAT_EXTENSIONS is defined, it does not - handle Boolean, either. Those types require use of a temporary WideString - variable (TempWS), and if that were assigned here, then the pointer that this - function returns would be invalidated when the string goes out of scope. } -const - AllowedStringTypes: TDelphiSet = [ - vtChar, vtWideChar, vtString, vtPChar, vtPWideChar, - vtVariant, vtAnsiString, vtWideString{$IFDEF SUPPORTS_UNICODE_STRING}, vtUnicodeString{$ENDIF SUPPORTS_UNICODE_STRING} - {$IFDEF FORMAT_EXTENSIONS}, vtBoolean, vtClass{$ENDIF FORMAT_EXTENSIONS} - ]; -begin - case Arg^.VType of - vtChar, vtWideChar: - begin - Assert(@Arg^.VChar = @Arg^.VWideChar); - Result := @Arg^.VChar; - CharCount := 1; - end; - vtString: // ShortString - begin - CharCount := Length(Arg^.VString^); - Result := @Arg^.VString^[1]; - end; - vtPChar: // PAnsiChar - begin - Result := Arg^.VPChar; - CharCount := StrLen(PAnsiChar(Result)); - end; - vtPWideChar: - begin - Result := Arg^.VPWideChar; - CharCount := StrLenW(Result) - end; - {$IFDEF FORMAT_EXTENSIONS} - vtClass: - begin - Result := GetPClassName(Arg^.VClass); - CharCount := Length(PShortString(Result)^); - Inc(PAnsiChar(Result)); - end; - {$ENDIF FORMAT_EXTENSIONS} - vtAnsiString: - begin - Result := Arg^.VAnsiString; - CharCount := Length(AnsiString(Result)); - end; - vtWideString: - begin - Result := Arg^.VWideString; - CharCount := Length(WideString(Result)) - end; - {$IFDEF SUPPORTS_UNICODE_STRING} - vtUnicodeString: - begin - Result := Arg^.VUnicodeString; - CharCount := Length(UnicodeString(Result)) - end; - {$ENDIF SUPPORTS_UNICODE_STRING} - else - raise FormatBadArgumentTypeErrorEx(Format, FormatStart, Src, Arg.VType, ArgIndex, AllowedStringTypes); - end; -end; - -// === WideFormat support routines ============================================= - -function EnsureStringLen(const NeededLen, CurrentLen: Cardinal; var S: WideString): Cardinal; -{ Lengthens a string, but always by doubling the current length. Returns the - string's new length. } -begin - // Assert(Cardinal(Length(S)) = CurrentLen); - Result := CurrentLen; - if NeededLen > Result then - begin - repeat - Result := Result * 2; - until NeededLen <= Result; - SetLength(S, Result); - end; - // Assert(Cardinal(Length(S)) >= NeededLen); -end; - -procedure CopyBuffer(var Dest: WideString; const CharCount: Cardinal; const Source: Pointer; var ResultLen, DestIndex: Cardinal); -begin - ResultLen := EnsureStringLen(DestIndex + CharCount - 1, ResultLen, Dest); - MoveWideChar(Source^, Dest[DestIndex], CharCount); - Inc(DestIndex, CharCount); -end; - -function FillWideChar(var X; Count: Cardinal; const Value: WideChar): Cardinal; -var - PW: PWideChar; -begin - Result := Count; - PW := @X; - for Count := Count downto 1 do - begin - PW^ := Value; - Inc(PW); - end; -end; - -// === Error-handling functions ================================================ - -function FormatNoArgumentError(const ArgIndex: Cardinal): Exception; -begin - Result := EConvertError.CreateResFmt(PResStringRec(@RsFormatNoArgument), [ArgIndex]); -end; - -function FormatNoArgumentErrorEx(const Format: WideString; const FormatStart, FormatEnd, ArgIndex: Cardinal): Exception; -begin - Result := EConvertError.CreateResFmt(PResStringRec(@RsFormatNoArgumentEx), [ArgIndex, Copy(Format, FormatStart, FormatStart - FormatEnd + 1)]); -end; - -function FormatSyntaxError(const CharIndex: Cardinal): Exception; -begin - Result := EConvertError.CreateResFmt(PResStringRec(@RsFormatSyntaxError), [CharIndex]); -end; - -const - VarRecTypes: array [vtInteger..vtInt64] of PChar = ( - 'Integer', 'Boolean', 'Char', 'Extended', 'ShortString', 'Pointer', 'PChar', - 'TObject', 'TClass', 'WideChar', 'PWideChar', 'AnsiString', 'Currency', - 'Variant', 'IUnknown', 'WideString', 'Int64' - ); - -function GetTypeList(const Types: TDelphiSet): string; -var - T: Byte; - List: TStrings; -begin - List := TStringList.Create; - try - for T := Low(VarRecTypes) to High(VarRecTypes) do - begin - if T in Types then - List.Add(VarRecTypes[T]); - end; - Result := List.CommaText; - finally - List.Free; - end; -end; - -function FormatBadArgumentTypeError(const VType: Byte; const ArgIndex: Cardinal; const Allowed: TDelphiSet): Exception; -var - FoundType, AllowedTypes: string; -begin - FoundType := VarRecTypes[VType]; - AllowedTypes := GetTypeList(Allowed); - Result := EConvertError.CreateResFmt(PResStringRec(@RsFormatBadArgumentType), [FoundType, ArgIndex, AllowedTypes]); -end; - -function FormatBadArgumentTypeErrorEx(const Format: WideString; const FormatStart, FormatEnd: Cardinal; const VType: Byte; const ArgIndex: Cardinal; const Allowed: TDelphiSet): Exception; -var - FoundType, AllowedTypes: string; -begin - FoundType := VarRecTypes[VType]; - AllowedTypes := GetTypeList(Allowed); - Result := EConvertError.CreateResFmt(PResStringRec(@RsFormatBadArgumentTypeEx), [FoundType, ArgIndex, Copy(Format, FormatStart, FormatEnd - FormatStart + 1), AllowedTypes]); -end; - -{$IFDEF UNITVERSIONING} -initialization - RegisterUnitVersion(HInstance, UnitVersioning); - -finalization - UnregisterUnitVersion(HInstance); -{$ENDIF UNITVERSIONING} - -end. This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ou...@us...> - 2010-01-25 13:02:36
|
Revision: 3140 http://jcl.svn.sourceforge.net/jcl/?rev=3140&view=rev Author: outchy Date: 2010-01-25 13:02:28 +0000 (Mon, 25 Jan 2010) Log Message: ----------- JclBaseExpert-D requires vclx for unit FileCtrl. Modified Paths: -------------- trunk/jcl/packages/c6/JclBaseExpert.bpk trunk/jcl/packages/c6/JclBaseExpert.dpk trunk/jcl/packages/cs1/JclBaseExpert.bdsproj trunk/jcl/packages/cs1/JclBaseExpert.dpk trunk/jcl/packages/d10/JclBaseExpert.bdsproj trunk/jcl/packages/d10/JclBaseExpert.dpk trunk/jcl/packages/d11/JclBaseExpert.dpk trunk/jcl/packages/d11/JclBaseExpert.dproj trunk/jcl/packages/d12/JclBaseExpert.dpk trunk/jcl/packages/d12/JclBaseExpert.dproj trunk/jcl/packages/d14/JclBaseExpert.dpk trunk/jcl/packages/d14/JclBaseExpert.dproj trunk/jcl/packages/d6/JclBaseExpert.dpk trunk/jcl/packages/d7/JclBaseExpert.dpk trunk/jcl/packages/d8/JclBaseExpert.bdsproj trunk/jcl/packages/d8/JclBaseExpert.dpk trunk/jcl/packages/d9/JclBaseExpert.bdsproj trunk/jcl/packages/d9/JclBaseExpert.dpk trunk/jcl/packages/xml/JclBaseExpert-D.xml Modified: trunk/jcl/packages/c6/JclBaseExpert.bpk =================================================================== --- trunk/jcl/packages/c6/JclBaseExpert.bpk 2010-01-25 12:19:13 UTC (rev 3139) +++ trunk/jcl/packages/c6/JclBaseExpert.bpk 2010-01-25 13:02:28 UTC (rev 3140) @@ -5,7 +5,7 @@ DO NOT EDIT THIS FILE, IT IS GENERATED BY THE PACKAGE GENERATOR ALWAYS EDIT THE RELATED XML FILE (JclBaseExpert-D.xml) - Last generated: 21-01-2010 20:03:25 UTC + Last generated: 25-01-2010 12:57:31 UTC ***************************************************************************** --> <PROJECT> @@ -44,6 +44,7 @@ <PACKAGES value=" rtl.bpi vcl.bpi + vclx.bpi designide.bpi Jcl.bpi "/> @@ -84,6 +85,7 @@ <FILE FILENAME="JclBaseExpert.cpp" FORMNAME="" UNITNAME="JclBaseExpert" CONTAINERID="CCompiler" DESIGNCLASS="" LOCALCOMMAND=""/> <FILE FILENAME="rtl.bpi" FORMNAME="" UNITNAME="rtl" CONTAINERID="BPITool" DESIGNCLASS="" LOCALCOMMAND=""/> <FILE FILENAME="vcl.bpi" FORMNAME="" UNITNAME="vcl" CONTAINERID="BPITool" DESIGNCLASS="" LOCALCOMMAND=""/> + <FILE FILENAME="vclx.bpi" FORMNAME="" UNITNAME="vclx" CONTAINERID="BPITool" DESIGNCLASS="" LOCALCOMMAND=""/> <FILE FILENAME="designide.bpi" FORMNAME="" UNITNAME="designide" CONTAINERID="BPITool" DESIGNCLASS="" LOCALCOMMAND=""/> <FILE FILENAME="Jcl.bpi" FORMNAME="" UNITNAME="Jcl" CONTAINERID="BPITool" DESIGNCLASS="" LOCALCOMMAND=""/> <FILE FILENAME="..\..\install\JediRegInfo.pas" FORMNAME="" UNITNAME="JediRegInfo" CONTAINERID="PascalCompiler" DESIGNCLASS="" LOCALCOMMAND=""/> Modified: trunk/jcl/packages/c6/JclBaseExpert.dpk =================================================================== --- trunk/jcl/packages/c6/JclBaseExpert.dpk 2010-01-25 12:19:13 UTC (rev 3139) +++ trunk/jcl/packages/c6/JclBaseExpert.dpk 2010-01-25 13:02:28 UTC (rev 3140) @@ -4,7 +4,7 @@ DO NOT EDIT THIS FILE, IT IS GENERATED BY THE PACKAGE GENERATOR ALWAYS EDIT THE RELATED XML FILE (JclBaseExpert-D.xml) - Last generated: 21-01-2010 20:03:25 UTC + Last generated: 25-01-2010 12:57:32 UTC ----------------------------------------------------------------------------- } @@ -41,6 +41,7 @@ requires rtl, vcl, + vclx, designide, Jcl ; Modified: trunk/jcl/packages/cs1/JclBaseExpert.bdsproj =================================================================== --- trunk/jcl/packages/cs1/JclBaseExpert.bdsproj 2010-01-25 12:19:13 UTC (rev 3139) +++ trunk/jcl/packages/cs1/JclBaseExpert.bdsproj 2010-01-25 13:02:28 UTC (rev 3140) @@ -122,7 +122,7 @@ <Directories Name="PackageDLLOutputDir"></Directories> <Directories Name="PackageDCPOutputDir">..\..\lib\cs1</Directories> <Directories Name="SearchPath">..\..\lib\cs1;..\..\source\include</Directories> - <Directories Name="Packages">rtl;vcl;designide;Jcl</Directories> + <Directories Name="Packages">rtl;vcl;vclx;designide;Jcl</Directories> <Directories Name="Conditionals">RELEASE</Directories> <Directories Name="DebugSourceDirs"></Directories> <Directories Name="UsePackages">True</Directories> Modified: trunk/jcl/packages/cs1/JclBaseExpert.dpk =================================================================== --- trunk/jcl/packages/cs1/JclBaseExpert.dpk 2010-01-25 12:19:13 UTC (rev 3139) +++ trunk/jcl/packages/cs1/JclBaseExpert.dpk 2010-01-25 13:02:28 UTC (rev 3140) @@ -4,7 +4,7 @@ DO NOT EDIT THIS FILE, IT IS GENERATED BY THE PACKAGE GENERATOR ALWAYS EDIT THE RELATED XML FILE (JclBaseExpert-D.xml) - Last generated: 21-01-2010 20:03:25 UTC + Last generated: 25-01-2010 12:57:33 UTC ----------------------------------------------------------------------------- } @@ -40,6 +40,7 @@ requires rtl, vcl, + vclx, designide, Jcl ; Modified: trunk/jcl/packages/d10/JclBaseExpert.bdsproj =================================================================== --- trunk/jcl/packages/d10/JclBaseExpert.bdsproj 2010-01-25 12:19:13 UTC (rev 3139) +++ trunk/jcl/packages/d10/JclBaseExpert.bdsproj 2010-01-25 13:02:28 UTC (rev 3140) @@ -124,7 +124,7 @@ <Directories Name="OutputDir"></Directories> <Directories Name="PackageDLLOutputDir"></Directories> <Directories Name="PackageDCPOutputDir">..\..\lib\d10</Directories> - <Directories Name="Packages">rtl;vcl;designide;Jcl</Directories> + <Directories Name="Packages">rtl;vcl;vclx;designide;Jcl</Directories> <Directories Name="Conditionals">BCB;RELEASE</Directories> <Directories Name="DebugSourceDirs"></Directories> <Directories Name="UsePackages">True</Directories> Modified: trunk/jcl/packages/d10/JclBaseExpert.dpk =================================================================== --- trunk/jcl/packages/d10/JclBaseExpert.dpk 2010-01-25 12:19:13 UTC (rev 3139) +++ trunk/jcl/packages/d10/JclBaseExpert.dpk 2010-01-25 13:02:28 UTC (rev 3140) @@ -4,7 +4,7 @@ DO NOT EDIT THIS FILE, IT IS GENERATED BY THE PACKAGE GENERATOR ALWAYS EDIT THE RELATED XML FILE (JclBaseExpert-D.xml) - Last generated: 21-01-2010 20:03:25 UTC + Last generated: 25-01-2010 12:57:34 UTC ----------------------------------------------------------------------------- } @@ -41,6 +41,7 @@ requires rtl, vcl, + vclx, designide, Jcl ; Modified: trunk/jcl/packages/d11/JclBaseExpert.dpk =================================================================== --- trunk/jcl/packages/d11/JclBaseExpert.dpk 2010-01-25 12:19:13 UTC (rev 3139) +++ trunk/jcl/packages/d11/JclBaseExpert.dpk 2010-01-25 13:02:28 UTC (rev 3140) @@ -4,7 +4,7 @@ DO NOT EDIT THIS FILE, IT IS GENERATED BY THE PACKAGE GENERATOR ALWAYS EDIT THE RELATED XML FILE (JclBaseExpert-D.xml) - Last generated: 21-01-2010 20:03:25 UTC + Last generated: 25-01-2010 12:57:34 UTC ----------------------------------------------------------------------------- } @@ -41,6 +41,7 @@ requires rtl, vcl, + vclx, designide, Jcl ; Modified: trunk/jcl/packages/d11/JclBaseExpert.dproj =================================================================== --- trunk/jcl/packages/d11/JclBaseExpert.dproj 2010-01-25 12:19:13 UTC (rev 3139) +++ trunk/jcl/packages/d11/JclBaseExpert.dproj 2010-01-25 13:02:28 UTC (rev 3140) @@ -5,7 +5,7 @@ <Configuration Condition=" '$(Configuration)' == '' ">Release</Configuration> <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform> <DCC_DCCCompiler>DCC32</DCC_DCCCompiler> - <DCC_UsePackage>rtl;vcl;designide;Jcl</DCC_UsePackage> + <DCC_UsePackage>rtl;vcl;vclx;designide;Jcl</DCC_UsePackage> <DCC_Define>BCB;RELEASE</DCC_Define> </PropertyGroup> <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' "> @@ -87,6 +87,7 @@ </DelphiCompile> <DCCReference Include="rtl.dcp" /> <DCCReference Include="vcl.dcp" /> + <DCCReference Include="vclx.dcp" /> <DCCReference Include="designide.dcp" /> <DCCReference Include="Jcl.dcp" /> <DCCReference Include="..\..\install\JediRegInfo.pas" /> Modified: trunk/jcl/packages/d12/JclBaseExpert.dpk =================================================================== --- trunk/jcl/packages/d12/JclBaseExpert.dpk 2010-01-25 12:19:13 UTC (rev 3139) +++ trunk/jcl/packages/d12/JclBaseExpert.dpk 2010-01-25 13:02:28 UTC (rev 3140) @@ -4,7 +4,7 @@ DO NOT EDIT THIS FILE, IT IS GENERATED BY THE PACKAGE GENERATOR ALWAYS EDIT THE RELATED XML FILE (JclBaseExpert-D.xml) - Last generated: 21-01-2010 20:03:26 UTC + Last generated: 25-01-2010 12:57:35 UTC ----------------------------------------------------------------------------- } @@ -41,6 +41,7 @@ requires rtl, vcl, + vclx, designide, Jcl ; Modified: trunk/jcl/packages/d12/JclBaseExpert.dproj =================================================================== --- trunk/jcl/packages/d12/JclBaseExpert.dproj 2010-01-25 12:19:13 UTC (rev 3139) +++ trunk/jcl/packages/d12/JclBaseExpert.dproj 2010-01-25 13:02:28 UTC (rev 3140) @@ -27,7 +27,7 @@ <GenDll>true</GenDll> <GenPackage>true</GenPackage> <DCC_ImageBase>$58000000</DCC_ImageBase> - <DCC_UsePackage>rtl;vcl;designide;Jcl</DCC_UsePackage> + <DCC_UsePackage>rtl;vcl;vclx;designide;Jcl</DCC_UsePackage> </PropertyGroup> <PropertyGroup Condition="'$(Cfg_Release)'!=''"> <DCC_AssertionsAtRuntime>false</DCC_AssertionsAtRuntime> @@ -62,6 +62,7 @@ </DelphiCompile> <DCCReference Include="rtl.dcp" /> <DCCReference Include="vcl.dcp" /> + <DCCReference Include="vclx.dcp" /> <DCCReference Include="designide.dcp" /> <DCCReference Include="Jcl.dcp" /> <DCCReference Include="..\..\install\JediRegInfo.pas" /> Modified: trunk/jcl/packages/d14/JclBaseExpert.dpk =================================================================== --- trunk/jcl/packages/d14/JclBaseExpert.dpk 2010-01-25 12:19:13 UTC (rev 3139) +++ trunk/jcl/packages/d14/JclBaseExpert.dpk 2010-01-25 13:02:28 UTC (rev 3140) @@ -4,7 +4,7 @@ DO NOT EDIT THIS FILE, IT IS GENERATED BY THE PACKAGE GENERATOR ALWAYS EDIT THE RELATED XML FILE (JclBaseExpert-D.xml) - Last generated: 21-01-2010 20:03:26 UTC + Last generated: 25-01-2010 12:57:36 UTC ----------------------------------------------------------------------------- } @@ -41,6 +41,7 @@ requires rtl, vcl, + vclx, designide, Jcl ; Modified: trunk/jcl/packages/d14/JclBaseExpert.dproj =================================================================== --- trunk/jcl/packages/d14/JclBaseExpert.dproj 2010-01-25 12:19:13 UTC (rev 3139) +++ trunk/jcl/packages/d14/JclBaseExpert.dproj 2010-01-25 13:02:28 UTC (rev 3140) @@ -29,7 +29,7 @@ <GenDll>true</GenDll> <GenPackage>true</GenPackage> <DCC_ImageBase>$58000000</DCC_ImageBase> - <DCC_UsePackage>rtl;vcl;designide;Jcl</DCC_UsePackage> + <DCC_UsePackage>rtl;vcl;vclx;designide;Jcl</DCC_UsePackage> </PropertyGroup> <PropertyGroup Condition="'$(Cfg_Release)'!=''"> <DCC_AssertionsAtRuntime>false</DCC_AssertionsAtRuntime> @@ -64,6 +64,7 @@ </DelphiCompile> <DCCReference Include="rtl.dcp" /> <DCCReference Include="vcl.dcp" /> + <DCCReference Include="vclx.dcp" /> <DCCReference Include="designide.dcp" /> <DCCReference Include="Jcl.dcp" /> <DCCReference Include="..\..\install\JediRegInfo.pas" /> Modified: trunk/jcl/packages/d6/JclBaseExpert.dpk =================================================================== --- trunk/jcl/packages/d6/JclBaseExpert.dpk 2010-01-25 12:19:13 UTC (rev 3139) +++ trunk/jcl/packages/d6/JclBaseExpert.dpk 2010-01-25 13:02:28 UTC (rev 3140) @@ -4,7 +4,7 @@ DO NOT EDIT THIS FILE, IT IS GENERATED BY THE PACKAGE GENERATOR ALWAYS EDIT THE RELATED XML FILE (JclBaseExpert-D.xml) - Last generated: 21-01-2010 20:03:25 UTC + Last generated: 25-01-2010 12:57:32 UTC ----------------------------------------------------------------------------- } @@ -40,6 +40,7 @@ requires rtl, vcl, + vclx, designide, Jcl ; Modified: trunk/jcl/packages/d7/JclBaseExpert.dpk =================================================================== --- trunk/jcl/packages/d7/JclBaseExpert.dpk 2010-01-25 12:19:13 UTC (rev 3139) +++ trunk/jcl/packages/d7/JclBaseExpert.dpk 2010-01-25 13:02:28 UTC (rev 3140) @@ -4,7 +4,7 @@ DO NOT EDIT THIS FILE, IT IS GENERATED BY THE PACKAGE GENERATOR ALWAYS EDIT THE RELATED XML FILE (JclBaseExpert-D.xml) - Last generated: 21-01-2010 20:03:25 UTC + Last generated: 25-01-2010 12:57:32 UTC ----------------------------------------------------------------------------- } @@ -40,6 +40,7 @@ requires rtl, vcl, + vclx, designide, Jcl ; Modified: trunk/jcl/packages/d8/JclBaseExpert.bdsproj =================================================================== --- trunk/jcl/packages/d8/JclBaseExpert.bdsproj 2010-01-25 12:19:13 UTC (rev 3139) +++ trunk/jcl/packages/d8/JclBaseExpert.bdsproj 2010-01-25 13:02:28 UTC (rev 3140) @@ -122,7 +122,7 @@ <Directories Name="PackageDLLOutputDir"></Directories> <Directories Name="PackageDCPOutputDir">..\..\lib\d8</Directories> <Directories Name="SearchPath">..\..\lib\d8;..\..\source\include</Directories> - <Directories Name="Packages">rtl;vcl;designide;Jcl</Directories> + <Directories Name="Packages">rtl;vcl;vclx;designide;Jcl</Directories> <Directories Name="Conditionals">RELEASE</Directories> <Directories Name="DebugSourceDirs"></Directories> <Directories Name="UsePackages">True</Directories> Modified: trunk/jcl/packages/d8/JclBaseExpert.dpk =================================================================== --- trunk/jcl/packages/d8/JclBaseExpert.dpk 2010-01-25 12:19:13 UTC (rev 3139) +++ trunk/jcl/packages/d8/JclBaseExpert.dpk 2010-01-25 13:02:28 UTC (rev 3140) @@ -4,7 +4,7 @@ DO NOT EDIT THIS FILE, IT IS GENERATED BY THE PACKAGE GENERATOR ALWAYS EDIT THE RELATED XML FILE (JclBaseExpert-D.xml) - Last generated: 21-01-2010 20:03:25 UTC + Last generated: 25-01-2010 12:57:33 UTC ----------------------------------------------------------------------------- } @@ -40,6 +40,7 @@ requires rtl, vcl, + vclx, designide, Jcl ; Modified: trunk/jcl/packages/d9/JclBaseExpert.bdsproj =================================================================== --- trunk/jcl/packages/d9/JclBaseExpert.bdsproj 2010-01-25 12:19:13 UTC (rev 3139) +++ trunk/jcl/packages/d9/JclBaseExpert.bdsproj 2010-01-25 13:02:28 UTC (rev 3140) @@ -122,7 +122,7 @@ <Directories Name="PackageDLLOutputDir"></Directories> <Directories Name="PackageDCPOutputDir">..\..\lib\d9</Directories> <Directories Name="SearchPath">..\..\lib\d9;..\..\source\include</Directories> - <Directories Name="Packages">rtl;vcl;designide;Jcl</Directories> + <Directories Name="Packages">rtl;vcl;vclx;designide;Jcl</Directories> <Directories Name="Conditionals">RELEASE</Directories> <Directories Name="DebugSourceDirs"></Directories> <Directories Name="UsePackages">True</Directories> Modified: trunk/jcl/packages/d9/JclBaseExpert.dpk =================================================================== --- trunk/jcl/packages/d9/JclBaseExpert.dpk 2010-01-25 12:19:13 UTC (rev 3139) +++ trunk/jcl/packages/d9/JclBaseExpert.dpk 2010-01-25 13:02:28 UTC (rev 3140) @@ -4,7 +4,7 @@ DO NOT EDIT THIS FILE, IT IS GENERATED BY THE PACKAGE GENERATOR ALWAYS EDIT THE RELATED XML FILE (JclBaseExpert-D.xml) - Last generated: 21-01-2010 20:03:25 UTC + Last generated: 25-01-2010 12:57:33 UTC ----------------------------------------------------------------------------- } @@ -40,6 +40,7 @@ requires rtl, vcl, + vclx, designide, Jcl ; Modified: trunk/jcl/packages/xml/JclBaseExpert-D.xml =================================================================== --- trunk/jcl/packages/xml/JclBaseExpert-D.xml 2010-01-25 12:19:13 UTC (rev 3139) +++ trunk/jcl/packages/xml/JclBaseExpert-D.xml 2010-01-25 13:02:28 UTC (rev 3140) @@ -9,6 +9,7 @@ <Requires> <Package Name="rtl" Targets="Delphi,Bcb,Bds" Condition=""/> <Package Name="vcl" Targets="Delphi,Bcb,Bds" Condition=""/> + <Package Name="vclx" Targets="Delphi,Bcb,Bds" Condition=""/> <Package Name="designide" Targets="Delphi,Bcb,Bds" Condition=""/> <Package Name="Jcl-R" Targets="all" Condition=""/> </Requires> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ou...@us...> - 2010-01-25 12:04:17
|
Revision: 3138 http://jcl.svn.sourceforge.net/jcl/?rev=3138&view=rev Author: outchy Date: 2010-01-25 12:04:07 +0000 (Mon, 25 Jan 2010) Log Message: ----------- FPC does not support Initialize(ArrayElement, Length). Modified Paths: -------------- trunk/jcl/source/common/JclBase.pas Modified: trunk/jcl/source/common/JclBase.pas =================================================================== --- trunk/jcl/source/common/JclBase.pas 2010-01-25 11:53:52 UTC (rev 3137) +++ trunk/jcl/source/common/JclBase.pas 2010-01-25 12:04:07 UTC (rev 3138) @@ -411,6 +411,21 @@ end; end; +procedure InitializeArray(var List: TDynIInterfaceArray; FromIndex, Count: SizeInt); overload; +{$IFDEF SUPPORTS_INLINE} inline; {$ENDIF} +begin + {$IFDEF FPC} + while Count > 0 do + begin + Initialize(List[FromIndex]); + Inc(FromIndex); + Dec(Count); + end; + {$ELSE ~FPC} + Initialize(List[FromIndex], Count); + {$ENDIF ~FPC} +end; + procedure InitializeArrayAfterMove(var List: TDynIInterfaceArray; FromIndex, ToIndex, Count: SizeInt); overload; {$IFDEF SUPPORTS_INLINE} inline; {$ENDIF} begin @@ -419,15 +434,15 @@ begin if (ToIndex - FromIndex) < Count then Count := ToIndex - FromIndex; - Initialize(List[FromIndex], Count); + InitializeArray(List, FromIndex, Count); end else if FromIndex > ToIndex then begin if (FromIndex - ToIndex) < Count then - Initialize(List[ToIndex + Count], FromIndex - ToIndex) + InitializeArray(List, ToIndex + Count, FromIndex - ToIndex) else - Initialize(List[FromIndex], Count); + InitializeArray(List, FromIndex, Count); end; end; @@ -456,6 +471,21 @@ end; end; +procedure InitializeArray(var List: TDynStringArray; FromIndex, Count: SizeInt); overload; +{$IFDEF SUPPORTS_INLINE} inline; {$ENDIF} +begin + {$IFDEF FPC} + while Count > 0 do + begin + Initialize(List[FromIndex]); + Inc(FromIndex); + Dec(Count); + end; + {$ELSE ~FPC} + Initialize(List[FromIndex], Count); + {$ENDIF ~FPC} +end; + procedure InitializeArrayAfterMove(var List: TDynStringArray; FromIndex, ToIndex, Count: SizeInt); overload; {$IFDEF SUPPORTS_INLINE} inline; {$ENDIF} begin @@ -464,15 +494,15 @@ begin if (ToIndex - FromIndex) < Count then Count := ToIndex - FromIndex; - Initialize(List[FromIndex], Count); + InitializeArray(List, FromIndex, Count); end else if FromIndex > ToIndex then begin if (FromIndex - ToIndex) < Count then - Initialize(List[ToIndex + Count], FromIndex - ToIndex) + InitializeArray(List, ToIndex + Count, FromIndex - ToIndex) else - Initialize(List[FromIndex], Count); + InitializeArray(List, FromIndex, Count); end; end; @@ -560,6 +590,21 @@ end; end; +procedure InitializeArray(var List: TDynUnicodeStringArray; FromIndex, Count: SizeInt); overload; +{$IFDEF SUPPORTS_INLINE} inline; {$ENDIF} +begin + {$IFDEF FPC} + while Count > 0 do + begin + Initialize(List[FromIndex]); + Inc(FromIndex); + Dec(Count); + end; + {$ELSE ~FPC} + Initialize(List[FromIndex], Count); + {$ENDIF ~FPC} +end; + procedure InitializeArrayAfterMove(var List: TDynUnicodeStringArray; FromIndex, ToIndex, Count: SizeInt); overload; {$IFDEF SUPPORTS_INLINE} inline; {$ENDIF} begin @@ -568,15 +613,15 @@ begin if (ToIndex - FromIndex) < Count then Count := ToIndex - FromIndex; - Initialize(List[FromIndex], Count); + InitializeArray(List, FromIndex, Count); end else if FromIndex > ToIndex then begin if (FromIndex - ToIndex) < Count then - Initialize(List[ToIndex + Count], FromIndex - ToIndex) + InitializeArray(List, ToIndex + Count, FromIndex - ToIndex) else - Initialize(List[FromIndex], Count); + InitializeArray(List, FromIndex, Count); end; end; @@ -607,6 +652,21 @@ end; end; +procedure InitializeArray(var List: TDynAnsiStringArray; FromIndex, Count: SizeInt); overload; +{$IFDEF SUPPORTS_INLINE} inline; {$ENDIF} +begin + {$IFDEF FPC} + while Count > 0 do + begin + Initialize(List[FromIndex]); + Inc(FromIndex); + Dec(Count); + end; + {$ELSE ~FPC} + Initialize(List[FromIndex], Count); + {$ENDIF ~FPC} +end; + procedure InitializeArrayAfterMove(var List: TDynAnsiStringArray; FromIndex, ToIndex, Count: SizeInt); overload; {$IFDEF SUPPORTS_INLINE} inline; {$ENDIF} begin @@ -615,15 +675,15 @@ begin if (ToIndex - FromIndex) < Count then Count := ToIndex - FromIndex; - Initialize(List[FromIndex], Count); + InitializeArray(List, FromIndex, Count); end else if FromIndex > ToIndex then begin if (FromIndex - ToIndex) < Count then - Initialize(List[ToIndex + Count], FromIndex - ToIndex) + InitializeArray(List, ToIndex + Count, FromIndex - ToIndex) else - Initialize(List[FromIndex], Count); + InitializeArray(List, FromIndex, Count); end; end; @@ -653,6 +713,21 @@ end; end; +procedure InitializeArray(var List: TDynWideStringArray; FromIndex, Count: SizeInt); overload; +{$IFDEF SUPPORTS_INLINE} inline; {$ENDIF} +begin + {$IFDEF FPC} + while Count > 0 do + begin + Initialize(List[FromIndex]); + Inc(FromIndex); + Dec(Count); + end; + {$ELSE ~FPC} + Initialize(List[FromIndex], Count); + {$ENDIF ~FPC} +end; + procedure InitializeArrayAfterMove(var List: TDynWideStringArray; FromIndex, ToIndex, Count: SizeInt); overload; {$IFDEF SUPPORTS_INLINE} inline; {$ENDIF} begin @@ -661,15 +736,15 @@ begin if (ToIndex - FromIndex) < Count then Count := ToIndex - FromIndex; - Initialize(List[FromIndex], Count); + InitializeArray(List, FromIndex, Count); end else if FromIndex > ToIndex then begin if (FromIndex - ToIndex) < Count then - Initialize(List[ToIndex + Count], FromIndex - ToIndex) + InitializeArray(List, ToIndex + Count, FromIndex - ToIndex) else - Initialize(List[FromIndex], Count); + InitializeArray(List, FromIndex, Count); end; end; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ou...@us...> - 2010-01-25 11:54:24
|
Revision: 3137 http://jcl.svn.sourceforge.net/jcl/?rev=3137&view=rev Author: outchy Date: 2010-01-25 11:53:52 +0000 (Mon, 25 Jan 2010) Log Message: ----------- style cleaning of IFDEF'ed extended support. Modified Paths: -------------- trunk/jcl/source/common/JclBase.pas Modified: trunk/jcl/source/common/JclBase.pas =================================================================== --- trunk/jcl/source/common/JclBase.pas 2010-01-25 11:47:09 UTC (rev 3136) +++ trunk/jcl/source/common/JclBase.pas 2010-01-25 11:53:52 UTC (rev 3137) @@ -273,14 +273,14 @@ {$ENDIF SUPPORTS_UNICODE_STRING} {$IFNDEF FPC} procedure MoveArray(var List: TDynAnsiStringArray; FromIndex, ToIndex, Count: SizeInt); overload; -{$ENDIF} +{$ENDIF ~FPC} procedure MoveArray(var List: TDynWideStringArray; FromIndex, ToIndex, Count: SizeInt); overload; procedure MoveArray(var List: TDynObjectArray; FromIndex, ToIndex, Count: SizeInt); overload; procedure MoveArray(var List: TDynSingleArray; FromIndex, ToIndex, Count: SizeInt); overload; procedure MoveArray(var List: TDynDoubleArray; FromIndex, ToIndex, Count: SizeInt); overload; -{$IFNDEF FPC} +{$IFDEF SUPPORTS_EXTENDED} procedure MoveArray(var List: TDynExtendedArray; FromIndex, ToIndex, Count: SizeInt); overload; -{$ENDIF} +{$ENDIF SUPPORTS_EXTENDED} procedure MoveArray(var List: TDynIntegerArray; FromIndex, ToIndex, Count: SizeInt); overload; procedure MoveArray(var List: TDynCardinalArray; FromIndex, ToIndex, Count: SizeInt); overload; procedure MoveArray(var List: TDynInt64Array; FromIndex, ToIndex, Count: SizeInt); overload; @@ -770,7 +770,7 @@ end; end; -{$IFNDEF FPC} +{$IFDEF SUPPORTS_EXTENDED} procedure InitializeArrayAfterMove(var List: TDynExtendedArray; FromIndex, ToIndex, Count: SizeInt); overload; {$IFDEF SUPPORTS_INLINE} inline; {$ENDIF} begin @@ -799,7 +799,7 @@ InitializeArrayAfterMove(List, FromIndex, ToIndex, Count); end; end; -{$ENDIF ~FPC} +{$ENDIF SUPPORTS_EXTENDED} procedure InitializeArrayAfterMove(var List: TDynIntegerArray; FromIndex, ToIndex, Count: SizeInt); overload; {$IFDEF SUPPORTS_INLINE} inline; {$ENDIF} This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ou...@us...> - 2010-01-25 11:47:16
|
Revision: 3136 http://jcl.svn.sourceforge.net/jcl/?rev=3136&view=rev Author: outchy Date: 2010-01-25 11:47:09 +0000 (Mon, 25 Jan 2010) Log Message: ----------- Refactored code to initialize array values after a move. Modified Paths: -------------- trunk/jcl/source/common/JclBase.pas Modified: trunk/jcl/source/common/JclBase.pas =================================================================== --- trunk/jcl/source/common/JclBase.pas 2010-01-24 04:23:26 UTC (rev 3135) +++ trunk/jcl/source/common/JclBase.pas 2010-01-25 11:47:09 UTC (rev 3136) @@ -411,28 +411,33 @@ end; end; +procedure InitializeArrayAfterMove(var List: TDynIInterfaceArray; FromIndex, ToIndex, Count: SizeInt); overload; +{$IFDEF SUPPORTS_INLINE} inline; {$ENDIF} +begin + { Keep reference counting working } + if FromIndex < ToIndex then + begin + if (ToIndex - FromIndex) < Count then + Count := ToIndex - FromIndex; + Initialize(List[FromIndex], Count); + end + else + if FromIndex > ToIndex then + begin + if (FromIndex - ToIndex) < Count then + Initialize(List[ToIndex + Count], FromIndex - ToIndex) + else + Initialize(List[FromIndex], Count); + end; +end; + procedure MoveArray(var List: TDynIInterfaceArray; FromIndex, ToIndex, Count: SizeInt); overload; begin if Count > 0 then begin FinalizeArrayBeforeMove(List, FromIndex, ToIndex, Count); Move(List[FromIndex], List[ToIndex], Count * SizeOf(List[0])); - { Keep reference counting working } - if FromIndex < ToIndex then - begin - if (ToIndex - FromIndex) < Count then - Initialize(List[FromIndex], ToIndex - FromIndex) - else - Initialize(List[FromIndex], Count) - end - else - if FromIndex > ToIndex then - begin - if (FromIndex - ToIndex) < Count then - Initialize(List[ToIndex + Count], FromIndex - ToIndex) - else - Initialize(List[FromIndex], Count) - end; + InitializeArrayAfterMove(List, FromIndex, ToIndex, Count); end; end; @@ -451,28 +456,53 @@ end; end; +procedure InitializeArrayAfterMove(var List: TDynStringArray; FromIndex, ToIndex, Count: SizeInt); overload; +{$IFDEF SUPPORTS_INLINE} inline; {$ENDIF} +begin + { Keep reference counting working } + if FromIndex < ToIndex then + begin + if (ToIndex - FromIndex) < Count then + Count := ToIndex - FromIndex; + Initialize(List[FromIndex], Count); + end + else + if FromIndex > ToIndex then + begin + if (FromIndex - ToIndex) < Count then + Initialize(List[ToIndex + Count], FromIndex - ToIndex) + else + Initialize(List[FromIndex], Count); + end; +end; + procedure MoveArray(var List: TDynStringArray; FromIndex, ToIndex, Count: SizeInt); overload; begin if Count > 0 then begin FinalizeArrayBeforeMove(List, FromIndex, ToIndex, Count); Move(List[FromIndex], List[ToIndex], Count * SizeOf(List[0])); - { Keep reference counting working } - if FromIndex < ToIndex then - begin - if (ToIndex - FromIndex) < Count then - Initialize(List[FromIndex], ToIndex - FromIndex) - else - Initialize(List[FromIndex], Count) - end + InitializeArrayAfterMove(List, FromIndex, ToIndex, Count); + end; +end; + +procedure InitializeArrayAfterMove(var List: TDynFloatArray; FromIndex, ToIndex, Count: SizeInt); overload; +{$IFDEF SUPPORTS_INLINE} inline; {$ENDIF} +begin + { Clean array } + if FromIndex < ToIndex then + begin + if (ToIndex - FromIndex) < Count then + Count := ToIndex - FromIndex; + FillChar(List[FromIndex], Count * SizeOf(List[0]), 0); + end + else + if FromIndex > ToIndex then + begin + if (FromIndex - ToIndex) < Count then + FillChar(List[ToIndex + Count], (FromIndex - ToIndex) * SizeOf(List[0]), 0) else - if FromIndex > ToIndex then - begin - if (FromIndex - ToIndex) < Count then - Initialize(List[ToIndex + Count], FromIndex - ToIndex) - else - Initialize(List[FromIndex], Count) - end; + FillChar(List[FromIndex], Count * SizeOf(List[0]), 0); end; end; @@ -481,22 +511,27 @@ if Count > 0 then begin Move(List[FromIndex], List[ToIndex], Count * SizeOf(List[0])); - { Clean array } - if FromIndex < ToIndex then - begin - if (ToIndex - FromIndex) < Count then - FillChar(List[FromIndex], (ToIndex - FromIndex) * SizeOf(List[0]), 0) - else - FillChar(List[FromIndex], Count * SizeOf(List[0]), 0); - end + InitializeArrayAfterMove(List, FromIndex, ToIndex, Count); + end; +end; + +procedure InitializeArrayAfterMove(var List: TDynPointerArray; FromIndex, ToIndex, Count: SizeInt); overload; +{$IFDEF SUPPORTS_INLINE} inline; {$ENDIF} +begin + { Clean array } + if FromIndex < ToIndex then + begin + if (ToIndex - FromIndex) < Count then + Count := ToIndex - FromIndex; + FillChar(List[FromIndex], Count * SizeOf(List[0]), 0); + end + else + if FromIndex > ToIndex then + begin + if (FromIndex - ToIndex) < Count then + FillChar(List[ToIndex + Count], (FromIndex - ToIndex) * SizeOf(List[0]), 0) else - if FromIndex > ToIndex then - begin - if (FromIndex - ToIndex) < Count then - FillChar(List[ToIndex + Count], (FromIndex - ToIndex) * SizeOf(List[0]), 0) - else - FillChar(List[FromIndex], Count * SizeOf(List[0]), 0); - end; + FillChar(List[FromIndex], Count * SizeOf(List[0]), 0); end; end; @@ -505,22 +540,7 @@ if Count > 0 then begin Move(List[FromIndex], List[ToIndex], Count * SizeOf(List[0])); - { Clean array } - if FromIndex < ToIndex then - begin - if (ToIndex - FromIndex) < Count then - FillChar(List[FromIndex], (ToIndex - FromIndex) * SizeOf(List[0]), 0) - else - FillChar(List[FromIndex], Count * SizeOf(List[0]), 0); - end - else - if FromIndex > ToIndex then - begin - if (FromIndex - ToIndex) < Count then - FillChar(List[ToIndex + Count], (FromIndex - ToIndex) * SizeOf(List[0]), 0) - else - FillChar(List[FromIndex], Count * SizeOf(List[0]), 0); - end; + InitializeArrayAfterMove(List, FromIndex, ToIndex, Count); end; end; @@ -540,28 +560,33 @@ end; end; +procedure InitializeArrayAfterMove(var List: TDynUnicodeStringArray; FromIndex, ToIndex, Count: SizeInt); overload; +{$IFDEF SUPPORTS_INLINE} inline; {$ENDIF} +begin + { Keep reference counting working } + if FromIndex < ToIndex then + begin + if (ToIndex - FromIndex) < Count then + Count := ToIndex - FromIndex; + Initialize(List[FromIndex], Count); + end + else + if FromIndex > ToIndex then + begin + if (FromIndex - ToIndex) < Count then + Initialize(List[ToIndex + Count], FromIndex - ToIndex) + else + Initialize(List[FromIndex], Count); + end; +end; + procedure MoveArray(var List: TDynUnicodeStringArray; FromIndex, ToIndex, Count: SizeInt); overload; begin if Count > 0 then begin FinalizeArrayBeforeMove(List, FromIndex, ToIndex, Count); Move(List[FromIndex], List[ToIndex], Count * SizeOf(List[0])); - { Keep reference counting working } - if FromIndex < ToIndex then - begin - if (ToIndex - FromIndex) < Count then - Initialize(List[FromIndex], ToIndex - FromIndex) - else - Initialize(List[FromIndex], Count) - end - else - if FromIndex > ToIndex then - begin - if (FromIndex - ToIndex) < Count then - Initialize(List[ToIndex + Count], FromIndex - ToIndex) - else - Initialize(List[FromIndex], Count) - end; + InitializeArrayAfterMove(List, FromIndex, ToIndex, Count); end; end; {$ENDIF SUPPORTS_UNICODE_STRING} @@ -582,28 +607,33 @@ end; end; +procedure InitializeArrayAfterMove(var List: TDynAnsiStringArray; FromIndex, ToIndex, Count: SizeInt); overload; +{$IFDEF SUPPORTS_INLINE} inline; {$ENDIF} +begin + { Keep reference counting working } + if FromIndex < ToIndex then + begin + if (ToIndex - FromIndex) < Count then + Count := ToIndex - FromIndex; + Initialize(List[FromIndex], Count); + end + else + if FromIndex > ToIndex then + begin + if (FromIndex - ToIndex) < Count then + Initialize(List[ToIndex + Count], FromIndex - ToIndex) + else + Initialize(List[FromIndex], Count); + end; +end; + procedure MoveArray(var List: TDynAnsiStringArray; FromIndex, ToIndex, Count: SizeInt); overload; begin if Count > 0 then begin FinalizeArrayBeforeMove(List, FromIndex, ToIndex, Count); Move(List[FromIndex], List[ToIndex], Count * SizeOf(List[0])); - { Keep reference counting working } - if FromIndex < ToIndex then - begin - if (ToIndex - FromIndex) < Count then - Initialize(List[FromIndex], ToIndex - FromIndex) - else - Initialize(List[FromIndex], Count) - end - else - if FromIndex > ToIndex then - begin - if (FromIndex - ToIndex) < Count then - Initialize(List[ToIndex + Count], FromIndex - ToIndex) - else - Initialize(List[FromIndex], Count) - end; + InitializeArrayAfterMove(List, FromIndex, ToIndex, Count); end; end; {$ENDIF ~FPC} @@ -623,28 +653,53 @@ end; end; +procedure InitializeArrayAfterMove(var List: TDynWideStringArray; FromIndex, ToIndex, Count: SizeInt); overload; +{$IFDEF SUPPORTS_INLINE} inline; {$ENDIF} +begin + { Keep reference counting working } + if FromIndex < ToIndex then + begin + if (ToIndex - FromIndex) < Count then + Count := ToIndex - FromIndex; + Initialize(List[FromIndex], Count); + end + else + if FromIndex > ToIndex then + begin + if (FromIndex - ToIndex) < Count then + Initialize(List[ToIndex + Count], FromIndex - ToIndex) + else + Initialize(List[FromIndex], Count); + end; +end; + procedure MoveArray(var List: TDynWideStringArray; FromIndex, ToIndex, Count: SizeInt); overload; begin if Count > 0 then begin FinalizeArrayBeforeMove(List, FromIndex, ToIndex, Count); Move(List[FromIndex], List[ToIndex], Count * SizeOf(List[0])); - { Keep reference counting working } - if FromIndex < ToIndex then - begin - if (ToIndex - FromIndex) < Count then - Initialize(List[FromIndex], ToIndex - FromIndex) - else - Initialize(List[FromIndex], Count) - end + InitializeArrayAfterMove(List, FromIndex, ToIndex, Count); + end; +end; + +procedure InitializeArrayAfterMove(var List: TDynObjectArray; FromIndex, ToIndex, Count: SizeInt); overload; +{$IFDEF SUPPORTS_INLINE} inline; {$ENDIF} +begin + { Clean array } + if FromIndex < ToIndex then + begin + if (ToIndex - FromIndex) < Count then + Count := ToIndex - FromIndex; + FillChar(List[FromIndex], Count * SizeOf(List[0]), 0); + end + else + if FromIndex > ToIndex then + begin + if (FromIndex - ToIndex) < Count then + FillChar(List[ToIndex + Count], (FromIndex - ToIndex) * SizeOf(List[0]), 0) else - if FromIndex > ToIndex then - begin - if (FromIndex - ToIndex) < Count then - Initialize(List[ToIndex + Count], FromIndex - ToIndex) - else - Initialize(List[FromIndex], Count) - end; + FillChar(List[FromIndex], Count * SizeOf(List[0]), 0); end; end; @@ -653,22 +708,27 @@ if Count > 0 then begin Move(List[FromIndex], List[ToIndex], Count * SizeOf(List[0])); - { Clean array } - if FromIndex < ToIndex then - begin - if (ToIndex - FromIndex) < Count then - FillChar(List[FromIndex], (ToIndex - FromIndex) * SizeOf(List[0]), 0) - else - FillChar(List[FromIndex], Count * SizeOf(List[0]), 0); - end + InitializeArrayAfterMove(List, FromIndex, ToIndex, Count); + end; +end; + +procedure InitializeArrayAfterMove(var List: TDynSingleArray; FromIndex, ToIndex, Count: SizeInt); overload; +{$IFDEF SUPPORTS_INLINE} inline; {$ENDIF} +begin + { Clean array } + if FromIndex < ToIndex then + begin + if (ToIndex - FromIndex) < Count then + Count := ToIndex - FromIndex; + FillChar(List[FromIndex], Count * SizeOf(List[0]), 0); + end + else + if FromIndex > ToIndex then + begin + if (FromIndex - ToIndex) < Count then + FillChar(List[ToIndex + Count], (FromIndex - ToIndex) * SizeOf(List[0]), 0) else - if FromIndex > ToIndex then - begin - if (FromIndex - ToIndex) < Count then - FillChar(List[ToIndex + Count], (FromIndex - ToIndex) * SizeOf(List[0]), 0) - else - FillChar(List[FromIndex], Count * SizeOf(List[0]), 0); - end; + FillChar(List[FromIndex], Count * SizeOf(List[0]), 0); end; end; @@ -677,22 +737,27 @@ if Count > 0 then begin Move(List[FromIndex], List[ToIndex], Count * SizeOf(List[0])); - { Clean array } - if FromIndex < ToIndex then - begin - if (ToIndex - FromIndex) < Count then - FillChar(List[FromIndex], (ToIndex - FromIndex) * SizeOf(List[0]), 0) - else - FillChar(List[FromIndex], Count * SizeOf(List[0]), 0); - end + InitializeArrayAfterMove(List, FromIndex, ToIndex, Count); + end; +end; + +procedure InitializeArrayAfterMove(var List: TDynDoubleArray; FromIndex, ToIndex, Count: SizeInt); overload; +{$IFDEF SUPPORTS_INLINE} inline; {$ENDIF} +begin + { Clean array } + if FromIndex < ToIndex then + begin + if (ToIndex - FromIndex) < Count then + Count := ToIndex - FromIndex; + FillChar(List[FromIndex], Count * SizeOf(List[0]), 0); + end + else + if FromIndex > ToIndex then + begin + if (FromIndex - ToIndex) < Count then + FillChar(List[ToIndex + Count], (FromIndex - ToIndex) * SizeOf(List[0]), 0) else - if FromIndex > ToIndex then - begin - if (FromIndex - ToIndex) < Count then - FillChar(List[ToIndex + Count], (FromIndex - ToIndex) * SizeOf(List[0]), 0) - else - FillChar(List[FromIndex], Count * SizeOf(List[0]), 0); - end; + FillChar(List[FromIndex], Count * SizeOf(List[0]), 0); end; end; @@ -701,72 +766,87 @@ if Count > 0 then begin Move(List[FromIndex], List[ToIndex], Count * SizeOf(List[0])); - { Clean array } - if FromIndex < ToIndex then - begin - if (ToIndex - FromIndex) < Count then - FillChar(List[FromIndex], (ToIndex - FromIndex) * SizeOf(List[0]), 0) - else - FillChar(List[FromIndex], Count * SizeOf(List[0]), 0); - end + InitializeArrayAfterMove(List, FromIndex, ToIndex, Count); + end; +end; + +{$IFNDEF FPC} +procedure InitializeArrayAfterMove(var List: TDynExtendedArray; FromIndex, ToIndex, Count: SizeInt); overload; +{$IFDEF SUPPORTS_INLINE} inline; {$ENDIF} +begin + { Clean array } + if FromIndex < ToIndex then + begin + if (ToIndex - FromIndex) < Count then + Count := ToIndex - FromIndex; + FillChar(List[FromIndex], Count * SizeOf(List[0]), 0); + end + else + if FromIndex > ToIndex then + begin + if (FromIndex - ToIndex) < Count then + FillChar(List[ToIndex + Count], (FromIndex - ToIndex) * SizeOf(List[0]), 0) else - if FromIndex > ToIndex then - begin - if (FromIndex - ToIndex) < Count then - FillChar(List[ToIndex + Count], (FromIndex - ToIndex) * SizeOf(List[0]), 0) - else - FillChar(List[FromIndex], Count * SizeOf(List[0]), 0); - end; + FillChar(List[FromIndex], Count * SizeOf(List[0]), 0); end; end; -{$IFNDEF FPC} procedure MoveArray(var List: TDynExtendedArray; FromIndex, ToIndex, Count: SizeInt); overload; begin if Count > 0 then begin Move(List[FromIndex], List[ToIndex], Count * SizeOf(List[0])); - { Clean array } - if FromIndex < ToIndex then - begin - if (ToIndex - FromIndex) < Count then - FillChar(List[FromIndex], (ToIndex - FromIndex) * SizeOf(List[0]), 0) - else - FillChar(List[FromIndex], Count * SizeOf(List[0]), 0); - end - else - if FromIndex > ToIndex then - begin - if (FromIndex - ToIndex) < Count then - FillChar(List[ToIndex + Count], (FromIndex - ToIndex) * SizeOf(List[0]), 0) - else - FillChar(List[FromIndex], Count * SizeOf(List[0]), 0); - end; + InitializeArrayAfterMove(List, FromIndex, ToIndex, Count); end; end; {$ENDIF ~FPC} +procedure InitializeArrayAfterMove(var List: TDynIntegerArray; FromIndex, ToIndex, Count: SizeInt); overload; +{$IFDEF SUPPORTS_INLINE} inline; {$ENDIF} +begin + { Clean array } + if FromIndex < ToIndex then + begin + if (ToIndex - FromIndex) < Count then + Count := ToIndex - FromIndex; + FillChar(List[FromIndex], Count * SizeOf(List[0]), 0); + end + else + if FromIndex > ToIndex then + begin + if (FromIndex - ToIndex) < Count then + FillChar(List[ToIndex + Count], (FromIndex - ToIndex) * SizeOf(List[0]), 0) + else + FillChar(List[FromIndex], Count * SizeOf(List[0]), 0); + end; +end; + procedure MoveArray(var List: TDynIntegerArray; FromIndex, ToIndex, Count: SizeInt); overload; begin if Count > 0 then begin Move(List[FromIndex], List[ToIndex], Count * SizeOf(List[0])); - { Clean array } - if FromIndex < ToIndex then - begin - if (ToIndex - FromIndex) < Count then - FillChar(List[FromIndex], (ToIndex - FromIndex) * SizeOf(List[0]), 0) - else - FillChar(List[FromIndex], Count * SizeOf(List[0]), 0); - end + InitializeArrayAfterMove(List, FromIndex, ToIndex, Count); + end; +end; + +procedure InitializeArrayAfterMove(var List: TDynCardinalArray; FromIndex, ToIndex, Count: SizeInt); overload; +{$IFDEF SUPPORTS_INLINE} inline; {$ENDIF} +begin + { Clean array } + if FromIndex < ToIndex then + begin + if (ToIndex - FromIndex) < Count then + Count := ToIndex - FromIndex; + FillChar(List[FromIndex], Count * SizeOf(List[0]), 0); + end + else + if FromIndex > ToIndex then + begin + if (FromIndex - ToIndex) < Count then + FillChar(List[ToIndex + Count], (FromIndex - ToIndex) * SizeOf(List[0]), 0) else - if FromIndex > ToIndex then - begin - if (FromIndex - ToIndex) < Count then - FillChar(List[ToIndex + Count], (FromIndex - ToIndex) * SizeOf(List[0]), 0) - else - FillChar(List[FromIndex], Count * SizeOf(List[0]), 0); - end; + FillChar(List[FromIndex], Count * SizeOf(List[0]), 0); end; end; @@ -775,22 +855,27 @@ if Count > 0 then begin Move(List[FromIndex], List[ToIndex], Count * SizeOf(List[0])); - { Clean array } - if FromIndex < ToIndex then - begin - if (ToIndex - FromIndex) < Count then - FillChar(List[FromIndex], (ToIndex - FromIndex) * SizeOf(List[0]), 0) - else - FillChar(List[FromIndex], Count * SizeOf(List[0]), 0); - end + InitializeArrayAfterMove(List, FromIndex, ToIndex, Count); + end; +end; + +procedure InitializeArrayAfterMove(var List: TDynInt64Array; FromIndex, ToIndex, Count: SizeInt); overload; +{$IFDEF SUPPORTS_INLINE} inline; {$ENDIF} +begin + { Clean array } + if FromIndex < ToIndex then + begin + if (ToIndex - FromIndex) < Count then + Count := ToIndex - FromIndex; + FillChar(List[FromIndex], Count * SizeOf(List[0]), 0); + end + else + if FromIndex > ToIndex then + begin + if (FromIndex - ToIndex) < Count then + FillChar(List[ToIndex + Count], (FromIndex - ToIndex) * SizeOf(List[0]), 0) else - if FromIndex > ToIndex then - begin - if (FromIndex - ToIndex) < Count then - FillChar(List[ToIndex + Count], (FromIndex - ToIndex) * SizeOf(List[0]), 0) - else - FillChar(List[FromIndex], Count * SizeOf(List[0]), 0); - end; + FillChar(List[FromIndex], Count * SizeOf(List[0]), 0); end; end; @@ -799,22 +884,27 @@ if Count > 0 then begin Move(List[FromIndex], List[ToIndex], Count * SizeOf(List[0])); - { Clean array } - if FromIndex < ToIndex then - begin - if (ToIndex - FromIndex) < Count then - FillChar(List[FromIndex], (ToIndex - FromIndex) * SizeOf(List[0]), 0) - else - FillChar(List[FromIndex], Count * SizeOf(List[0]), 0); - end + InitializeArrayAfterMove(List, FromIndex, ToIndex, Count); + end; +end; + +procedure InitializeArrayAfterMove(var List: TDynSizeIntArray; FromIndex, ToIndex, Count: SizeInt); overload; +{$IFDEF SUPPORTS_INLINE} inline; {$ENDIF} +begin + { Clean array } + if FromIndex < ToIndex then + begin + if (ToIndex - FromIndex) < Count then + Count := ToIndex - FromIndex; + FillChar(List[FromIndex], Count * SizeOf(List[0]), 0); + end + else + if FromIndex > ToIndex then + begin + if (FromIndex - ToIndex) < Count then + FillChar(List[ToIndex + Count], (FromIndex - ToIndex) * SizeOf(List[0]), 0) else - if FromIndex > ToIndex then - begin - if (FromIndex - ToIndex) < Count then - FillChar(List[ToIndex + Count], (FromIndex - ToIndex) * SizeOf(List[0]), 0) - else - FillChar(List[FromIndex], Count * SizeOf(List[0]), 0); - end; + FillChar(List[FromIndex], Count * SizeOf(List[0]), 0); end; end; @@ -823,22 +913,7 @@ if Count > 0 then begin Move(List[FromIndex], List[ToIndex], Count * SizeOf(List[0])); - { Clean array } - if FromIndex < ToIndex then - begin - if (ToIndex - FromIndex) < Count then - FillChar(List[FromIndex], (ToIndex - FromIndex) * SizeOf(List[0]), 0) - else - FillChar(List[FromIndex], Count * SizeOf(List[0]), 0); - end - else - if FromIndex > ToIndex then - begin - if (FromIndex - ToIndex) < Count then - FillChar(List[ToIndex + Count], (FromIndex - ToIndex) * SizeOf(List[0]), 0) - else - FillChar(List[FromIndex], Count * SizeOf(List[0]), 0); - end; + InitializeArrayAfterMove(List, FromIndex, ToIndex, Count); end; end; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <rro...@us...> - 2010-01-24 04:23:33
|
Revision: 3135 http://jcl.svn.sourceforge.net/jcl/?rev=3135&view=rev Author: rrossmair Date: 2010-01-24 04:23:26 +0000 (Sun, 24 Jan 2010) Log Message: ----------- Mantis 5106: fixed using patch supplied by reporter; however, the assignment of DEFAULTVALUE to the extracted array elements has been left out resp. removed throughout the implementation prototypes, since finalization is (better) done in MoveArray(). Modified Paths: -------------- trunk/jcl/source/common/JclArrayLists.pas trunk/jcl/source/common/JclVectors.pas trunk/jcl/source/prototypes/containers/JclArrayLists.imp trunk/jcl/source/prototypes/containers/JclVectors.imp Modified: trunk/jcl/source/common/JclArrayLists.pas =================================================================== --- trunk/jcl/source/common/JclArrayLists.pas 2010-01-22 08:22:51 UTC (rev 3134) +++ trunk/jcl/source/common/JclArrayLists.pas 2010-01-24 04:23:26 UTC (rev 3135) @@ -1440,9 +1440,8 @@ for I := FSize - 1 downto 0 do if ItemsEqual(FElementData[I], AInterface) then begin - FElementData[I] := nil; if I < (FSize - 1) then - MoveArray(FElementData, I + 1, I, FSize - I); + MoveArray(FElementData, I + 1, I, FSize - 1 - I); Dec(FSize); Result := True; if FRemoveSingleElement then @@ -1496,7 +1495,7 @@ begin Result := FElementData[Index]; if Index < (FSize - 1) then - MoveArray(FElementData, Index + 1, Index, FSize - Index); + MoveArray(FElementData, Index + 1, Index, FSize - 1 - Index); Dec(FSize); AutoPack; end @@ -2259,9 +2258,8 @@ for I := FSize - 1 downto 0 do if ItemsEqual(FElementData[I], AString) then begin - FElementData[I] := ''; if I < (FSize - 1) then - MoveArray(FElementData, I + 1, I, FSize - I); + MoveArray(FElementData, I + 1, I, FSize - 1 - I); Dec(FSize); Result := True; if FRemoveSingleElement then @@ -2315,7 +2313,7 @@ begin Result := FElementData[Index]; if Index < (FSize - 1) then - MoveArray(FElementData, Index + 1, Index, FSize - Index); + MoveArray(FElementData, Index + 1, Index, FSize - 1 - Index); Dec(FSize); AutoPack; end @@ -3078,9 +3076,8 @@ for I := FSize - 1 downto 0 do if ItemsEqual(FElementData[I], AString) then begin - FElementData[I] := ''; if I < (FSize - 1) then - MoveArray(FElementData, I + 1, I, FSize - I); + MoveArray(FElementData, I + 1, I, FSize - 1 - I); Dec(FSize); Result := True; if FRemoveSingleElement then @@ -3134,7 +3131,7 @@ begin Result := FElementData[Index]; if Index < (FSize - 1) then - MoveArray(FElementData, Index + 1, Index, FSize - Index); + MoveArray(FElementData, Index + 1, Index, FSize - 1 - Index); Dec(FSize); AutoPack; end @@ -3898,9 +3895,8 @@ for I := FSize - 1 downto 0 do if ItemsEqual(FElementData[I], AString) then begin - FElementData[I] := ''; if I < (FSize - 1) then - MoveArray(FElementData, I + 1, I, FSize - I); + MoveArray(FElementData, I + 1, I, FSize - 1 - I); Dec(FSize); Result := True; if FRemoveSingleElement then @@ -3954,7 +3950,7 @@ begin Result := FElementData[Index]; if Index < (FSize - 1) then - MoveArray(FElementData, Index + 1, Index, FSize - Index); + MoveArray(FElementData, Index + 1, Index, FSize - 1 - Index); Dec(FSize); AutoPack; end @@ -4719,9 +4715,8 @@ for I := FSize - 1 downto 0 do if ItemsEqual(FElementData[I], AValue) then begin - FElementData[I] := 0.0; if I < (FSize - 1) then - MoveArray(FElementData, I + 1, I, FSize - I); + MoveArray(FElementData, I + 1, I, FSize - 1 - I); Dec(FSize); Result := True; if FRemoveSingleElement then @@ -4775,7 +4770,7 @@ begin Result := FElementData[Index]; if Index < (FSize - 1) then - MoveArray(FElementData, Index + 1, Index, FSize - Index); + MoveArray(FElementData, Index + 1, Index, FSize - 1 - Index); Dec(FSize); AutoPack; end @@ -5538,9 +5533,8 @@ for I := FSize - 1 downto 0 do if ItemsEqual(FElementData[I], AValue) then begin - FElementData[I] := 0.0; if I < (FSize - 1) then - MoveArray(FElementData, I + 1, I, FSize - I); + MoveArray(FElementData, I + 1, I, FSize - 1 - I); Dec(FSize); Result := True; if FRemoveSingleElement then @@ -5594,7 +5588,7 @@ begin Result := FElementData[Index]; if Index < (FSize - 1) then - MoveArray(FElementData, Index + 1, Index, FSize - Index); + MoveArray(FElementData, Index + 1, Index, FSize - 1 - Index); Dec(FSize); AutoPack; end @@ -6357,9 +6351,8 @@ for I := FSize - 1 downto 0 do if ItemsEqual(FElementData[I], AValue) then begin - FElementData[I] := 0.0; if I < (FSize - 1) then - MoveArray(FElementData, I + 1, I, FSize - I); + MoveArray(FElementData, I + 1, I, FSize - 1 - I); Dec(FSize); Result := True; if FRemoveSingleElement then @@ -6413,7 +6406,7 @@ begin Result := FElementData[Index]; if Index < (FSize - 1) then - MoveArray(FElementData, Index + 1, Index, FSize - Index); + MoveArray(FElementData, Index + 1, Index, FSize - 1 - Index); Dec(FSize); AutoPack; end @@ -7176,9 +7169,8 @@ for I := FSize - 1 downto 0 do if ItemsEqual(FElementData[I], AValue) then begin - FElementData[I] := 0; if I < (FSize - 1) then - MoveArray(FElementData, I + 1, I, FSize - I); + MoveArray(FElementData, I + 1, I, FSize - 1 - I); Dec(FSize); Result := True; if FRemoveSingleElement then @@ -7232,7 +7224,7 @@ begin Result := FElementData[Index]; if Index < (FSize - 1) then - MoveArray(FElementData, Index + 1, Index, FSize - Index); + MoveArray(FElementData, Index + 1, Index, FSize - 1 - Index); Dec(FSize); AutoPack; end @@ -7995,9 +7987,8 @@ for I := FSize - 1 downto 0 do if ItemsEqual(FElementData[I], AValue) then begin - FElementData[I] := 0; if I < (FSize - 1) then - MoveArray(FElementData, I + 1, I, FSize - I); + MoveArray(FElementData, I + 1, I, FSize - 1 - I); Dec(FSize); Result := True; if FRemoveSingleElement then @@ -8051,7 +8042,7 @@ begin Result := FElementData[Index]; if Index < (FSize - 1) then - MoveArray(FElementData, Index + 1, Index, FSize - Index); + MoveArray(FElementData, Index + 1, Index, FSize - 1 - Index); Dec(FSize); AutoPack; end @@ -8814,9 +8805,8 @@ for I := FSize - 1 downto 0 do if ItemsEqual(FElementData[I], AValue) then begin - FElementData[I] := 0; if I < (FSize - 1) then - MoveArray(FElementData, I + 1, I, FSize - I); + MoveArray(FElementData, I + 1, I, FSize - 1 - I); Dec(FSize); Result := True; if FRemoveSingleElement then @@ -8870,7 +8860,7 @@ begin Result := FElementData[Index]; if Index < (FSize - 1) then - MoveArray(FElementData, Index + 1, Index, FSize - Index); + MoveArray(FElementData, Index + 1, Index, FSize - 1 - Index); Dec(FSize); AutoPack; end @@ -9633,9 +9623,8 @@ for I := FSize - 1 downto 0 do if ItemsEqual(FElementData[I], APtr) then begin - FElementData[I] := nil; if I < (FSize - 1) then - MoveArray(FElementData, I + 1, I, FSize - I); + MoveArray(FElementData, I + 1, I, FSize - 1 - I); Dec(FSize); Result := True; if FRemoveSingleElement then @@ -9689,7 +9678,7 @@ begin Result := FElementData[Index]; if Index < (FSize - 1) then - MoveArray(FElementData, Index + 1, Index, FSize - Index); + MoveArray(FElementData, Index + 1, Index, FSize - 1 - Index); Dec(FSize); AutoPack; end @@ -10452,9 +10441,8 @@ for I := FSize - 1 downto 0 do if ItemsEqual(FElementData[I], AObject) then begin - FElementData[I] := nil; if I < (FSize - 1) then - MoveArray(FElementData, I + 1, I, FSize - I); + MoveArray(FElementData, I + 1, I, FSize - 1 - I); Dec(FSize); Result := True; if FRemoveSingleElement then @@ -10508,7 +10496,7 @@ begin Result := FElementData[Index]; if Index < (FSize - 1) then - MoveArray(FElementData, Index + 1, Index, FSize - Index); + MoveArray(FElementData, Index + 1, Index, FSize - 1 - Index); Dec(FSize); AutoPack; end @@ -11273,9 +11261,8 @@ for I := FSize - 1 downto 0 do if ItemsEqual(FElementData[I], AItem) then begin - FElementData[I] := Default(T); if I < (FSize - 1) then - MoveArray(FElementData, I + 1, I, FSize - I); + MoveArray(FElementData, I + 1, I, FSize - 1 - I); Dec(FSize); Result := True; if FRemoveSingleElement then @@ -11329,7 +11316,7 @@ begin Result := FElementData[Index]; if Index < (FSize - 1) then - MoveArray(FElementData, Index + 1, Index, FSize - Index); + MoveArray(FElementData, Index + 1, Index, FSize - 1 - Index); Dec(FSize); AutoPack; end Modified: trunk/jcl/source/common/JclVectors.pas =================================================================== --- trunk/jcl/source/common/JclVectors.pas 2010-01-22 08:22:51 UTC (rev 3134) +++ trunk/jcl/source/common/JclVectors.pas 2010-01-24 04:23:26 UTC (rev 3135) @@ -1451,9 +1451,8 @@ for I := FSize - 1 downto 0 do if ItemsEqual(FItems[I], AInterface) then begin - FItems[I] := nil; if I < (FSize - 1) then - MoveArray(FItems, I + 1, I, FSize - I); + MoveArray(FItems, I + 1, I, FSize - 1 - I); Dec(FSize); Result := True; if FRemoveSingleElement then @@ -1507,7 +1506,7 @@ begin Result := FItems[Index]; if Index < (FSize - 1) then - MoveArray(FItems, Index + 1, Index, FSize - Index); + MoveArray(FItems, Index + 1, Index, FSize - 1 - Index); Dec(FSize); AutoPack; end @@ -2265,9 +2264,8 @@ for I := FSize - 1 downto 0 do if ItemsEqual(FItems[I], AString) then begin - FItems[I] := ''; if I < (FSize - 1) then - MoveArray(FItems, I + 1, I, FSize - I); + MoveArray(FItems, I + 1, I, FSize - 1 - I); Dec(FSize); Result := True; if FRemoveSingleElement then @@ -2321,7 +2319,7 @@ begin Result := FItems[Index]; if Index < (FSize - 1) then - MoveArray(FItems, Index + 1, Index, FSize - Index); + MoveArray(FItems, Index + 1, Index, FSize - 1 - Index); Dec(FSize); AutoPack; end @@ -3079,9 +3077,8 @@ for I := FSize - 1 downto 0 do if ItemsEqual(FItems[I], AString) then begin - FItems[I] := ''; if I < (FSize - 1) then - MoveArray(FItems, I + 1, I, FSize - I); + MoveArray(FItems, I + 1, I, FSize - 1 - I); Dec(FSize); Result := True; if FRemoveSingleElement then @@ -3135,7 +3132,7 @@ begin Result := FItems[Index]; if Index < (FSize - 1) then - MoveArray(FItems, Index + 1, Index, FSize - Index); + MoveArray(FItems, Index + 1, Index, FSize - 1 - Index); Dec(FSize); AutoPack; end @@ -3894,9 +3891,8 @@ for I := FSize - 1 downto 0 do if ItemsEqual(FItems[I], AString) then begin - FItems[I] := ''; if I < (FSize - 1) then - MoveArray(FItems, I + 1, I, FSize - I); + MoveArray(FItems, I + 1, I, FSize - 1 - I); Dec(FSize); Result := True; if FRemoveSingleElement then @@ -3950,7 +3946,7 @@ begin Result := FItems[Index]; if Index < (FSize - 1) then - MoveArray(FItems, Index + 1, Index, FSize - Index); + MoveArray(FItems, Index + 1, Index, FSize - 1 - Index); Dec(FSize); AutoPack; end @@ -4709,9 +4705,8 @@ for I := FSize - 1 downto 0 do if ItemsEqual(FItems[I], AValue) then begin - FItems[I] := 0.0; if I < (FSize - 1) then - MoveArray(FItems, I + 1, I, FSize - I); + MoveArray(FItems, I + 1, I, FSize - 1 - I); Dec(FSize); Result := True; if FRemoveSingleElement then @@ -4765,7 +4760,7 @@ begin Result := FItems[Index]; if Index < (FSize - 1) then - MoveArray(FItems, Index + 1, Index, FSize - Index); + MoveArray(FItems, Index + 1, Index, FSize - 1 - Index); Dec(FSize); AutoPack; end @@ -5523,9 +5518,8 @@ for I := FSize - 1 downto 0 do if ItemsEqual(FItems[I], AValue) then begin - FItems[I] := 0.0; if I < (FSize - 1) then - MoveArray(FItems, I + 1, I, FSize - I); + MoveArray(FItems, I + 1, I, FSize - 1 - I); Dec(FSize); Result := True; if FRemoveSingleElement then @@ -5579,7 +5573,7 @@ begin Result := FItems[Index]; if Index < (FSize - 1) then - MoveArray(FItems, Index + 1, Index, FSize - Index); + MoveArray(FItems, Index + 1, Index, FSize - 1 - Index); Dec(FSize); AutoPack; end @@ -6337,9 +6331,8 @@ for I := FSize - 1 downto 0 do if ItemsEqual(FItems[I], AValue) then begin - FItems[I] := 0.0; if I < (FSize - 1) then - MoveArray(FItems, I + 1, I, FSize - I); + MoveArray(FItems, I + 1, I, FSize - 1 - I); Dec(FSize); Result := True; if FRemoveSingleElement then @@ -6393,7 +6386,7 @@ begin Result := FItems[Index]; if Index < (FSize - 1) then - MoveArray(FItems, Index + 1, Index, FSize - Index); + MoveArray(FItems, Index + 1, Index, FSize - 1 - Index); Dec(FSize); AutoPack; end @@ -7151,9 +7144,8 @@ for I := FSize - 1 downto 0 do if ItemsEqual(FItems[I], AValue) then begin - FItems[I] := 0; if I < (FSize - 1) then - MoveArray(FItems, I + 1, I, FSize - I); + MoveArray(FItems, I + 1, I, FSize - 1 - I); Dec(FSize); Result := True; if FRemoveSingleElement then @@ -7207,7 +7199,7 @@ begin Result := FItems[Index]; if Index < (FSize - 1) then - MoveArray(FItems, Index + 1, Index, FSize - Index); + MoveArray(FItems, Index + 1, Index, FSize - 1 - Index); Dec(FSize); AutoPack; end @@ -7965,9 +7957,8 @@ for I := FSize - 1 downto 0 do if ItemsEqual(FItems[I], AValue) then begin - FItems[I] := 0; if I < (FSize - 1) then - MoveArray(FItems, I + 1, I, FSize - I); + MoveArray(FItems, I + 1, I, FSize - 1 - I); Dec(FSize); Result := True; if FRemoveSingleElement then @@ -8021,7 +8012,7 @@ begin Result := FItems[Index]; if Index < (FSize - 1) then - MoveArray(FItems, Index + 1, Index, FSize - Index); + MoveArray(FItems, Index + 1, Index, FSize - 1 - Index); Dec(FSize); AutoPack; end @@ -8779,9 +8770,8 @@ for I := FSize - 1 downto 0 do if ItemsEqual(FItems[I], AValue) then begin - FItems[I] := 0; if I < (FSize - 1) then - MoveArray(FItems, I + 1, I, FSize - I); + MoveArray(FItems, I + 1, I, FSize - 1 - I); Dec(FSize); Result := True; if FRemoveSingleElement then @@ -8835,7 +8825,7 @@ begin Result := FItems[Index]; if Index < (FSize - 1) then - MoveArray(FItems, Index + 1, Index, FSize - Index); + MoveArray(FItems, Index + 1, Index, FSize - 1 - Index); Dec(FSize); AutoPack; end @@ -9593,9 +9583,8 @@ for I := FSize - 1 downto 0 do if ItemsEqual(FItems[I], APtr) then begin - FItems[I] := nil; if I < (FSize - 1) then - MoveArray(FItems, I + 1, I, FSize - I); + MoveArray(FItems, I + 1, I, FSize - 1 - I); Dec(FSize); Result := True; if FRemoveSingleElement then @@ -9649,7 +9638,7 @@ begin Result := FItems[Index]; if Index < (FSize - 1) then - MoveArray(FItems, Index + 1, Index, FSize - Index); + MoveArray(FItems, Index + 1, Index, FSize - 1 - Index); Dec(FSize); AutoPack; end @@ -10407,9 +10396,8 @@ for I := FSize - 1 downto 0 do if ItemsEqual(FItems[I], AObject) then begin - FItems[I] := nil; if I < (FSize - 1) then - MoveArray(FItems, I + 1, I, FSize - I); + MoveArray(FItems, I + 1, I, FSize - 1 - I); Dec(FSize); Result := True; if FRemoveSingleElement then @@ -10463,7 +10451,7 @@ begin Result := FItems[Index]; if Index < (FSize - 1) then - MoveArray(FItems, Index + 1, Index, FSize - Index); + MoveArray(FItems, Index + 1, Index, FSize - 1 - Index); Dec(FSize); AutoPack; end @@ -11222,9 +11210,8 @@ for I := FSize - 1 downto 0 do if ItemsEqual(FItems[I], AItem) then begin - FItems[I] := Default(T); if I < (FSize - 1) then - MoveArray(FItems, I + 1, I, FSize - I); + MoveArray(FItems, I + 1, I, FSize - 1 - I); Dec(FSize); Result := True; if FRemoveSingleElement then @@ -11278,7 +11265,7 @@ begin Result := FItems[Index]; if Index < (FSize - 1) then - MoveArray(FItems, Index + 1, Index, FSize - Index); + MoveArray(FItems, Index + 1, Index, FSize - 1 - Index); Dec(FSize); AutoPack; end Modified: trunk/jcl/source/prototypes/containers/JclArrayLists.imp =================================================================== --- trunk/jcl/source/prototypes/containers/JclArrayLists.imp 2010-01-22 08:22:51 UTC (rev 3134) +++ trunk/jcl/source/prototypes/containers/JclArrayLists.imp 2010-01-24 04:23:26 UTC (rev 3135) @@ -325,9 +325,8 @@ for I := FSize - 1 downto 0 do if ItemsEqual(FElementData[I], PARAMETERNAME) then begin - FElementData[I] := DEFAULTVALUE; if I < (FSize - 1) then - MoveArray(FElementData, I + 1, I, FSize - I); + MoveArray(FElementData, I + 1, I, FSize - 1 - I); Dec(FSize); Result := True; if FRemoveSingleElement then @@ -359,7 +358,7 @@ begin Result := FElementData[Index]; if Index < (FSize - 1) then - MoveArray(FElementData, Index + 1, Index, FSize - Index); + MoveArray(FElementData, Index + 1, Index, FSize - 1 - Index); Dec(FSize); AutoPack; end Modified: trunk/jcl/source/prototypes/containers/JclVectors.imp =================================================================== --- trunk/jcl/source/prototypes/containers/JclVectors.imp 2010-01-22 08:22:51 UTC (rev 3134) +++ trunk/jcl/source/prototypes/containers/JclVectors.imp 2010-01-24 04:23:26 UTC (rev 3135) @@ -324,9 +324,8 @@ for I := FSize - 1 downto 0 do if ItemsEqual(FItems[I], PARAMETERNAME) then begin - FItems[I] := DEFAULTVALUE; if I < (FSize - 1) then - MoveArray(FItems, I + 1, I, FSize - I); + MoveArray(FItems, I + 1, I, FSize - 1 - I); Dec(FSize); Result := True; if FRemoveSingleElement then @@ -358,7 +357,7 @@ begin Result := FItems[Index]; if Index < (FSize - 1) then - MoveArray(FItems, Index + 1, Index, FSize - Index); + MoveArray(FItems, Index + 1, Index, FSize - 1 - Index); Dec(FSize); AutoPack; end This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ou...@us...> - 2010-01-22 08:22:57
|
Revision: 3134 http://jcl.svn.sourceforge.net/jcl/?rev=3134&view=rev Author: outchy Date: 2010-01-22 08:22:51 +0000 (Fri, 22 Jan 2010) Log Message: ----------- sdNewUI was introduced by Delphi 2006. Modified Paths: -------------- trunk/jcl/experts/common/JclOtaUtils.pas Modified: trunk/jcl/experts/common/JclOtaUtils.pas =================================================================== --- trunk/jcl/experts/common/JclOtaUtils.pas 2010-01-21 20:11:16 UTC (rev 3133) +++ trunk/jcl/experts/common/JclOtaUtils.pas 2010-01-22 08:22:51 UTC (rev 3134) @@ -806,7 +806,7 @@ if not ReadJediRegInformation(IDERegKey, 'JCL', JclVersion, JclDcpDir, JclBplDir, FJCLRootDir) or (FJCLRootDir = '') then begin - if SelectDirectory(LoadResString(@RsBrowseToJCLRootDir), '', FJCLRootDir, [sdNewUI]) + if SelectDirectory(LoadResString(@RsBrowseToJCLRootDir), '', FJCLRootDir) and DirectoryExists(FJCLRootDir) then begin FJCLRootDir := PathRemoveSeparator(FJCLRootDir); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ou...@us...> - 2010-01-21 20:11:28
|
Revision: 3133 http://jcl.svn.sourceforge.net/jcl/?rev=3133&view=rev Author: outchy Date: 2010-01-21 20:11:16 +0000 (Thu, 21 Jan 2010) Log Message: ----------- Embedding exception dialog templates in package resources was a bad idea, the experts ask for JCL directory when it is not stored in the registry. Modified Paths: -------------- trunk/jcl/experts/common/JclOtaConsts.pas trunk/jcl/experts/common/JclOtaResources.pas trunk/jcl/experts/common/JclOtaUtils.pas trunk/jcl/experts/repository/ExceptionDialog/JclOtaExcDlgRepository.pas trunk/jcl/packages/c6/JclBaseExpert.bpk trunk/jcl/packages/c6/JclBaseExpert.dpk trunk/jcl/packages/cs1/JclBaseExpert.dpk trunk/jcl/packages/d10/JclBaseExpert.dpk trunk/jcl/packages/d11/JclBaseExpert.dpk trunk/jcl/packages/d11/JclBaseExpert.dproj trunk/jcl/packages/d12/JclBaseExpert.dpk trunk/jcl/packages/d12/JclBaseExpert.dproj trunk/jcl/packages/d14/JclBaseExpert.dpk trunk/jcl/packages/d14/JclBaseExpert.dproj trunk/jcl/packages/d6/JclBaseExpert.dpk trunk/jcl/packages/d7/JclBaseExpert.dpk trunk/jcl/packages/d8/JclBaseExpert.dpk trunk/jcl/packages/d9/JclBaseExpert.dpk trunk/jcl/packages/xml/JclBaseExpert-D.xml Removed Paths: ------------- trunk/jcl/experts/repository/ExceptionDialog/JclOtaExcDlgTemplates.RES trunk/jcl/experts/repository/ExceptionDialog/JclOtaExcDlgTemplates.rc Modified: trunk/jcl/experts/common/JclOtaConsts.pas =================================================================== --- trunk/jcl/experts/common/JclOtaConsts.pas 2010-01-21 17:40:28 UTC (rev 3132) +++ trunk/jcl/experts/common/JclOtaConsts.pas 2010-01-21 20:11:16 UTC (rev 3133) @@ -42,6 +42,7 @@ const DelphiRootDirKeyValue = 'RootDir'; RegJclKey = 'Jedi\JCL\'; + JclRootDirValueName = 'RootDir'; RegJclIDEKey = RegJclKey + 'IDE\'; DelphiEnvironmentVar = 'DELPHI'; EnvironmentVarsKey = 'Environment Variables'; @@ -124,7 +125,6 @@ SRegWizardActive = 'Uses Wizard Active'; SRegWizardConfirm = 'Uses Wizard Confirm'; SRegWizardIniFile = 'Configuration File'; - JclRootDirValueName = 'RootDir'; JclIniFileLocation = 'experts\useswizard\JediUsesWizard.ini'; //=== Project analyser ===================================================== Modified: trunk/jcl/experts/common/JclOtaResources.pas =================================================================== --- trunk/jcl/experts/common/JclOtaResources.pas 2010-01-21 17:40:28 UTC (rev 3132) +++ trunk/jcl/experts/common/JclOtaResources.pas 2010-01-21 20:11:16 UTC (rev 3133) @@ -73,6 +73,7 @@ RsENoEnvironmentOptions = 'Environment options are not available'; RsELineTooLong = 'Line too long in project file'; RsEUnterminatedComment = 'Unterminated comment in project file'; + RsBrowseToJCLRootDir = 'Browse to JCL root directory'; //=== JclExceptionForm.pas =================================================== resourcestring Modified: trunk/jcl/experts/common/JclOtaUtils.pas =================================================================== --- trunk/jcl/experts/common/JclOtaUtils.pas 2010-01-21 17:40:28 UTC (rev 3132) +++ trunk/jcl/experts/common/JclOtaUtils.pas 2010-01-21 20:11:16 UTC (rev 3133) @@ -130,9 +130,13 @@ private FEnvVariables: TStringList; FRootDir: string; + FJCLRootDir: string; FSettings: TJclOTASettings; + FJCLSettings: TStrings; function GetModuleHInstance: Cardinal; function GetRootDir: string; + function GetJCLRootDir: string; + function GetJCLSettings: TStrings; procedure ReadEnvVariables; procedure ConfigurationActionUpdate(Sender: TObject); procedure ConfigurationActionExecute(Sender: TObject); @@ -170,7 +174,7 @@ destructor Destroy; override; procedure AfterConstruction; override; procedure BeforeDestruction; override; - + function FindExecutableName(const MapFileName: TFileName; const OutputDirectory: string; var ExecutableFileName: TFileName): Boolean; function GetDrcFileName(const Project: IOTAProject): TFileName; @@ -190,6 +194,8 @@ procedure UnregisterAction(Action: TCustomAction); property Settings: TJclOTASettings read FSettings; + property JCLRootDir: string read GetJCLRootDir; + property JCLSettings: TStrings read GetJCLSettings; property RootDir: string read GetRootDir; property ActivePersonality: TJclBorPersonality read GetActivePersonality; property Designer: string read GetDesigner; @@ -312,7 +318,8 @@ {$IFDEF HAS_UNIT_VARIANTS} Variants, {$ENDIF HAS_UNIT_VARIANTS} - Forms, Graphics, Dialogs, ActiveX, + Forms, Graphics, Dialogs, ActiveX, FileCtrl, IniFiles, + JediRegInfo, {$IFDEF MSWINDOWS} ImageHlp, JclRegistry, {$ENDIF MSWINDOWS} @@ -789,6 +796,68 @@ Result := 0; end; +function TJclOTAExpertBase.GetJCLRootDir: string; +var + IDERegKey, JclVersion, JclDcpDir, JclBplDir: string; +begin + if FJCLRootDir = '' then + begin + IDERegKey := StrEnsureNoSuffix('\', GetOTAServices.GetBaseRegistryKey); + if not ReadJediRegInformation(IDERegKey, 'JCL', JclVersion, JclDcpDir, JclBplDir, FJCLRootDir) + or (FJCLRootDir = '') then + begin + if SelectDirectory(LoadResString(@RsBrowseToJCLRootDir), '', FJCLRootDir, [sdNewUI]) + and DirectoryExists(FJCLRootDir) then + begin + FJCLRootDir := PathRemoveSeparator(FJCLRootDir); + JclVersion := Format('%d.%d.%d.%d', [JclVersionMajor, JclVersionMinor, JclVersionRelease, JclVersionBuild]); + JclDcpDir := JCLSettings.Values['DCP-Path']; + JclBplDir := JCLSettings.Values['BPL-Path']; + InstallJediRegInformation(IDERegKey, 'JCL', JclVersion, JclDcpDir, JclBplDir, FJCLRootDir); + end + else + raise EJclExpertException.CreateRes(@RsENoRootDir); + end; + end; + Result := FJCLRootDir; +end; + +function TJclOTAExpertBase.GetJCLSettings: TStrings; +var + Installations: TJclBorRADToolInstallations; + Installation: TJclBorRADToolInstallation; + I: Integer; + IDERegKey: string; + ConfigIni: TIniFile; +const + JclConfigIni = 'bin\JCL-install.ini'; +begin + if not Assigned(FJCLSettings) then + begin + IDERegKey := StrEnsureNoSuffix('\', GetOTAServices.GetBaseRegistryKey); + Installations := TJclBorRADToolInstallations.Create; + try + for I := 0 to Installations.Count - 1 do + begin + Installation := Installations.Installations[I]; + if StrSame(IDERegKey, StrEnsureNoSuffix('\', Installation.ConfigDataLocation)) then + begin + ConfigIni := TIniFile.Create(PathAddSeparator(FJCLRootDir) + JclConfigIni); + try + FJCLSettings := TStringList.Create; + ConfigIni.ReadSectionValues(Installation.Name, FJCLSettings); + finally + ConfigIni.Free; + end; + end; + end; + finally + Installations.Free; + end; + end; + Result := FJCLSettings; +end; + class procedure TJclOTAExpertBase.AddExpert(AExpert: TJclOTAExpertBase); begin if not Assigned(GlobalExpertList) then @@ -936,7 +1005,7 @@ begin FreeAndNil(FSettings); FreeAndNil(FEnvVariables); - + FreeAndNil(FJCLSettings); inherited Destroy; end; Modified: trunk/jcl/experts/repository/ExceptionDialog/JclOtaExcDlgRepository.pas =================================================================== --- trunk/jcl/experts/repository/ExceptionDialog/JclOtaExcDlgRepository.pas 2010-01-21 17:40:28 UTC (rev 3132) +++ trunk/jcl/experts/repository/ExceptionDialog/JclOtaExcDlgRepository.pas 2010-01-21 20:11:16 UTC (rev 3133) @@ -98,23 +98,20 @@ JclOtaResources, JclOtaConsts, JclOtaTemplates, JclOtaRepositoryReg, JclOtaExcDlgWizard; -{$R JclOtaExcDlgTemplates.res} - //=== { TJclExcDlgExpert } =================================================== procedure TJclExcDlgExpert.CreateExceptionDialog( const Params: TJclOtaExcDlgParams); - function LoadTemplate(const TemplatePath, FileName: string): string; + function LoadTemplate(const FileName: string): string; var AFileStream: TFileStream; - AResourceStream: TResourceStream; StreamLength: Int64; AnsiResult: AnsiString; begin AnsiResult := ''; - if (TemplatePath <> '') and (FileName <> '') then + if FileExists(FileName) then begin - AFileStream := TFileStream.Create(TemplatePath + FileName, fmOpenRead or fmShareDenyWrite); + AFileStream := TFileStream.Create(FileName, fmOpenRead or fmShareDenyWrite); try StreamLength := AFileStream.Size; SetLength(AnsiResult, StreamLength); @@ -122,18 +119,6 @@ finally AFileStream.Free; end; - end - else - if (FileName <> '') then - begin - AResourceStream := TResourceStream.Create(HInstance, StringReplace(FileName, '.', '', [rfReplaceAll]), 'EXCDLG'); - try - StreamLength := AResourceStream.Size; - SetLength(AnsiResult, StreamLength); - AResourceStream.ReadBuffer(AnsiResult[1], StreamLength); - finally - AResourceStream.Free; - end; end; Result := string(AnsiResult); end; @@ -142,19 +127,12 @@ DelphiTemplate = 'ExceptDlg.Delphi32'; BCBTemplate = 'ExceptDlg.CBuilder32'; var - JclSettingsKeyName, TemplatePath, - FormExtension, FormTemplate, FormContent, FormFileName, + TemplatePath, FormExtension, FormTemplate, FormContent, FormFileName, HeaderExtension, HeaderTemplate, HeaderContent, HeaderFileName, SourceExtension, SourceTemplate, SourceContent, SourceFileName: string; - OTAServices: IOTAServices; begin - OTAServices := GetOTAServices; - JclSettingsKeyName := StrEnsureSuffix('\', OTAServices.GetBaseRegistryKey) + RegJclKey; + TemplatePath := PathAddSeparator(JCLRootDir) + TemplateSubDir; - TemplatePath := RegReadStringDef(HKCU, JclSettingsKeyName, JclRootDirValueName, ''); - if TemplatePath <> '' then - TemplatePath := PathAddSeparator(TemplatePath) + TemplateSubDir; - case Params.Language of bpDelphi32: begin @@ -185,9 +163,9 @@ end; end; - FormTemplate := LoadTemplate(TemplatePath, FormTemplate); - HeaderTemplate := LoadTemplate(TemplatePath, HeaderTemplate); - SourceTemplate := LoadTemplate(TemplatePath, SourceTemplate); + FormTemplate := LoadTemplate(TemplatePath + FormTemplate); + HeaderTemplate := LoadTemplate(TemplatePath + HeaderTemplate); + SourceTemplate := LoadTemplate(TemplatePath + SourceTemplate); FormContent := ApplyTemplate(FormTemplate, Params); HeaderContent := ApplyTemplate(HeaderTemplate, Params); Deleted: trunk/jcl/experts/repository/ExceptionDialog/JclOtaExcDlgTemplates.RES =================================================================== (Binary files differ) Deleted: trunk/jcl/experts/repository/ExceptionDialog/JclOtaExcDlgTemplates.rc =================================================================== --- trunk/jcl/experts/repository/ExceptionDialog/JclOtaExcDlgTemplates.rc 2010-01-21 17:40:28 UTC (rev 3132) +++ trunk/jcl/experts/repository/ExceptionDialog/JclOtaExcDlgTemplates.rc 2010-01-21 20:11:16 UTC (rev 3133) @@ -1,5 +0,0 @@ -ExceptDlgDelphi32pas EXCDLG LOADONCALL MOVEABLE DISCARDABLE "Templates\ExceptDlg.Delphi32.pas" -ExceptDlgDelphi32dfm EXCDLG LOADONCALL MOVEABLE DISCARDABLE "Templates\ExceptDlg.Delphi32.dfm" -ExceptDlgCBuilder32h EXCDLG LOADONCALL MOVEABLE DISCARDABLE "Templates\ExceptDlg.CBuilder32.h" -ExceptDlgCBuilder32cpp EXCDLG LOADONCALL MOVEABLE DISCARDABLE "Templates\ExceptDlg.CBuilder32.cpp" -ExceptDlgCBuilder32dfm EXCDLG LOADONCALL MOVEABLE DISCARDABLE "Templates\ExceptDlg.CBuilder32.dfm" \ No newline at end of file Modified: trunk/jcl/packages/c6/JclBaseExpert.bpk =================================================================== --- trunk/jcl/packages/c6/JclBaseExpert.bpk 2010-01-21 17:40:28 UTC (rev 3132) +++ trunk/jcl/packages/c6/JclBaseExpert.bpk 2010-01-21 20:11:16 UTC (rev 3133) @@ -5,7 +5,7 @@ DO NOT EDIT THIS FILE, IT IS GENERATED BY THE PACKAGE GENERATOR ALWAYS EDIT THE RELATED XML FILE (JclBaseExpert-D.xml) - Last generated: 28-06-2009 20:45:12 UTC + Last generated: 21-01-2010 20:03:25 UTC ***************************************************************************** --> <PROJECT> @@ -14,6 +14,7 @@ <PROJECT value="JclBaseExpertC60.bpl"/> <OBJFILES value=" ..\..\lib\c6\JclBaseExpert.obj + ..\..\lib\c6\JediRegInfo.obj ..\..\lib\c6\JclOtaUtils.obj ..\..\lib\c6\JclOtaResources.obj ..\..\lib\c6\JclOtaConsts.obj @@ -47,7 +48,7 @@ Jcl.bpi "/> <PATHCPP value=".;"/> - <PATHPAS value=".;..\..\experts\common;"/> + <PATHPAS value=".;..\..\install;..\..\experts\common;"/> <PATHRC value=".;"/> <PATHASM value=".;"/> <DEBUGLIBPATH value="$(BCB)\lib\debug"/> @@ -57,7 +58,7 @@ <SYSDEFINES value="_RTLDLL;NO_STRICT;USEPACKAGES"/> <MAINSOURCE value="JclBaseExpert.cpp"/> <INCLUDEPATH value="..\..\source\common;..\..\source\windows;..\..\source\vcl;..\..\experts\common;$(BCB)\include;$(BCB)\include\vcl"/> - <LIBPATH value="..\..\experts\common;..\..\experts\common;..\..\lib\c6;..\..\lib\c6;$(BCB)\Projects\Lib;$(BCB)\lib\obj;$(BCB)\lib;$(BCB)\lib\debug"/> + <LIBPATH value="..\..\install;..\..\experts\common;..\..\lib\c6;..\..\lib\c6;$(BCB)\Projects\Lib;$(BCB)\lib\obj;$(BCB)\lib;$(BCB)\lib\debug"/> <WARNINGS value="-w-par"/> <OTHERFILES value=""/> </MACROS> @@ -85,6 +86,7 @@ <FILE FILENAME="vcl.bpi" FORMNAME="" UNITNAME="vcl" CONTAINERID="BPITool" DESIGNCLASS="" LOCALCOMMAND=""/> <FILE FILENAME="designide.bpi" FORMNAME="" UNITNAME="designide" CONTAINERID="BPITool" DESIGNCLASS="" LOCALCOMMAND=""/> <FILE FILENAME="Jcl.bpi" FORMNAME="" UNITNAME="Jcl" CONTAINERID="BPITool" DESIGNCLASS="" LOCALCOMMAND=""/> + <FILE FILENAME="..\..\install\JediRegInfo.pas" FORMNAME="" UNITNAME="JediRegInfo" CONTAINERID="PascalCompiler" DESIGNCLASS="" LOCALCOMMAND=""/> <FILE FILENAME="..\..\experts\common\JclOtaUtils.pas" FORMNAME="" UNITNAME="JclOtaUtils" CONTAINERID="PascalCompiler" DESIGNCLASS="" LOCALCOMMAND=""/> <FILE FILENAME="..\..\experts\common\JclOtaResources.pas" FORMNAME="" UNITNAME="JclOtaResources" CONTAINERID="PascalCompiler" DESIGNCLASS="" LOCALCOMMAND=""/> <FILE FILENAME="..\..\experts\common\JclOtaConsts.pas" FORMNAME="" UNITNAME="JclOtaConsts" CONTAINERID="PascalCompiler" DESIGNCLASS="" LOCALCOMMAND=""/> Modified: trunk/jcl/packages/c6/JclBaseExpert.dpk =================================================================== --- trunk/jcl/packages/c6/JclBaseExpert.dpk 2010-01-21 17:40:28 UTC (rev 3132) +++ trunk/jcl/packages/c6/JclBaseExpert.dpk 2010-01-21 20:11:16 UTC (rev 3133) @@ -4,7 +4,7 @@ DO NOT EDIT THIS FILE, IT IS GENERATED BY THE PACKAGE GENERATOR ALWAYS EDIT THE RELATED XML FILE (JclBaseExpert-D.xml) - Last generated: 14-03-2009 14:35:13 UTC + Last generated: 21-01-2010 20:03:25 UTC ----------------------------------------------------------------------------- } @@ -45,6 +45,7 @@ Jcl ; contains + JediRegInfo in '..\..\install\JediRegInfo.pas' , JclOtaUtils in '..\..\experts\common\JclOtaUtils.pas' , JclOtaResources in '..\..\experts\common\JclOtaResources.pas' , JclOtaConsts in '..\..\experts\common\JclOtaConsts.pas' , Modified: trunk/jcl/packages/cs1/JclBaseExpert.dpk =================================================================== --- trunk/jcl/packages/cs1/JclBaseExpert.dpk 2010-01-21 17:40:28 UTC (rev 3132) +++ trunk/jcl/packages/cs1/JclBaseExpert.dpk 2010-01-21 20:11:16 UTC (rev 3133) @@ -4,7 +4,7 @@ DO NOT EDIT THIS FILE, IT IS GENERATED BY THE PACKAGE GENERATOR ALWAYS EDIT THE RELATED XML FILE (JclBaseExpert-D.xml) - Last generated: 14-03-2009 14:35:14 UTC + Last generated: 21-01-2010 20:03:25 UTC ----------------------------------------------------------------------------- } @@ -45,6 +45,7 @@ ; contains + JediRegInfo in '..\..\install\JediRegInfo.pas' , JclOtaUtils in '..\..\experts\common\JclOtaUtils.pas' , JclOtaResources in '..\..\experts\common\JclOtaResources.pas' , JclOtaConsts in '..\..\experts\common\JclOtaConsts.pas' , Modified: trunk/jcl/packages/d10/JclBaseExpert.dpk =================================================================== --- trunk/jcl/packages/d10/JclBaseExpert.dpk 2010-01-21 17:40:28 UTC (rev 3132) +++ trunk/jcl/packages/d10/JclBaseExpert.dpk 2010-01-21 20:11:16 UTC (rev 3133) @@ -4,7 +4,7 @@ DO NOT EDIT THIS FILE, IT IS GENERATED BY THE PACKAGE GENERATOR ALWAYS EDIT THE RELATED XML FILE (JclBaseExpert-D.xml) - Last generated: 14-03-2009 14:35:14 UTC + Last generated: 21-01-2010 20:03:25 UTC ----------------------------------------------------------------------------- } @@ -46,6 +46,7 @@ ; contains + JediRegInfo in '..\..\install\JediRegInfo.pas' , JclOtaUtils in '..\..\experts\common\JclOtaUtils.pas' , JclOtaResources in '..\..\experts\common\JclOtaResources.pas' , JclOtaConsts in '..\..\experts\common\JclOtaConsts.pas' , Modified: trunk/jcl/packages/d11/JclBaseExpert.dpk =================================================================== --- trunk/jcl/packages/d11/JclBaseExpert.dpk 2010-01-21 17:40:28 UTC (rev 3132) +++ trunk/jcl/packages/d11/JclBaseExpert.dpk 2010-01-21 20:11:16 UTC (rev 3133) @@ -4,7 +4,7 @@ DO NOT EDIT THIS FILE, IT IS GENERATED BY THE PACKAGE GENERATOR ALWAYS EDIT THE RELATED XML FILE (JclBaseExpert-D.xml) - Last generated: 14-03-2009 14:35:14 UTC + Last generated: 21-01-2010 20:03:25 UTC ----------------------------------------------------------------------------- } @@ -46,6 +46,7 @@ ; contains + JediRegInfo in '..\..\install\JediRegInfo.pas' , JclOtaUtils in '..\..\experts\common\JclOtaUtils.pas' , JclOtaResources in '..\..\experts\common\JclOtaResources.pas' , JclOtaConsts in '..\..\experts\common\JclOtaConsts.pas' , Modified: trunk/jcl/packages/d11/JclBaseExpert.dproj =================================================================== --- trunk/jcl/packages/d11/JclBaseExpert.dproj 2010-01-21 17:40:28 UTC (rev 3132) +++ trunk/jcl/packages/d11/JclBaseExpert.dproj 2010-01-21 20:11:16 UTC (rev 3133) @@ -89,6 +89,7 @@ <DCCReference Include="vcl.dcp" /> <DCCReference Include="designide.dcp" /> <DCCReference Include="Jcl.dcp" /> + <DCCReference Include="..\..\install\JediRegInfo.pas" /> <DCCReference Include="..\..\experts\common\JclOtaUtils.pas" /> <DCCReference Include="..\..\experts\common\JclOtaResources.pas" /> <DCCReference Include="..\..\experts\common\JclOtaConsts.pas" /> Modified: trunk/jcl/packages/d12/JclBaseExpert.dpk =================================================================== --- trunk/jcl/packages/d12/JclBaseExpert.dpk 2010-01-21 17:40:28 UTC (rev 3132) +++ trunk/jcl/packages/d12/JclBaseExpert.dpk 2010-01-21 20:11:16 UTC (rev 3133) @@ -4,7 +4,7 @@ DO NOT EDIT THIS FILE, IT IS GENERATED BY THE PACKAGE GENERATOR ALWAYS EDIT THE RELATED XML FILE (JclBaseExpert-D.xml) - Last generated: 14-03-2009 14:35:14 UTC + Last generated: 21-01-2010 20:03:26 UTC ----------------------------------------------------------------------------- } @@ -46,6 +46,7 @@ ; contains + JediRegInfo in '..\..\install\JediRegInfo.pas' , JclOtaUtils in '..\..\experts\common\JclOtaUtils.pas' , JclOtaResources in '..\..\experts\common\JclOtaResources.pas' , JclOtaConsts in '..\..\experts\common\JclOtaConsts.pas' , Modified: trunk/jcl/packages/d12/JclBaseExpert.dproj =================================================================== --- trunk/jcl/packages/d12/JclBaseExpert.dproj 2010-01-21 17:40:28 UTC (rev 3132) +++ trunk/jcl/packages/d12/JclBaseExpert.dproj 2010-01-21 20:11:16 UTC (rev 3133) @@ -64,6 +64,7 @@ <DCCReference Include="vcl.dcp" /> <DCCReference Include="designide.dcp" /> <DCCReference Include="Jcl.dcp" /> + <DCCReference Include="..\..\install\JediRegInfo.pas" /> <DCCReference Include="..\..\experts\common\JclOtaUtils.pas" /> <DCCReference Include="..\..\experts\common\JclOtaResources.pas" /> <DCCReference Include="..\..\experts\common\JclOtaConsts.pas" /> Modified: trunk/jcl/packages/d14/JclBaseExpert.dpk =================================================================== --- trunk/jcl/packages/d14/JclBaseExpert.dpk 2010-01-21 17:40:28 UTC (rev 3132) +++ trunk/jcl/packages/d14/JclBaseExpert.dpk 2010-01-21 20:11:16 UTC (rev 3133) @@ -4,7 +4,7 @@ DO NOT EDIT THIS FILE, IT IS GENERATED BY THE PACKAGE GENERATOR ALWAYS EDIT THE RELATED XML FILE (JclBaseExpert-D.xml) - Last generated: 19-04-2009 17:51:55 UTC + Last generated: 21-01-2010 20:03:26 UTC ----------------------------------------------------------------------------- } @@ -46,6 +46,7 @@ ; contains + JediRegInfo in '..\..\install\JediRegInfo.pas' , JclOtaUtils in '..\..\experts\common\JclOtaUtils.pas' , JclOtaResources in '..\..\experts\common\JclOtaResources.pas' , JclOtaConsts in '..\..\experts\common\JclOtaConsts.pas' , Modified: trunk/jcl/packages/d14/JclBaseExpert.dproj =================================================================== --- trunk/jcl/packages/d14/JclBaseExpert.dproj 2010-01-21 17:40:28 UTC (rev 3132) +++ trunk/jcl/packages/d14/JclBaseExpert.dproj 2010-01-21 20:11:16 UTC (rev 3133) @@ -66,6 +66,7 @@ <DCCReference Include="vcl.dcp" /> <DCCReference Include="designide.dcp" /> <DCCReference Include="Jcl.dcp" /> + <DCCReference Include="..\..\install\JediRegInfo.pas" /> <DCCReference Include="..\..\experts\common\JclOtaUtils.pas" /> <DCCReference Include="..\..\experts\common\JclOtaResources.pas" /> <DCCReference Include="..\..\experts\common\JclOtaConsts.pas" /> Modified: trunk/jcl/packages/d6/JclBaseExpert.dpk =================================================================== --- trunk/jcl/packages/d6/JclBaseExpert.dpk 2010-01-21 17:40:28 UTC (rev 3132) +++ trunk/jcl/packages/d6/JclBaseExpert.dpk 2010-01-21 20:11:16 UTC (rev 3133) @@ -4,7 +4,7 @@ DO NOT EDIT THIS FILE, IT IS GENERATED BY THE PACKAGE GENERATOR ALWAYS EDIT THE RELATED XML FILE (JclBaseExpert-D.xml) - Last generated: 14-03-2009 14:35:13 UTC + Last generated: 21-01-2010 20:03:25 UTC ----------------------------------------------------------------------------- } @@ -45,6 +45,7 @@ ; contains + JediRegInfo in '..\..\install\JediRegInfo.pas' , JclOtaUtils in '..\..\experts\common\JclOtaUtils.pas' , JclOtaResources in '..\..\experts\common\JclOtaResources.pas' , JclOtaConsts in '..\..\experts\common\JclOtaConsts.pas' , Modified: trunk/jcl/packages/d7/JclBaseExpert.dpk =================================================================== --- trunk/jcl/packages/d7/JclBaseExpert.dpk 2010-01-21 17:40:28 UTC (rev 3132) +++ trunk/jcl/packages/d7/JclBaseExpert.dpk 2010-01-21 20:11:16 UTC (rev 3133) @@ -4,7 +4,7 @@ DO NOT EDIT THIS FILE, IT IS GENERATED BY THE PACKAGE GENERATOR ALWAYS EDIT THE RELATED XML FILE (JclBaseExpert-D.xml) - Last generated: 14-03-2009 14:35:14 UTC + Last generated: 21-01-2010 20:03:25 UTC ----------------------------------------------------------------------------- } @@ -45,6 +45,7 @@ ; contains + JediRegInfo in '..\..\install\JediRegInfo.pas' , JclOtaUtils in '..\..\experts\common\JclOtaUtils.pas' , JclOtaResources in '..\..\experts\common\JclOtaResources.pas' , JclOtaConsts in '..\..\experts\common\JclOtaConsts.pas' , Modified: trunk/jcl/packages/d8/JclBaseExpert.dpk =================================================================== --- trunk/jcl/packages/d8/JclBaseExpert.dpk 2010-01-21 17:40:28 UTC (rev 3132) +++ trunk/jcl/packages/d8/JclBaseExpert.dpk 2010-01-21 20:11:16 UTC (rev 3133) @@ -4,7 +4,7 @@ DO NOT EDIT THIS FILE, IT IS GENERATED BY THE PACKAGE GENERATOR ALWAYS EDIT THE RELATED XML FILE (JclBaseExpert-D.xml) - Last generated: 14-03-2009 14:35:14 UTC + Last generated: 21-01-2010 20:03:25 UTC ----------------------------------------------------------------------------- } @@ -45,6 +45,7 @@ ; contains + JediRegInfo in '..\..\install\JediRegInfo.pas' , JclOtaUtils in '..\..\experts\common\JclOtaUtils.pas' , JclOtaResources in '..\..\experts\common\JclOtaResources.pas' , JclOtaConsts in '..\..\experts\common\JclOtaConsts.pas' , Modified: trunk/jcl/packages/d9/JclBaseExpert.dpk =================================================================== --- trunk/jcl/packages/d9/JclBaseExpert.dpk 2010-01-21 17:40:28 UTC (rev 3132) +++ trunk/jcl/packages/d9/JclBaseExpert.dpk 2010-01-21 20:11:16 UTC (rev 3133) @@ -4,7 +4,7 @@ DO NOT EDIT THIS FILE, IT IS GENERATED BY THE PACKAGE GENERATOR ALWAYS EDIT THE RELATED XML FILE (JclBaseExpert-D.xml) - Last generated: 14-03-2009 14:35:14 UTC + Last generated: 21-01-2010 20:03:25 UTC ----------------------------------------------------------------------------- } @@ -45,6 +45,7 @@ ; contains + JediRegInfo in '..\..\install\JediRegInfo.pas' , JclOtaUtils in '..\..\experts\common\JclOtaUtils.pas' , JclOtaResources in '..\..\experts\common\JclOtaResources.pas' , JclOtaConsts in '..\..\experts\common\JclOtaConsts.pas' , Modified: trunk/jcl/packages/xml/JclBaseExpert-D.xml =================================================================== --- trunk/jcl/packages/xml/JclBaseExpert-D.xml 2010-01-21 17:40:28 UTC (rev 3132) +++ trunk/jcl/packages/xml/JclBaseExpert-D.xml 2010-01-21 20:11:16 UTC (rev 3133) @@ -13,6 +13,7 @@ <Package Name="Jcl-R" Targets="all" Condition=""/> </Requires> <Contains> + <File Name="..\..\install\JediRegInfo.pas" Targets="designtimeIDE" Formname="" Condition=""/> <File Name="..\..\experts\common\JclOtaUtils.pas" Targets="designtimeIDE" Formname="" Condition=""/> <File Name="..\..\experts\common\JclOtaResources.pas" Targets="designtimeIDE" Formname="" Condition=""/> <File Name="..\..\experts\common\JclOtaConsts.pas" Targets="designtimeIDE" Formname="" Condition=""/> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ou...@us...> - 2010-01-21 17:40:35
|
Revision: 3132 http://jcl.svn.sourceforge.net/jcl/?rev=3132&view=rev Author: outchy Date: 2010-01-21 17:40:28 +0000 (Thu, 21 Jan 2010) Log Message: ----------- Step #2 for making the repository expert backed by the JEDI PreProcessor: Add support for $JPPSTRVALUE, $JPPINTVALUE, $JPPBOOLVALUE, $JPPREPEAT and $JPPREPEATSTRVALUE in JPP; Remove the old template generator from the repository expert; Change the repository expert backend to JPP; Update the exception dialogs to the new template generator. Modified Paths: -------------- trunk/jcl/devtools/jpp/JppLexer.pas trunk/jcl/devtools/jpp/JppParser.pas trunk/jcl/devtools/jpp/JppState.pas trunk/jcl/devtools/jpp/jpp.dpr trunk/jcl/experts/repository/ExceptionDialog/CreateStdDialogs.dpr trunk/jcl/experts/repository/ExceptionDialog/JclOtaExcDlgTemplates.RES trunk/jcl/experts/repository/ExceptionDialog/StandardDialogs/ExceptDlg.dfm trunk/jcl/experts/repository/ExceptionDialog/StandardDialogs/ExceptDlg.pas trunk/jcl/experts/repository/ExceptionDialog/StandardDialogs/ExceptDlgMail.dfm trunk/jcl/experts/repository/ExceptionDialog/StandardDialogs/ExceptDlgMail.pas trunk/jcl/experts/repository/ExceptionDialog/Templates/ExceptDlg.Delphi32.dfm trunk/jcl/experts/repository/ExceptionDialog/Templates/ExceptDlg.Delphi32.pas trunk/jcl/experts/repository/JclOtaTemplates.pas trunk/jcl/packages/c6/JclRepositoryExpert.bpk trunk/jcl/packages/c6/JclRepositoryExpert.dpk trunk/jcl/packages/c6/JclRepositoryExpertDLL.bpf trunk/jcl/packages/c6/JclRepositoryExpertDLL.bpr trunk/jcl/packages/d10/JclRepositoryExpert.dpk trunk/jcl/packages/d10/JclRepositoryExpertDLL.dpr trunk/jcl/packages/d11/JclRepositoryExpert.dpk trunk/jcl/packages/d11/JclRepositoryExpert.dproj trunk/jcl/packages/d11/JclRepositoryExpertDLL.dpr trunk/jcl/packages/d11/JclRepositoryExpertDLL.dproj trunk/jcl/packages/d12/JclRepositoryExpert.dpk trunk/jcl/packages/d12/JclRepositoryExpert.dproj trunk/jcl/packages/d12/JclRepositoryExpertDLL.dpr trunk/jcl/packages/d12/JclRepositoryExpertDLL.dproj trunk/jcl/packages/d14/JclRepositoryExpert.dpk trunk/jcl/packages/d14/JclRepositoryExpert.dproj trunk/jcl/packages/d14/JclRepositoryExpertDLL.dpr trunk/jcl/packages/d14/JclRepositoryExpertDLL.dproj trunk/jcl/packages/d6/JclRepositoryExpert.dpk trunk/jcl/packages/d6/JclRepositoryExpertDLL.dpr trunk/jcl/packages/d7/JclRepositoryExpert.dpk trunk/jcl/packages/d7/JclRepositoryExpertDLL.dpr trunk/jcl/packages/d9/JclRepositoryExpert.dpk trunk/jcl/packages/d9/JclRepositoryExpertDLL.dpr trunk/jcl/packages/xml/JclRepositoryExpert-D.xml trunk/jcl/packages/xml/JclRepositoryExpertDLL-L.xml Modified: trunk/jcl/devtools/jpp/JppLexer.pas =================================================================== --- trunk/jcl/devtools/jpp/JppLexer.pas 2010-01-21 16:12:37 UTC (rev 3131) +++ trunk/jcl/devtools/jpp/JppLexer.pas 2010-01-21 17:40:28 UTC (rev 3132) @@ -57,7 +57,8 @@ type TJppToken = (ptEof, ptComment, ptText, ptEol, ptDefine, ptUndef, ptIfdef, ptIfndef, ptIfopt, ptElse, ptEndif, - ptInclude, ptJppDefineMacro, ptJppExpandMacro, ptJppUndefMacro); + ptInclude, ptJppDefineMacro, ptJppExpandMacro, ptJppUndefMacro, + ptJppStrValue, ptJppIntValue, ptJppBoolValue, ptJppRepeat, ptJppRepeatStrValue); EJppLexerError = class(Exception); @@ -116,6 +117,11 @@ AddToken('jppdefinemacro', ptjppDefineMacro); AddToken('jppexpandmacro', ptJppExpandMacro); AddToken('jppundefmacro', ptJppUndefMacro); + AddToken('jppstrvalue', ptJppStrValue); + AddToken('jpprepeatstrvalue', ptJppRepeatStrValue); + AddToken('jppintvalue', ptJppIntValue); + AddToken('jppboolvalue', ptJppBoolValue); + AddToken('jpprepeat', ptJppRepeat); FBuf := ABuffer; Reset; @@ -187,7 +193,11 @@ ptDefine, ptUndef, ptIfdef, - ptIfndef: + ptIfndef, + ptJppStrValue, + ptJppIntValue, + ptJppBoolValue, + ptJppRepeatStrValue: begin BPos := APos; StrSkipChars(BPos, CharIsWhiteSpace); Modified: trunk/jcl/devtools/jpp/JppParser.pas =================================================================== --- trunk/jcl/devtools/jpp/JppParser.pas 2010-01-21 16:12:37 UTC (rev 3131) +++ trunk/jcl/devtools/jpp/JppParser.pas 2010-01-21 17:40:28 UTC (rev 3132) @@ -64,6 +64,7 @@ FSkipLevel: Integer; FAllWhiteSpaceIn: Boolean; FAllWhiteSpaceOut: Boolean; + FRepeatIndex: Integer; procedure RemoveOrphanedLineBreaks; protected procedure AddResult(const S: string); @@ -83,6 +84,12 @@ procedure ParseExpandMacro; procedure ParseUndefMacro; + procedure ParseBoolValue; + procedure ParseIntValue; + procedure ParseRepeat; + procedure ParseStrValue; + procedure ParseRepeatStrValue; + // same as ParseText, but throws result away procedure Skip; @@ -243,6 +250,7 @@ FState := APppState; FTriState := ttUnknown; FState.Undef('PROTOTYPE'); + FRepeatIndex := -1; end; destructor TJppParser.Destroy; @@ -348,7 +356,12 @@ ptEndif, ptJppDefineMacro, ptJppExpandMacro, - ptJppUndefMacro: + ptJppUndefMacro, + ptJppStrValue, + ptJppIntValue, + ptJppBoolValue, + ptJppRepeat, + ptJppRepeatStrValue: FAllWhiteSpaceIn := False; ptInclude: FAllWhiteSpaceIn := IsExcludedInclude(Lexer.TokenAsString); @@ -531,6 +544,81 @@ NextToken; end; +procedure TJppParser.ParseStrValue; +var + Name: string; +begin + Name := Lexer.TokenAsString; + AddResult(State.GetStrValue(Name)); + NextToken; +end; + +procedure TJppParser.ParseIntValue; +var + Name: string; +begin + Name := Lexer.TokenAsString; + AddResult(IntToStr(State.GetIntValue(Name))); + NextToken; +end; + +procedure TJppParser.ParseBoolValue; +var + Name: string; +begin + Name := Lexer.TokenAsString; + AddResult(BoolToStr(State.GetBoolValue(Name), True)); + NextToken; +end; + +procedure TJppParser.ParseRepeat; +var + I, J: Integer; + RepeatText, CountName: string; +begin + if FRepeatIndex = -1 then + begin + I := 1; + RepeatText := Lexer.RawComment; + while (I <= Length(RepeatText)) and not CharIsWhiteSpace(RepeatText[I]) do + Inc(I); + while (I <= Length(RepeatText)) and CharIsWhiteSpace(RepeatText[I]) do + Inc(I); + J := I; + while (J <= Length(RepeatText)) and CharIsValidIdentifierLetter(RepeatText[J]) do + Inc(J); + CountName := Copy(RepeatText, I, J - I); + I := Length(RepeatText); + if RepeatText[I] = ')' then + Dec(I); + RepeatText := Copy(RepeatText, J, I - J); + FRepeatIndex := State.GetIntValue(CountName); + while FRepeatIndex > 0 do + begin + Dec(FRepeatIndex); + AddResult(RepeatText); + end; + FRepeatIndex := -1; + NextToken; + end + else + raise EPppParserError.Create('Nested repeat'); +end; + +procedure TJppParser.ParseRepeatStrValue; +var + Name: string; +begin + if FRepeatIndex > -1 then + begin + Name := Lexer.TokenAsString; + AddResult(State.GetStringsValue(Name).Strings[FRepeatIndex]); + NextToken; + end + else + raise EPppParserError.Create('JPPREPEATSTRVALUE outside JPPREPEAT'); +end; + procedure TJppParser.ParseText; procedure AddRawComment; @@ -597,6 +685,22 @@ else AddRawComment; + ptJppStrValue, ptJppIntValue, ptJppBoolValue, ptJppRepeat, ptJppRepeatStrValue: + if poProcessValues in State.Options then + case Lexer.CurrTok of + ptJppStrValue: + ParseStrValue; + ptJppIntValue: + ParseIntValue; + ptJppBoolValue: + ParseBoolValue; + ptJppRepeat: + ParseRepeat; + ptJppRepeatStrValue: + ParseRepeatStrValue; + end + else + AddRawComment; else Break; end; Modified: trunk/jcl/devtools/jpp/JppState.pas =================================================================== --- trunk/jcl/devtools/jpp/JppState.pas 2010-01-21 16:12:37 UTC (rev 3131) +++ trunk/jcl/devtools/jpp/JppState.pas 2010-01-21 17:40:28 UTC (rev 3132) @@ -53,7 +53,8 @@ type EPppState = class(Exception); - TPppOption = (poProcessIncludes, poProcessDefines, poStripComments, poProcessMacros); + TPppOption = (poProcessIncludes, poProcessDefines, poStripComments, + poProcessMacros, poProcessValues); TPppOptions = set of TPppOption; TTriState = (ttUnknown, ttUndef, ttDefined); Modified: trunk/jcl/devtools/jpp/jpp.dpr =================================================================== --- trunk/jcl/devtools/jpp/jpp.dpr 2010-01-21 16:12:37 UTC (rev 3131) +++ trunk/jcl/devtools/jpp/jpp.dpr 2010-01-21 17:40:28 UTC (rev 3132) @@ -84,6 +84,7 @@ 'Options:'#10, ' -c'#9#9'Process conditional directives'#10, ' -m'#9#9'Process macro directive'#10, + ' -v'#9#9'Process value directive'#10, ' -C'#9#9'Strip comments'#10, ' -fxxx'#9#9'Prefix xxx to filename'#10, ' -h, -?'#9'This help'#10, @@ -268,6 +269,9 @@ 'm': cp := CheckOpt(cp + 1, poProcessMacros); + 'v': + cp := CheckOpt(cp + 1, poProcessValues); + 'C': cp := CheckOpt(cp + 1, poStripComments); Modified: trunk/jcl/experts/repository/ExceptionDialog/CreateStdDialogs.dpr =================================================================== --- trunk/jcl/experts/repository/ExceptionDialog/CreateStdDialogs.dpr 2010-01-21 16:12:37 UTC (rev 3131) +++ trunk/jcl/experts/repository/ExceptionDialog/CreateStdDialogs.dpr 2010-01-21 17:40:28 UTC (rev 3132) @@ -35,7 +35,10 @@ Classes, JclBorlandTools, JclOtaTemplates in '..\JclOtaTemplates.pas', - JclOtaExcDlgParams in 'JclOtaExcDlgParams.pas'; + JclOtaExcDlgParams in 'JclOtaExcDlgParams.pas', + JppState in '..\..\..\devtools\jpp\JppState.pas', + JppLexer in '..\..\..\devtools\jpp\JppLexer.pas', + JppParser in '..\..\..\devtools\jpp\JppParser.pas'; function LoadTemplate(const FileName: TFileName): string; var @@ -83,7 +86,8 @@ Params.DelayedTrace := True; Params.HookDll := True; Params.LogFile := True; - Params.LogFileName := '''filename.log'''; + Params.LogSaveDialog := True; + Params.LogFileName := 'filename.log'; Params.OSInfo := True; Params.ModuleList := True; Params.ActiveControls := True; @@ -101,8 +105,8 @@ Params.FormName := 'ExceptionDialogMail'; Params.SendEMail := True; - Params.EMailAddress := '''name@domain.ext'''; - Params.EMailSubject := '''email subject'''; + Params.EMailAddress := 'name@domain.ext'; + Params.EMailSubject := 'email subject'; SaveFile('StandardDialogs\ExceptDlgMail.pas', GetFinalSourceContent(ApplyTemplate(LoadTemplate('Templates\ExceptDlg.Delphi32.pas'), Params), 'ExceptDlgMail', 'ExceptionDialogMail', 'TForm')); SaveFile('StandardDialogs\ExceptDlgMail.dfm', GetFinalSourceContent(ApplyTemplate(LoadTemplate('Templates\ExceptDlg.Delphi32.dfm'), Params), 'ExceptDlgMail', 'ExceptionDialogMail', 'TForm')); Modified: trunk/jcl/experts/repository/ExceptionDialog/JclOtaExcDlgTemplates.RES =================================================================== (Binary files differ) Modified: trunk/jcl/experts/repository/ExceptionDialog/StandardDialogs/ExceptDlg.dfm =================================================================== --- trunk/jcl/experts/repository/ExceptionDialog/StandardDialogs/ExceptDlg.dfm 2010-01-21 16:12:37 UTC (rev 3131) +++ trunk/jcl/experts/repository/ExceptionDialog/StandardDialogs/ExceptDlg.dfm 2010-01-21 17:40:28 UTC (rev 3132) @@ -36,6 +36,17 @@ end + object SaveBtn: TButton + Left = 403 + Top = 60 + Width = 75 + Height = 25 + Hint = 'Save bug report' + Anchors = [akTop, akRight] + Caption = '&Save' + TabOrder = 0 + OnClick = SaveBtnClick + end object TextMemo: TMemo Left = 56 Top = 8 Modified: trunk/jcl/experts/repository/ExceptionDialog/StandardDialogs/ExceptDlg.pas =================================================================== --- trunk/jcl/experts/repository/ExceptionDialog/StandardDialogs/ExceptDlg.pas 2010-01-21 16:12:37 UTC (rev 3131) +++ trunk/jcl/experts/repository/ExceptionDialog/StandardDialogs/ExceptDlg.pas 2010-01-21 17:40:28 UTC (rev 3132) @@ -30,22 +30,21 @@ uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ExtCtrls, AppEvnts, - JclSysUtils, JclUnitVersioning, JclUnitVersioningProviders, JclDebug; + JclSysUtils, JclUnitVersioning, JclUnitVersioningProviders, JclDebug; + const UM_CREATEDETAILS = WM_USER + $100; type TExceptionDialog = class(TForm) - - + SaveBtn: TButton; TextMemo: TMemo; OkBtn: TButton; DetailsBtn: TButton; BevelDetails: TBevel; DetailsMemo: TMemo; - - + procedure SaveBtnClick(Sender: TObject); procedure FormPaint(Sender: TObject); procedure FormCreate(Sender: TObject); procedure FormShow(Sender: TObject); @@ -231,16 +230,14 @@ procedure TExceptionDialog.AfterCreateDetails; begin - - + SaveBtn.Enabled := True; end; //---------------------------------------------------------------------------- procedure TExceptionDialog.BeforeCreateDetails; begin - - + SaveBtn.Enabled := False; end; //---------------------------------------------------------------------------- @@ -251,9 +248,24 @@ end; +//---------------------------------------------------------------------------- +procedure TExceptionDialog.SaveBtnClick(Sender: TObject); +begin + with TSaveDialog.Create(Self) do + try + DefaultExt := '.log'; + FileName := 'filename.log'; + Filter := 'Log Files (*.log)|*.log|All files (*.*)|*.*'; + Title := 'Save log as...'; + Options := [ofHideReadOnly,ofPathMustExist,ofNoReadOnlyReturn,ofEnableSizing,ofDontAddToRecent]; + if Execute then + SaveToLogFile(FileName); + finally + Free; + end; +end; - //---------------------------------------------------------------------------- procedure TExceptionDialog.CopyReportToClipboard; @@ -269,11 +281,6 @@ DetailsMemo.Lines.BeginUpdate; try CreateReport; - - - - - DetailsMemo.SelStart := 0; SendMessage(DetailsMemo.Handle, EM_SCROLLCARET, 0, 0); AfterCreateDetails; @@ -302,7 +309,7 @@ ProcessorDetails: string; StackList: TJclStackInfoList; ThreadList: TJclDebugThreadList; - AThreadID: DWORD; + AThreadID: DWORD; PETarget: TJclPeTarget; UnitVersioning: TUnitVersioning; UnitVersioningModule: TUnitVersioningModule; @@ -334,7 +341,6 @@ StackList.AddToStrings(DetailsMemo.Lines, True, True, True, True); NextDetailBlock; end; - // All threads ThreadList := JclDebugThreadList; ThreadList.Lock.Enter; // avoid modifications @@ -358,7 +364,6 @@ ThreadList.Lock.Leave; end; - // System and OS information DetailsMemo.Lines.Add(Format(RsOSVersion, [GetWindowsVersionString, NtProductTypeString, Win32MajorVersion, Win32MinorVersion, Win32BuildNumber, Win32CSDVersion])); @@ -399,7 +404,6 @@ DetailsMemo.Lines.Add(Format(RsScreenRes, [Screen.Width, Screen.Height, GetBPP])); NextDetailBlock; - // Modules list if LoadedModulesList(SL, GetCurrentProcessId) then begin @@ -456,7 +460,6 @@ NextDetailBlock; end; - // Active controls if (FLastActiveControl <> nil) then begin @@ -469,7 +472,6 @@ end; NextDetailBlock; end; - finally SL.Free; end; @@ -617,7 +619,6 @@ SimpleLog.Free; end; end; - //-------------------------------------------------------------------------------------------------- procedure TExceptionDialog.SetDetailsVisible(const Value: Boolean); @@ -724,17 +725,12 @@ begin AppEvents := TApplicationEvents.Create(nil); AppEvents.OnException := TExceptionDialog.ExceptionHandler; - - - JclStackTrackingOptions := JclStackTrackingOptions + [stRawMode]; JclStackTrackingOptions := JclStackTrackingOptions + [stStaticModuleList]; JclStackTrackingOptions := JclStackTrackingOptions + [stDelayedTrace]; JclDebugThreadList.OnSyncException := TExceptionDialog.ExceptionThreadHandler; JclHookThreads; JclStartExceptionTracking; - - if HookTApplicationHandleException then JclTrackExceptionsFromLibraries; end; Modified: trunk/jcl/experts/repository/ExceptionDialog/StandardDialogs/ExceptDlgMail.dfm =================================================================== --- trunk/jcl/experts/repository/ExceptionDialog/StandardDialogs/ExceptDlgMail.dfm 2010-01-21 16:12:37 UTC (rev 3131) +++ trunk/jcl/experts/repository/ExceptionDialog/StandardDialogs/ExceptDlgMail.dfm 2010-01-21 17:40:28 UTC (rev 3132) @@ -3,7 +3,6 @@ Top = 255 AutoScroll = False BorderIcons = [biSystemMenu] - Caption = 'ExceptionDialogMail' ClientHeight = 283 ClientWidth = 483 @@ -34,7 +33,6 @@ Anchors = [akLeft, akTop, akRight] Shape = bsTopLine end - object SendBtn: TButton Left = 403 Top = 32 @@ -46,7 +44,17 @@ TabOrder = 0 OnClick = SendBtnClick end - + object SaveBtn: TButton + Left = 403 + Top = 60 + Width = 75 + Height = 25 + Hint = 'Save bug report' + Anchors = [akTop, akRight] + Caption = '&Save' + TabOrder = 0 + OnClick = SaveBtnClick + end object TextMemo: TMemo Left = 56 Top = 8 Modified: trunk/jcl/experts/repository/ExceptionDialog/StandardDialogs/ExceptDlgMail.pas =================================================================== --- trunk/jcl/experts/repository/ExceptionDialog/StandardDialogs/ExceptDlgMail.pas 2010-01-21 16:12:37 UTC (rev 3131) +++ trunk/jcl/experts/repository/ExceptionDialog/StandardDialogs/ExceptDlgMail.pas 2010-01-21 17:40:28 UTC (rev 3132) @@ -30,22 +30,23 @@ uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ExtCtrls, AppEvnts, - JclSysUtils, JclMapi, JclUnitVersioning, JclUnitVersioningProviders, JclDebug; + JclSysUtils, JclMapi, JclUnitVersioning, JclUnitVersioningProviders, JclDebug; + const UM_CREATEDETAILS = WM_USER + $100; type TExceptionDialogMail = class(TForm) SendBtn: TButton; - + SaveBtn: TButton; TextMemo: TMemo; OkBtn: TButton; DetailsBtn: TButton; BevelDetails: TBevel; DetailsMemo: TMemo; procedure SendBtnClick(Sender: TObject); - + procedure SaveBtnClick(Sender: TObject); procedure FormPaint(Sender: TObject); procedure FormCreate(Sender: TObject); procedure FormShow(Sender: TObject); @@ -232,7 +233,7 @@ procedure TExceptionDialogMail.AfterCreateDetails; begin SendBtn.Enabled := True; - + SaveBtn.Enabled := True; end; //---------------------------------------------------------------------------- @@ -240,7 +241,7 @@ procedure TExceptionDialogMail.BeforeCreateDetails; begin SendBtn.Enabled := False; - + SaveBtn.Enabled := False; end; //---------------------------------------------------------------------------- @@ -257,8 +258,8 @@ with TJclEmail.Create do try ParentWnd := Application.Handle; - Recipients.Add(''name@domain.ext''); - Subject := ''email subject''; + Recipients.Add('name@domain.ext'); + Subject := 'email subject'; Body := AnsiString(ReportAsText); SaveTaskWindows; try @@ -271,9 +272,24 @@ end; end; +//---------------------------------------------------------------------------- +procedure TExceptionDialogMail.SaveBtnClick(Sender: TObject); +begin + with TSaveDialog.Create(Self) do + try + DefaultExt := '.log'; + FileName := 'filename.log'; + Filter := 'Log Files (*.log)|*.log|All files (*.*)|*.*'; + Title := 'Save log as...'; + Options := [ofHideReadOnly,ofPathMustExist,ofNoReadOnlyReturn,ofEnableSizing,ofDontAddToRecent]; + if Execute then + SaveToLogFile(FileName); + finally + Free; + end; +end; - //---------------------------------------------------------------------------- procedure TExceptionDialogMail.CopyReportToClipboard; @@ -289,11 +305,6 @@ DetailsMemo.Lines.BeginUpdate; try CreateReport; - - - - - DetailsMemo.SelStart := 0; SendMessage(DetailsMemo.Handle, EM_SCROLLCARET, 0, 0); AfterCreateDetails; @@ -322,7 +333,7 @@ ProcessorDetails: string; StackList: TJclStackInfoList; ThreadList: TJclDebugThreadList; - AThreadID: DWORD; + AThreadID: DWORD; PETarget: TJclPeTarget; UnitVersioning: TUnitVersioning; UnitVersioningModule: TUnitVersioningModule; @@ -354,7 +365,6 @@ StackList.AddToStrings(DetailsMemo.Lines, True, True, True, True); NextDetailBlock; end; - // All threads ThreadList := JclDebugThreadList; ThreadList.Lock.Enter; // avoid modifications @@ -378,7 +388,6 @@ ThreadList.Lock.Leave; end; - // System and OS information DetailsMemo.Lines.Add(Format(RsOSVersion, [GetWindowsVersionString, NtProductTypeString, Win32MajorVersion, Win32MinorVersion, Win32BuildNumber, Win32CSDVersion])); @@ -419,7 +428,6 @@ DetailsMemo.Lines.Add(Format(RsScreenRes, [Screen.Width, Screen.Height, GetBPP])); NextDetailBlock; - // Modules list if LoadedModulesList(SL, GetCurrentProcessId) then begin @@ -476,7 +484,6 @@ NextDetailBlock; end; - // Active controls if (FLastActiveControl <> nil) then begin @@ -489,7 +496,6 @@ end; NextDetailBlock; end; - finally SL.Free; end; @@ -637,7 +643,6 @@ SimpleLog.Free; end; end; - //-------------------------------------------------------------------------------------------------- procedure TExceptionDialogMail.SetDetailsVisible(const Value: Boolean); @@ -744,17 +749,12 @@ begin AppEvents := TApplicationEvents.Create(nil); AppEvents.OnException := TExceptionDialogMail.ExceptionHandler; - - - JclStackTrackingOptions := JclStackTrackingOptions + [stRawMode]; JclStackTrackingOptions := JclStackTrackingOptions + [stStaticModuleList]; JclStackTrackingOptions := JclStackTrackingOptions + [stDelayedTrace]; JclDebugThreadList.OnSyncException := TExceptionDialogMail.ExceptionThreadHandler; JclHookThreads; JclStartExceptionTracking; - - if HookTApplicationHandleException then JclTrackExceptionsFromLibraries; end; Modified: trunk/jcl/experts/repository/ExceptionDialog/Templates/ExceptDlg.Delphi32.dfm =================================================================== --- trunk/jcl/experts/repository/ExceptionDialog/Templates/ExceptDlg.Delphi32.dfm 2010-01-21 16:12:37 UTC (rev 3131) +++ trunk/jcl/experts/repository/ExceptionDialog/Templates/ExceptDlg.Delphi32.dfm 2010-01-21 17:40:28 UTC (rev 3132) @@ -3,7 +3,7 @@ Top = 255 AutoScroll = False BorderIcons = [biSystemMenu] -%ifnot SizeableDialog BorderStyle = bsDialog%endif +{$IFNDEF SizeableDialog} BorderStyle = bsDialog{$ENDIF} Caption = '%FORMNAME%' ClientHeight = 283 ClientWidth = 483 @@ -34,7 +34,7 @@ Anchors = [akLeft, akTop, akRight] Shape = bsTopLine end -%if SendEMail +{$IFDEF SendEMail} object SendBtn: TButton Left = 403 Top = 32 @@ -45,8 +45,8 @@ Caption = '&Send' TabOrder = 0 OnClick = SendBtnClick - end%endif -%if LogSaveDialog + end{$ENDIF} +{$IFDEF LogSaveDialog} object SaveBtn: TButton Left = 403 Top = 60 @@ -57,7 +57,7 @@ Caption = '&Save' TabOrder = 0 OnClick = SaveBtnClick - end%endif + end{$ENDIF} object TextMemo: TMemo Left = 56 Top = 8 Modified: trunk/jcl/experts/repository/ExceptionDialog/Templates/ExceptDlg.Delphi32.pas =================================================================== --- trunk/jcl/experts/repository/ExceptionDialog/Templates/ExceptDlg.Delphi32.pas 2010-01-21 16:12:37 UTC (rev 3131) +++ trunk/jcl/experts/repository/ExceptionDialog/Templates/ExceptDlg.Delphi32.pas 2010-01-21 17:40:28 UTC (rev 3132) @@ -30,22 +30,24 @@ uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ExtCtrls, AppEvnts, - JclSysUtils,%if SendEMail JclMapi,%endif %if UnitVersioning JclUnitVersioning, JclUnitVersioningProviders,%endif JclDebug; + JclSysUtils,{$IFDEF SendEMail} JclMapi,{$ENDIF}{$IFDEF UnitVersioning} JclUnitVersioning, JclUnitVersioningProviders,{$ENDIF} JclDebug; +{$JPPDEFINEMACRO QUOTE '} + const UM_CREATEDETAILS = WM_USER + $100; type T%FORMNAME% = class(%ANCESTORNAME%) -%if SendEMail SendBtn: TButton;%endif -%if LogSaveDialog SaveBtn: TButton;%endif +{$IFDEF SendEMail} SendBtn: TButton;{$ENDIF} +{$IFDEF LogSaveDialog} SaveBtn: TButton;{$ENDIF} TextMemo: TMemo; OkBtn: TButton; DetailsBtn: TButton; BevelDetails: TBevel; DetailsMemo: TMemo; -%if SendEMail procedure SendBtnClick(Sender: TObject);%endif -%if LogSaveDialog procedure SaveBtnClick(Sender: TObject);%endif +{$IFDEF SendEMail} procedure SendBtnClick(Sender: TObject);{$ENDIF} +{$IFDEF LogSaveDialog} procedure SaveBtnClick(Sender: TObject);{$ENDIF} procedure FormPaint(Sender: TObject); procedure FormCreate(Sender: TObject); procedure FormShow(Sender: TObject); @@ -57,10 +59,10 @@ private FDetailsVisible: Boolean; FThreadID: DWORD; -%if ActiveControls FLastActiveControl: TWinControl;%endif +{$IFDEF ActiveControls} FLastActiveControl: TWinControl;{$ENDIF} FNonDetailsHeight: Integer; FFullHeight: Integer; -%if LogFile procedure SaveToLogFile(const FileName: TFileName);%endif +{$IFDEF LogFile} procedure SaveToLogFile(const FileName: TFileName);{$ENDIF} function GetReportAsText: string; procedure SetDetailsVisible(const Value: Boolean); procedure UMCreateDetails(var Message: TMessage); message UM_CREATEDETAILS; @@ -123,7 +125,7 @@ 'You may send it to the application vendor, helping him to understand what had happened.' + NativeLineBreak + ' Application title: %s' + NativeLineBreak + ' Application file: %s'; -%if UnitVersioning RsUnitVersioningIntro = 'Unit versioning information:';%endif +{$IFDEF UnitVersioning} RsUnitVersioningIntro = 'Unit versioning information:';{$ENDIF} var %FORMNAME%: T%FORMNAME%; @@ -231,16 +233,16 @@ procedure T%FORMNAME%.AfterCreateDetails; begin -%if SendEMail SendBtn.Enabled := True;%endif -%if LogSaveDialog SaveBtn.Enabled := True;%endif +{$IFDEF SendEMail} SendBtn.Enabled := True;{$ENDIF} +{$IFDEF LogSaveDialog} SaveBtn.Enabled := True;{$ENDIF} end; //---------------------------------------------------------------------------- procedure T%FORMNAME%.BeforeCreateDetails; begin -%if SendEMail SendBtn.Enabled := False;%endif -%if LogSaveDialog SaveBtn.Enabled := False;%endif +{$IFDEF SendEMail} SendBtn.Enabled := False;{$ENDIF} +{$IFDEF LogSaveDialog} SaveBtn.Enabled := False;{$ENDIF} end; //---------------------------------------------------------------------------- @@ -250,15 +252,15 @@ Result := 78; end; -%if SendEMail//---------------------------------------------------------------------------- +{$IFDEF SendEMail}//---------------------------------------------------------------------------- procedure T%FORMNAME%.SendBtnClick(Sender: TObject); begin with TJclEmail.Create do try ParentWnd := Application.Handle; - Recipients.Add('%StrValue EMailAddress'); - Subject := '%StrValue EMailSubject'; + Recipients.Add({$JPPEXPANDMACRO QUOTE}{$JPPSTRVALUE EMailAddress}{$JPPEXPANDMACRO QUOTE}); + Subject := {$JPPEXPANDMACRO QUOTE}{$JPPSTRVALUE EMailSubject}{$JPPEXPANDMACRO QUOTE}; Body := AnsiString(ReportAsText); SaveTaskWindows; try @@ -270,16 +272,16 @@ Free; end; end; -%endif +{$ENDIF} -%if LogSaveDialog//---------------------------------------------------------------------------- +{$IFDEF LogSaveDialog}//---------------------------------------------------------------------------- procedure T%FORMNAME%.SaveBtnClick(Sender: TObject); begin with TSaveDialog.Create(Self) do try DefaultExt := '.log'; - FileName := %StrValue LogFileName; + FileName := {$JPPEXPANDMACRO QUOTE}{$JPPSTRVALUE LogFileName}{$JPPEXPANDMACRO QUOTE}; Filter := 'Log Files (*.log)|*.log|All files (*.*)|*.*'; Title := 'Save log as...'; Options := [ofHideReadOnly,ofPathMustExist,ofNoReadOnlyReturn,ofEnableSizing,ofDontAddToRecent]; @@ -289,7 +291,7 @@ Free; end; end; -%endif +{$ENDIF} //---------------------------------------------------------------------------- @@ -306,11 +308,11 @@ DetailsMemo.Lines.BeginUpdate; try CreateReport; -%if LogFile -%if AutoSaveWorkingDirectory SaveToLogFile(%StrValue LogFileName);%endif -%if AutoSaveApplicationDirectory SaveToLogFile(PathAddSeparator(ExtractFilePath(Application.ExeName)) + %StrValue LogFileName);%endif -%if AutoSaveDesktopDirectory SaveToLogFile(PathAddSeparator(GetDesktopFolder) + %StrValue LogFileName);%endif -%endif +{$IFDEF LogFile} +{$IFDEF AutoSaveWorkingDirectory} SaveToLogFile(%StrValue LogFileName);{$ENDIF} +{$IFDEF AutoSaveApplicationDirectory} SaveToLogFile(PathAddSeparator(ExtractFilePath(Application.ExeName)) + %StrValue LogFileName);{$ENDIF} +{$IFDEF AutoSaveDesktopDirectory} SaveToLogFile(PathAddSeparator(GetDesktopFolder) + %StrValue LogFileName);{$ENDIF} +{$ENDIF} DetailsMemo.SelStart := 0; SendMessage(DetailsMemo.Handle, EM_SCROLLCARET, 0, 0); AfterCreateDetails; @@ -327,24 +329,24 @@ procedure T%FORMNAME%.CreateReport; var -%if ModuleList SL: TStringList; +{$IFDEF ModuleList} SL: TStringList; I: Integer; ModuleName: TFileName; NtHeaders32: PImageNtHeaders32; NtHeaders64: PImageNtHeaders64; ModuleBase: Cardinal; - ImageBaseStr: string;%endif -%if ActiveControls C: TWinControl;%endif -%if OSInfo CpuInfo: TCpuInfo; - ProcessorDetails: string;%endif -%if StackList StackList: TJclStackInfoList; -%if ReportAllThreads ThreadList: TJclDebugThreadList; - AThreadID: DWORD;%endif %endif + ImageBaseStr: string;{$ENDIF} +{$IFDEF ActiveControls} C: TWinControl;{$ENDIF} +{$IFDEF OSInfo} CpuInfo: TCpuInfo; + ProcessorDetails: string;{$ENDIF} +{$IFDEF StackList} StackList: TJclStackInfoList; +{$IFDEF ReportAllThreads} ThreadList: TJclDebugThreadList; + AThreadID: DWORD;{$ENDIF}{$ENDIF} PETarget: TJclPeTarget; -%if UnitVersioning UnitVersioning: TUnitVersioning; +{$IFDEF UnitVersioning} UnitVersioning: TUnitVersioning; UnitVersioningModule: TUnitVersioningModule; UnitVersion: TUnitVersion; - ModuleIndex, UnitIndex: Integer;%endif + ModuleIndex, UnitIndex: Integer;{$ENDIF} begin DetailsMemo.Lines.Add(Format(LoadResString(@RsMainThreadID), [MainThreadID])); DetailsMemo.Lines.Add(Format(LoadResString(@RsExceptionThreadID), [MainThreadID])); @@ -352,38 +354,38 @@ SL := TStringList.Create; try -%if StackList // Except stack list +{$IFDEF StackList} // Except stack list StackList := JclGetExceptStackList(FThreadID); if Assigned(StackList) then begin DetailsMemo.Lines.Add(RsExceptionStack); DetailsMemo.Lines.Add(Format(LoadResString(@RsStackList), [DateTimeToStr(StackList.TimeStamp)])); - StackList.AddToStrings(DetailsMemo.Lines, %BoolValue ModuleName, %BoolValue ModuleOffset, %BoolValue CodeDetails, %BoolValue VirtualAddress); + StackList.AddToStrings(DetailsMemo.Lines, {$JPPBOOLVALUE ModuleName}, {$JPPBOOLVALUE ModuleOffset}, {$JPPBOOLVALUE CodeDetails}, {$JPPBOOLVALUE VirtualAddress}); NextDetailBlock; end; -%if ReportMainThread // Main thread - StackList := JclCreateThreadStackTraceFromID(%BoolValue RawData, MainThreadID); +{$IFDEF ReportMainThread} // Main thread + StackList := JclCreateThreadStackTraceFromID({$JPPBOOLVALUE RawData}, MainThreadID); if Assigned(StackList) then begin DetailsMemo.Lines.Add(LoadResString(@RsMainThreadCallStack)); DetailsMemo.Lines.Add(Format(LoadResString(@RsStackList), [DateTimeToStr(StackList.TimeStamp)])); - StackList.AddToStrings(DetailsMemo.Lines, %BoolValue ModuleName, %BoolValue ModuleOffset, %BoolValue CodeDetails, %BoolValue VirtualAddress); + StackList.AddToStrings(DetailsMemo.Lines, {$JPPBOOLVALUE ModuleName}, {$JPPBOOLVALUE ModuleOffset}, {$JPPBOOLVALUE CodeDetails}, {$JPPBOOLVALUE VirtualAddress}); NextDetailBlock; - end;%endif -%if ReportExceptionThread // Exception thread + end;{$ENDIF} +{$IFDEF ReportExceptionThread} // Exception thread if MainThreadID <> FThreadID then begin - StackList := JclCreateThreadStackTraceFromID(%BoolValue RawData, FThreadID); + StackList := JclCreateThreadStackTraceFromID({$JPPBOOLVALUE RawData}, FThreadID); if Assigned(StackList) then begin DetailsMemo.Lines.Add(Format(LoadResString(@RsExceptionThreadCallStack), [FThreadID])); DetailsMemo.Lines.Add(Format(LoadResString(@RsStackList), [DateTimeToStr(StackList.TimeStamp)])); - StackList.AddToStrings(DetailsMemo.Lines, %BoolValue ModuleName, %BoolValue ModuleOffset, %BoolValue CodeDetails, %BoolValue VirtualAddress); + StackList.AddToStrings(DetailsMemo.Lines, {$JPPBOOLVALUE ModuleName}, {$JPPBOOLVALUE ModuleOffset}, {$JPPBOOLVALUE CodeDetails}, {$JPPBOOLVALUE VirtualAddress}); NextDetailBlock; end; - end;%endif -%if ReportAllThreads // All threads + end;{$ENDIF} +{$IFDEF ReportAllThreads} // All threads ThreadList := JclDebugThreadList; ThreadList.Lock.Enter; // avoid modifications try @@ -392,22 +394,22 @@ AThreadID := ThreadList.ThreadIDs[I]; if (AThreadID <> FThreadID) then begin - StackList := JclCreateThreadStackTrace(%BoolValue RawData, ThreadList.ThreadHandles[I]); + StackList := JclCreateThreadStackTrace({$JPPBOOLVALUE RawData}, ThreadList.ThreadHandles[I]); if Assigned(StackList) then begin DetailsMemo.Lines.Add(Format(RsThreadCallStack, [AThreadID, ThreadList.ThreadInfos[AThreadID], ThreadList.ThreadNames[AThreadID]])); DetailsMemo.Lines.Add(Format(LoadResString(@RsStackList), [DateTimeToStr(StackList.TimeStamp)])); - StackList.AddToStrings(DetailsMemo.Lines, %BoolValue ModuleName, %BoolValue ModuleOffset, %BoolValue CodeDetails, %BoolValue VirtualAddress); + StackList.AddToStrings(DetailsMemo.Lines, {$JPPBOOLVALUE ModuleName}, {$JPPBOOLVALUE ModuleOffset}, {$JPPBOOLVALUE CodeDetails}, {$JPPBOOLVALUE VirtualAddress}); NextDetailBlock; end; end; end; finally ThreadList.Lock.Leave; - end;%endif -%endif + end;{$ENDIF} +{$ENDIF} -%if OSInfo // System and OS information +{$IFDEF OSInfo} // System and OS information DetailsMemo.Lines.Add(Format(RsOSVersion, [GetWindowsVersionString, NtProductTypeString, Win32MajorVersion, Win32MinorVersion, Win32BuildNumber, Win32CSDVersion])); GetCpuInfo(CpuInfo); @@ -446,13 +448,13 @@ GetFreePhysicalMemory div 1024 div 1024])); DetailsMemo.Lines.Add(Format(RsScreenRes, [Screen.Width, Screen.Height, GetBPP])); NextDetailBlock; -%endif +{$ENDIF} -%if ModuleList // Modules list +{$IFDEF ModuleList} // Modules list if LoadedModulesList(SL, GetCurrentProcessId) then begin -%if UnitVersioning UnitVersioning := GetUnitVersioning; - UnitVersioning.RegisterProvider(TJclDefaultUnitVersioningProvider);%endif +{$IFDEF UnitVersioning} UnitVersioning := GetUnitVersioning; + UnitVersioning.RegisterProvider(TJclDefaultUnitVersioningProvider);{$ENDIF} DetailsMemo.Lines.Add(RsModulesList); SL.CustomSort(SortModulesListByAddressCompare); for I := 0 to SL.Count - 1 do @@ -486,7 +488,7 @@ end else DetailsMemo.Lines.Add(ImageBaseStr + RsMissingVersionInfo); -%if UnitVersioning for ModuleIndex := 0 to UnitVersioning.ModuleCount - 1 do +{$IFDEF UnitVersioning} for ModuleIndex := 0 to UnitVersioning.ModuleCount - 1 do begin UnitVersioningModule := UnitVersioning.Modules[ModuleIndex]; if UnitVersioningModule.Instance = ModuleBase then @@ -499,13 +501,13 @@ DetailsMemo.Lines.Add(Format('%s%s %s %s %s', [StrRepeat(' ', 13), UnitVersion.LogPath, UnitVersion.RCSfile, UnitVersion.Revision, UnitVersion.Date])); end; end; - end;%endif + end;{$ENDIF} end; NextDetailBlock; end; -%endif +{$ENDIF} -%if ActiveControls // Active controls +{$IFDEF ActiveControls} // Active controls if (FLastActiveControl <> nil) then begin DetailsMemo.Lines.Add(RsActiveControl); @@ -517,7 +519,7 @@ end; NextDetailBlock; end; -%endif +{$ENDIF} finally SL.Free; end; @@ -650,7 +652,7 @@ Result := '-'; end; -%if LogFile//-------------------------------------------------------------------------------------------------- +{$IFDEF LogFile}//-------------------------------------------------------------------------------------------------- procedure T%FORMNAME%.SaveToLogFile(const FileName: TFileName); var @@ -665,7 +667,7 @@ SimpleLog.Free; end; end; -%endif +{$ENDIF} //-------------------------------------------------------------------------------------------------- procedure T%FORMNAME%.SetDetailsVisible(const Value: Boolean); @@ -715,7 +717,7 @@ FThreadID := Thread.ThreadID else FThreadID := MainThreadID; -%if ActiveControls FLastActiveControl := Screen.ActiveControl;%endif +{$IFDEF ActiveControls} FLastActiveControl := Screen.ActiveControl;{$ENDIF} if E is Exception then TextMemo.Text := RsErrorMessage + AdjustLineBreaks(StrEnsureSuffix('.', Exception(E).Message)) else @@ -752,11 +754,11 @@ procedure T%FORMNAME%.UpdateTextMemoScrollbars; begin -%if AutoScrollBars Canvas.Font := TextMemo.Font; +{$IFDEF AutoScrollBars} Canvas.Font := TextMemo.Font; if TextMemo.Lines.Count * Canvas.TextHeight('Wg') > TextMemo.ClientHeight then TextMemo.ScrollBars := ssVertical else - TextMemo.ScrollBars := ssNone;%endif + TextMemo.ScrollBars := ssNone;{$ENDIF} end; //================================================================================================== @@ -772,19 +774,19 @@ begin AppEvents := TApplicationEvents.Create(nil); AppEvents.OnException := T%FORMNAME%.ExceptionHandler; -%repeatline IgnoredExceptionsCount AddIgnoredException(%IgnoredExceptions); -%if TraceEAbort RemoveIgnoredException(EAbort);%endif -%if TraceAllExceptions JclStackTrackingOptions := JclStackTrackingOptions + [stTraceAllExceptions];%endif -%if RawData JclStackTrackingOptions := JclStackTrackingOptions + [stRawMode];%endif -%if HookDll JclStackTrackingOptions := JclStackTrackingOptions + [stStaticModuleList];%endif -%if DelayedTrace JclStackTrackingOptions := JclStackTrackingOptions + [stDelayedTrace];%endif +(*$JPPREPEAT IgnoredExceptionsCount AddIgnoredException({$JPPREPEATSTRVALUE IgnoredExceptions});*) +{$IFDEF TraceEAbort} RemoveIgnoredException(EAbort);{$ENDIF} +{$IFDEF TraceAllExceptions} JclStackTrackingOptions := JclStackTrackingOptions + [stTraceAllExceptions];{$ENDIF} +{$IFDEF RawData} JclStackTrackingOptions := JclStackTrackingOptions + [stRawMode];{$ENDIF} +{$IFDEF HookDll} JclStackTrackingOptions := JclStackTrackingOptions + [stStaticModuleList];{$ENDIF} +{$IFDEF DelayedTrace} JclStackTrackingOptions := JclStackTrackingOptions + [stDelayedTrace];{$ENDIF} JclDebugThreadList.OnSyncException := T%FORMNAME%.ExceptionThreadHandler; -%if AllThreads JclHookThreads;%endif +{$IFDEF AllThreads} JclHookThreads;{$ENDIF} JclStartExceptionTracking; -%if CatchMainThread JclStackTrackingOptions := JclStackTrackingOptions + [stMainThreadOnly];%endif -%if DisableIfDebuggerAttached JclStackTrackingOptions := JclStackTrackingOptions + [stDisableIfDebuggerAttached];%endif -%if HookDll if HookTApplicationHandleException then - JclTrackExceptionsFromLibraries;%endif +{$IFDEF CatchMainThread} JclStackTrackingOptions := JclStackTrackingOptions + [stMainThreadOnly];{$ENDIF} +{$IFDEF DisableIfDebuggerAttached} JclStackTrackingOptions := JclStackTrackingOptions + [stDisableIfDebuggerAttached];{$ENDIF} +{$IFDEF HookDll} if HookTApplicationHandleException then + JclTrackExceptionsFromLibraries;{$ENDIF} end; end; @@ -798,7 +800,7 @@ JclDebugThreadList.OnSyncException := nil; JclUnhookExceptions; JclStopExceptionTracking; -%if AllThreads JclUnhookThreads;%endif +{$IFDEF AllThreads} JclUnhookThreads;{$ENDIF} end; end; Modified: trunk/jcl/experts/repository/JclOtaTemplates.pas =================================================================== --- trunk/jcl/experts/repository/JclOtaTemplates.pas 2010-01-21 16:12:37 UTC (rev 3131) +++ trunk/jcl/experts/repository/JclOtaTemplates.pas 2010-01-21 17:40:28 UTC (rev 3132) @@ -41,7 +41,10 @@ JppState; type - TJclOtaTemplateParams = TPppState; + TJclOtaTemplateParams = class(TPppState) + public + constructor Create; + end; const ModulePattern = '%MODULENAME%'; @@ -78,8 +81,17 @@ // Variants, {$ENDIF HAS_UNIT_VARIANTS} TypInfo, - JclStrings, JclSysUtils; + JclStrings, JclSysUtils, + JppParser; +//=== { TJclOtaTemplateParams } ============================================== + +constructor TJclOtaTemplateParams.Create; +begin + inherited Create; + Options := Options + [poProcessDefines, poProcessMacros, poProcessValues]; +end; + function GetFinalFormContent(const Content, FormIdent, AncestorIdent: string): string; begin @@ -104,169 +116,19 @@ function ApplyTemplate(const Template: string; const Params: TJclOtaTemplateParams): string; - procedure CopyStr(var Dest: string; var IndexDest: Integer; - var DestCharCount: Integer; const Src: string; IndexSrc: Integer; - CharCount: Integer); - begin - if (Length(Src) - IndexSrc + 1) < CharCount then - CharCount := Length(Src) - IndexSrc + 1; - while (DestCharCount - IndexDest + 1) < CharCount do - begin - DestCharCount := 2 * DestCharCount; - SetLength(Dest, DestCharCount); - end; - - if CharCount > 0 then - begin - Move(Src[IndexSrc], Dest[IndexDest], CharCount*SizeOf(Char)); - Inc(IndexDest, CharCount); - end; - end; - function SkipBlanks(const Str: string; const Index: Integer; - Count: Integer): Integer; - begin - Result := Index; - while (Result <= Count) and CharIsWhiteSpace(Str[Result]) do - Inc(Result); - end; - function GetIdentifier(const Str: string; var Index: Integer; - Count: Integer): string; - var - IndexStart: Integer; - begin - IndexStart := Index; - while (Index <= Count) and CharIsValidIdentifierLetter(Str[Index]) or (Str[Index] = '%') do - Inc(Index); - Result := Copy(Str, IndexStart, Index - IndexStart); - end; var - IndexInput, IndexOutput, TokenPos, CharCountIn, CharCountOut, - IfCount, StrIndex, RepeatCount: Integer; - Identifier, Command, Symbol, StrValue, RepeatPattern, RepeatValue: string; - StrList: TStrings; + JppParser: TJppParser; begin - CharCountIn := Length(Template); - CharCountOut := 2*CharCountIn; - SetLength(Result, CharCountOut); - IndexInput := 1; - IndexOutput := 1; - IfCount := 0; - while IndexInput < CharCountIn do - begin - TokenPos := CharPos(Template, '%', IndexInput); - - if TokenPos = 0 then - begin - CopyStr(Result, IndexOutput, CharCountOut, Template, IndexInput, CharCountIn - IndexInput + 1); - SetLength(Result, IndexOutput - 1); - Exit; - end - else - begin - if IfCount = 0 then - CopyStr(Result, IndexOutput, CharCountOut, Template, IndexInput, TokenPos - IndexInput); - - Identifier := GetIdentifier(Template, TokenPos, CharCountIn); - Command := StrUpper(Identifier); - - if Command = '%IF' then - begin - TokenPos := SkipBlanks(Template, TokenPos, CharCountIn); - Symbol := GetIdentifier(Template, TokenPos, CharCountIn); - if (IfCount > 0) or not Params.IsDefined(Symbol) then - begin - Inc(IfCount); - end; - end - else if Command = '%IFNOT' then - begin - TokenPos := SkipBlanks(Template, TokenPos, CharCountIn); - Symbol := GetIdentifier(Template, TokenPos, CharCountIn); - if (IfCount > 0) or Params.IsDefined(Symbol) then - Inc(IfCount); - end - else if Command = '%ELSE' then - begin - if IfCount = 1 then - IfCount := 0 - else if IfCount = 0 then - IfCount := 1; - end - else if Command = '%ENDIF' then - begin - if IfCount > 0 then - Dec(IfCount); - end - else if Command = '%STRVALUE' then - begin - TokenPos := SkipBlanks(Template, TokenPos, CharCountIn); - Symbol := GetIdentifier(Template, TokenPos, CharCountIn); - if IfCount = 0 then - begin - StrValue := Params.GetStrValue(Symbol); - CopyStr(Result, IndexOutput, CharCountOut, StrValue, 1, Length(StrValue)); - end; - end - else if Command = '%INTVALUE' then - begin - TokenPos := SkipBlanks(Template, TokenPos, CharCountIn); - Symbol := GetIdentifier(Template, TokenPos, CharCountIn); - if IfCount = 0 then - begin - StrValue := IntToStr(Params.GetIntValue(Symbol)); - CopyStr(Result, IndexOutput, CharCountOut, StrValue, 1, Length(StrValue)); - end; - end - else if Command = '%BOOLVALUE' then - begin - TokenPos := SkipBlanks(Template, TokenPos, CharCountIn); - Symbol := GetIdentifier(Template, TokenPos, CharCountIn); - if IfCount = 0 then - begin - StrValue := BooleanToStr(Params.GetBoolValue(Symbol)); - CopyStr(Result, IndexOutput, CharCountOut, StrValue, 1, Length(StrValue)); - end; - end - else if Command = '%REPEATLINE' then - begin - TokenPos := SkipBlanks(Template, TokenPos, CharCountIn); - Symbol := GetIdentifier(Template, TokenPos, CharCountIn); - if IfCount = 0 then - begin - RepeatCount := Params.GetIntValue(Symbol); - StrIndex := TokenPos; - while (StrIndex <= CharCountIn) and not CharIsReturn(Template[StrIndex]) do - Inc(StrIndex); - RepeatPattern := Copy(Template, TokenPos, StrIndex - TokenPos); - TokenPos := StrIndex; - - while RepeatCount > 0 do - begin - StrValue := RepeatPattern; - StrIndex := Pos('%', StrValue); - while StrIndex > 0 do - begin - Inc(StrIndex); - Symbol := GetIdentifier(StrValue, StrIndex, Length(StrValue)); - StrList := Params.GetStringsValue(Symbol); - if Assigned(StrList) then - RepeatValue := StrList.Strings[RepeatCount - 1] - else - RepeatValue := ''; - StrReplace(StrValue, '%' + Symbol, RepeatValue, [rfReplaceAll, rfIgnoreCase]); - StrIndex := Pos('%', StrValue); - end; - CopyStr(Result, IndexOutput, CharCountOut, StrValue, 1, Length(StrValue)); - CopyStr(Result, IndexOutput, CharCountOut, NativeLineBreak, 1, Length(NativeLineBreak)); - Dec(RepeatCount); - end; - end; - end - else if IfCount = 0 then - CopyStr(Result, IndexOutput, CharCountOut, Identifier, 1, Length(Identifier)); - - IndexInput := TokenPos; + Params.PushState; + try + JppParser := TJppParser.Create(Template, Params); + try + Result := JppParser.Parse; + finally + JppParser.Free; end; + finally + Params.PopState; end; end; Modified: trunk/jcl/packages/c6/JclRepositoryExpert.bpk =================================================================== --- trunk/jcl/packages/c6/JclRepositoryExpert.bpk 2010-01-21 16:12:37 UTC (rev 3131) +++ trunk/jcl/packages/c6/JclRepositoryExpert.bpk 2010-01-21 17:40:28 UTC (rev 3132) @@ -5,7 +5,7 @@ DO NOT EDIT THIS FILE, IT IS GENERATED BY THE PACKAGE GENERATOR ALWAYS EDIT THE RELATED XML FILE (JclRepositoryExpert-D.xml) - Last generated: 21-01-2010 14:52:39 UTC + Last generated: 21-01-2010 17:29:46 UTC ***************************************************************************** --> <PROJECT> @@ -15,6 +15,8 @@ <OBJFILES value=" ..\..\lib\c6\JclRepositoryExpert.obj ..\..\lib\c6\JppState.obj + ..\..\lib\c6\JppLexer.obj + ..\..\lib\c6\JppParser.obj ..\..\lib\c6\JclOtaTemplates.obj ..\..\lib\c6\JclOtaRepositoryUtils.obj ..\..\lib\c6\JclOtaExcDlgRepository.obj @@ -66,7 +68,7 @@ <SYSDEFINES value="_RTLDLL;NO_STRICT;USEPACKAGES"/> <MAINSOURCE value="JclRepositoryExpert.cpp"/> <INCLUDEPATH value="..\..\source\common;..\..\source\windows;..\..\source\vcl;..\..\experts\common;$(BCB)\include;$(BCB)\include\vcl"/> - <LIBPATH value="..\..\devtools\jpp;..\..\experts\repository;..\..\experts\repository\ExceptionDialog;..\..\lib\c6;..\..\lib\c6;$(BCB)\Projects\Lib;$(BCB)\lib\obj;$(BCB)\lib;$(BCB)\lib\debug"/> + <LIBPATH value="..\..\devtools\jpp;..\..\devtools\jpp;..\..\experts\repository;..\..\experts\repository\ExceptionDialog;..\..\lib\c6;..\..\lib\c6;$(BCB)\Projects\Lib;$(BCB)\lib\obj;$(BCB)\lib;$(BCB)\lib\debug"/> <WARNINGS value="-w-par"/> <OTHERFILES value=""/> </MACROS> @@ -97,6 +99,8 @@ <FILE FILENAME="JclContainers.bpi" FORMNAME="" UNITNAME="JclContainers" CONTAINERID="BPITool" DESIGNCLASS="" LOCALCOMMAND=""/> <FILE FILENAME="JclBaseExpert.bpi" FORMNAME="" UNITNAME="JclBaseExpert" CONTAINERID="BPITool" DESIGNCLASS="" LOCALCOMMAND=""/> <FILE FILENAME="..\..\devtools\jpp\JppState.pas" FORMNAME="" UNITNAME="JppState" CONTAINERID="PascalCompiler" DESIGNCLASS="" LOCALCOMMAND=""/> + <FILE FILENAME="..\..\devtools\jpp\JppLexer.pas" FORMNAME="" UNITNAME="JppLexer" CONTAINERID="PascalCompiler" DESIGNCLASS="" LOCALCOMMAND=""/> + <FILE FILENAME="..\..\devtools\jpp\JppParser.pas" FORMNAME="" UNITNAME="JppParser" CONTAINERID="PascalCompiler" DESIGNCLASS="" LOCALCOMMAND=""/> <FILE FILENAME="..\..\experts\repository\JclOtaTemplates.pas" FORMNAME="" UNITNAME="JclOtaTemplates" CONTAINERID="PascalCompiler" DESIGNCLASS="" LOCALCOMMAND=""/> <FILE FILENAME="..\..\experts\repository\JclOtaRepositoryUtils.pas" FORMNAME="" UNITNAME="JclOtaRepositoryUtils" CONTAINERID="PascalCompiler" DESIGNCLASS="" LOCALCOMMAND=""/> <FILE FILENAME="..\..\experts\repository\ExceptionDialog\JclOtaExcDlgRepository.pas" FORMNAME="" UNITNAME="JclOtaExcDlgRepository" CONTAINERID="PascalCompiler" DESIGNCLASS="" LOCALCOMMAND=""/> Modified: trunk/jcl/packages/c6/JclRepositoryExpert.dpk =================================================================== --- trunk/jcl/packages/c6/JclRepositoryExpert.dpk 2010-01-21 16:12:37 UTC (rev 3131) +++ trunk/jcl/packages/c6/JclRepositoryExpert.dpk 2010-01-21 17:40:28 UTC (rev 3132) @@ -4,7 +4,7 @@ DO NOT EDIT THIS FILE, IT IS GENERATED BY THE PACKAGE GENERATOR ALWAYS EDIT THE RELATED XML FILE (JclRepositoryExpert-D.xml) - Last generated: 21-01-2010 14:52:40 UTC + Last generated: 21-01-2010 17:29:46 UTC ----------------------------------------------------------------------------- } @@ -48,6 +48,8 @@ ; contains JppState in '..\..\devtools\jpp\JppState.pas' , + JppLexer in '..\..\devtools\jpp\JppLexer.pas' , + JppParser in '..\..\devtools\jpp\JppParser.pas' , JclOtaTemplates in '..\..\experts\repository\JclOtaTemplates.pas' , JclOtaRepositoryUtils in '..\..\experts\repository\JclOtaRepositoryUtils.pas' , JclOtaExcDlgRepository in '..\..\experts\repository\ExceptionDialog\JclOtaExcDlgRepository.pas' , Modified: trunk/jcl/packages/c6/JclRepositoryExpertDLL.bpf =================================================================== --- trunk/jcl/packages/c6/JclRepositoryExpertDLL.bpf 2010-01-21 16:12:37 UTC (rev 3131) +++ trunk/jcl/packages/c6/JclRepositoryExpertDLL.bpf 2010-01-21 17:40:28 UTC (rev 3132) @@ -1,4 +1,6 @@ USEUNIT("..\..\devtools\jpp\JppState.pas"); +USEUNIT("..\..\devtools\jpp\JppLexer.pas"); +USEUNIT("..\..\devtools\jpp\JppParser.pas"); USEUNIT("..\..\experts\repository\JclOtaTemplates.pas"); USEUNIT("..\..\experts\repository\JclOtaRepositoryUtils.pas"); USEUNIT("..\..\experts\repository\ExceptionDialog\JclOtaExcDlgRepository.pas"); Modified: trunk/jcl/packages/c6/JclRepositoryExpertDLL.bpr =================================================================== --- trunk/jcl/packages/c6/JclRepositoryExpertDLL.bpr 2010-01-21 16:12:37 UTC (rev 3131) +++ trunk/jcl/packages/c6/JclRepositoryExpertDLL.bpr 2010-01-21 17:40:28 UTC (rev 3132) @@ -5,7 +5,7 @@ DO NOT EDIT THIS FILE, IT IS GENERATED BY THE PACKAGE GENERATOR ALWAYS EDIT THE RELATED XML FILE (JclRepositoryExpertDLL-L.xml) - Last generated: 21-01-2010 14:52:39 UTC + Last generated: 21-01-2010 17:29:46 UTC ***************************************************************************** --> <PROJECT> @@ -15,6 +15,8 @@ <OBJFILES value=" ..\..\lib\c6\JclRepositoryExpertDLL.obj ..\..\lib\c6\JppState.obj + ..\..\lib\c6\JppLexer.obj + ..\..\lib\c6\JppParser.obj ..\..\lib\c6\JclOtaTemplates.obj ..\..\lib\c6\JclOtaRepositoryUtils.obj ..\..\lib\c6\JclOtaExcDlgRepository.obj @@ -66,7 +68,7 @@ <SYSDEFINES value="NO_STRICT;_RTLDLL;USEPACKAGES"/> <MAINSOURCE value="JclRepositoryExpertDLL.cpp"/> <INCLUDEPATH value="..\..\source\common;..\..\source\windows;..\..\source\vcl;$(BCB)\include;$(BCB)\include\vcl"/> - <LIBPATH value="..\..\devtools\jpp;..\..\experts\repository;..\..\experts\repository\ExceptionDialog;..\..\lib\c6;..\..\lib\c6;$(BCB)\Projects\Lib;$(BCB)\lib\obj;$(BCB)\lib;$(BCB)\lib\debug"/> + <LIBPATH value="..\..\devtools\jpp;..\..\devtools\jpp;..\..\experts\repository;..\..\experts\repository\ExceptionDialog;..\..\lib\c6;..\..\lib\c6;$(BCB)\Projects\Lib;$(BCB)\lib\obj;$(BCB)\lib;$(BCB)\lib\debug"/> <WARNINGS value="-w-par"/> <OTHERFILES value=""/> </MACROS> @@ -96,6 +98,8 @@ <FILE FILENAME="JclContainers.bpi" FORMNAME="" UNITNAME="JclContainers" CONTAINERID="BPITool" DESIGNCLASS="" LOCALCOMMAND=""/> <FILE FILENAME="JclBaseExpert.bpi" FORMNAME="" UNITNAME="JclBaseExpert" CONTAINERID="BPITool" DESIGNCLASS="" LOCALCOMMAND=""/> <FILE FILENAME="..\..\devtools\jpp\JppState.pas" FORMNAME="" UNITNAME="JppState" CONTAINERID="PascalCompiler" DESIGNCLASS="" LOCALCOMMAND=""/> + <FILE FILENAME="..\..\devtools\jpp\JppLexer.pas" FORMNAME="" UNITNAME="JppLexer" CONTAINERID="PascalCompiler" DESIGNCLASS="" LOCALCOMMAND=""/> + <FILE FILENAME="..\..\devtools\jpp\JppParser.pas" FORMNAME="" UNITNAME="JppParser" CONTAINERID="PascalCompiler" DESIGNCLASS="" LOCALCOMMAND=""/> <FILE FILENAME="..\..\experts\repository\JclOtaTemplates.pas" FORMNAME="" UNITNAME="JclOtaTemplates" CONTAINERID="PascalCompiler" DESIGNCLASS="" LOCALCOMMAND=""/> <FILE FILENAME="..\..\experts\repository\JclOtaRepositoryUtils.pas" FORMNAME="" UNITNAME="JclOtaRepositoryUtils" CONTAINERID="PascalCompiler" DESIGNCLASS="" LOCALCOMMAND=""/> <FILE FILENAME="..\..\experts\repository\ExceptionDialog\JclOtaExcDlgRepository.pas" FORMNAME="" UNITNAME="JclOtaExcDlgRepository" CONTAINERID="PascalCompiler" DESIGNCLASS="" LOCALCOMMAND=""/> Modified: trunk/jcl/packages/d10/JclRepositoryExpert.dpk =================================================================== --- trunk/jcl/packages/d10/JclRepositoryExpert.dpk 2010-01-21 16:12:37 UTC (rev 3131) +++ trunk/jcl/packages/d10/JclRepositoryExpert.dpk 2010-01-21 17:40:28 UTC (rev 3132) @@ -4,7 +4,7 @@ DO NOT EDIT THIS FILE, IT IS GENERATED BY THE PACKAGE GENERATOR ALWAYS EDIT THE RELATED XML FILE (JclRepositoryExpert-D.xml) - Last generated: 21-01-2010 14:52:42 UTC + Last generated: 21-01-2010 17:29:47 UTC ----------------------------------------------------------------------------- } @@ -49,6 +49,8 @@ contains JppState in '..\..\devtools\jpp\JppState.pas' , + JppLexer in '..\..\devtools\jpp\JppLexer.pas' , + JppParser in '..\..\devtools\jpp\JppParser.pas' , JclOtaTemplates in '..\..\experts\repository\JclOtaTemplates.pas' , JclOtaRepositoryUtils in '..\..\experts\repository\JclOtaRepositoryUtils.pas' , JclOtaExcDlgRepository in '..\..\experts\repository\ExceptionDialog\JclOtaExcDlgRepository.pas' , Modified: trunk/jcl/packages/d10/JclRepositoryExpertDLL.dpr =================================================================== --- trunk/jcl/packages/d10/JclRepositoryExpertDLL.dpr 2010-01-21 16:12:37 UTC (rev 3131) +++ trunk/jcl/packages/d10/JclRepositoryExpertDLL.dpr 2010-01-21 17:40:28 UTC (rev 3132) @@ -4,7 +4,7 @@ DO NOT EDIT THIS FILE, IT IS GENERATED BY THE PACKAGE GENERATOR ALWAYS EDIT THE RELATED XML FILE (JclRepositoryExpertDLL-L.xml) - Last generated: 21-01-2010 14:52:42 UTC + Last generated: 21-01-2010 17:29:47 UTC ----------------------------------------------------------------------------- } @@ -40,6 +40,8 @@ uses ToolsAPI, JppState in '..\..\devtools\jpp\JppState.pas' , + JppLexer in '..\..\devtools\jpp\JppLexer.pas' , + JppParser in '..\..\devtools\jpp\JppParser.pas' , JclOtaTemplates in '..\..\experts\repository\JclOtaTemplates.pas' , JclOtaRepositoryUtils in '..\..\experts\repository\JclOtaRepositoryUtils.pas' , JclOtaExcDlgRepository in '..\..\experts\repository\ExceptionDialog\JclOtaExcDlgRepository.pas' , Modified: trunk/jcl/packages/d11/JclRepositoryExpert.dpk =================================================================== --- trunk/jcl/packages/d11/JclRepositoryExpert.dpk 2010-01-21 16:12:37 UTC (rev 3131) +++ trunk/jcl/packages/d11/JclRepositoryExpert.dpk 2010-01-21 17:40:28 UTC (rev 3132) @@ -4,7 +4,7 @@ DO NOT EDIT THIS FILE, IT IS GENERATED BY THE PACKAGE GENERATOR ALWAYS EDIT THE RELATED XML FILE (JclRepositoryExpert-D.xml) - Last generated: 21-01-2010 14:52:42 UTC + Last generated: 21-01-2010 17:29:47 UTC ----------------------------------------------------------------------------- } @@ -49,6 +49,8 @@ contains JppState in '..\..\devtools\jpp\JppState.pas' , + JppLexer in '..\..\devtools\jpp\JppLexer.pas' , + JppParser in '..\..\devtools\jpp\JppParser.pas' , JclOtaTemplates in '..\..\experts\repository\JclOtaTemplates.pas' , JclOtaRepositoryUtils in '..\..\experts\repository\JclOtaRepositoryUtils.pas' , JclOtaExcDlgRepository in '..\..\experts\repository\ExceptionDialog\JclOtaExcDlgRepository.pas' , Modified: trunk/jcl/packages/d11/JclRepositoryExpert.dproj =================================================================== --- trunk/jcl/packages/d11/JclRepositoryExpert.dproj 2010-01-21 16:12:37 UTC (rev 3131) +++ trunk/jcl/packages/d11/JclRepositoryExpert.dproj 2010-01-21 17:40:28 UTC (rev 3132) @@ -92,6 +92,8 @@ <DCCReference Include="JclContainers.dcp" /> <DCCReference Include="JclBaseExpert.dcp" /> <DCCReference Include="..\..\devtools\jpp\JppState.pas" /> + <DCCReference Include="..\..\devtools\jpp\JppLexer.pas" /> + <DCCReference Include="..\..\devtools\jpp\JppParser.pas" /> <DCCReference Include="..\..\experts\repository\JclOtaTemplates.pas" /> <DCCReference Include="..\..\experts\repository\JclOtaRepositoryUtils.pas" /> <DCCReference Include="..\..\experts\repository\ExceptionDialog\JclOtaExcDlgRepository.pas" /> Modified: trunk/jcl/packages/d11/JclRepositoryExpertDLL.dpr =================================================================== --- trunk/jcl/packages/d11/JclRepositoryExpertDLL.dpr 2010-01-21 16:12:37 UTC (rev 3131) +++ trunk/jcl/packages/d11/JclRepositoryExpertDLL.dpr 2010-01-21 17:40:28 UTC (rev 3132) @@ -4,7 +4,7 @@ DO NOT EDIT THIS FILE, IT IS GENERATED BY THE PACKAGE GENERATOR ALWAYS EDIT THE RELATED XML FILE (JclRepositoryExpertDLL-L.xml) - Last generated: 21-01-2010 14:52:43 UTC + Last generated: 21-01-2010 17:29:47 UTC -----------... [truncated message content] |
From: <ou...@us...> - 2010-01-21 16:15:19
|
Revision: 3131 http://jcl.svn.sourceforge.net/jcl/?rev=3131&view=rev Author: outchy Date: 2010-01-21 16:12:37 +0000 (Thu, 21 Jan 2010) Log Message: ----------- Step #2 for making the repository expert backed by the JEDI PreProcessor: Make TJppParser and TJppLexer interfaces more easy to be reused. Modified Paths: -------------- trunk/jcl/devtools/jpp/JppLexer.pas trunk/jcl/devtools/jpp/JppParser.pas trunk/jcl/devtools/jpp/jpp.dpr Modified: trunk/jcl/devtools/jpp/JppLexer.pas =================================================================== --- trunk/jcl/devtools/jpp/JppLexer.pas 2010-01-21 15:05:18 UTC (rev 3130) +++ trunk/jcl/devtools/jpp/JppLexer.pas 2010-01-21 16:12:37 UTC (rev 3131) @@ -52,7 +52,7 @@ uses SysUtils, Classes, - JclStrHashMap, JclStrings, JclStreams; + JclStrHashMap, JclStrings; type TJppToken = (ptEof, ptComment, ptText, ptEol, @@ -71,7 +71,7 @@ FTokenAsString: string; FRawComment: string; public - constructor Create(AStream: TJclStringStream); + constructor Create(const ABuffer: string); destructor Destroy; override; procedure Error(const AMsg: string); @@ -91,7 +91,7 @@ { TJppLexer } -constructor TJppLexer.Create(AStream: TJclStringStream); +constructor TJppLexer.Create(const ABuffer: string); procedure AddToken(const AIdent: string; AValue: TJppToken); var @@ -117,7 +117,7 @@ AddToken('jppexpandmacro', ptJppExpandMacro); AddToken('jppundefmacro', ptJppUndefMacro); - FBuf := AStream.ReadString; + FBuf := ABuffer; Reset; end; Modified: trunk/jcl/devtools/jpp/JppParser.pas =================================================================== --- trunk/jcl/devtools/jpp/JppParser.pas 2010-01-21 15:05:18 UTC (rev 3130) +++ trunk/jcl/devtools/jpp/JppParser.pas 2010-01-21 16:12:37 UTC (rev 3131) @@ -48,7 +48,6 @@ uses SysUtils, Classes, - JclStreams, JppState, JppLexer; type @@ -90,7 +89,7 @@ property Lexer: TJppLexer read FLexer; property State: TPppState read FState; public - constructor Create(AStream: TJclStringStream; APppState: TPppState); + constructor Create(const ABuffer: string; APppState: TPppState); destructor Destroy; override; function Parse: string; end; @@ -98,7 +97,7 @@ implementation uses - JclBase, JclStrings; + JclBase, JclStrings, JclStreams; {$IFDEF MSWINDOWS} const @@ -236,12 +235,11 @@ { TJppParser } -constructor TJppParser.Create(AStream: TJclStringStream; APppState: TPppState); +constructor TJppParser.Create(const ABuffer: string; APppState: TPppState); begin - Assert(AStream <> nil); Assert(APppState <> nil); - FLexer := TJppLexer.Create(AStream); + FLexer := TJppLexer.Create(ABuffer); FState := APppState; FTriState := ttUnknown; FState.Undef('PROTOTYPE'); @@ -271,7 +269,7 @@ try TempStringStream.WriteString(S, 1, Length(S)); TempStringStream.Seek(0, soBeginning); - TempParser := TJppParser.Create(TempStringStream, State); + TempParser := TJppParser.Create(TempStringStream.ReadString, State); try AResult := TempParser.Parse; finally @@ -520,7 +518,7 @@ Lexer.Error(e.Message); end; ssIn := TJclAutoStream.Create(fsIn); - newLexer := TJppLexer.Create(ssIn); + newLexer := TJppLexer.Create(ssIn.ReadString); FLexer := newLexer; ParseText; finally Modified: trunk/jcl/devtools/jpp/jpp.dpr =================================================================== --- trunk/jcl/devtools/jpp/jpp.dpr 2010-01-21 15:05:18 UTC (rev 3130) +++ trunk/jcl/devtools/jpp/jpp.dpr 2010-01-21 16:12:37 UTC (rev 3131) @@ -120,7 +120,7 @@ try fsIn := TFileStream.Create(AOld, fmOpenRead); ssIn := TJclAutoStream.Create(fsIn); - parse := TJppParser.Create(ssIn, AState); + parse := TJppParser.Create(ssIn.ReadString, AState); answer := Format('%s'#13#10'%s', [SWarningJppGenerated, parse.Parse]); fsOut := TFileStream.Create(ANew, fmCreate); case ssIn.Encoding of This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ou...@us...> - 2010-01-21 15:05:34
|
Revision: 3130 http://jcl.svn.sourceforge.net/jcl/?rev=3130&view=rev Author: outchy Date: 2010-01-21 15:05:18 +0000 (Thu, 21 Jan 2010) Log Message: ----------- Step #1 for making the repository expert backed by the JEDI PreProcessor: Merge of JclOtaTemplates.TJclOtaTemplateParams into JppState.TPppState. Modified Paths: -------------- trunk/jcl/devtools/jpp/JppState.pas trunk/jcl/experts/repository/ExceptionDialog/JclOtaExcDlgParams.pas trunk/jcl/experts/repository/JclOtaTemplates.pas trunk/jcl/packages/c6/JclRepositoryExpert.bpk trunk/jcl/packages/c6/JclRepositoryExpert.dpk trunk/jcl/packages/c6/JclRepositoryExpertDLL.bpf trunk/jcl/packages/c6/JclRepositoryExpertDLL.bpr trunk/jcl/packages/c6/JclRepositoryExpertDLL.dof trunk/jcl/packages/d10/JclRepositoryExpert.bdsproj trunk/jcl/packages/d10/JclRepositoryExpert.dpk trunk/jcl/packages/d10/JclRepositoryExpertDLL.bdsproj trunk/jcl/packages/d10/JclRepositoryExpertDLL.dpr trunk/jcl/packages/d11/JclRepositoryExpert.dpk trunk/jcl/packages/d11/JclRepositoryExpert.dproj trunk/jcl/packages/d11/JclRepositoryExpertDLL.dpr trunk/jcl/packages/d11/JclRepositoryExpertDLL.dproj trunk/jcl/packages/d12/JclRepositoryExpert.dpk trunk/jcl/packages/d12/JclRepositoryExpert.dproj trunk/jcl/packages/d12/JclRepositoryExpertDLL.dpr trunk/jcl/packages/d12/JclRepositoryExpertDLL.dproj trunk/jcl/packages/d14/JclRepositoryExpert.dpk trunk/jcl/packages/d14/JclRepositoryExpert.dproj trunk/jcl/packages/d14/JclRepositoryExpertDLL.dpr trunk/jcl/packages/d14/JclRepositoryExpertDLL.dproj trunk/jcl/packages/d6/JclRepositoryExpert.dpk trunk/jcl/packages/d6/JclRepositoryExpertDLL.dof trunk/jcl/packages/d6/JclRepositoryExpertDLL.dpr trunk/jcl/packages/d7/JclRepositoryExpert.dpk trunk/jcl/packages/d7/JclRepositoryExpertDLL.dof trunk/jcl/packages/d7/JclRepositoryExpertDLL.dpr trunk/jcl/packages/d9/JclRepositoryExpert.bdsproj trunk/jcl/packages/d9/JclRepositoryExpert.dpk trunk/jcl/packages/d9/JclRepositoryExpertDLL.bdsproj trunk/jcl/packages/d9/JclRepositoryExpertDLL.dpr trunk/jcl/packages/xml/JclRepositoryExpert-D.xml trunk/jcl/packages/xml/JclRepositoryExpertDLL-L.xml Modified: trunk/jcl/devtools/jpp/JppState.pas =================================================================== --- trunk/jcl/devtools/jpp/JppState.pas 2010-01-20 20:30:14 UTC (rev 3129) +++ trunk/jcl/devtools/jpp/JppState.pas 2010-01-21 15:05:18 UTC (rev 3130) @@ -58,7 +58,7 @@ TTriState = (ttUnknown, ttUndef, ttDefined); - TPppState = class + TPppState = class(TPersistent) private FStateStack: IJclStack; FOptions: TPppOptions; @@ -85,6 +85,11 @@ procedure PopState; function IsDefined(const ASymbol: string): Boolean; + function GetBoolValue(const Name: string): Boolean; + function GetStrValue(const Name: string): string; + function GetIntValue(const Name: string): Integer; + function GetStringsValue(const Name: string): TStrings; + procedure Define(const ASymbol: string); procedure Undef(const ASymbol: string); @@ -106,6 +111,7 @@ implementation uses + TypInfo, JclStrings, JclArrayLists, JclHashMaps, JclStacks; type @@ -226,6 +232,41 @@ Result := TFileStream.Create(fn, fmOpenRead or fmShareDenyWrite); end; +function TPppState.GetBoolValue(const Name: string): Boolean; +var + VariantValue: Variant; +begin + VariantValue := GetPropValue(Self, Name); + Result := Boolean(VariantValue); +end; + +function TPppState.GetIntValue(const Name: string): Integer; +var + VariantValue: Variant; +begin + VariantValue := GetPropValue(Self, Name); + Result := Integer(VariantValue); +end; + +function TPppState.GetStringsValue(const Name: string): TStrings; +var + Instance: TObject; +begin + Instance := TObject(GetOrdProp(Self, Name)); + if Instance is TStrings then + Result := TStrings(Instance) + else + Result := nil; +end; + +function TPppState.GetStrValue(const Name: string): string; +var + VariantValue: Variant; +begin + VariantValue := GetPropValue(Self, Name, True); + Result := string(VariantValue); +end; + function TPppState.GetOptions: TPppOptions; begin Result := FOptions; @@ -235,6 +276,8 @@ var ADefines: IJclStrMap; ASymbolNames: IJclStrIterator; + PI: PPropInfo; + PV: Variant; begin Result := ttUnknown; ADefines := InternalPeekDefines; @@ -247,6 +290,18 @@ Break; end; end; + if Result = ttUnknown then + begin + PI := GetPropInfo(Self, ASymbol); + if Assigned(PI) then + begin + PV := GetPropValue(Self, ASymbol); + if Boolean(PV) then + Result := ttDefined + else + Result := ttUndef; + end; + end; end; function TPppState.InternalPeekDefines: IJclStrMap; Modified: trunk/jcl/experts/repository/ExceptionDialog/JclOtaExcDlgParams.pas =================================================================== --- trunk/jcl/experts/repository/ExceptionDialog/JclOtaExcDlgParams.pas 2010-01-20 20:30:14 UTC (rev 3129) +++ trunk/jcl/experts/repository/ExceptionDialog/JclOtaExcDlgParams.pas 2010-01-21 15:05:18 UTC (rev 3130) @@ -59,6 +59,7 @@ FAddressOffset: Boolean; FVirtualAddress: Boolean; FActivePersonality: TJclBorPersonality; + FLanguage: TJclBorPersonality; FLanguages: TJclBorPersonalities; FRawData: Boolean; FSendEMail: Boolean; @@ -93,6 +94,7 @@ destructor Destroy; override; published // file options + property Language: TJclBorPersonality read FLanguage write FLanguage; property Languages: TJclBorPersonalities read FLanguages write FLanguages; property ActivePersonality: TJclBorPersonality read FActivePersonality write FActivePersonality; Modified: trunk/jcl/experts/repository/JclOtaTemplates.pas =================================================================== --- trunk/jcl/experts/repository/JclOtaTemplates.pas 2010-01-20 20:30:14 UTC (rev 3129) +++ trunk/jcl/experts/repository/JclOtaTemplates.pas 2010-01-21 15:05:18 UTC (rev 3130) @@ -37,22 +37,12 @@ {$IFDEF UNITVERSIONING} JclUnitVersioning, {$ENDIF UNITVERSIONING} - JclBorlandTools; + JclBorlandTools, + JppState; type - TJclOtaTemplateParams = class(TPersistent) - protected - FLanguage: TJclBorPersonality; - public - function GetBoolValue(const Name: string): Boolean; virtual; - function IsDefined(const Name: string): Boolean; virtual; - function GetStrValue(const Name: string): string; virtual; - function GetIntValue(const Name: string): Integer; virtual; - function GetStringsValue(const Name: string): TStrings; virtual; + TJclOtaTemplateParams = TPppState; - property Language: TJclBorPersonality read FLanguage write FLanguage; - end; - const ModulePattern = '%MODULENAME%'; FormPattern = '%FORMNAME%'; @@ -274,54 +264,12 @@ end else if IfCount = 0 then CopyStr(Result, IndexOutput, CharCountOut, Identifier, 1, Length(Identifier)); - + IndexInput := TokenPos; end; end; end; -//=== { TJclOtaTemplateParams } ============================================== - -function TJclOtaTemplateParams.GetBoolValue(const Name: string): Boolean; -var - VariantValue: Variant; -begin - VariantValue := GetPropValue(Self, Name); - Result := Boolean(VariantValue); -end; - -function TJclOtaTemplateParams.GetIntValue(const Name: string): Integer; -var - VariantValue: Variant; -begin - VariantValue := GetPropValue(Self, Name); - Result := Integer(VariantValue); -end; - -function TJclOtaTemplateParams.GetStringsValue(const Name: string): TStrings; -var - Instance: TObject; -begin - Instance := TObject(GetOrdProp(Self, Name)); - if Instance is TStrings then - Result := TStrings(Instance) - else - Result := nil; -end; - -function TJclOtaTemplateParams.GetStrValue(const Name: string): string; -var - VariantValue: Variant; -begin - VariantValue := GetPropValue(Self, Name, True); - Result := string(VariantValue); -end; - -function TJclOtaTemplateParams.IsDefined(const Name: string): Boolean; -begin - Result := GetBoolValue(Name); -end; - {$IFDEF UNITVERSIONING} initialization RegisterUnitVersion(HInstance, UnitVersioning); Modified: trunk/jcl/packages/c6/JclRepositoryExpert.bpk =================================================================== --- trunk/jcl/packages/c6/JclRepositoryExpert.bpk 2010-01-20 20:30:14 UTC (rev 3129) +++ trunk/jcl/packages/c6/JclRepositoryExpert.bpk 2010-01-21 15:05:18 UTC (rev 3130) @@ -5,7 +5,7 @@ DO NOT EDIT THIS FILE, IT IS GENERATED BY THE PACKAGE GENERATOR ALWAYS EDIT THE RELATED XML FILE (JclRepositoryExpert-D.xml) - Last generated: 04-01-2010 21:32:16 UTC + Last generated: 21-01-2010 14:52:39 UTC ***************************************************************************** --> <PROJECT> @@ -14,6 +14,7 @@ <PROJECT value="JclRepositoryExpertC60.bpl"/> <OBJFILES value=" ..\..\lib\c6\JclRepositoryExpert.obj + ..\..\lib\c6\JppState.obj ..\..\lib\c6\JclOtaTemplates.obj ..\..\lib\c6\JclOtaRepositoryUtils.obj ..\..\lib\c6\JclOtaExcDlgRepository.obj @@ -51,10 +52,11 @@ vcl.bpi designide.bpi Jcl.bpi + JclContainers.bpi JclBaseExpert.bpi "/> <PATHCPP value=".;"/> - <PATHPAS value=".;..\..\experts\repository;..\..\experts\repository\ExceptionDialog;"/> + <PATHPAS value=".;..\..\devtools\jpp;..\..\experts\repository;..\..\experts\repository\ExceptionDialog;"/> <PATHRC value=".;"/> <PATHASM value=".;"/> <DEBUGLIBPATH value="$(BCB)\lib\debug"/> @@ -64,7 +66,7 @@ <SYSDEFINES value="_RTLDLL;NO_STRICT;USEPACKAGES"/> <MAINSOURCE value="JclRepositoryExpert.cpp"/> <INCLUDEPATH value="..\..\source\common;..\..\source\windows;..\..\source\vcl;..\..\experts\common;$(BCB)\include;$(BCB)\include\vcl"/> - <LIBPATH value="..\..\experts\repository;..\..\experts\repository;..\..\experts\repository\ExceptionDialog;..\..\lib\c6;..\..\lib\c6;$(BCB)\Projects\Lib;$(BCB)\lib\obj;$(BCB)\lib;$(BCB)\lib\debug"/> + <LIBPATH value="..\..\devtools\jpp;..\..\experts\repository;..\..\experts\repository\ExceptionDialog;..\..\lib\c6;..\..\lib\c6;$(BCB)\Projects\Lib;$(BCB)\lib\obj;$(BCB)\lib;$(BCB)\lib\debug"/> <WARNINGS value="-w-par"/> <OTHERFILES value=""/> </MACROS> @@ -92,7 +94,9 @@ <FILE FILENAME="vcl.bpi" FORMNAME="" UNITNAME="vcl" CONTAINERID="BPITool" DESIGNCLASS="" LOCALCOMMAND=""/> <FILE FILENAME="designide.bpi" FORMNAME="" UNITNAME="designide" CONTAINERID="BPITool" DESIGNCLASS="" LOCALCOMMAND=""/> <FILE FILENAME="Jcl.bpi" FORMNAME="" UNITNAME="Jcl" CONTAINERID="BPITool" DESIGNCLASS="" LOCALCOMMAND=""/> + <FILE FILENAME="JclContainers.bpi" FORMNAME="" UNITNAME="JclContainers" CONTAINERID="BPITool" DESIGNCLASS="" LOCALCOMMAND=""/> <FILE FILENAME="JclBaseExpert.bpi" FORMNAME="" UNITNAME="JclBaseExpert" CONTAINERID="BPITool" DESIGNCLASS="" LOCALCOMMAND=""/> + <FILE FILENAME="..\..\devtools\jpp\JppState.pas" FORMNAME="" UNITNAME="JppState" CONTAINERID="PascalCompiler" DESIGNCLASS="" LOCALCOMMAND=""/> <FILE FILENAME="..\..\experts\repository\JclOtaTemplates.pas" FORMNAME="" UNITNAME="JclOtaTemplates" CONTAINERID="PascalCompiler" DESIGNCLASS="" LOCALCOMMAND=""/> <FILE FILENAME="..\..\experts\repository\JclOtaRepositoryUtils.pas" FORMNAME="" UNITNAME="JclOtaRepositoryUtils" CONTAINERID="PascalCompiler" DESIGNCLASS="" LOCALCOMMAND=""/> <FILE FILENAME="..\..\experts\repository\ExceptionDialog\JclOtaExcDlgRepository.pas" FORMNAME="" UNITNAME="JclOtaExcDlgRepository" CONTAINERID="PascalCompiler" DESIGNCLASS="" LOCALCOMMAND=""/> Modified: trunk/jcl/packages/c6/JclRepositoryExpert.dpk =================================================================== --- trunk/jcl/packages/c6/JclRepositoryExpert.dpk 2010-01-20 20:30:14 UTC (rev 3129) +++ trunk/jcl/packages/c6/JclRepositoryExpert.dpk 2010-01-21 15:05:18 UTC (rev 3130) @@ -4,7 +4,7 @@ DO NOT EDIT THIS FILE, IT IS GENERATED BY THE PACKAGE GENERATOR ALWAYS EDIT THE RELATED XML FILE (JclRepositoryExpert-D.xml) - Last generated: 04-01-2010 21:32:16 UTC + Last generated: 21-01-2010 14:52:40 UTC ----------------------------------------------------------------------------- } @@ -43,9 +43,11 @@ vcl, designide, Jcl, + JclContainers, JclBaseExpert ; contains + JppState in '..\..\devtools\jpp\JppState.pas' , JclOtaTemplates in '..\..\experts\repository\JclOtaTemplates.pas' , JclOtaRepositoryUtils in '..\..\experts\repository\JclOtaRepositoryUtils.pas' , JclOtaExcDlgRepository in '..\..\experts\repository\ExceptionDialog\JclOtaExcDlgRepository.pas' , Modified: trunk/jcl/packages/c6/JclRepositoryExpertDLL.bpf =================================================================== --- trunk/jcl/packages/c6/JclRepositoryExpertDLL.bpf 2010-01-20 20:30:14 UTC (rev 3129) +++ trunk/jcl/packages/c6/JclRepositoryExpertDLL.bpf 2010-01-21 15:05:18 UTC (rev 3130) @@ -1,3 +1,4 @@ +USEUNIT("..\..\devtools\jpp\JppState.pas"); USEUNIT("..\..\experts\repository\JclOtaTemplates.pas"); USEUNIT("..\..\experts\repository\JclOtaRepositoryUtils.pas"); USEUNIT("..\..\experts\repository\ExceptionDialog\JclOtaExcDlgRepository.pas"); Modified: trunk/jcl/packages/c6/JclRepositoryExpertDLL.bpr =================================================================== --- trunk/jcl/packages/c6/JclRepositoryExpertDLL.bpr 2010-01-20 20:30:14 UTC (rev 3129) +++ trunk/jcl/packages/c6/JclRepositoryExpertDLL.bpr 2010-01-21 15:05:18 UTC (rev 3130) @@ -5,7 +5,7 @@ DO NOT EDIT THIS FILE, IT IS GENERATED BY THE PACKAGE GENERATOR ALWAYS EDIT THE RELATED XML FILE (JclRepositoryExpertDLL-L.xml) - Last generated: 04-01-2010 21:32:16 UTC + Last generated: 21-01-2010 14:52:39 UTC ***************************************************************************** --> <PROJECT> @@ -14,6 +14,7 @@ <PROJECT value="JclRepositoryExpertDLLC60.dll"/> <OBJFILES value=" ..\..\lib\c6\JclRepositoryExpertDLL.obj + ..\..\lib\c6\JppState.obj ..\..\lib\c6\JclOtaTemplates.obj ..\..\lib\c6\JclOtaRepositoryUtils.obj ..\..\lib\c6\JclOtaExcDlgRepository.obj @@ -51,10 +52,11 @@ vcl.bpi designide.bpi Jcl.bpi + JclContainers.bpi JclBaseExpert.bpi "/> <PATHCPP value=".;"/> - <PATHPAS value=".;..\..\experts\repository;..\..\experts\repository\ExceptionDialog;"/> + <PATHPAS value=".;..\..\devtools\jpp;..\..\experts\repository;..\..\experts\repository\ExceptionDialog;"/> <PATHRC value=".;"/> <PATHASM value=".;"/> <DEBUGLIBPATH value="$(BCB)\lib\debug"/> @@ -64,7 +66,7 @@ <SYSDEFINES value="NO_STRICT;_RTLDLL;USEPACKAGES"/> <MAINSOURCE value="JclRepositoryExpertDLL.cpp"/> <INCLUDEPATH value="..\..\source\common;..\..\source\windows;..\..\source\vcl;$(BCB)\include;$(BCB)\include\vcl"/> - <LIBPATH value="..\..\experts\repository;..\..\experts\repository;..\..\experts\repository\ExceptionDialog;..\..\lib\c6;..\..\lib\c6;$(BCB)\Projects\Lib;$(BCB)\lib\obj;$(BCB)\lib;$(BCB)\lib\debug"/> + <LIBPATH value="..\..\devtools\jpp;..\..\experts\repository;..\..\experts\repository\ExceptionDialog;..\..\lib\c6;..\..\lib\c6;$(BCB)\Projects\Lib;$(BCB)\lib\obj;$(BCB)\lib;$(BCB)\lib\debug"/> <WARNINGS value="-w-par"/> <OTHERFILES value=""/> </MACROS> @@ -91,7 +93,9 @@ <FILE FILENAME="vcl.bpi" FORMNAME="" UNITNAME="vcl" CONTAINERID="BPITool" DESIGNCLASS="" LOCALCOMMAND=""/> <FILE FILENAME="designide.bpi" FORMNAME="" UNITNAME="designide" CONTAINERID="BPITool" DESIGNCLASS="" LOCALCOMMAND=""/> <FILE FILENAME="Jcl.bpi" FORMNAME="" UNITNAME="Jcl" CONTAINERID="BPITool" DESIGNCLASS="" LOCALCOMMAND=""/> + <FILE FILENAME="JclContainers.bpi" FORMNAME="" UNITNAME="JclContainers" CONTAINERID="BPITool" DESIGNCLASS="" LOCALCOMMAND=""/> <FILE FILENAME="JclBaseExpert.bpi" FORMNAME="" UNITNAME="JclBaseExpert" CONTAINERID="BPITool" DESIGNCLASS="" LOCALCOMMAND=""/> + <FILE FILENAME="..\..\devtools\jpp\JppState.pas" FORMNAME="" UNITNAME="JppState" CONTAINERID="PascalCompiler" DESIGNCLASS="" LOCALCOMMAND=""/> <FILE FILENAME="..\..\experts\repository\JclOtaTemplates.pas" FORMNAME="" UNITNAME="JclOtaTemplates" CONTAINERID="PascalCompiler" DESIGNCLASS="" LOCALCOMMAND=""/> <FILE FILENAME="..\..\experts\repository\JclOtaRepositoryUtils.pas" FORMNAME="" UNITNAME="JclOtaRepositoryUtils" CONTAINERID="PascalCompiler" DESIGNCLASS="" LOCALCOMMAND=""/> <FILE FILENAME="..\..\experts\repository\ExceptionDialog\JclOtaExcDlgRepository.pas" FORMNAME="" UNITNAME="JclOtaExcDlgRepository" CONTAINERID="PascalCompiler" DESIGNCLASS="" LOCALCOMMAND=""/> Modified: trunk/jcl/packages/c6/JclRepositoryExpertDLL.dof =================================================================== --- trunk/jcl/packages/c6/JclRepositoryExpertDLL.dof 2010-01-20 20:30:14 UTC (rev 3129) +++ trunk/jcl/packages/c6/JclRepositoryExpertDLL.dof 2010-01-21 15:05:18 UTC (rev 3130) @@ -5,5 +5,5 @@ [Compiler] PackageNoLink=1 [Linker] -Packages=rtl;vcl;designide;Jcl;JclBaseExpert +Packages=rtl;vcl;designide;Jcl;JclContainers;JclBaseExpert Modified: trunk/jcl/packages/d10/JclRepositoryExpert.bdsproj =================================================================== --- trunk/jcl/packages/d10/JclRepositoryExpert.bdsproj 2010-01-20 20:30:14 UTC (rev 3129) +++ trunk/jcl/packages/d10/JclRepositoryExpert.bdsproj 2010-01-21 15:05:18 UTC (rev 3130) @@ -124,7 +124,7 @@ <Directories Name="OutputDir"></Directories> <Directories Name="PackageDLLOutputDir"></Directories> <Directories Name="PackageDCPOutputDir">..\..\lib\d10</Directories> - <Directories Name="Packages">rtl;vcl;designide;Jcl;JclBaseExpert</Directories> + <Directories Name="Packages">rtl;vcl;designide;Jcl;JclContainers;JclBaseExpert</Directories> <Directories Name="Conditionals">BCB;RELEASE</Directories> <Directories Name="DebugSourceDirs"></Directories> <Directories Name="UsePackages">True</Directories> Modified: trunk/jcl/packages/d10/JclRepositoryExpert.dpk =================================================================== --- trunk/jcl/packages/d10/JclRepositoryExpert.dpk 2010-01-20 20:30:14 UTC (rev 3129) +++ trunk/jcl/packages/d10/JclRepositoryExpert.dpk 2010-01-21 15:05:18 UTC (rev 3130) @@ -4,7 +4,7 @@ DO NOT EDIT THIS FILE, IT IS GENERATED BY THE PACKAGE GENERATOR ALWAYS EDIT THE RELATED XML FILE (JclRepositoryExpert-D.xml) - Last generated: 04-01-2010 21:32:20 UTC + Last generated: 21-01-2010 14:52:42 UTC ----------------------------------------------------------------------------- } @@ -43,10 +43,12 @@ vcl, designide, Jcl, + JclContainers, JclBaseExpert ; contains + JppState in '..\..\devtools\jpp\JppState.pas' , JclOtaTemplates in '..\..\experts\repository\JclOtaTemplates.pas' , JclOtaRepositoryUtils in '..\..\experts\repository\JclOtaRepositoryUtils.pas' , JclOtaExcDlgRepository in '..\..\experts\repository\ExceptionDialog\JclOtaExcDlgRepository.pas' , Modified: trunk/jcl/packages/d10/JclRepositoryExpertDLL.bdsproj =================================================================== --- trunk/jcl/packages/d10/JclRepositoryExpertDLL.bdsproj 2010-01-20 20:30:14 UTC (rev 3129) +++ trunk/jcl/packages/d10/JclRepositoryExpertDLL.bdsproj 2010-01-21 15:05:18 UTC (rev 3130) @@ -124,7 +124,7 @@ <Directories Name="OutputDir"></Directories> <Directories Name="PackageDLLOutputDir"></Directories> <Directories Name="PackageDCPOutputDir">..\..\lib\d10</Directories> - <Directories Name="Packages">rtl;vcl;designide;Jcl;JclBaseExpert</Directories> + <Directories Name="Packages">rtl;vcl;designide;Jcl;JclContainers;JclBaseExpert</Directories> <Directories Name="Conditionals">BCB;RELEASE</Directories> <Directories Name="DebugSourceDirs"></Directories> <Directories Name="UsePackages">True</Directories> Modified: trunk/jcl/packages/d10/JclRepositoryExpertDLL.dpr =================================================================== --- trunk/jcl/packages/d10/JclRepositoryExpertDLL.dpr 2010-01-20 20:30:14 UTC (rev 3129) +++ trunk/jcl/packages/d10/JclRepositoryExpertDLL.dpr 2010-01-21 15:05:18 UTC (rev 3130) @@ -4,7 +4,7 @@ DO NOT EDIT THIS FILE, IT IS GENERATED BY THE PACKAGE GENERATOR ALWAYS EDIT THE RELATED XML FILE (JclRepositoryExpertDLL-L.xml) - Last generated: 04-01-2010 21:32:21 UTC + Last generated: 21-01-2010 14:52:42 UTC ----------------------------------------------------------------------------- } @@ -39,6 +39,7 @@ uses ToolsAPI, + JppState in '..\..\devtools\jpp\JppState.pas' , JclOtaTemplates in '..\..\experts\repository\JclOtaTemplates.pas' , JclOtaRepositoryUtils in '..\..\experts\repository\JclOtaRepositoryUtils.pas' , JclOtaExcDlgRepository in '..\..\experts\repository\ExceptionDialog\JclOtaExcDlgRepository.pas' , Modified: trunk/jcl/packages/d11/JclRepositoryExpert.dpk =================================================================== --- trunk/jcl/packages/d11/JclRepositoryExpert.dpk 2010-01-20 20:30:14 UTC (rev 3129) +++ trunk/jcl/packages/d11/JclRepositoryExpert.dpk 2010-01-21 15:05:18 UTC (rev 3130) @@ -4,7 +4,7 @@ DO NOT EDIT THIS FILE, IT IS GENERATED BY THE PACKAGE GENERATOR ALWAYS EDIT THE RELATED XML FILE (JclRepositoryExpert-D.xml) - Last generated: 04-01-2010 21:32:21 UTC + Last generated: 21-01-2010 14:52:42 UTC ----------------------------------------------------------------------------- } @@ -43,10 +43,12 @@ vcl, designide, Jcl, + JclContainers, JclBaseExpert ; contains + JppState in '..\..\devtools\jpp\JppState.pas' , JclOtaTemplates in '..\..\experts\repository\JclOtaTemplates.pas' , JclOtaRepositoryUtils in '..\..\experts\repository\JclOtaRepositoryUtils.pas' , JclOtaExcDlgRepository in '..\..\experts\repository\ExceptionDialog\JclOtaExcDlgRepository.pas' , Modified: trunk/jcl/packages/d11/JclRepositoryExpert.dproj =================================================================== --- trunk/jcl/packages/d11/JclRepositoryExpert.dproj 2010-01-20 20:30:14 UTC (rev 3129) +++ trunk/jcl/packages/d11/JclRepositoryExpert.dproj 2010-01-21 15:05:18 UTC (rev 3130) @@ -5,7 +5,7 @@ <Configuration Condition=" '$(Configuration)' == '' ">Release</Configuration> <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform> <DCC_DCCCompiler>DCC32</DCC_DCCCompiler> - <DCC_UsePackage>rtl;vcl;designide;Jcl;JclBaseExpert</DCC_UsePackage> + <DCC_UsePackage>rtl;vcl;designide;Jcl;JclContainers;JclBaseExpert</DCC_UsePackage> <DCC_Define>BCB;RELEASE</DCC_Define> </PropertyGroup> <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' "> @@ -89,7 +89,9 @@ <DCCReference Include="vcl.dcp" /> <DCCReference Include="designide.dcp" /> <DCCReference Include="Jcl.dcp" /> + <DCCReference Include="JclContainers.dcp" /> <DCCReference Include="JclBaseExpert.dcp" /> + <DCCReference Include="..\..\devtools\jpp\JppState.pas" /> <DCCReference Include="..\..\experts\repository\JclOtaTemplates.pas" /> <DCCReference Include="..\..\experts\repository\JclOtaRepositoryUtils.pas" /> <DCCReference Include="..\..\experts\repository\ExceptionDialog\JclOtaExcDlgRepository.pas" /> Modified: trunk/jcl/packages/d11/JclRepositoryExpertDLL.dpr =================================================================== --- trunk/jcl/packages/d11/JclRepositoryExpertDLL.dpr 2010-01-20 20:30:14 UTC (rev 3129) +++ trunk/jcl/packages/d11/JclRepositoryExpertDLL.dpr 2010-01-21 15:05:18 UTC (rev 3130) @@ -4,7 +4,7 @@ DO NOT EDIT THIS FILE, IT IS GENERATED BY THE PACKAGE GENERATOR ALWAYS EDIT THE RELATED XML FILE (JclRepositoryExpertDLL-L.xml) - Last generated: 04-01-2010 21:32:21 UTC + Last generated: 21-01-2010 14:52:43 UTC ----------------------------------------------------------------------------- } @@ -39,6 +39,7 @@ uses ToolsAPI, + JppState in '..\..\devtools\jpp\JppState.pas' , JclOtaTemplates in '..\..\experts\repository\JclOtaTemplates.pas' , JclOtaRepositoryUtils in '..\..\experts\repository\JclOtaRepositoryUtils.pas' , JclOtaExcDlgRepository in '..\..\experts\repository\ExceptionDialog\JclOtaExcDlgRepository.pas' , Modified: trunk/jcl/packages/d11/JclRepositoryExpertDLL.dproj =================================================================== --- trunk/jcl/packages/d11/JclRepositoryExpertDLL.dproj 2010-01-20 20:30:14 UTC (rev 3129) +++ trunk/jcl/packages/d11/JclRepositoryExpertDLL.dproj 2010-01-21 15:05:18 UTC (rev 3130) @@ -5,7 +5,7 @@ <Configuration Condition=" '$(Configuration)' == '' ">Release</Configuration> <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform> <DCC_DCCCompiler>DCC32</DCC_DCCCompiler> - <DCC_UsePackage>rtl;vcl;designide;Jcl;JclBaseExpert</DCC_UsePackage> + <DCC_UsePackage>rtl;vcl;designide;Jcl;JclContainers;JclBaseExpert</DCC_UsePackage> <DCC_Define>BCB;RELEASE</DCC_Define> </PropertyGroup> <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' "> @@ -89,7 +89,9 @@ <DCCReference Include="vcl.dcp" /> <DCCReference Include="designide.dcp" /> <DCCReference Include="Jcl.dcp" /> + <DCCReference Include="JclContainers.dcp" /> <DCCReference Include="JclBaseExpert.dcp" /> + <DCCReference Include="..\..\devtools\jpp\JppState.pas" /> <DCCReference Include="..\..\experts\repository\JclOtaTemplates.pas" /> <DCCReference Include="..\..\experts\repository\JclOtaRepositoryUtils.pas" /> <DCCReference Include="..\..\experts\repository\ExceptionDialog\JclOtaExcDlgRepository.pas" /> Modified: trunk/jcl/packages/d12/JclRepositoryExpert.dpk =================================================================== --- trunk/jcl/packages/d12/JclRepositoryExpert.dpk 2010-01-20 20:30:14 UTC (rev 3129) +++ trunk/jcl/packages/d12/JclRepositoryExpert.dpk 2010-01-21 15:05:18 UTC (rev 3130) @@ -4,7 +4,7 @@ DO NOT EDIT THIS FILE, IT IS GENERATED BY THE PACKAGE GENERATOR ALWAYS EDIT THE RELATED XML FILE (JclRepositoryExpert-D.xml) - Last generated: 04-01-2010 21:32:22 UTC + Last generated: 21-01-2010 14:52:43 UTC ----------------------------------------------------------------------------- } @@ -43,10 +43,12 @@ vcl, designide, Jcl, + JclContainers, JclBaseExpert ; contains + JppState in '..\..\devtools\jpp\JppState.pas' , JclOtaTemplates in '..\..\experts\repository\JclOtaTemplates.pas' , JclOtaRepositoryUtils in '..\..\experts\repository\JclOtaRepositoryUtils.pas' , JclOtaExcDlgRepository in '..\..\experts\repository\ExceptionDialog\JclOtaExcDlgRepository.pas' , Modified: trunk/jcl/packages/d12/JclRepositoryExpert.dproj =================================================================== --- trunk/jcl/packages/d12/JclRepositoryExpert.dproj 2010-01-20 20:30:14 UTC (rev 3129) +++ trunk/jcl/packages/d12/JclRepositoryExpert.dproj 2010-01-21 15:05:18 UTC (rev 3130) @@ -27,7 +27,7 @@ <GenDll>true</GenDll> <GenPackage>true</GenPackage> <DCC_ImageBase>$58100000</DCC_ImageBase> - <DCC_UsePackage>rtl;vcl;designide;Jcl;JclBaseExpert</DCC_UsePackage> + <DCC_UsePackage>rtl;vcl;designide;Jcl;JclContainers;JclBaseExpert</DCC_UsePackage> </PropertyGroup> <PropertyGroup Condition="'$(Cfg_Release)'!=''"> <DCC_AssertionsAtRuntime>false</DCC_AssertionsAtRuntime> @@ -64,7 +64,9 @@ <DCCReference Include="vcl.dcp" /> <DCCReference Include="designide.dcp" /> <DCCReference Include="Jcl.dcp" /> + <DCCReference Include="JclContainers.dcp" /> <DCCReference Include="JclBaseExpert.dcp" /> + <DCCReference Include="..\..\devtools\jpp\JppState.pas" /> <DCCReference Include="..\..\experts\repository\JclOtaTemplates.pas" /> <DCCReference Include="..\..\experts\repository\JclOtaRepositoryUtils.pas" /> <DCCReference Include="..\..\experts\repository\ExceptionDialog\JclOtaExcDlgRepository.pas" /> Modified: trunk/jcl/packages/d12/JclRepositoryExpertDLL.dpr =================================================================== --- trunk/jcl/packages/d12/JclRepositoryExpertDLL.dpr 2010-01-20 20:30:14 UTC (rev 3129) +++ trunk/jcl/packages/d12/JclRepositoryExpertDLL.dpr 2010-01-21 15:05:18 UTC (rev 3130) @@ -4,7 +4,7 @@ DO NOT EDIT THIS FILE, IT IS GENERATED BY THE PACKAGE GENERATOR ALWAYS EDIT THE RELATED XML FILE (JclRepositoryExpertDLL-L.xml) - Last generated: 04-01-2010 21:32:22 UTC + Last generated: 21-01-2010 14:52:43 UTC ----------------------------------------------------------------------------- } @@ -39,6 +39,7 @@ uses ToolsAPI, + JppState in '..\..\devtools\jpp\JppState.pas' , JclOtaTemplates in '..\..\experts\repository\JclOtaTemplates.pas' , JclOtaRepositoryUtils in '..\..\experts\repository\JclOtaRepositoryUtils.pas' , JclOtaExcDlgRepository in '..\..\experts\repository\ExceptionDialog\JclOtaExcDlgRepository.pas' , Modified: trunk/jcl/packages/d12/JclRepositoryExpertDLL.dproj =================================================================== --- trunk/jcl/packages/d12/JclRepositoryExpertDLL.dproj 2010-01-20 20:30:14 UTC (rev 3129) +++ trunk/jcl/packages/d12/JclRepositoryExpertDLL.dproj 2010-01-21 15:05:18 UTC (rev 3130) @@ -27,7 +27,7 @@ <GenDll>true</GenDll> <GenPackage>true</GenPackage> <DCC_ImageBase>$58100000</DCC_ImageBase> - <DCC_UsePackage>rtl;vcl;designide;Jcl;JclBaseExpert</DCC_UsePackage> + <DCC_UsePackage>rtl;vcl;designide;Jcl;JclContainers;JclBaseExpert</DCC_UsePackage> </PropertyGroup> <PropertyGroup Condition="'$(Cfg_Release)'!=''"> <DCC_AssertionsAtRuntime>false</DCC_AssertionsAtRuntime> @@ -64,7 +64,9 @@ <DCCReference Include="vcl.dcp" /> <DCCReference Include="designide.dcp" /> <DCCReference Include="Jcl.dcp" /> + <DCCReference Include="JclContainers.dcp" /> <DCCReference Include="JclBaseExpert.dcp" /> + <DCCReference Include="..\..\devtools\jpp\JppState.pas" /> <DCCReference Include="..\..\experts\repository\JclOtaTemplates.pas" /> <DCCReference Include="..\..\experts\repository\JclOtaRepositoryUtils.pas" /> <DCCReference Include="..\..\experts\repository\ExceptionDialog\JclOtaExcDlgRepository.pas" /> Modified: trunk/jcl/packages/d14/JclRepositoryExpert.dpk =================================================================== --- trunk/jcl/packages/d14/JclRepositoryExpert.dpk 2010-01-20 20:30:14 UTC (rev 3129) +++ trunk/jcl/packages/d14/JclRepositoryExpert.dpk 2010-01-21 15:05:18 UTC (rev 3130) @@ -4,7 +4,7 @@ DO NOT EDIT THIS FILE, IT IS GENERATED BY THE PACKAGE GENERATOR ALWAYS EDIT THE RELATED XML FILE (JclRepositoryExpert-D.xml) - Last generated: 04-01-2010 21:32:23 UTC + Last generated: 21-01-2010 14:52:44 UTC ----------------------------------------------------------------------------- } @@ -43,10 +43,12 @@ vcl, designide, Jcl, + JclContainers, JclBaseExpert ; contains + JppState in '..\..\devtools\jpp\JppState.pas' , JclOtaTemplates in '..\..\experts\repository\JclOtaTemplates.pas' , JclOtaRepositoryUtils in '..\..\experts\repository\JclOtaRepositoryUtils.pas' , JclOtaExcDlgRepository in '..\..\experts\repository\ExceptionDialog\JclOtaExcDlgRepository.pas' , Modified: trunk/jcl/packages/d14/JclRepositoryExpert.dproj =================================================================== --- trunk/jcl/packages/d14/JclRepositoryExpert.dproj 2010-01-20 20:30:14 UTC (rev 3129) +++ trunk/jcl/packages/d14/JclRepositoryExpert.dproj 2010-01-21 15:05:18 UTC (rev 3130) @@ -29,7 +29,7 @@ <GenDll>true</GenDll> <GenPackage>true</GenPackage> <DCC_ImageBase>$58100000</DCC_ImageBase> - <DCC_UsePackage>rtl;vcl;designide;Jcl;JclBaseExpert</DCC_UsePackage> + <DCC_UsePackage>rtl;vcl;designide;Jcl;JclContainers;JclBaseExpert</DCC_UsePackage> </PropertyGroup> <PropertyGroup Condition="'$(Cfg_Release)'!=''"> <DCC_AssertionsAtRuntime>false</DCC_AssertionsAtRuntime> @@ -66,7 +66,9 @@ <DCCReference Include="vcl.dcp" /> <DCCReference Include="designide.dcp" /> <DCCReference Include="Jcl.dcp" /> + <DCCReference Include="JclContainers.dcp" /> <DCCReference Include="JclBaseExpert.dcp" /> + <DCCReference Include="..\..\devtools\jpp\JppState.pas" /> <DCCReference Include="..\..\experts\repository\JclOtaTemplates.pas" /> <DCCReference Include="..\..\experts\repository\JclOtaRepositoryUtils.pas" /> <DCCReference Include="..\..\experts\repository\ExceptionDialog\JclOtaExcDlgRepository.pas" /> Modified: trunk/jcl/packages/d14/JclRepositoryExpertDLL.dpr =================================================================== --- trunk/jcl/packages/d14/JclRepositoryExpertDLL.dpr 2010-01-20 20:30:14 UTC (rev 3129) +++ trunk/jcl/packages/d14/JclRepositoryExpertDLL.dpr 2010-01-21 15:05:18 UTC (rev 3130) @@ -4,7 +4,7 @@ DO NOT EDIT THIS FILE, IT IS GENERATED BY THE PACKAGE GENERATOR ALWAYS EDIT THE RELATED XML FILE (JclRepositoryExpertDLL-L.xml) - Last generated: 04-01-2010 21:32:23 UTC + Last generated: 21-01-2010 14:52:44 UTC ----------------------------------------------------------------------------- } @@ -39,6 +39,7 @@ uses ToolsAPI, + JppState in '..\..\devtools\jpp\JppState.pas' , JclOtaTemplates in '..\..\experts\repository\JclOtaTemplates.pas' , JclOtaRepositoryUtils in '..\..\experts\repository\JclOtaRepositoryUtils.pas' , JclOtaExcDlgRepository in '..\..\experts\repository\ExceptionDialog\JclOtaExcDlgRepository.pas' , Modified: trunk/jcl/packages/d14/JclRepositoryExpertDLL.dproj =================================================================== --- trunk/jcl/packages/d14/JclRepositoryExpertDLL.dproj 2010-01-20 20:30:14 UTC (rev 3129) +++ trunk/jcl/packages/d14/JclRepositoryExpertDLL.dproj 2010-01-21 15:05:18 UTC (rev 3130) @@ -29,7 +29,7 @@ <GenDll>true</GenDll> <GenPackage>true</GenPackage> <DCC_ImageBase>$58100000</DCC_ImageBase> - <DCC_UsePackage>rtl;vcl;designide;Jcl;JclBaseExpert</DCC_UsePackage> + <DCC_UsePackage>rtl;vcl;designide;Jcl;JclContainers;JclBaseExpert</DCC_UsePackage> </PropertyGroup> <PropertyGroup Condition="'$(Cfg_Release)'!=''"> <DCC_AssertionsAtRuntime>false</DCC_AssertionsAtRuntime> @@ -66,7 +66,9 @@ <DCCReference Include="vcl.dcp" /> <DCCReference Include="designide.dcp" /> <DCCReference Include="Jcl.dcp" /> + <DCCReference Include="JclContainers.dcp" /> <DCCReference Include="JclBaseExpert.dcp" /> + <DCCReference Include="..\..\devtools\jpp\JppState.pas" /> <DCCReference Include="..\..\experts\repository\JclOtaTemplates.pas" /> <DCCReference Include="..\..\experts\repository\JclOtaRepositoryUtils.pas" /> <DCCReference Include="..\..\experts\repository\ExceptionDialog\JclOtaExcDlgRepository.pas" /> Modified: trunk/jcl/packages/d6/JclRepositoryExpert.dpk =================================================================== --- trunk/jcl/packages/d6/JclRepositoryExpert.dpk 2010-01-20 20:30:14 UTC (rev 3129) +++ trunk/jcl/packages/d6/JclRepositoryExpert.dpk 2010-01-21 15:05:18 UTC (rev 3130) @@ -4,7 +4,7 @@ DO NOT EDIT THIS FILE, IT IS GENERATED BY THE PACKAGE GENERATOR ALWAYS EDIT THE RELATED XML FILE (JclRepositoryExpert-D.xml) - Last generated: 04-01-2010 21:32:17 UTC + Last generated: 21-01-2010 14:52:40 UTC ----------------------------------------------------------------------------- } @@ -42,10 +42,12 @@ vcl, designide, Jcl, + JclContainers, JclBaseExpert ; contains + JppState in '..\..\devtools\jpp\JppState.pas' , JclOtaTemplates in '..\..\experts\repository\JclOtaTemplates.pas' , JclOtaRepositoryUtils in '..\..\experts\repository\JclOtaRepositoryUtils.pas' , JclOtaExcDlgRepository in '..\..\experts\repository\ExceptionDialog\JclOtaExcDlgRepository.pas' , Modified: trunk/jcl/packages/d6/JclRepositoryExpertDLL.dof =================================================================== --- trunk/jcl/packages/d6/JclRepositoryExpertDLL.dof 2010-01-20 20:30:14 UTC (rev 3129) +++ trunk/jcl/packages/d6/JclRepositoryExpertDLL.dof 2010-01-21 15:05:18 UTC (rev 3130) @@ -5,5 +5,5 @@ [Compiler] PackageNoLink=1 [Linker] -Packages=rtl;vcl;designide;Jcl;JclBaseExpert +Packages=rtl;vcl;designide;Jcl;JclContainers;JclBaseExpert Modified: trunk/jcl/packages/d6/JclRepositoryExpertDLL.dpr =================================================================== --- trunk/jcl/packages/d6/JclRepositoryExpertDLL.dpr 2010-01-20 20:30:14 UTC (rev 3129) +++ trunk/jcl/packages/d6/JclRepositoryExpertDLL.dpr 2010-01-21 15:05:18 UTC (rev 3130) @@ -4,7 +4,7 @@ DO NOT EDIT THIS FILE, IT IS GENERATED BY THE PACKAGE GENERATOR ALWAYS EDIT THE RELATED XML FILE (JclRepositoryExpertDLL-L.xml) - Last generated: 04-01-2010 21:32:17 UTC + Last generated: 21-01-2010 14:52:40 UTC ----------------------------------------------------------------------------- } @@ -38,6 +38,7 @@ uses ToolsAPI, + JppState in '..\..\devtools\jpp\JppState.pas' , JclOtaTemplates in '..\..\experts\repository\JclOtaTemplates.pas' , JclOtaRepositoryUtils in '..\..\experts\repository\JclOtaRepositoryUtils.pas' , JclOtaExcDlgRepository in '..\..\experts\repository\ExceptionDialog\JclOtaExcDlgRepository.pas' , Modified: trunk/jcl/packages/d7/JclRepositoryExpert.dpk =================================================================== --- trunk/jcl/packages/d7/JclRepositoryExpert.dpk 2010-01-20 20:30:14 UTC (rev 3129) +++ trunk/jcl/packages/d7/JclRepositoryExpert.dpk 2010-01-21 15:05:18 UTC (rev 3130) @@ -4,7 +4,7 @@ DO NOT EDIT THIS FILE, IT IS GENERATED BY THE PACKAGE GENERATOR ALWAYS EDIT THE RELATED XML FILE (JclRepositoryExpert-D.xml) - Last generated: 04-01-2010 21:32:17 UTC + Last generated: 21-01-2010 14:52:40 UTC ----------------------------------------------------------------------------- } @@ -42,10 +42,12 @@ vcl, designide, Jcl, + JclContainers, JclBaseExpert ; contains + JppState in '..\..\devtools\jpp\JppState.pas' , JclOtaTemplates in '..\..\experts\repository\JclOtaTemplates.pas' , JclOtaRepositoryUtils in '..\..\experts\repository\JclOtaRepositoryUtils.pas' , JclOtaExcDlgRepository in '..\..\experts\repository\ExceptionDialog\JclOtaExcDlgRepository.pas' , Modified: trunk/jcl/packages/d7/JclRepositoryExpertDLL.dof =================================================================== --- trunk/jcl/packages/d7/JclRepositoryExpertDLL.dof 2010-01-20 20:30:14 UTC (rev 3129) +++ trunk/jcl/packages/d7/JclRepositoryExpertDLL.dof 2010-01-21 15:05:18 UTC (rev 3130) @@ -5,5 +5,5 @@ [Compiler] PackageNoLink=1 [Linker] -Packages=rtl;vcl;designide;Jcl;JclBaseExpert +Packages=rtl;vcl;designide;Jcl;JclContainers;JclBaseExpert Modified: trunk/jcl/packages/d7/JclRepositoryExpertDLL.dpr =================================================================== --- trunk/jcl/packages/d7/JclRepositoryExpertDLL.dpr 2010-01-20 20:30:14 UTC (rev 3129) +++ trunk/jcl/packages/d7/JclRepositoryExpertDLL.dpr 2010-01-21 15:05:18 UTC (rev 3130) @@ -4,7 +4,7 @@ DO NOT EDIT THIS FILE, IT IS GENERATED BY THE PACKAGE GENERATOR ALWAYS EDIT THE RELATED XML FILE (JclRepositoryExpertDLL-L.xml) - Last generated: 04-01-2010 21:32:17 UTC + Last generated: 21-01-2010 14:52:40 UTC ----------------------------------------------------------------------------- } @@ -38,6 +38,7 @@ uses ToolsAPI, + JppState in '..\..\devtools\jpp\JppState.pas' , JclOtaTemplates in '..\..\experts\repository\JclOtaTemplates.pas' , JclOtaRepositoryUtils in '..\..\experts\repository\JclOtaRepositoryUtils.pas' , JclOtaExcDlgRepository in '..\..\experts\repository\ExceptionDialog\JclOtaExcDlgRepository.pas' , Modified: trunk/jcl/packages/d9/JclRepositoryExpert.bdsproj =================================================================== --- trunk/jcl/packages/d9/JclRepositoryExpert.bdsproj 2010-01-20 20:30:14 UTC (rev 3129) +++ trunk/jcl/packages/d9/JclRepositoryExpert.bdsproj 2010-01-21 15:05:18 UTC (rev 3130) @@ -122,7 +122,7 @@ <Directories Name="PackageDLLOutputDir"></Directories> <Directories Name="PackageDCPOutputDir">..\..\lib\d9</Directories> <Directories Name="SearchPath">..\..\lib\d9;..\..\source\include</Directories> - <Directories Name="Packages">rtl;vcl;designide;Jcl;JclBaseExpert</Directories> + <Directories Name="Packages">rtl;vcl;designide;Jcl;JclContainers;JclBaseExpert</Directories> <Directories Name="Conditionals">RELEASE</Directories> <Directories Name="DebugSourceDirs"></Directories> <Directories Name="UsePackages">True</Directories> Modified: trunk/jcl/packages/d9/JclRepositoryExpert.dpk =================================================================== --- trunk/jcl/packages/d9/JclRepositoryExpert.dpk 2010-01-20 20:30:14 UTC (rev 3129) +++ trunk/jcl/packages/d9/JclRepositoryExpert.dpk 2010-01-21 15:05:18 UTC (rev 3130) @@ -4,7 +4,7 @@ DO NOT EDIT THIS FILE, IT IS GENERATED BY THE PACKAGE GENERATOR ALWAYS EDIT THE RELATED XML FILE (JclRepositoryExpert-D.xml) - Last generated: 04-01-2010 21:32:20 UTC + Last generated: 21-01-2010 14:52:41 UTC ----------------------------------------------------------------------------- } @@ -42,10 +42,12 @@ vcl, designide, Jcl, + JclContainers, JclBaseExpert ; contains + JppState in '..\..\devtools\jpp\JppState.pas' , JclOtaTemplates in '..\..\experts\repository\JclOtaTemplates.pas' , JclOtaRepositoryUtils in '..\..\experts\repository\JclOtaRepositoryUtils.pas' , JclOtaExcDlgRepository in '..\..\experts\repository\ExceptionDialog\JclOtaExcDlgRepository.pas' , Modified: trunk/jcl/packages/d9/JclRepositoryExpertDLL.bdsproj =================================================================== --- trunk/jcl/packages/d9/JclRepositoryExpertDLL.bdsproj 2010-01-20 20:30:14 UTC (rev 3129) +++ trunk/jcl/packages/d9/JclRepositoryExpertDLL.bdsproj 2010-01-21 15:05:18 UTC (rev 3130) @@ -122,7 +122,7 @@ <Directories Name="PackageDLLOutputDir"></Directories> <Directories Name="PackageDCPOutputDir">..\..\lib\d9</Directories> <Directories Name="SearchPath">..\..\lib\d9;..\..\source\include</Directories> - <Directories Name="Packages">rtl;vcl;designide;Jcl;JclBaseExpert</Directories> + <Directories Name="Packages">rtl;vcl;designide;Jcl;JclContainers;JclBaseExpert</Directories> <Directories Name="Conditionals">RELEASE</Directories> <Directories Name="DebugSourceDirs"></Directories> <Directories Name="UsePackages">True</Directories> Modified: trunk/jcl/packages/d9/JclRepositoryExpertDLL.dpr =================================================================== --- trunk/jcl/packages/d9/JclRepositoryExpertDLL.dpr 2010-01-20 20:30:14 UTC (rev 3129) +++ trunk/jcl/packages/d9/JclRepositoryExpertDLL.dpr 2010-01-21 15:05:18 UTC (rev 3130) @@ -4,7 +4,7 @@ DO NOT EDIT THIS FILE, IT IS GENERATED BY THE PACKAGE GENERATOR ALWAYS EDIT THE RELATED XML FILE (JclRepositoryExpertDLL-L.xml) - Last generated: 04-01-2010 21:32:20 UTC + Last generated: 21-01-2010 14:52:41 UTC ----------------------------------------------------------------------------- } @@ -38,6 +38,7 @@ uses ToolsAPI, + JppState in '..\..\devtools\jpp\JppState.pas' , JclOtaTemplates in '..\..\experts\repository\JclOtaTemplates.pas' , JclOtaRepositoryUtils in '..\..\experts\repository\JclOtaRepositoryUtils.pas' , JclOtaExcDlgRepository in '..\..\experts\repository\ExceptionDialog\JclOtaExcDlgRepository.pas' , Modified: trunk/jcl/packages/xml/JclRepositoryExpert-D.xml =================================================================== --- trunk/jcl/packages/xml/JclRepositoryExpert-D.xml 2010-01-20 20:30:14 UTC (rev 3129) +++ trunk/jcl/packages/xml/JclRepositoryExpert-D.xml 2010-01-21 15:05:18 UTC (rev 3130) @@ -11,9 +11,11 @@ <Package Name="vcl" Targets="Delphi,Bcb,Bds" Condition=""/> <Package Name="designide" Targets="Delphi,Bcb,Bds" Condition=""/> <Package Name="Jcl-R" Targets="all" Condition=""/> + <Package Name="JclContainers-R" Targets="all" Condition=""/> <Package Name="JclBaseExpert-D" Targets="all" Condition=""/> </Requires> <Contains> + <File Name="..\..\devtools\jpp\JppState.pas" Targets="runtimeIDE" Formname="" Condition=""/> <File Name="..\..\experts\repository\JclOtaTemplates.pas" Targets="runtimeIDE" Formname="" Condition=""/> <File Name="..\..\experts\repository\JclOtaRepositoryUtils.pas" Targets="runtimeIDE" Formname="" Condition=""/> <File Name="..\..\experts\repository\ExceptionDialog\JclOtaExcDlgRepository.pas" Targets="runtimeIDE" Formname="" Condition=""/> Modified: trunk/jcl/packages/xml/JclRepositoryExpertDLL-L.xml =================================================================== --- trunk/jcl/packages/xml/JclRepositoryExpertDLL-L.xml 2010-01-20 20:30:14 UTC (rev 3129) +++ trunk/jcl/packages/xml/JclRepositoryExpertDLL-L.xml 2010-01-21 15:05:18 UTC (rev 3130) @@ -11,9 +11,11 @@ <Package Name="vcl" Targets="Delphi,Bcb,Bds" Condition=""/> <Package Name="designide" Targets="Delphi,Bcb,Bds" Condition=""/> <Package Name="Jcl-R" Targets="all" Condition=""/> + <Package Name="JclContainers-R" Targets="all" Condition=""/> <Package Name="JclBaseExpert-D" Targets="all" Condition=""/> </Requires> <Contains> + <File Name="..\..\devtools\jpp\JppState.pas" Targets="runtimeIDE" Formname="" Condition=""/> <File Name="..\..\experts\repository\JclOtaTemplates.pas" Targets="runtimeIDE" Formname="" Condition=""/> <File Name="..\..\experts\repository\JclOtaRepositoryUtils.pas" Targets="runtimeIDE" Formname="" Condition=""/> <File Name="..\..\experts\repository\ExceptionDialog\JclOtaExcDlgRepository.pas" Targets="runtimeIDE" Formname="" Condition=""/> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ou...@us...> - 2010-01-20 20:30:22
|
Revision: 3129 http://jcl.svn.sourceforge.net/jcl/?rev=3129&view=rev Author: outchy Date: 2010-01-20 20:30:14 +0000 (Wed, 20 Jan 2010) Log Message: ----------- Removed the abstract class TPppState since it does not add any additional value. Modified Paths: -------------- trunk/jcl/devtools/jpp/JppParser.pas trunk/jcl/devtools/jpp/JppState.pas trunk/jcl/devtools/jpp/jpp.dpr Modified: trunk/jcl/devtools/jpp/JppParser.pas =================================================================== --- trunk/jcl/devtools/jpp/JppParser.pas 2010-01-20 19:14:30 UTC (rev 3128) +++ trunk/jcl/devtools/jpp/JppParser.pas 2010-01-20 20:30:14 UTC (rev 3129) @@ -57,7 +57,7 @@ TJppParser = class private FLexer: TJppLexer; - FState: TSimplePppState; + FState: TPppState; FTriState: TTriState; FResult: string; FResultLen: Integer; @@ -88,9 +88,9 @@ procedure Skip; property Lexer: TJppLexer read FLexer; - property State: TSimplePppState read FState; + property State: TPppState read FState; public - constructor Create(AStream: TJclStringStream; APppState: TSimplePppState); + constructor Create(AStream: TJclStringStream; APppState: TPppState); destructor Destroy; override; function Parse: string; end; @@ -236,7 +236,7 @@ { TJppParser } -constructor TJppParser.Create(AStream: TJclStringStream; APppState: TSimplePppState); +constructor TJppParser.Create(AStream: TJclStringStream; APppState: TPppState); begin Assert(AStream <> nil); Assert(APppState <> nil); Modified: trunk/jcl/devtools/jpp/JppState.pas =================================================================== --- trunk/jcl/devtools/jpp/JppState.pas 2010-01-20 19:14:30 UTC (rev 3128) +++ trunk/jcl/devtools/jpp/JppState.pas 2010-01-20 20:30:14 UTC (rev 3129) @@ -59,37 +59,6 @@ TTriState = (ttUnknown, ttUndef, ttDefined); TPppState = class - protected - function GetOptions: TPppOptions; virtual; abstract; - function GetDefineTriState(const ASymbol: string): TTriState; virtual; abstract; - procedure SetDefineTriState(const ASymbol: string; const Value: TTriState); virtual; abstract; - public - { PushState is called at the start of every unit, and PopState at the - end. This means that any declarations like $DEFINE will be file-local - in scope. } - procedure PushState; virtual; abstract; - procedure PopState; virtual; abstract; - - function IsDefined(const ASymbol: string): Boolean; virtual; abstract; - procedure Define(const ASymbol: string); virtual; abstract; - procedure Undef(const ASymbol: string); virtual; abstract; - - function FindFile(const AName: string): TStream; virtual; abstract; - procedure AddToSearchPath(const AName: string); virtual; abstract; - - procedure AddFileToExclusionList(const AName: string); virtual; abstract; - function IsFileExcluded(const AName: string): Boolean; virtual; abstract; - - function ExpandMacro(const AName: string; const ParamValues: TDynStringArray): string; virtual; abstract; - procedure DefineMacro(const AName: string; const ParamNames: TDynStringArray; - const Value: string); virtual; abstract; - procedure UndefMacro(const AName: string; const ParamNames: TDynStringArray); virtual; abstract; - - property Options: TPppOptions read GetOptions; - property DefineTriState[const ASymbol: string]: TTriState read GetDefineTriState write SetDefineTriState; - end; - - TSimplePppState = class(TPppState) private FStateStack: IJclStack; FOptions: TPppOptions; @@ -100,11 +69,11 @@ function InternalPeekMacros: IJclStrStrMap; function InternalPeekSearchPath: IJclStrList; protected - function GetOptions: TPppOptions; override; + function GetOptions: TPppOptions; procedure SetOptions(AOptions: TPppOptions); - function GetDefineTriState(const ASymbol: string): TTriState; override; - procedure SetDefineTriState(const ASymbol: string; const Value: TTriState); override; + function GetDefineTriState(const ASymbol: string): TTriState; + procedure SetDefineTriState(const ASymbol: string; const Value: TTriState); public constructor Create; destructor Destroy; override; @@ -112,29 +81,26 @@ { PushState is called at the start of every unit, and PopState at the end. This means that any declarations like $DEFINE will be file-local in scope. } - procedure PushState; override; - procedure PopState; override; + procedure PushState; + procedure PopState; - function IsDefined(const ASymbol: string): Boolean; override; - procedure Define(const ASymbol: string); override; - procedure Undef(const ASymbol: string); override; + function IsDefined(const ASymbol: string): Boolean; + procedure Define(const ASymbol: string); + procedure Undef(const ASymbol: string); - function FindFile(const AName: string): TStream; override; - procedure AddToSearchPath(const AName: string); override; + function FindFile(const AName: string): TStream; + procedure AddToSearchPath(const AName: string); - procedure AddFileToExclusionList(const AName: string); override; - function IsFileExcluded(const AName: string): Boolean; override; + procedure AddFileToExclusionList(const AName: string); + function IsFileExcluded(const AName: string): Boolean; - function ExpandMacro(const AName: string; const ParamValues: TDynStringArray): string; override; + function ExpandMacro(const AName: string; const ParamValues: TDynStringArray): string; procedure DefineMacro(const AName: string; const ParamNames: TDynStringArray; - const Value: string); override; - procedure UndefMacro(const AName: string; const ParamNames: TDynStringArray); override; + const Value: string); + procedure UndefMacro(const AName: string; const ParamNames: TDynStringArray); property Options: TPppOptions read GetOptions write SetOptions; - - { new stuff } - //property SearchPath: TStringList read FSearchPath; - //property ExcludedIncludes: TStrings read FExcludedIncludes; + property DefineTriState[const ASymbol: string]: TTriState read GetDefineTriState write SetDefineTriState; end; implementation @@ -151,32 +117,32 @@ SearchPath: IJclStrList; end; -{ TSimplePppState } +//=== { TPppState } ========================================================== -constructor TSimplePppState.Create; +constructor TPppState.Create; begin FStateStack := TJclStack.Create(16, True); InternalPushState(TJclStrArrayList.Create(16), TJclStrArrayList.Create(16), TJclStrStrHashMap.Create(16), TJclStrHashMap.Create(16, False)); end; -destructor TSimplePppState.Destroy; +destructor TPppState.Destroy; begin FStateStack := nil; inherited Destroy; end; -procedure TSimplePppState.AddFileToExclusionList(const AName: string); +procedure TPppState.AddFileToExclusionList(const AName: string); begin InternalPeekExcludedFiles.Add(AName); end; -procedure TSimplePppState.AddToSearchPath(const AName: string); +procedure TPppState.AddToSearchPath(const AName: string); begin InternalPeekSearchPath.Add(AName); end; -function TSimplePppState.ExpandMacro(const AName: string; +function TPppState.ExpandMacro(const AName: string; const ParamValues: TDynStringArray): string; var AMacros: IJclStrStrMap; @@ -210,12 +176,12 @@ raise EPppState.CreateFmt('unknown macro "%s"', [AMacroName]); end; -procedure TSimplePppState.Define(const ASymbol: string); +procedure TPppState.Define(const ASymbol: string); begin SetDefineTriState(ASymbol, ttDefined); end; -procedure TSimplePppState.DefineMacro(const AName: string; +procedure TPppState.DefineMacro(const AName: string; const ParamNames: TDynStringArray; const Value: string); var AMacros: IJclStrStrMap; @@ -235,7 +201,7 @@ AMacros.Items[AMacroName] := AMacroFormat; end; -function TSimplePppState.FindFile(const AName: string): TStream; +function TPppState.FindFile(const AName: string): TStream; var i: Integer; fn: string; @@ -260,12 +226,12 @@ Result := TFileStream.Create(fn, fmOpenRead or fmShareDenyWrite); end; -function TSimplePppState.GetOptions: TPppOptions; +function TPppState.GetOptions: TPppOptions; begin Result := FOptions; end; -function TSimplePppState.GetDefineTriState(const ASymbol: string): TTriState; +function TPppState.GetDefineTriState(const ASymbol: string): TTriState; var ADefines: IJclStrMap; ASymbolNames: IJclStrIterator; @@ -283,35 +249,35 @@ end; end; -function TSimplePppState.InternalPeekDefines: IJclStrMap; +function TPppState.InternalPeekDefines: IJclStrMap; begin if FStateStack.Empty then raise EPppState.Create('Internal error: PPP State stack is empty'); Result := (FStateStack.Peek as TSimplePppStateItem).DefinedKeywords; end; -function TSimplePppState.InternalPeekExcludedFiles: IJclStrList; +function TPppState.InternalPeekExcludedFiles: IJclStrList; begin if FStateStack.Empty then raise EPppState.Create('Internal error: PPP State stack is empty'); Result := (FStateStack.Peek as TSimplePppStateItem).ExcludedFiles; end; -function TSimplePppState.InternalPeekMacros: IJclStrStrMap; +function TPppState.InternalPeekMacros: IJclStrStrMap; begin if FStateStack.Empty then raise EPppState.Create('Internal error: PPP State stack is empty'); Result := (FStateStack.Peek as TSimplePppStateItem).Macros; end; -function TSimplePppState.InternalPeekSearchPath: IJclStrList; +function TPppState.InternalPeekSearchPath: IJclStrList; begin if FStateStack.Empty then raise EPppState.Create('Internal error: PPP State stack is empty'); Result := (FStateStack.Peek as TSimplePppStateItem).SearchPath; end; -procedure TSimplePppState.InternalPushState(const ExcludedFiles, +procedure TPppState.InternalPushState(const ExcludedFiles, SearchPath: IJclStrList; const Macros: IJclStrStrMap; const Defines: IJclStrMap); var AStateItem: TSimplePppStateItem; @@ -324,12 +290,12 @@ FStateStack.Push(AStateItem); end; -function TSimplePppState.IsDefined(const ASymbol: string): Boolean; +function TPppState.IsDefined(const ASymbol: string): Boolean; begin Result := DefineTriState[ASymbol] = ttDefined; end; -function TSimplePppState.IsFileExcluded(const AName: string): Boolean; +function TPppState.IsFileExcluded(const AName: string): Boolean; var AExcludedFiles: IJclStrList; AFileNames: IJclStrIterator; @@ -347,14 +313,14 @@ end; end; -procedure TSimplePppState.PopState; +procedure TPppState.PopState; begin if FStateStack.Size <= 1 then raise EPppState.Create('Internal error: PPP State stack underflow'); FStateStack.Pop.Free; end; -procedure TSimplePppState.PushState; +procedure TPppState.PushState; var AExcludedFiles, ASearchPath: IJclStrList; ADefines: IJclStrMap; @@ -368,12 +334,12 @@ InternalPushState(AExcludedFiles, ASearchPath, AMacros, ADefines); end; -procedure TSimplePppState.SetOptions(AOptions: TPppOptions); +procedure TPppState.SetOptions(AOptions: TPppOptions); begin FOptions := AOptions; end; -procedure TSimplePppState.SetDefineTriState(const ASymbol: string; +procedure TPppState.SetDefineTriState(const ASymbol: string; const Value: TTriState); var ADefines: IJclStrMap; @@ -396,12 +362,12 @@ ADefines.Items[ASymbol] := TObject(Value); end; -procedure TSimplePppState.Undef(const ASymbol: string); +procedure TPppState.Undef(const ASymbol: string); begin SetDefineTriState(ASymbol, ttUndef); end; -procedure TSimplePppState.UndefMacro(const AName: string; const ParamNames: TDynStringArray); +procedure TPppState.UndefMacro(const AName: string; const ParamNames: TDynStringArray); var AMacros: IJclStrStrMap; AMacroNames: IJclStrIterator; Modified: trunk/jcl/devtools/jpp/jpp.dpr =================================================================== --- trunk/jcl/devtools/jpp/jpp.dpr 2010-01-20 19:14:30 UTC (rev 3128) +++ trunk/jcl/devtools/jpp/jpp.dpr 2010-01-20 20:30:14 UTC (rev 3129) @@ -103,7 +103,7 @@ Halt(2); end; -procedure Process(AState: TSimplePppState; const AOld, ANew: string); +procedure Process(AState: TPppState; const AOld, ANew: string); var parse: TJppParser; fsIn, fsOut: TStream; @@ -186,7 +186,7 @@ procedure Params(ACommandLine: PChar); var - pppState: TSimplePppState; + pppState: TPppState; StripLength: Integer; // RR Prefix, ReplaceString: string; // RR N: Integer; @@ -372,7 +372,7 @@ pppState := nil; ReplaceStrings := nil; try - pppState := TSimplePppState.Create; + pppState := TPppState.Create; ReplaceStrings := TStringList.Create; repeat cp := HandleOptions(cp); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ou...@us...> - 2010-01-20 19:14:41
|
Revision: 3128 http://jcl.svn.sourceforge.net/jcl/?rev=3128&view=rev Author: outchy Date: 2010-01-20 19:14:30 +0000 (Wed, 20 Jan 2010) Log Message: ----------- Mantis 5107: JCLSimpleXML doesn?\194?\180t decode UTF-8 correctly, when BOM included but encoding is not specified in prolog. ("encoding=UTF-8" is missing). Modified Paths: -------------- trunk/jcl/source/common/JclSimpleXml.pas Modified: trunk/jcl/source/common/JclSimpleXml.pas =================================================================== --- trunk/jcl/source/common/JclSimpleXml.pas 2010-01-20 19:02:19 UTC (rev 3127) +++ trunk/jcl/source/common/JclSimpleXml.pas 2010-01-20 19:14:30 UTC (rev 3128) @@ -1008,7 +1008,8 @@ AStringStream := TJclUTF16Stream.Create(AOutStream, False); else AStringStream := TJclAutoStream.Create(AOutStream, False); - TJclAutoStream(AStringStream).CodePage := CodePage; + if CodePage <> CP_ACP then + TJclAutoStream(AStringStream).CodePage := CodePage; end; try AStringStream.SkipBOM; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ou...@us...> - 2010-01-20 19:02:27
|
Revision: 3127 http://jcl.svn.sourceforge.net/jcl/?rev=3127&view=rev Author: outchy Date: 2010-01-20 19:02:19 +0000 (Wed, 20 Jan 2010) Log Message: ----------- Fix from Embarcadero: EncodeNameString raised 2 distinct range check errors. Modified Paths: -------------- trunk/jcl/source/windows/JclDebug.pas Modified: trunk/jcl/source/windows/JclDebug.pas =================================================================== --- trunk/jcl/source/windows/JclDebug.pas 2010-01-20 18:10:19 UTC (rev 3126) +++ trunk/jcl/source/windows/JclDebug.pas 2010-01-20 19:02:19 UTC (rev 3127) @@ -2040,7 +2040,7 @@ function EncodeNameString(const S: string): AnsiString; var - I, StartIndex: Integer; + I, StartIndex, EndIndex: Integer; C: Byte; P: PByte; begin @@ -2060,9 +2060,13 @@ P^ := 2 // store '@' leading char information else Dec(P); - for I := 0 to Length(S) - StartIndex do // including null char + EndIndex := Length(S) - StartIndex; + for I := 0 to EndIndex do // including null char begin - C := Byte(S[I + 1 + StartIndex]); + if I = EndIndex then + C := 0 + else + C := Byte(S[I + 1 + StartIndex]); case AnsiChar(C) of #0: C := 0; @@ -2091,7 +2095,7 @@ end; 2: begin - P^ := P^ or (C shl 4); + P^ := P^ or Byte(C shl 4); Inc(P); P^ := (C shr 4) and $03; end; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ou...@us...> - 2010-01-20 18:10:25
|
Revision: 3126 http://jcl.svn.sourceforge.net/jcl/?rev=3126&view=rev Author: outchy Date: 2010-01-20 18:10:19 +0000 (Wed, 20 Jan 2010) Log Message: ----------- Mantis 5117: "version" must be the first property after ?xml. Modified Paths: -------------- trunk/jcl/source/common/JclSimpleXml.pas Modified: trunk/jcl/source/common/JclSimpleXml.pas =================================================================== --- trunk/jcl/source/common/JclSimpleXml.pas 2010-01-19 21:48:36 UTC (rev 3125) +++ trunk/jcl/source/common/JclSimpleXml.pas 2010-01-20 18:10:19 UTC (rev 3126) @@ -3259,8 +3259,8 @@ procedure TJclSimpleXMLElemHeader.SaveToStringStream( StringStream: TJclStringStream; const Level: string; AParent: TJclSimpleXML); begin + SetVersion(GetVersion); SetEncoding(GetEncoding); - SetVersion(GetVersion); SetStandalone(GetStandalone); inherited SaveToStringStream(StringStream, Level, AParent); end; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ou...@us...> - 2010-01-19 21:48:43
|
Revision: 3125 http://jcl.svn.sourceforge.net/jcl/?rev=3125&view=rev Author: outchy Date: 2010-01-19 21:48:36 +0000 (Tue, 19 Jan 2010) Log Message: ----------- update to 7z 9.1.0. Modified Paths: -------------- trunk/jcl/source/common/JclCompression.pas trunk/jcl/source/common/JclResources.pas trunk/jcl/source/windows/sevenzip.pas Modified: trunk/jcl/source/common/JclCompression.pas =================================================================== --- trunk/jcl/source/common/JclCompression.pas 2010-01-17 10:05:13 UTC (rev 3124) +++ trunk/jcl/source/common/JclCompression.pas 2010-01-19 21:48:36 UTC (rev 3125) @@ -146,6 +146,7 @@ | |-- TJclFlvDecompressArchive handled by sevenzip http://sevenzip.sourceforge.net/ | |-- TJclSwfDecompressArchive handled by sevenzip http://sevenzip.sourceforge.net/ | |-- TJclSwfcDecompressArchive handled by sevenzip http://sevenzip.sourceforge.net/ + | |-- TJclAPMDecompressArchive handled by sevenzip http://sevenzip.sourceforge.net/ | |-- TJclUpdateArchive | @@ -1713,6 +1714,14 @@ class function ArchiveName: string; override; end; + TJclAPMDecompressArchive = class(TJclSevenzipDecompressArchive, IInterface) + protected + function GetCLSID: TGUID; override; + public + class function ArchiveExtensions: string; override; + class function ArchiveName: string; override; + end; + //sevenzip classes for updates (read and write) type TJclSevenzipUpdateArchive = class(TJclOutOfPlaceUpdateArchive, IInterface) @@ -7869,6 +7878,23 @@ Result := CLSID_CFormatSwfc; end; +//=== { TJclAPMDecompressArchive } =========================================== + +class function TJclAPMDecompressArchive.ArchiveExtensions: string; +begin + Result := LoadResString(@RsCompressionApmExtensions); +end; + +class function TJclAPMDecompressArchive.ArchiveName: string; +begin + Result := LoadResString(@RsCompressionApmName); +end; + +function TJclAPMDecompressArchive.GetCLSID: TGUID; +begin + Result := CLSID_CFormatAPM; +end; + //=== { TJclSevenzipUpdateArchive } ========================================== destructor TJclSevenzipUpdateArchive.Destroy; Modified: trunk/jcl/source/common/JclResources.pas =================================================================== --- trunk/jcl/source/common/JclResources.pas 2010-01-17 10:05:13 UTC (rev 3124) +++ trunk/jcl/source/common/JclResources.pas 2010-01-19 21:48:36 UTC (rev 3125) @@ -1167,6 +1167,8 @@ RsCompressionSwfExtensions = '*.swf'; RsCompressionSwfcName = 'Swf archive'; RsCompressionSwfcExtensions = '*.swf'; + RsCompressionApmName = 'APM archive'; + RsCompressionApmExtensions = '*.'; RsCompressionDuplicate = 'The file %s already exists in the archive'; RsCompressionReplaceError = 'At least one compression volumes could not be replaced after an archive out-of-place update'; Modified: trunk/jcl/source/windows/sevenzip.pas =================================================================== --- trunk/jcl/source/windows/sevenzip.pas 2010-01-17 10:05:13 UTC (rev 3124) +++ trunk/jcl/source/windows/sevenzip.pas 2010-01-19 21:48:36 UTC (rev 3125) @@ -99,6 +99,7 @@ CLSID_CFormatLzma : TGUID = '{23170F69-40C1-278A-1000-0001100A0000}'; CLSID_CFormatLzma86 : TGUID = '{23170F69-40C1-278A-1000-0001100B0000}'; CLSID_CFormatXz : TGUID = '{23170F69-40C1-278A-1000-0001100C0000}'; + CLSID_CFormatAPM : TGUID = '{23170F69-40C1-278A-1000-000110D40000}'; CLSID_CFormatMslz : TGUID = '{23170F69-40C1-278A-1000-000110D50000}'; CLSID_CFormatFlv : TGUID = '{23170F69-40C1-278A-1000-000110D60000}'; CLSID_CFormatSwf : TGUID = '{23170F69-40C1-278A-1000-000110D70000}'; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ou...@us...> - 2010-01-17 10:05:38
|
Revision: 3124 http://jcl.svn.sourceforge.net/jcl/?rev=3124&view=rev Author: outchy Date: 2010-01-17 10:05:13 +0000 (Sun, 17 Jan 2010) Log Message: ----------- Mantis 5112: Ambiguous overloaded call to 'StrWord'. Modified Paths: -------------- trunk/jcl/source/common/JclStrings.pas Modified: trunk/jcl/source/common/JclStrings.pas =================================================================== --- trunk/jcl/source/common/JclStrings.pas 2010-01-14 14:51:35 UTC (rev 3123) +++ trunk/jcl/source/common/JclStrings.pas 2010-01-17 10:05:13 UTC (rev 3124) @@ -3315,7 +3315,7 @@ List.Clear; Start := Pointer(S); repeat - Done := StrWord(Start, Token); + Done := JclStrings.StrWord(Start, Token); if Token <> '' then List.Add(Token); until Done; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ou...@us...> - 2010-01-14 14:51:50
|
Revision: 3123 http://jcl.svn.sourceforge.net/jcl/?rev=3123&view=rev Author: outchy Date: 2010-01-14 14:51:35 +0000 (Thu, 14 Jan 2010) Log Message: ----------- Cleanup of subversion properties. Modified Paths: -------------- trunk/thirdparty/svn_cleaner/SvnCleaner.xml Property Changed: ---------------- trunk/jcl/devtools/jpp/ trunk/jcl/examples/ trunk/jcl/examples/common/ trunk/jcl/examples/common/containers/ trunk/jcl/examples/common/containers/algorithms/ trunk/jcl/examples/common/containers/hashing/ trunk/jcl/examples/common/containers/lists/ trunk/jcl/examples/common/containers/performance/ trunk/jcl/examples/common/containers/trees/ trunk/jcl/examples/common/expreval/ trunk/jcl/examples/common/filesearch/ trunk/jcl/examples/common/graphics/ trunk/jcl/examples/common/multimedia/ trunk/jcl/examples/common/numformat/ trunk/jcl/examples/common/pcre/ trunk/jcl/examples/common/rtti/ trunk/jcl/examples/common/sysinfo/ trunk/jcl/examples/common/textconverter/ trunk/jcl/examples/common/textreader/ trunk/jcl/examples/common/unitversioning/ trunk/jcl/examples/windows/ trunk/jcl/examples/windows/appinst/ trunk/jcl/examples/windows/asuser/ trunk/jcl/examples/windows/clr/ trunk/jcl/examples/windows/compression/ trunk/jcl/examples/windows/compression/archive/ trunk/jcl/examples/windows/console/ trunk/jcl/examples/windows/debug/ trunk/jcl/examples/windows/debug/framestrack/ trunk/jcl/examples/windows/debug/mttest/ trunk/jcl/examples/windows/debug/reportconverter/ trunk/jcl/examples/windows/debug/sourceloc/ trunk/jcl/examples/windows/debug/stacktrack/ trunk/jcl/examples/windows/debug/threadexcept/ trunk/jcl/examples/windows/delphitools/ trunk/jcl/examples/windows/delphitools/common/ trunk/jcl/examples/windows/delphitools/dependencyviewer/ trunk/jcl/examples/windows/delphitools/peviewer/ trunk/jcl/examples/windows/delphitools/resfix/ trunk/jcl/examples/windows/delphitools/screenjpg/ trunk/jcl/examples/windows/delphitools/toolhelpview/ trunk/jcl/examples/windows/edisdk/ trunk/jcl/examples/windows/edisdk/comserver/ trunk/jcl/examples/windows/edisdk/vb5/ trunk/jcl/examples/windows/filemapping/ trunk/jcl/examples/windows/filesummary/ trunk/jcl/examples/windows/fileversion/ trunk/jcl/examples/windows/lanman/ trunk/jcl/examples/windows/locales/ trunk/jcl/examples/windows/mapi/ trunk/jcl/examples/windows/multimedia/ trunk/jcl/examples/windows/ntfs/ trunk/jcl/examples/windows/ntservice/ trunk/jcl/examples/windows/peimage/ trunk/jcl/examples/windows/registry/ trunk/jcl/examples/windows/structstorage/ trunk/jcl/examples/windows/sysinfo/ trunk/jcl/examples/windows/tasks/ trunk/jcl/examples/windows/timezones/ trunk/jcl/examples/windows/widestring/ trunk/thirdparty/makedist/ trunk/thirdparty/svn_cleaner/ trunk/thirdparty/unicode_data_extractor/ Property changes on: trunk/jcl/devtools/jpp ___________________________________________________________________ Added: svn:ignore + __history *.identcache *.local *.cfg *.drc *.dcu *.dproj *.bdsproj Property changes on: trunk/jcl/examples ___________________________________________________________________ Modified: svn:ignore - *.identcache *.local *.cfg *.drc *.dcu *.dproj *.bdsproj + __history *.identcache *.local *.cfg *.drc *.dcu *.dproj *.bdsproj Property changes on: trunk/jcl/examples/common ___________________________________________________________________ Modified: svn:ignore - *.identcache *.local *.cfg *.drc *.dcu *.dproj *.bdsproj + __history *.identcache *.local *.cfg *.drc *.dcu *.dproj *.bdsproj Property changes on: trunk/jcl/examples/common/containers ___________________________________________________________________ Modified: svn:ignore - *.identcache *.local *.cfg *.drc *.dcu *.dproj *.bdsproj + __history *.identcache *.local *.cfg *.drc *.dcu *.dproj *.bdsproj Property changes on: trunk/jcl/examples/common/containers/algorithms ___________________________________________________________________ Modified: svn:ignore - *.identcache *.local *.cfg *.drc *.dcu *.dproj *.bdsproj + __history *.identcache *.local *.cfg *.drc *.dcu *.dproj *.bdsproj Property changes on: trunk/jcl/examples/common/containers/hashing ___________________________________________________________________ Modified: svn:ignore - *.identcache *.local *.cfg *.drc *.dcu *.dproj *.bdsproj + __history *.identcache *.local *.cfg *.drc *.dcu *.dproj *.bdsproj Property changes on: trunk/jcl/examples/common/containers/lists ___________________________________________________________________ Modified: svn:ignore - *.identcache *.local *.cfg *.drc *.dcu *.dproj *.bdsproj + __history *.identcache *.local *.cfg *.drc *.dcu *.dproj *.bdsproj Property changes on: trunk/jcl/examples/common/containers/performance ___________________________________________________________________ Modified: svn:ignore - *.identcache *.local *.cfg *.drc *.dcu *.dproj *.bdsproj + __history *.identcache *.local *.cfg *.drc *.dcu *.dproj *.bdsproj Property changes on: trunk/jcl/examples/common/containers/trees ___________________________________________________________________ Modified: svn:ignore - *.identcache *.local *.cfg *.drc *.dcu *.dproj *.bdsproj + __history *.identcache *.local *.cfg *.drc *.dcu *.dproj *.bdsproj Property changes on: trunk/jcl/examples/common/expreval ___________________________________________________________________ Modified: svn:ignore - *.identcache *.local *.cfg *.drc *.dcu *.dproj *.bdsproj + __history *.identcache *.local *.cfg *.drc *.dcu *.dproj *.bdsproj Property changes on: trunk/jcl/examples/common/filesearch ___________________________________________________________________ Modified: svn:ignore - *.identcache *.local *.cfg *.drc *.dcu *.dproj *.bdsproj + __history *.identcache *.local *.cfg *.drc *.dcu *.dproj *.bdsproj Property changes on: trunk/jcl/examples/common/graphics ___________________________________________________________________ Modified: svn:ignore - *.identcache *.local *.cfg *.drc *.dcu *.dproj *.bdsproj + __history *.identcache *.local *.cfg *.drc *.dcu *.dproj *.bdsproj Property changes on: trunk/jcl/examples/common/multimedia ___________________________________________________________________ Modified: svn:ignore - *.identcache *.local *.cfg *.drc *.dcu *.dproj *.bdsproj + __history *.identcache *.local *.cfg *.drc *.dcu *.dproj *.bdsproj Property changes on: trunk/jcl/examples/common/numformat ___________________________________________________________________ Modified: svn:ignore - *.identcache *.local *.cfg *.drc *.dcu *.dproj *.bdsproj + __history *.identcache *.local *.cfg *.drc *.dcu *.dproj *.bdsproj Property changes on: trunk/jcl/examples/common/pcre ___________________________________________________________________ Modified: svn:ignore - *.identcache *.local *.cfg *.drc *.dcu *.dproj *.bdsproj + __history *.identcache *.local *.cfg *.drc *.dcu *.dproj *.bdsproj Property changes on: trunk/jcl/examples/common/rtti ___________________________________________________________________ Modified: svn:ignore - *.identcache *.local *.cfg *.drc *.dcu *.dproj *.bdsproj + __history *.identcache *.local *.cfg *.drc *.dcu *.dproj *.bdsproj Property changes on: trunk/jcl/examples/common/sysinfo ___________________________________________________________________ Modified: svn:ignore - *.identcache *.local *.cfg *.drc *.dcu *.dproj *.bdsproj + __history *.identcache *.local *.cfg *.drc *.dcu *.dproj *.bdsproj Property changes on: trunk/jcl/examples/common/textconverter ___________________________________________________________________ Modified: svn:ignore - *.identcache *.local *.cfg *.drc *.dcu *.dproj *.bdsproj + __history *.identcache *.local *.cfg *.drc *.dcu *.dproj *.bdsproj Property changes on: trunk/jcl/examples/common/textreader ___________________________________________________________________ Modified: svn:ignore - *.identcache *.local *.cfg *.drc *.dcu *.dproj *.bdsproj + __history *.identcache *.local *.cfg *.drc *.dcu *.dproj *.bdsproj Property changes on: trunk/jcl/examples/common/unitversioning ___________________________________________________________________ Modified: svn:ignore - *.identcache *.local *.cfg *.drc *.dcu *.dproj *.bdsproj + __history *.identcache *.local *.cfg *.drc *.dcu *.dproj *.bdsproj Property changes on: trunk/jcl/examples/windows ___________________________________________________________________ Modified: svn:ignore - *.identcache *.local *.cfg *.drc *.dcu *.dproj *.bdsproj + __history *.identcache *.local *.cfg *.drc *.dcu *.dproj *.bdsproj Property changes on: trunk/jcl/examples/windows/appinst ___________________________________________________________________ Modified: svn:ignore - *.identcache *.local *.cfg *.drc *.dcu *.dproj *.bdsproj + __history *.identcache *.local *.cfg *.drc *.dcu *.dproj *.bdsproj Property changes on: trunk/jcl/examples/windows/asuser ___________________________________________________________________ Modified: svn:ignore - *.identcache *.local *.cfg *.drc *.dcu *.dproj *.bdsproj + __history *.identcache *.local *.cfg *.drc *.dcu *.dproj *.bdsproj Property changes on: trunk/jcl/examples/windows/clr ___________________________________________________________________ Modified: svn:ignore - *.identcache *.local *.cfg *.drc *.dcu *.dproj *.bdsproj + __history *.identcache *.local *.cfg *.drc *.dcu *.dproj *.bdsproj Property changes on: trunk/jcl/examples/windows/compression ___________________________________________________________________ Modified: svn:ignore - *.identcache *.local *.cfg *.drc *.dcu *.dproj *.bdsproj + __history *.identcache *.local *.cfg *.drc *.dcu *.dproj *.bdsproj Property changes on: trunk/jcl/examples/windows/compression/archive ___________________________________________________________________ Modified: svn:ignore - *.identcache *.local *.cfg *.drc *.dcu *.dproj *.bdsproj + __history *.identcache *.local *.cfg *.drc *.dcu *.dproj *.bdsproj Property changes on: trunk/jcl/examples/windows/console ___________________________________________________________________ Modified: svn:ignore - *.identcache *.local *.cfg *.drc *.dcu *.dproj *.bdsproj + __history *.identcache *.local *.cfg *.drc *.dcu *.dproj *.bdsproj Property changes on: trunk/jcl/examples/windows/debug ___________________________________________________________________ Modified: svn:ignore - *.identcache *.local *.cfg *.drc *.dcu *.dproj *.bdsproj + __history *.identcache *.local *.cfg *.drc *.dcu *.dproj *.bdsproj Property changes on: trunk/jcl/examples/windows/debug/framestrack ___________________________________________________________________ Modified: svn:ignore - *.identcache *.local *.cfg *.drc *.dcu *.dproj *.bdsproj + __history *.identcache *.local *.cfg *.drc *.dcu *.dproj *.bdsproj Property changes on: trunk/jcl/examples/windows/debug/mttest ___________________________________________________________________ Modified: svn:ignore - *.identcache *.local *.cfg *.drc *.dcu *.dproj *.bdsproj + __history *.identcache *.local *.cfg *.drc *.dcu *.dproj *.bdsproj Property changes on: trunk/jcl/examples/windows/debug/reportconverter ___________________________________________________________________ Modified: svn:ignore - *.identcache *.local *.cfg *.drc *.dcu *.dproj *.bdsproj + __history *.identcache *.local *.cfg *.drc *.dcu *.dproj *.bdsproj Property changes on: trunk/jcl/examples/windows/debug/sourceloc ___________________________________________________________________ Modified: svn:ignore - *.identcache *.local *.cfg *.drc *.dcu *.dproj *.bdsproj + __history *.identcache *.local *.cfg *.drc *.dcu *.dproj *.bdsproj Property changes on: trunk/jcl/examples/windows/debug/stacktrack ___________________________________________________________________ Modified: svn:ignore - *.identcache *.local *.cfg *.drc *.dcu *.dproj *.bdsproj + __history *.identcache *.local *.cfg *.drc *.dcu *.dproj *.bdsproj Property changes on: trunk/jcl/examples/windows/debug/threadexcept ___________________________________________________________________ Modified: svn:ignore - *.identcache *.local *.cfg *.drc *.dcu *.dproj *.bdsproj + __history *.identcache *.local *.cfg *.drc *.dcu *.dproj *.bdsproj Property changes on: trunk/jcl/examples/windows/delphitools ___________________________________________________________________ Modified: svn:ignore - *.identcache *.local *.cfg *.drc *.dcu *.dproj *.bdsproj + __history *.identcache *.local *.cfg *.drc *.dcu *.dproj *.bdsproj Property changes on: trunk/jcl/examples/windows/delphitools/common ___________________________________________________________________ Modified: svn:ignore - *.identcache *.local *.cfg *.drc *.dcu *.dproj *.bdsproj + __history *.identcache *.local *.cfg *.drc *.dcu *.dproj *.bdsproj Property changes on: trunk/jcl/examples/windows/delphitools/dependencyviewer ___________________________________________________________________ Modified: svn:ignore - *.identcache *.local *.cfg *.drc *.dcu *.dproj *.bdsproj + __history *.identcache *.local *.cfg *.drc *.dcu *.dproj *.bdsproj Property changes on: trunk/jcl/examples/windows/delphitools/peviewer ___________________________________________________________________ Modified: svn:ignore - *.identcache *.local *.cfg *.drc *.dcu *.dproj *.bdsproj + __history *.identcache *.local *.cfg *.drc *.dcu *.dproj *.bdsproj Property changes on: trunk/jcl/examples/windows/delphitools/resfix ___________________________________________________________________ Modified: svn:ignore - *.identcache *.local *.cfg *.drc *.dcu *.dproj *.bdsproj + __history *.identcache *.local *.cfg *.drc *.dcu *.dproj *.bdsproj Property changes on: trunk/jcl/examples/windows/delphitools/screenjpg ___________________________________________________________________ Modified: svn:ignore - *.identcache *.local *.cfg *.drc *.dcu *.dproj *.bdsproj + __history *.identcache *.local *.cfg *.drc *.dcu *.dproj *.bdsproj Property changes on: trunk/jcl/examples/windows/delphitools/toolhelpview ___________________________________________________________________ Modified: svn:ignore - *.identcache *.local *.cfg *.drc *.dcu *.dproj *.bdsproj + __history *.identcache *.local *.cfg *.drc *.dcu *.dproj *.bdsproj Property changes on: trunk/jcl/examples/windows/edisdk ___________________________________________________________________ Modified: svn:ignore - *.identcache *.local *.cfg *.drc *.dcu *.dproj *.bdsproj + __history *.identcache *.local *.cfg *.drc *.dcu *.dproj *.bdsproj Property changes on: trunk/jcl/examples/windows/edisdk/comserver ___________________________________________________________________ Modified: svn:ignore - *.identcache *.local *.cfg *.drc *.dcu *.dproj *.bdsproj + __history *.identcache *.local *.cfg *.drc *.dcu *.dproj *.bdsproj Property changes on: trunk/jcl/examples/windows/edisdk/vb5 ___________________________________________________________________ Modified: svn:ignore - *.identcache *.local *.cfg *.drc *.dcu *.dproj *.bdsproj + __history *.identcache *.local *.cfg *.drc *.dcu *.dproj *.bdsproj Property changes on: trunk/jcl/examples/windows/filemapping ___________________________________________________________________ Modified: svn:ignore - *.identcache *.local *.cfg *.drc *.dcu *.dproj *.bdsproj + __history *.identcache *.local *.cfg *.drc *.dcu *.dproj *.bdsproj Property changes on: trunk/jcl/examples/windows/filesummary ___________________________________________________________________ Modified: svn:ignore - *.identcache *.local *.cfg *.drc *.dcu *.dproj *.bdsproj + __history *.identcache *.local *.cfg *.drc *.dcu *.dproj *.bdsproj Property changes on: trunk/jcl/examples/windows/fileversion ___________________________________________________________________ Modified: svn:ignore - *.identcache *.local *.cfg *.drc *.dcu *.dproj *.bdsproj + __history *.identcache *.local *.cfg *.drc *.dcu *.dproj *.bdsproj Property changes on: trunk/jcl/examples/windows/lanman ___________________________________________________________________ Modified: svn:ignore - *.identcache *.local *.cfg *.drc *.dcu *.dproj *.bdsproj + __history *.identcache *.local *.cfg *.drc *.dcu *.dproj *.bdsproj Property changes on: trunk/jcl/examples/windows/locales ___________________________________________________________________ Modified: svn:ignore - *.identcache *.local *.cfg *.drc *.dcu *.dproj *.bdsproj + __history *.identcache *.local *.cfg *.drc *.dcu *.dproj *.bdsproj Property changes on: trunk/jcl/examples/windows/mapi ___________________________________________________________________ Modified: svn:ignore - *.identcache *.local *.cfg *.drc *.dcu *.dproj *.bdsproj + __history *.identcache *.local *.cfg *.drc *.dcu *.dproj *.bdsproj Property changes on: trunk/jcl/examples/windows/multimedia ___________________________________________________________________ Modified: svn:ignore - *.identcache *.local *.cfg *.drc *.dcu *.dproj *.bdsproj + __history *.identcache *.local *.cfg *.drc *.dcu *.dproj *.bdsproj Property changes on: trunk/jcl/examples/windows/ntfs ___________________________________________________________________ Modified: svn:ignore - *.identcache *.local *.cfg *.drc *.dcu *.dproj *.bdsproj + __history *.identcache *.local *.cfg *.drc *.dcu *.dproj *.bdsproj Property changes on: trunk/jcl/examples/windows/ntservice ___________________________________________________________________ Modified: svn:ignore - *.identcache *.local *.cfg *.drc *.dcu *.dproj *.bdsproj + __history *.identcache *.local *.cfg *.drc *.dcu *.dproj *.bdsproj Property changes on: trunk/jcl/examples/windows/peimage ___________________________________________________________________ Modified: svn:ignore - *.identcache *.local *.cfg *.drc *.dcu *.dproj *.bdsproj + __history *.identcache *.local *.cfg *.drc *.dcu *.dproj *.bdsproj Property changes on: trunk/jcl/examples/windows/registry ___________________________________________________________________ Modified: svn:ignore - *.identcache *.local *.cfg *.drc *.dcu *.dproj *.bdsproj + __history *.identcache *.local *.cfg *.drc *.dcu *.dproj *.bdsproj Property changes on: trunk/jcl/examples/windows/structstorage ___________________________________________________________________ Modified: svn:ignore - *.identcache *.local *.cfg *.drc *.dcu *.dproj *.bdsproj + __history *.identcache *.local *.cfg *.drc *.dcu *.dproj *.bdsproj Property changes on: trunk/jcl/examples/windows/sysinfo ___________________________________________________________________ Modified: svn:ignore - *.identcache *.local *.cfg *.drc *.dcu *.dproj *.bdsproj + __history *.identcache *.local *.cfg *.drc *.dcu *.dproj *.bdsproj Property changes on: trunk/jcl/examples/windows/tasks ___________________________________________________________________ Modified: svn:ignore - *.identcache *.local *.cfg *.drc *.dcu *.dproj *.bdsproj + __history *.identcache *.local *.cfg *.drc *.dcu *.dproj *.bdsproj Property changes on: trunk/jcl/examples/windows/timezones ___________________________________________________________________ Modified: svn:ignore - *.identcache *.local *.cfg *.drc *.dcu *.dproj *.bdsproj + __history *.identcache *.local *.cfg *.drc *.dcu *.dproj *.bdsproj Property changes on: trunk/jcl/examples/windows/widestring ___________________________________________________________________ Modified: svn:ignore - *.identcache *.local *.cfg *.drc *.dcu *.dproj *.bdsproj + __history *.identcache *.local *.cfg *.drc *.dcu *.dproj *.bdsproj Property changes on: trunk/thirdparty/makedist ___________________________________________________________________ Modified: svn:ignore - *.exe *.dproj *.local *.identcache *.dcu *.log *.zip *.gz *.7z sandbox files jcl-daily-source-0.txt jcl-daily-source-1.txt jcl-daily-source-2.txt jcl-weekly-hlp-0.txt jcl-weekly-h2-0.txt jcl-weekly-chm-0.txt 7z.dll + __history *.exe *.dproj *.local *.identcache *.dcu *.log *.zip *.gz *.7z sandbox files jcl-daily-source-0.txt jcl-daily-source-1.txt jcl-daily-source-2.txt jcl-weekly-hlp-0.txt jcl-weekly-h2-0.txt jcl-weekly-chm-0.txt 7z.dll Property changes on: trunk/thirdparty/svn_cleaner ___________________________________________________________________ Modified: svn:ignore - *.exe *.dproj *.local *.identcache *.prop + __history *.exe *.dproj *.local *.identcache *.prop Modified: trunk/thirdparty/svn_cleaner/SvnCleaner.xml =================================================================== --- trunk/thirdparty/svn_cleaner/SvnCleaner.xml 2010-01-14 12:04:08 UTC (rev 3122) +++ trunk/thirdparty/svn_cleaner/SvnCleaner.xml 2010-01-14 14:51:35 UTC (rev 3123) @@ -119,10 +119,23 @@ <property name="svn:ignore"> <value>*.exe</value> </property> + <setting path="jpp" mask="" recurse="no" dironly="yes"> + <property name="svn:ignore"> + <value>__history</value> + <value>*.identcache</value> + <value>*.local</value> + <value>*.cfg</value> + <value>*.drc</value> + <value>*.dcu</value> + <value>*.dproj</value> + <value>*.bdsproj</value> + </property> + </setting> </setting> <setting path="" mask="examples*" recurse="yes" dironly="yes"> <property name="svn:ignore"> + <value>__history</value> <value>*.identcache</value> <value>*.local</value> <value>*.cfg</value> @@ -385,6 +398,7 @@ <setting path="thirdparty/svn_cleaner" mask="" recurse="no" dironly="yes"> <property name="svn:ignore"> + <value>__history</value> <value>*.exe</value> <value>*.dproj</value> <value>*.local</value> @@ -395,6 +409,12 @@ <setting path="thirdparty/unicode_data_extractor" mask="" recurse="no" dironly="yes"> <property name="svn:ignore"> + <value>__history</value> + <value>*.exe</value> + <value>*.dproj</value> + <value>*.local</value> + <value>*.identcache</value> + <value>*.dcu</value> <value>CaseFolding.txt</value> <value>SpecialCasing.txt</value> <value>UnicodeData.txt</value> @@ -405,6 +425,7 @@ <setting path="thirdparty/makedist" mask="" recurse="no" dironly="yes"> <property name="svn:ignore"> + <value>__history</value> <value>*.exe</value> <value>*.dproj</value> <value>*.local</value> Property changes on: trunk/thirdparty/unicode_data_extractor ___________________________________________________________________ Modified: svn:ignore - CaseFolding.txt SpecialCasing.txt UnicodeData.txt UDExtract.exe JclUnicode.rc + __history *.exe *.dproj *.local *.identcache *.dcu CaseFolding.txt SpecialCasing.txt UnicodeData.txt UDExtract.exe JclUnicode.rc This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ou...@us...> - 2010-01-14 12:04:17
|
Revision: 3122 http://jcl.svn.sourceforge.net/jcl/?rev=3122&view=rev Author: outchy Date: 2010-01-14 12:04:08 +0000 (Thu, 14 Jan 2010) Log Message: ----------- Refactored some code from JPP to JCL runtime code: new function StrIdent and StrSkipChars added to JclAnsiStrings.pas and JclStrings.pas. Modified Paths: -------------- trunk/jcl/devtools/jpp/JppLexer.pas trunk/jcl/devtools/jpp/jpp.dpr trunk/jcl/source/common/JclAnsiStrings.pas trunk/jcl/source/common/JclStrings.pas Removed Paths: ------------- trunk/jcl/devtools/jpp/PCharUtils.pas Modified: trunk/jcl/devtools/jpp/JppLexer.pas =================================================================== --- trunk/jcl/devtools/jpp/JppLexer.pas 2010-01-13 19:37:35 UTC (rev 3121) +++ trunk/jcl/devtools/jpp/JppLexer.pas 2010-01-14 12:04:08 UTC (rev 3122) @@ -52,8 +52,7 @@ uses SysUtils, Classes, - JclStrHashMap, JclStrings, JclStreams, - PCharUtils; + JclStrHashMap, JclStrings, JclStreams; type TJppToken = (ptEof, ptComment, ptText, ptEol, @@ -166,7 +165,7 @@ end; var - start: PChar; + BPos, start: PChar; ident: string; tokInt: Integer; begin @@ -189,9 +188,17 @@ ptUndef, ptIfdef, ptIfndef: - ReadIdent(SkipWhite(APos), FTokenAsString); + begin + BPos := APos; + StrSkipChars(BPos, CharIsWhiteSpace); + StrIdent(BPos, FTokenAsString); + end; ptInclude: - ReadString(SkipWhite(APos), FTokenAsString); + begin + BPos := APos; + StrSkipChars(BPos, CharIsWhiteSpace); + ReadString(BPos, FTokenAsString); + end; end; end else Deleted: trunk/jcl/devtools/jpp/PCharUtils.pas =================================================================== --- trunk/jcl/devtools/jpp/PCharUtils.pas 2010-01-13 19:37:35 UTC (rev 3121) +++ trunk/jcl/devtools/jpp/PCharUtils.pas 2010-01-14 12:04:08 UTC (rev 3122) @@ -1,112 +0,0 @@ -{ **************************************************************************** } -{ } -{ Pascal PreProcessor PChar utilities } -{ Copyright (c) 2001 Barry Kelly. } -{ bar...@ho... } -{ } -{ The contents of this file are subject to the Mozilla Public License } -{ Version 1.1 (the "License"); you may not use this file except in } -{ compliance with the License. You may obtain a copy of the License at } -{ http://www.mozilla.org/MPL/ } -{ } -{ Software distributed under the License is distributed on an "AS IS" } -{ basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the } -{ License for the specific language governing rights and limitations } -{ under the License. } -{ } -{ The Original Code is PCharUtils.pas } -{ } -{ The Initial Developer of the Original Code is Barry Kelly. } -{ Portions created by Barry Kelly are Copyright (C) 2001 } -{ Barry Kelly. All Rights Reserved. } -{ } -{ Alternatively, the contents of this file may be used under the terms } -{ of the Lesser GNU Public License (the "LGPL License"), in which case } -{ the provisions of LGPL License are applicable instead of those } -{ above. If you wish to allow use of your version of this file only } -{ under the terms of the LPGL License and not to allow others to use } -{ your version of this file under the MPL, indicate your decision by } -{ deleting the provisions above and replace them with the notice and } -{ other provisions required by the LGPL License. If you do not delete } -{ the provisions above, a recipient may use your version of this file } -{ under either the MPL or the LPGL License. } -{ } -{ **************************************************************************** } -{ $Id$ } - -unit PCharUtils; - -interface - -uses - SysUtils, - JclStrings; - -function SkipWhite(cp: PChar): PChar; -function ReadStringDoubleQuotedMaybe(cp: PChar; var AStr: string): PChar; -function ReadStringSingleQuotedMaybe(cp: PChar; var AStr: string): PChar; -function ReadIdent(cp: PChar; var ident: string): PChar; - -implementation - -function SkipWhite(cp: PChar): PChar; -begin - while CharIsSpace(cp^) do - Inc(cp); - Result := cp; -end; - -function ReadStringDoubleQuotedMaybe(cp: PChar; var AStr: string): PChar; -begin - { possibly quoted string } - Result := cp; - if Result^ = '"' then - begin - while (Result^ <> #0) and (Result^ <> '"') do - Inc(Result); - if Result^ = #0 then - raise Exception.Create('Unterminated string'); - Inc(Result); // skip over final " - SetString(AStr, cp, Result - cp); - end - else - begin - while (Result^ <> #0) and not CharIsSpace(Result^) do - Inc(Result); - SetString(AStr, cp, Result - cp); - end; -end; - -function ReadStringSingleQuotedMaybe(cp: PChar; var AStr: string): PChar; -begin - { possibly quoted string } - Result := cp; - if Result^ = '"' then - begin - while (Result^ <> #0) and (Result^ <> '"') do - Inc(Result); - if Result^ = #0 then - raise Exception.Create('Unterminated string'); - Inc(Result); // skip over final " - SetString(AStr, cp, Result - cp); - end - else - begin - while (Result^ <> #0) and not CharIsSpace(Result^) do - Inc(Result); - SetString(AStr, cp, Result - cp); - end; -end; - -function ReadIdent(cp: PChar; var ident: string): PChar; -var - start: PChar; -begin - start := cp; - while CharIsValidIdentifierLetter(cp^) do - Inc(cp); - SetString(ident, start, cp - start); - Result := cp; -end; - -end. Modified: trunk/jcl/devtools/jpp/jpp.dpr =================================================================== --- trunk/jcl/devtools/jpp/jpp.dpr 2010-01-13 19:37:35 UTC (rev 3121) +++ trunk/jcl/devtools/jpp/jpp.dpr 2010-01-14 12:04:08 UTC (rev 3122) @@ -57,12 +57,12 @@ Classes, TypInfo, JclFileUtils, + JclStrings, JclStreams, JclSysUtils, JppState in 'JppState.pas', JppParser in 'JppParser.pas', - JppLexer in 'JppLexer.pas', - PCharUtils in 'PCharUtils.pas'; + JppLexer in 'JppLexer.pas'; const SubstChar = '_'; @@ -192,6 +192,27 @@ N: Integer; ReplaceStrings: TStringList; + function ReadStringDoubleQuotedMaybe(cp: PChar; var AStr: string): PChar; + begin + { possibly quoted string } + Result := cp; + if Result^ = '"' then + begin + while (Result^ <> #0) and (Result^ <> '"') do + Inc(Result); + if Result^ = #0 then + raise Exception.Create('Unterminated string'); + Inc(Result); // skip over final " + SetString(AStr, cp, Result - cp); + end + else + begin + while (Result^ <> #0) and not CharIsSpace(Result^) do + Inc(Result); + SetString(AStr, cp, Result - cp); + end; + end; + function HandleOptions(cp: PChar): PChar; function CheckOpt(cp: PChar; AOpt: TPppOption): PChar; @@ -217,7 +238,7 @@ tmp: string; i: Integer; begin - cp := SkipWhite(cp); + StrSkipChars(cp, CharIsWhiteSpace); while cp^ = '-' do begin @@ -260,7 +281,7 @@ 'd': begin Inc(cp); - cp := ReadIdent(cp, tmp); + StrIdent(cp, tmp); pppState.Define(tmp); end; @@ -274,7 +295,7 @@ 'u': // RR begin Inc(cp); - cp := ReadIdent(cp, tmp); + StrIdent(cp, tmp); pppState.Undef(tmp); end; @@ -292,7 +313,7 @@ Syntax; end; - cp := SkipWhite(cp); + StrSkipChars(cp, CharIsWhiteSpace); end; Result := cp; end; @@ -305,7 +326,8 @@ begin while (cp^ <> '-') and (cp^ <> #0) do begin - cp := SkipWhite(ReadStringDoubleQuotedMaybe(cp, tmp)); + cp := ReadStringDoubleQuotedMaybe(cp, tmp); + StrSkipChars(cp, CharIsWhiteSpace); Files := TStringList.Create; try Modified: trunk/jcl/source/common/JclAnsiStrings.pas =================================================================== --- trunk/jcl/source/common/JclAnsiStrings.pas 2010-01-13 19:37:35 UTC (rev 3121) +++ trunk/jcl/source/common/JclAnsiStrings.pas 2010-01-14 12:04:08 UTC (rev 3122) @@ -339,6 +339,8 @@ function StrReverse(const S: AnsiString): AnsiString; procedure StrReverseInPlace(var S: AnsiString); function StrSingleQuote(const S: AnsiString): AnsiString; +procedure StrSkipChars(var S: PAnsiChar; const Chars: TSysCharSet); overload; +procedure StrSkipChars(const S: AnsiString; var Index: SizeInt; const Chars: TSysCharSet); overload; function StrSmartCase(const S: AnsiString; Delimiters: TSysCharSet): AnsiString; function StrStringToEscaped(const S: AnsiString): AnsiString; function StrStripNonNumberChars(const S: AnsiString): AnsiString; @@ -469,7 +471,10 @@ function StrToken(var S: AnsiString; Separator: AnsiChar): AnsiString; procedure StrTokens(const S: AnsiString; const List: TJclAnsiStrings); procedure StrTokenToStrings(S: AnsiString; Separator: AnsiChar; const List: TJclAnsiStrings); -function StrWord(var S: PAnsiChar; out Word: AnsiString): Boolean; +function StrWord(const S: AnsiString; var Index: SizeInt; out Word: AnsiString): Boolean; overload; +function StrWord(var S: PAnsiChar; out Word: AnsiString): Boolean; overload; +function StrIdent(const S: AnsiString; var Index: SizeInt; out Ident: AnsiString): Boolean; overload; +function StrIdent(var S: PAnsiChar; out Ident: AnsiString): Boolean; overload; function StrToFloatSafe(const S: AnsiString): Float; function StrToIntSafe(const S: AnsiString): Integer; procedure StrNormIndex(const StrLen: SizeInt; var Index: SizeInt; var Count: SizeInt); overload; @@ -1993,6 +1998,18 @@ Result := AnsiSingleQuote + S + AnsiSingleQuote; end; +procedure StrSkipChars(var S: PAnsiChar; const Chars: TSysCharSet); +begin + while S^ in Chars do + Inc(S); +end; + +procedure StrSkipChars(const S: AnsiString; var Index: SizeInt; const Chars: TSysCharSet); +begin + while S[Index] in Chars do + Inc(Index); +end; + function StrSmartCase(const S: AnsiString; Delimiters: TSysCharSet): AnsiString; var Source, Dest: PAnsiChar; @@ -3469,40 +3486,88 @@ end; end; -function StrWord(var S: PAnsiChar; out Word: AnsiString): Boolean; +function StrWord(const S: AnsiString; var Index: SizeInt; out Word: AnsiString): Boolean; var - Start: PAnsiChar; + Start: SizeInt; + C: AnsiChar; begin Word := ''; - if S = nil then + if (S = '') then begin Result := True; Exit; end; - Start := nil; + Start := Index; Result := False; while True do begin - case S^ of + C := S[Index]; + case C of #0: begin - if Start <> nil then - SetString(Word, Start, S - Start); + if Start <> 0 then + Word := Copy(S, Start, Index - Start); Result := True; Exit; end; AnsiSpace, AnsiLineFeed, AnsiCarriageReturn: begin - if Start <> nil then + if Start <> 0 then begin - SetString(Word, Start, S - Start); + Word := Copy(S, Start, Index - Start); Exit; end else - while S^ in [AnsiSpace, AnsiLineFeed, AnsiCarriageReturn] do - Inc(S); + begin + while CharIsWhiteSpace(C) do + begin + Inc(Index); + C := S[Index]; + end; + end; end; else + if Start = 0 then + Start := Index; + Inc(Index); + end; + end; +end; + +function StrWord(var S: PAnsiChar; out Word: AnsiString): Boolean; +var + Start: PAnsiChar; +begin + Word := ''; + if S = nil then + begin + Result := True; + Exit; + end; + Start := nil; + Result := False; + while True do + begin + case S^ of + #0: + begin + if Start <> nil then + SetString(Word, Start, S - Start); + Result := True; + Exit; + end; + AnsiSpace, AnsiLineFeed, AnsiCarriageReturn: + begin + if Start <> nil then + begin + SetString(Word, Start, S - Start); + Exit; + end + else + while CharIsWhiteSpace(S^) do + Inc(S); + end; + else if Start = nil then Start := S; Inc(S); @@ -3510,6 +3575,88 @@ end; end; +function StrIdent(const S: AnsiString; var Index: SizeInt; out Ident: AnsiString): Boolean; +var + Start: SizeInt; + C: AnsiChar; +begin + Ident := ''; + if (S = '') then + begin + Result := True; + Exit; + end; + Start := Index; + Result := False; + while True do + begin + C := S[Index]; + if CharIsValidIdentifierLetter(C) then + begin + if Start = 0 then + Start := Index; + end + else + if C = #0 then + begin + if Start <> 0 then + Ident := Copy(S, Start, Index - Start); + Result := True; + Exit; + end + else + begin + if Start <> 0 then + begin + Ident := Copy(S, Start, Index - Start); + Exit; + end; + end; + Inc(Index); + end; +end; + +function StrIdent(var S: PAnsiChar; out Ident: AnsiString): Boolean; +var + Start: PAnsiChar; + C: AnsiChar; +begin + Ident := ''; + if S = nil then + begin + Result := True; + Exit; + end; + Start := nil; + Result := False; + while True do + begin + C := S^; + if CharIsValidIdentifierLetter(C) then + begin + if Start = nil then + Start := S; + end + else + if C = #0 then + begin + if Start <> nil then + SetString(Ident, Start, S - Start); + Result := True; + Exit; + end + else + begin + if Start <> nil then + begin + SetString(Ident, Start, S - Start); + Exit; + end + end; + Inc(S); + end; +end; + function StrToFloatSafe(const S: AnsiString): Float; var Temp: AnsiString; Modified: trunk/jcl/source/common/JclStrings.pas =================================================================== --- trunk/jcl/source/common/JclStrings.pas 2010-01-13 19:37:35 UTC (rev 3121) +++ trunk/jcl/source/common/JclStrings.pas 2010-01-14 12:04:08 UTC (rev 3122) @@ -207,6 +207,10 @@ function StrReverse(const S: string): string; procedure StrReverseInPlace(var S: string); function StrSingleQuote(const S: string): string; +procedure StrSkipChars(var S: PChar; const Chars: TCharValidator); overload; +procedure StrSkipChars(var S: PChar; const Chars: array of Char); overload; +procedure StrSkipChars(const S: string; var Index: SizeInt; const Chars: TCharValidator); overload; +procedure StrSkipChars(const S: string; var Index: SizeInt; const Chars: array of Char); overload; function StrSmartCase(const S: string; const Delimiters: TCharValidator): string; overload; function StrSmartCase(const S: string; const Delimiters: array of Char): string; overload; function StrStringToEscaped(const S: string): string; @@ -366,6 +370,8 @@ procedure StrTokenToStrings(S: string; Separator: Char; const List: TStrings); function StrWord(const S: string; var Index: SizeInt; out Word: string): Boolean; overload; function StrWord(var S: PChar; out Word: string): Boolean; overload; +function StrIdent(const S: string; var Index: SizeInt; out Ident: string): Boolean; overload; +function StrIdent(var S: PChar; out Ident: string): Boolean; overload; function StrToFloatSafe(const S: string): Float; function StrToIntSafe(const S: string): Integer; procedure StrNormIndex(const StrLen: SizeInt; var Index: SizeInt; var Count: SizeInt); overload; @@ -1622,6 +1628,30 @@ Result := NativeSingleQuote + S + NativeSingleQuote; end; +procedure StrSkipChars(var S: PChar; const Chars: TCharValidator); +begin + while Chars(S^) do + Inc(S); +end; + +procedure StrSkipChars(var S: PChar; const Chars: array of Char); +begin + while ArrayContainsChar(Chars, S^) do + Inc(S); +end; + +procedure StrSkipChars(const S: string; var Index: SizeInt; const Chars: TCharValidator); +begin + while Chars(S[Index]) do + Inc(Index); +end; + +procedure StrSkipChars(const S: string; var Index: SizeInt; const Chars: array of Char); +begin + while ArrayContainsChar(Chars, S[Index]) do + Inc(Index); +end; + function StrSmartCase(const S: string; const Delimiters: TCharValidator): string; var Source, Dest: PChar; @@ -3309,7 +3339,8 @@ Result := False; while True do begin - case S[Index] of + C := S[Index]; + case C of #0: begin if Start <> 0 then @@ -3326,14 +3357,12 @@ end else begin - C := S[Index]; - while (C = NativeSpace) or (C = NativeLineFeed) or (C = NativeCarriageReturn) do + while CharIsWhiteSpace(C) do begin Inc(Index); C := S[Index]; end; end; - end; else if Start = 0 then @@ -3384,6 +3413,88 @@ end; end; +function StrIdent(const S: string; var Index: SizeInt; out Ident: string): Boolean; +var + Start: SizeInt; + C: Char; +begin + Ident := ''; + if (S = '') then + begin + Result := True; + Exit; + end; + Start := Index; + Result := False; + while True do + begin + C := S[Index]; + if CharIsValidIdentifierLetter(C) then + begin + if Start = 0 then + Start := Index; + end + else + if C = #0 then + begin + if Start <> 0 then + Ident := Copy(S, Start, Index - Start); + Result := True; + Exit; + end + else + begin + if Start <> 0 then + begin + Ident := Copy(S, Start, Index - Start); + Exit; + end; + end; + Inc(Index); + end; +end; + +function StrIdent(var S: PChar; out Ident: string): Boolean; +var + Start: PChar; + C: Char; +begin + Ident := ''; + if S = nil then + begin + Result := True; + Exit; + end; + Start := nil; + Result := False; + while True do + begin + C := S^; + if CharIsValidIdentifierLetter(C) then + begin + if Start = nil then + Start := S; + end + else + if C = #0 then + begin + if Start <> nil then + SetString(Ident, Start, S - Start); + Result := True; + Exit; + end + else + begin + if Start <> nil then + begin + SetString(Ident, Start, S - Start); + Exit; + end + end; + Inc(S); + end; +end; + procedure StrTokenToStrings(S: string; Separator: Char; const List: TStrings); var Token: string; @@ -4422,17 +4533,11 @@ var cur: PChar; - procedure SkipWhiteSpace; - begin - while CharIsWhiteSpace(cur^) do - Inc(cur); - end; - function ParseNumber: Integer; var head: PChar; begin - SkipWhiteSpace; + StrSkipChars(cur, CharIsWhiteSpace); head := cur; while CharIsDigit(cur^) do Inc(cur); @@ -4446,7 +4551,7 @@ openBracket, hadComma: Boolean; num: SizeInt; begin - SkipWhiteSpace; + StrSkipChars(cur, CharIsWhiteSpace); openBracket := cur^ = '['; hadComma := False; if openBracket then @@ -4458,7 +4563,7 @@ else if num >= 0 then Result.Add(num); - SkipWhiteSpace; + StrSkipChars(cur, CharIsWhiteSpace); hadComma := cur^ = ','; if hadComma then Inc(cur); @@ -4474,11 +4579,11 @@ var num: SizeInt; begin - SkipWhiteSpace; + StrSkipChars(cur, CharIsWhiteSpace); if cur^ = '+' then begin Inc(cur); - SkipWhiteSpace; + StrSkipChars(cur, CharIsWhiteSpace); num := ParseNumber; if (num < 0) then raise EJclStringError.CreateRes(@RsTabs_TabWidthExpected) @@ -4489,14 +4594,14 @@ procedure ParseZeroBasedFlag; begin - SkipWhiteSpace; + StrSkipChars(cur, CharIsWhiteSpace); if cur^ = '0' then begin Inc(cur); if CharIsWhiteSpace(cur^) or (cur^ = #0) or (cur^ = '[') then begin Result.ZeroBased := True; - SkipWhiteSpace; + StrSkipChars(cur, CharIsWhiteSpace); end else Dec(cur); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ou...@us...> - 2010-01-13 19:37:52
|
Revision: 3121 http://jcl.svn.sourceforge.net/jcl/?rev=3121&view=rev Author: outchy Date: 2010-01-13 19:37:35 +0000 (Wed, 13 Jan 2010) Log Message: ----------- Added case sensitivity selection to TJclAnsiStringList. Added assignments from and to TJclAnsiStringList. Modified Paths: -------------- trunk/jcl/source/common/JclAnsiStrings.pas Modified: trunk/jcl/source/common/JclAnsiStrings.pas =================================================================== --- trunk/jcl/source/common/JclAnsiStrings.pas 2010-01-12 21:12:01 UTC (rev 3120) +++ trunk/jcl/source/common/JclAnsiStrings.pas 2010-01-13 19:37:35 UTC (rev 3121) @@ -161,11 +161,12 @@ FCount: Integer; FDuplicates: TDuplicates; FSorted: Boolean; - + FCaseSensitive: Boolean; procedure Grow; procedure QuickSort(L, R: Integer; SCompare: TJclAnsiStringListSortCompare); procedure SetSorted(Value: Boolean); protected + procedure AssignTo(Dest: TPersistent); override; function GetString(Index: Integer): AnsiString; override; procedure SetString(Index: Integer; const Value: AnsiString); override; function GetObject(Index: Integer): TObject; override; @@ -173,8 +174,12 @@ function GetCapacity: Integer; override; procedure SetCapacity(const Value: Integer); override; function GetCount: Integer; override; + function CompareStrings(const S1, S2: AnsiString): Integer; override; public + constructor Create; + function AddObject(const S: AnsiString; AObject: TObject): Integer; override; + procedure Assign(Source: TPersistent); override; procedure InsertObject(Index: Integer; const S: AnsiString; AObject: TObject); override; procedure Delete(Index: Integer); override; function Find(const S: AnsiString; var Index: Integer): Boolean; virtual; @@ -182,6 +187,7 @@ procedure Sort; virtual; procedure Clear; override; + property CaseSensitive: Boolean read FCaseSensitive write FCaseSensitive; property Duplicates: TDuplicates read FDuplicates write FDuplicates; property Sorted: Boolean read FSorted write SetSorted; end; @@ -1004,6 +1010,59 @@ //=== { TJclAnsiStringList } ================================================= +constructor TJclAnsiStringList.Create; +begin + inherited Create; + FCaseSensitive := True; +end; + +procedure TJclAnsiStringList.Assign(Source: TPersistent); +var + StringListSource: TStringList; +begin + if Source is TStringList then + begin + StringListSource := TStringList(Source); + FDuplicates := StringListSource.Duplicates; + FSorted := StringListSource.Sorted; + FCaseSensitive := StringListSource.CaseSensitive; + end; + inherited Assign(Source); +end; + +procedure TJclAnsiStringList.AssignTo(Dest: TPersistent); +var + StringListDest: TStringList; + AnsiStringListDest: TJclAnsiStringList; +begin + if Dest is TStringList then + begin + StringListDest := TStringList(Dest); + StringListDest.Clear; // make following assignments a lot faster + StringListDest.Duplicates := FDuplicates; + StringListDest.Sorted := FSorted; + StringListDest.CaseSensitive := FCaseSensitive; + end + else + if Dest is TJclAnsiStringList then + begin + AnsiStringListDest := TJclAnsiStringList(Dest); + AnsiStringListDest.Clear; + AnsiStringListDest.FDuplicates := FDuplicates; + AnsiStringListDest.FSorted := FSorted; + AnsiStringListDest.FCaseSensitive := FCaseSensitive; + end; + inherited AssignTo(Dest); +end; + +function TJclAnsiStringList.CompareStrings(const S1: AnsiString; const S2: AnsiString): Integer; +begin + if FCaseSensitive then + Result := CompareStr(S1, S2) + else + Result := CompareText(S1, S2); +end; + procedure TJclAnsiStringList.Grow; var Delta: Integer; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ou...@us...> - 2010-01-12 21:12:07
|
Revision: 3120 http://jcl.svn.sourceforge.net/jcl/?rev=3120&view=rev Author: outchy Date: 2010-01-12 21:12:01 +0000 (Tue, 12 Jan 2010) Log Message: ----------- regenerated from prototypes and latest jpp (compiled with D2009). Modified Paths: -------------- trunk/jcl/source/common/JclHashMaps.pas trunk/jcl/source/common/JclLinkedLists.pas trunk/jcl/source/common/JclSortedMaps.pas trunk/jcl/source/vcl/JclGraphics.pas trunk/jcl/source/windows/JclWin32.pas Modified: trunk/jcl/source/common/JclHashMaps.pas =================================================================== --- trunk/jcl/source/common/JclHashMaps.pas 2010-01-12 21:09:07 UTC (rev 3119) +++ trunk/jcl/source/common/JclHashMaps.pas 2010-01-12 21:12:01 UTC (rev 3120) @@ -53,6 +53,18 @@ JclContainerIntf, JclAbstractContainers, JclArrayLists, JclArraySets; + + + + + + + + + + + + type // Hash Function // Result must be in 0..Range-1 Modified: trunk/jcl/source/common/JclLinkedLists.pas =================================================================== --- trunk/jcl/source/common/JclLinkedLists.pas 2010-01-12 21:09:07 UTC (rev 3119) +++ trunk/jcl/source/common/JclLinkedLists.pas 2010-01-12 21:12:01 UTC (rev 3120) @@ -7185,7 +7185,6 @@ AssignPropertiesTo(Result); end; - //=== { TJclSingleLinkedListIterator } ============================================================ constructor TJclSingleLinkedListIterator.Create(const AOwnList: IJclSingleList; ACursor: TJclSingleLinkedListItem; AValid: Boolean; AStart: TItrStart); @@ -7509,7 +7508,6 @@ {$ENDIF THREADSAFE} end; - //=== { TJclLinkedList<T> } ================================================== constructor TJclDoubleLinkedList.Create(const ACollection: IJclDoubleCollection); Modified: trunk/jcl/source/common/JclSortedMaps.pas =================================================================== --- trunk/jcl/source/common/JclSortedMaps.pas 2010-01-12 21:09:07 UTC (rev 3119) +++ trunk/jcl/source/common/JclSortedMaps.pas 2010-01-12 21:12:01 UTC (rev 3120) @@ -51,6 +51,17 @@ JclBase, JclSynch, JclAbstractContainers, JclContainerIntf, JclArrayLists, JclArraySets; + + + + + + + + + + + type TJclIntfIntfSortedEntry = record Key: IInterface; Modified: trunk/jcl/source/vcl/JclGraphics.pas =================================================================== --- trunk/jcl/source/vcl/JclGraphics.pas 2010-01-12 21:09:07 UTC (rev 3119) +++ trunk/jcl/source/vcl/JclGraphics.pas 2010-01-12 21:12:01 UTC (rev 3120) @@ -46,27 +46,19 @@ { } {**************************************************************************************************} - - unit JclGraphics; - - {$I jcl.inc} interface uses - Windows, - Classes, SysUtils, {$IFDEF UNITVERSIONING} JclUnitVersioning, {$ENDIF UNITVERSIONING} - Graphics, JclGraphUtils, Controls, - JclBase; type @@ -136,7 +128,6 @@ // Classes type - TJclDesktopCanvas = class(TCanvas) private FDesktop: HDC; @@ -212,17 +203,13 @@ property Handle: HRGN read GetHandle; property RegionType: TJclRegionKind read GetRegionType; end; - - { TJclThreadPersistent } { TJclThreadPersistent is an ancestor for TJclBitmap32 object. In addition to TPersistent methods, it provides thread-safe locking and change notification } TJclThreadPersistent = class(TPersistent) private - FLock: TRTLCriticalSection; - FLockCount: Integer; FUpdateCount: Integer; FOnChanging: TNotifyEvent; @@ -440,7 +427,6 @@ property ValPtr[X, Y: Integer]: PByte read GetValPtr; property Value[X, Y: Integer]: Byte read GetValue write SetValue; default; end; - TJclTransformation = class(TObject) public @@ -480,7 +466,6 @@ procedure Stretch(NewWidth, NewHeight: Cardinal; Filter: TResamplingFilter; Radius: Single; Bitmap: TBitmap); overload; - procedure DrawBitmap(DC: HDC; Bitmap: HBITMAP; X, Y, Width, Height: Integer); function ExtractIconCount(const FileName: string): Integer; @@ -488,8 +473,6 @@ function BitmapToIcon(Bitmap, Mask: HBITMAP; cx, cy: Integer): HICON; overload; function IconToBitmap(Icon: HICON): HBITMAP; - - procedure BitmapToJPeg(const FileName: string); procedure JPegToBitmap(const FileName: string); @@ -511,8 +494,6 @@ function GetAntialiasedBitmap(const Bitmap: TBitmap): TBitmap; - - procedure BlockTransfer(Dst: TJclBitmap32; DstX: Integer; DstY: Integer; Src: TJclBitmap32; SrcRect: TRect; CombineOp: TDrawMode); @@ -522,21 +503,15 @@ procedure Transform(Dst, Src: TJclBitmap32; SrcRect: TRect; Transformation: TJclTransformation); procedure SetBorderTransparent(ABitmap: TJclBitmap32; ARect: TRect); - - function FillGradient(DC: HDC; ARect: TRect; ColorCount: Integer; StartColor, EndColor: TColor; ADirection: TGradientDirection): Boolean; overload; - - function CreateRegionFromBitmap(Bitmap: TBitmap; RegionColor: TColor; RegionBitmapMode: TJclRegionBitmapMode): HRGN; procedure ScreenShot(bm: TBitmap; Left, Top, Width, Height: Integer; Window: THandle = HWND_DESKTOP); overload; procedure ScreenShot(bm: TBitmap; IncludeTaskBar: Boolean = True); overload; function MapWindowRect(hWndFrom, hWndTo: THandle; ARect: TRect):TRect; - - // PolyLines and Polygons procedure PolyLineTS(Bitmap: TJclBitmap32; const Points: TDynPointArray; Color: TColor32); procedure PolyLineAS(Bitmap: TJclBitmap32; const Points: TDynPointArray; Color: TColor32); @@ -562,7 +537,6 @@ procedure ApplyLUT(Dst, Src: TJclBitmap32; const LUT: TLUT8); procedure SetGamma(Gamma: Single = 0.7); - {$IFDEF UNITVERSIONING} const UnitVersioning: TUnitVersionInfo = ( @@ -579,9 +553,7 @@ uses Math, - CommCtrl, ShellApi, - {$IFDEF HAS_UNIT_GIFIMG} GifImg, {$ENDIF HAS_UNIT_GIFIMG} @@ -590,8 +562,6 @@ {$ENDIF HAS_UNIT_PNGIMAGE} ClipBrd, JPeg, TypInfo, JclVclResources, - - JclSysUtils, JclLogic; @@ -654,7 +624,6 @@ Result := Math.Max(0, Math.Min(255, Value)); end; - procedure CheckBitmaps(Dst, Src: TJclBitmap32); begin if (Dst = nil) or Dst.Empty then @@ -674,7 +643,6 @@ Result := True; end; - //=== Internal low level routines ============================================ procedure FillLongword(var X; Count: Integer; Value: Longword); @@ -1340,7 +1308,6 @@ Stretch(NewWidth, NewHeight, Filter, Radius, Bitmap, Bitmap); end; - procedure StretchNearest(Dst: TJclBitmap32; DstRect: TRect; Src: TJclBitmap32; SrcRect: TRect; CombineOp: TDrawMode); var @@ -1600,8 +1567,6 @@ end; end; - - procedure DrawBitmap(DC: HDC; Bitmap: HBITMAP; X, Y, Width, Height: Integer); var MemDC: HDC; @@ -1614,8 +1579,6 @@ DeleteObject(MemDC); end; - - { TODO : remove VCL-dependency by replacing pf24bit by pf32bit } function GetAntialiasedBitmap(const Bitmap: TBitmap): TBitmap; @@ -1724,8 +1687,6 @@ end; {$ENDIF HAS_UNIT_PNGIMAGE} - - function ExtractIconCount(const FileName: string): Integer; begin Result := ExtractIcon(HInstance, PChar(FileName), $FFFFFFFF); @@ -1771,8 +1732,6 @@ end; end; - - procedure GetIconFromBitmap(Icon: TIcon; Bitmap: TBitmap); var IconInfo: TIconInfo; @@ -1900,8 +1859,6 @@ end; end; - - procedure Transform(Dst, Src: TJclBitmap32; SrcRect: TRect; Transformation: TJclTransformation); var @@ -2028,8 +1985,6 @@ end; end; - - function CreateRegionFromBitmap(Bitmap: TBitmap; RegionColor: TColor; RegionBitmapMode: TJclRegionBitmapMode): HRGN; var Modified: trunk/jcl/source/windows/JclWin32.pas =================================================================== --- trunk/jcl/source/windows/JclWin32.pas 2010-01-12 21:09:07 UTC (rev 3119) +++ trunk/jcl/source/windows/JclWin32.pas 2010-01-12 21:12:01 UTC (rev 3120) @@ -2949,6 +2949,7 @@ // line 3189 + function BackupSeek(hFile: THandle; dwLowBytesToSeek, dwHighBytesToSeek: DWORD; out lpdwLowByteSeeked, lpdwHighByteSeeked: DWORD; var lpContext: Pointer): BOOL; stdcall; @@ -3072,15 +3073,18 @@ {$EXTERNALSYM SetExtendedFeaturesMask} + // From JwaAclApi // line 185 + function SetNamedSecurityInfoW(pObjectName: LPWSTR; ObjectType: SE_OBJECT_TYPE; SecurityInfo: SECURITY_INFORMATION; psidOwner, psidGroup: PSID; pDacl, pSacl: PACL): DWORD; stdcall; {$EXTERNALSYM SetNamedSecurityInfoW} + const IMAGE_SEPARATION = (64*1024); {$EXTERNALSYM IMAGE_SEPARATION} @@ -3111,6 +3115,7 @@ // line 152 + function ReBaseImage(CurrentImageName: PAnsiChar; SymbolPath: PAnsiChar; fReBase: BOOL; fRebaseSysfileOk: BOOL; fGoingDown: BOOL; CheckImageSize: ULONG; var OldImageSize: ULONG; var OldImageBase: ULONG_PTR; var NewImageSize: ULONG; @@ -3165,6 +3170,7 @@ {$EXTERNALSYM ImageRvaToVa} + // line 461 // This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ou...@us...> - 2010-01-12 21:09:13
|
Revision: 3119 http://jcl.svn.sourceforge.net/jcl/?rev=3119&view=rev Author: outchy Date: 2010-01-12 21:09:07 +0000 (Tue, 12 Jan 2010) Log Message: ----------- updated JPP to use JCL file enumeration functions. Modified Paths: -------------- trunk/jcl/devtools/jpp/jpp.dpr Removed Paths: ------------- trunk/jcl/devtools/jpp/FindFileIter.pas Deleted: trunk/jcl/devtools/jpp/FindFileIter.pas =================================================================== --- trunk/jcl/devtools/jpp/FindFileIter.pas 2010-01-12 18:45:37 UTC (rev 3118) +++ trunk/jcl/devtools/jpp/FindFileIter.pas 2010-01-12 21:09:07 UTC (rev 3119) @@ -1,167 +0,0 @@ -{ **************************************************************************** } -{ } -{ Iterator wrapper interface for FindFirst/FindNext/FindClose } -{ Copyright (c) 2001 Barry Kelly. } -{ bar...@ho... } -{ } -{ The contents of this file are subject to the Mozilla Public License } -{ Version 1.1 (the "License"); you may not use this file except in } -{ compliance with the License. You may obtain a copy of the License at } -{ http://www.mozilla.org/MPL/ } -{ } -{ Software distributed under the License is distributed on an "AS IS" } -{ basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the } -{ License for the specific language governing rights and limitations } -{ under the License. } -{ } -{ The Original Code is FindFileIter.pas } -{ } -{ The Initial Developer of the Original Code is Barry Kelly. } -{ Portions created by Barry Kelly are Copyright (C) 2001 } -{ Barry Kelly. All Rights Reserved. } -{ } -{ Alternatively, the contents of this file may be used under the terms } -{ of the Lesser GNU Public License (the "LGPL License"), in which case } -{ the provisions of LGPL License are applicable instead of those } -{ above. If you wish to allow use of your version of this file only } -{ under the terms of the LPGL License and not to allow others to use } -{ your version of this file under the MPL, indicate your decision by } -{ deleting the provisions above and replace them with the notice and } -{ other provisions required by the LGPL License. If you do not delete } -{ the provisions above, a recipient may use your version of this file } -{ under either the MPL or the LPGL License. } -{ } -{ **************************************************************************** } -{ $Id$ } -unit FindFileIter; - -interface - -uses - SysUtils; - -type - IFindFileIterator = interface - ['{E7D04349-3848-483E-9FEB-DAEB0B0FBEAF}'] - - { returns false if next not found } - function Next: Boolean; - - function SearchRec: TSearchRec; - function Time: TDateTime; - function Size: Int64; - function Attr: Integer; - function Name: TFileName; - end; - -{ returns false if no first file found } -function CreateFindFile(const Path: string; IncludeAttr: Integer; - out iffi: IFindFileIterator): Boolean; - -implementation - -type - TWin32FindFileIterator = class(TInterfacedObject, IFindFileIterator) - private - FSearchRec: TSearchRec; - FValid: Boolean; - FBasePath: string; - function IsValid: Boolean; - public - constructor Create(const Path: string; IncludeAttr: Integer); - destructor Destroy; override; - - function Attr: Integer; - function Name: TFileName; - function Next: Boolean; - function SearchRec: TSearchRec; - function Size: Int64; - function Time: TDateTime; - - property Valid: Boolean read FValid; - end; - -function CreateFindFile(const Path: string; IncludeAttr: Integer; - out iffi: IFindFileIterator): Boolean; -var - iter: TWin32FindFileIterator; -begin - iter := TWin32FindFileIterator.Create(Path, IncludeAttr); - Result := iter.Valid; - if Result then - iffi := iter - else - begin - iffi := nil; - iter.Free; - end; -end; - -{ TWin32FindFileIterator } - -constructor TWin32FindFileIterator.Create(const Path: string; - IncludeAttr: Integer); -begin - FValid := FindFirst(Path, IncludeAttr, FSearchRec) = 0; - FBasePath := ExtractFilePath(Path); -end; - -destructor TWin32FindFileIterator.Destroy; -begin - FindClose(FSearchRec); - inherited; -end; - -function TWin32FindFileIterator.Attr: Integer; -begin - Assert(IsValid); - Result := FSearchRec.Attr; -end; - -function TWin32FindFileIterator.Name: TFileName; -begin - Assert(IsValid); - Result := FBasePath + FSearchRec.Name; -end; - -function TWin32FindFileIterator.Next: Boolean; -begin - FValid := FindNext(FSearchRec) = 0; - Result := FValid; -end; - -function TWin32FindFileIterator.SearchRec: TSearchRec; -begin - Assert(IsValid); - Result := FSearchRec; -end; - -{$IFDEF ConditionalExpressions} - {$IF CompilerVersion >= 14} - {$WARN SYMBOL_PLATFORM OFF} - {$IFEND} -{$ENDIF} -function TWin32FindFileIterator.Size: Int64; -begin - Assert(IsValid); - {$IFDEF MSWINDOWS} - Result := FSearchRec.FindData.nFileSizeHigh shl 32 + - FSearchRec.FindData.nFileSizeLow; - {$ELSE} - Result := FSearchRec.Size; - {$ENDIF} -end; - -function TWin32FindFileIterator.Time: TDateTime; -begin - Result := FileDateToDateTime(FSearchRec.Time); -end; - -function TWin32FindFileIterator.IsValid: Boolean; -begin - if not FValid then - raise Exception.Create('Tried to access invalid FindFile iterator'); - Result := True; -end; - -end. Modified: trunk/jcl/devtools/jpp/jpp.dpr =================================================================== --- trunk/jcl/devtools/jpp/jpp.dpr 2010-01-12 18:45:37 UTC (rev 3118) +++ trunk/jcl/devtools/jpp/jpp.dpr 2010-01-12 21:09:07 UTC (rev 3119) @@ -61,7 +61,6 @@ JclSysUtils, JppState in 'JppState.pas', JppParser in 'JppParser.pas', - FindFileIter in 'FindFileIter.pas', JppLexer in 'JppLexer.pas', PCharUtils in 'PCharUtils.pas'; @@ -300,35 +299,45 @@ function HandleFiles(cp: PChar): PChar; var - NewName, tmp: string; - iter: IFindFileIterator; + FileName, NewName, tmp: string; + Files: TStrings; + I: Integer; begin while (cp^ <> '-') and (cp^ <> #0) do begin cp := SkipWhite(ReadStringDoubleQuotedMaybe(cp, tmp)); - if CreateFindFile(ExpandUNCFileName(tmp), faAnyFile and not faDirectory, iter) then - repeat - try - if StripLength > 0 then - NewName := Copy(ExtractFileName(iter.Name), StripLength + 1, Length(iter.Name)) - else - NewName := ExtractFileName(iter.Name); + Files := TStringList.Create; + try + AdvBuildFileList( ExpandUNCFileName(tmp), faAnyFile, Files, amAny); - Substitute(NewName, SubstChar, ReplaceStrings); + if Files.Count > 0 then + for I := 0 to Files.Count - 1 do + begin + FileName := Files.Strings[I]; + try + if StripLength > 0 then + NewName := Copy(ExtractFileName(FileName), StripLength + 1, Length(FileName)) + else + NewName := ExtractFileName(FileName); - NewName := ExpandUNCFileName(Prefix + NewName); + Substitute(NewName, SubstChar, ReplaceStrings); - if iter.Name = NewName then - ChangeFileExt(NewName, ProcessedExtension); - Process(pppState, iter.Name, NewName); - except - on e: Exception do - Writeln(Format('Error: %s %s', [e.Message, iter.Name])); - end; - until not iter.Next - else - Writeln('Could not find ', tmp); + NewName := ExpandUNCFileName(Prefix + NewName); + + if FileName = NewName then + ChangeFileExt(NewName, ProcessedExtension); + Process(pppState, FileName, NewName); + except + on e: Exception do + Writeln(Format('Error: %s %s', [e.Message, FileName])); + end; + end + else + Writeln('Could not find ', tmp); + finally + Files.Free; + end; end; Result := cp; end; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ou...@us...> - 2010-01-12 18:45:44
|
Revision: 3118 http://jcl.svn.sourceforge.net/jcl/?rev=3118&view=rev Author: outchy Date: 2010-01-12 18:45:37 +0000 (Tue, 12 Jan 2010) Log Message: ----------- Mantis 5100: "TJclStringStream.PeekChar" fails to advance "FPeekPosition" correctly on UTF-8 multibyte sequences Modified Paths: -------------- trunk/jcl/source/common/JclStreams.pas Modified: trunk/jcl/source/common/JclStreams.pas =================================================================== --- trunk/jcl/source/common/JclStreams.pas 2010-01-06 16:49:29 UTC (rev 3117) +++ trunk/jcl/source/common/JclStreams.pas 2010-01-12 18:45:37 UTC (rev 3118) @@ -2347,8 +2347,8 @@ Result := InternalGetNextChar(Self, Ch); if Result then Buffer := UCS4ToAnsiChar(Ch); + FPeekPosition := FPosition; FPosition := Pos; - FPeekPosition := FPeekPosition + 1; end; function TJclStringStream.PeekChar(out Buffer: Char): Boolean; @@ -2361,8 +2361,8 @@ Result := InternalGetNextChar(Self, Ch); if Result then Buffer := UCS4ToChar(Ch); + FPeekPosition := FPosition; FPosition := Pos; - FPeekPosition := FPeekPosition + 1; end; function TJclStringStream.PeekWideChar(out Buffer: WideChar): Boolean; @@ -2375,8 +2375,8 @@ Result := InternalGetNextChar(Self, Ch); if Result then Buffer := UCS4ToWideChar(Ch); + FPeekPosition := FPosition; FPosition := Pos; - FPeekPosition := FPeekPosition + 1; end; function TJclStringStream.ReadString(var Buffer: string; Start, Count: Longint): Longint; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |