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...> - 2009-03-15 20:48:24
|
Revision: 2691 http://jcl.svn.sourceforge.net/jcl/?rev=2691&view=rev Author: outchy Date: 2009-03-15 20:48:11 +0000 (Sun, 15 Mar 2009) Log Message: ----------- Compatibility of revision 2688 with the versions of Delphi/C++Builder that do not support Unicode. Revision Links: -------------- http://jcl.svn.sourceforge.net/jcl/?rev=2688&view=rev Modified Paths: -------------- trunk/jcl/source/common/JclAbstractContainers.pas Modified: trunk/jcl/source/common/JclAbstractContainers.pas =================================================================== --- trunk/jcl/source/common/JclAbstractContainers.pas 2009-03-15 19:42:15 UTC (rev 2690) +++ trunk/jcl/source/common/JclAbstractContainers.pas 2009-03-15 20:48:11 UTC (rev 2691) @@ -27,7 +27,7 @@ { } {**************************************************************************************************} { } -{ Last modified: $Date:: $ } +{ Last modified: $Date:: $ } { Revision: $Rev:: $ } { Author: $Author:: $ } { } @@ -2729,10 +2729,10 @@ begin PString := PWideChar(AString); PSep := PWideChar(Separator); - PPos := StrPos(PString, PSep); + PPos := StrPosW(PString, PSep); if PPos <> nil then begin - SepLen := StrLen(PSep); + SepLen := StrLenW(PSep); repeat //SetLength(Item, PPos - PString + 1); SetLength(Item, PPos - PString); @@ -2740,9 +2740,9 @@ //Item[PPos - PString + 1] := #0; Add(Item); PString := PPos + SepLen; - PPos := StrPos(PString, PSep); + PPos := StrPosW(PString, PSep); until PPos = nil; - if StrLen(PString) > 0 then //ex. hello#world + if StrLenW(PString) > 0 then //ex. hello#world Add(PString); end else //There isnt a Separator in AString This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ah...@us...> - 2009-03-15 19:42:38
|
Revision: 2690 http://jcl.svn.sourceforge.net/jcl/?rev=2690&view=rev Author: ahuser Date: 2009-03-15 19:42:15 +0000 (Sun, 15 Mar 2009) Log Message: ----------- Fixed memory overwrite in Delphi 2009 Modified Paths: -------------- trunk/jcl/source/common/JclStrings.pas Modified: trunk/jcl/source/common/JclStrings.pas =================================================================== --- trunk/jcl/source/common/JclStrings.pas 2009-03-15 14:02:23 UTC (rev 2689) +++ trunk/jcl/source/common/JclStrings.pas 2009-03-15 19:42:15 UTC (rev 2690) @@ -2155,11 +2155,11 @@ {$ELSE ~CLR} var P1, P2: PChar; - C: Char; + C: Char; begin UniqueString(S); P1 := PChar(S); - P2 := P1 + SizeOf(Char) * (Length(S) - 1); + P2 := P1 + (Length(S) - 1); while P1 < P2 do begin C := P1^; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ob...@us...> - 2009-03-15 14:02:33
|
Revision: 2689 http://jcl.svn.sourceforge.net/jcl/?rev=2689&view=rev Author: obones Date: 2009-03-15 14:02:23 +0000 (Sun, 15 Mar 2009) Log Message: ----------- Exchange did not exchange objects. Modified Paths: -------------- trunk/jcl/source/common/JclAnsiStrings.pas Modified: trunk/jcl/source/common/JclAnsiStrings.pas =================================================================== --- trunk/jcl/source/common/JclAnsiStrings.pas 2009-03-15 11:51:26 UTC (rev 2688) +++ trunk/jcl/source/common/JclAnsiStrings.pas 2009-03-15 14:02:23 UTC (rev 2689) @@ -939,12 +939,16 @@ procedure TJclAnsiStrings.Exchange(Index1, Index2: Integer); var TempString: AnsiString; + TempObject: TObject; begin BeginUpdate; try TempString := Strings[Index1]; + TempObject := Objects[Index1]; Strings[Index1] := Strings[Index2]; + Objects[Index1] := Objects[Index2]; Strings[Index2] := TempString; + Objects[Index2] := TempObject; finally EndUpdate; end; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ou...@us...> - 2009-03-15 11:51:44
|
Revision: 2688 http://jcl.svn.sourceforge.net/jcl/?rev=2688&view=rev Author: outchy Date: 2009-03-15 11:51:26 +0000 (Sun, 15 Mar 2009) Log Message: ----------- Mantis 4650: IJclUnicodeStrFlatContainer missing methods that can be found in IJclAnsiStrFlatContainer Modified Paths: -------------- trunk/jcl/source/common/JclAbstractContainers.pas trunk/jcl/source/common/JclContainerIntf.pas trunk/jcl/source/common/JclWideStrings.pas trunk/jcl/source/prototypes/JclContainerIntf.pas Modified: trunk/jcl/source/common/JclAbstractContainers.pas =================================================================== --- trunk/jcl/source/common/JclAbstractContainers.pas 2009-03-15 11:25:33 UTC (rev 2687) +++ trunk/jcl/source/common/JclAbstractContainers.pas 2009-03-15 11:51:26 UTC (rev 2688) @@ -47,7 +47,7 @@ Libc, {$ENDIF HAS_UNIT_LIBC} Classes, - JclBase, JclContainerIntf, JclSynch, JclSysUtils, JclAnsiStrings; + JclBase, JclContainerIntf, JclSynch, JclSysUtils, JclAnsiStrings, JclWideStrings; type {$IFDEF KEEP_DEPRECATED} @@ -626,6 +626,14 @@ function GetEnumerator: IJclWideStrIterator; virtual; abstract; {$ENDIF SUPPORTS_FOR_IN} { IJclWideStrFlatContainer } + procedure LoadFromStrings(Strings: TJclWideStrings); + procedure SaveToStrings(Strings: TJclWideStrings); + procedure AppendToStrings(Strings: TJclWideStrings); + procedure AppendFromStrings(Strings: TJclWideStrings); + function GetAsStrings: TJclWideStrings; + function GetAsDelimited(const Separator: WideString = WideLineBreak): WideString; + procedure AppendDelimited(const AString: WideString; const Separator: WideString = WideLineBreak); + procedure LoadDelimited(const AString: WideString; const Separator: WideString = WideLineBreak); end; {$IFDEF SUPPORTS_UNICODE_STRING} @@ -654,6 +662,14 @@ function GetEnumerator: IJclUnicodeStrIterator; virtual; abstract; {$ENDIF SUPPORTS_FOR_IN} { IJclUnicodeStrFlatContainer } + procedure LoadFromStrings(Strings: TJclUnicodeStrings); + procedure SaveToStrings(Strings: TJclUnicodeStrings); + procedure AppendToStrings(Strings: TJclUnicodeStrings); + procedure AppendFromStrings(Strings: TJclUnicodeStrings); + function GetAsStrings: TJclUnicodeStrings; + function GetAsDelimited(const Separator: UnicodeString = WideLineBreak): UnicodeString; + procedure AppendDelimited(const AString: UnicodeString; const Separator: UnicodeString = WideLineBreak); + procedure LoadDelimited(const AString: UnicodeString; const Separator: UnicodeString = WideLineBreak); end; {$ENDIF SUPPORTS_UNICODE_STRING} @@ -693,9 +709,6 @@ {$IFDEF HAS_UNIT_ANSISTRINGS} AnsiStrings, {$ENDIF HAS_UNIT_ANSISTRINGS} - {$IFNDEF CLR} - JclWideStrings, - {$ENDIF ~CLR} JclStringConversions, JclUnicode, SysUtils; @@ -2566,7 +2579,7 @@ {$ENDIF SUPPORTS_GENERICS} -//=== { TJclAnsiStrCollection } ============================================== +//=== { TJclAnsiStrAbstractCollection } ====================================== // TODO: common implementation, need a function to search for a string starting from // a predefined index @@ -2683,6 +2696,242 @@ AppendToStrings(Strings); end; +//=== { TJclWideStrAbstractCollection } ====================================== + +// TODO: common implementation, need a function to search for a string starting from +// a predefined index +procedure TJclWideStrAbstractCollection.AppendDelimited(const AString, Separator: WideString); +{$IFDEF CLR} +var + I, StartIndex: Integer; + BString: string; +begin + I := Pos(Separator, AString); + if I <> 0 then + begin + BString := AString; + Dec(I); // to .NET string index base + StartIndex := 0; + repeat + Add(BString.Substring(StartIndex, I - StartIndex + 1)); + StartIndex := I + 1; + I := BString.IndexOf(Separator, StartIndex); + until I < 0; + end + else + Add(AString); +end; +{$ELSE} +var + Item: WideString; + SepLen: Integer; + PString, PSep, PPos: PWideChar; +begin + PString := PWideChar(AString); + PSep := PWideChar(Separator); + PPos := StrPos(PString, PSep); + if PPos <> nil then + begin + SepLen := StrLen(PSep); + repeat + //SetLength(Item, PPos - PString + 1); + SetLength(Item, PPos - PString); + Move(PString^, Item[1], (PPos - PString) * SizeOf(WideChar)); + //Item[PPos - PString + 1] := #0; + Add(Item); + PString := PPos + SepLen; + PPos := StrPos(PString, PSep); + until PPos = nil; + if StrLen(PString) > 0 then //ex. hello#world + Add(PString); + end + else //There isnt a Separator in AString + Add(AString); +end; +{$ENDIF CLR} + +procedure TJclWideStrAbstractCollection.AppendFromStrings(Strings: TJclWideStrings); +var + I: Integer; +begin + for I := 0 to Strings.Count - 1 do + Add(Strings[I]); +end; + +procedure TJclWideStrAbstractCollection.AppendToStrings(Strings: TJclWideStrings); +var + It: IJclWideStrIterator; +begin + It := First; + Strings.BeginUpdate; + try + while It.HasNext do + Strings.Add(It.Next); + finally + Strings.EndUpdate; + end; +end; + +function TJclWideStrAbstractCollection.GetAsDelimited(const Separator: WideString): WideString; +var + It: IJclWideStrIterator; +begin + It := First; + Result := ''; + if It.HasNext then + Result := It.Next; + while It.HasNext do + Result := Result + Separator + It.Next; +end; + +function TJclWideStrAbstractCollection.GetAsStrings: TJclWideStrings; +begin + Result := TJclWideStringList.Create; + try + AppendToStrings(Result); + except + Result.Free; + raise; + end; +end; + +procedure TJclWideStrAbstractCollection.LoadDelimited(const AString, Separator: WideString); +begin + Clear; + AppendDelimited(AString, Separator); +end; + +procedure TJclWideStrAbstractCollection.LoadFromStrings(Strings: TJclWideStrings); +begin + Clear; + AppendFromStrings(Strings); +end; + +procedure TJclWideStrAbstractCollection.SaveToStrings(Strings: TJclWideStrings); +begin + Strings.Clear; + AppendToStrings(Strings); +end; + +{$IFDEF SUPPORTS_UNICODE_STRING} +//=== { TJclUnicodeStrAbstractCollection } =================================== + +// TODO: common implementation, need a function to search for a string starting from +// a predefined index +procedure TJclUnicodeStrAbstractCollection.AppendDelimited(const AString, Separator: UnicodeString); +{$IFDEF CLR} +var + I, StartIndex: Integer; + BString: string; +begin + I := Pos(Separator, AString); + if I <> 0 then + begin + BString := AString; + Dec(I); // to .NET string index base + StartIndex := 0; + repeat + Add(BString.Substring(StartIndex, I - StartIndex + 1)); + StartIndex := I + 1; + I := BString.IndexOf(Separator, StartIndex); + until I < 0; + end + else + Add(AString); +end; +{$ELSE} +var + Item: UnicodeString; + SepLen: Integer; + PString, PSep, PPos: PWideChar; +begin + PString := PWideChar(AString); + PSep := PWideChar(Separator); + PPos := StrPos(PString, PSep); + if PPos <> nil then + begin + SepLen := StrLen(PSep); + repeat + //SetLength(Item, PPos - PString + 1); + SetLength(Item, PPos - PString); + Move(PString^, Item[1], (PPos - PString) * SizeOf(WideChar)); + //Item[PPos - PString + 1] := #0; + Add(Item); + PString := PPos + SepLen; + PPos := StrPos(PString, PSep); + until PPos = nil; + if StrLen(PString) > 0 then //ex. hello#world + Add(PString); + end + else //There isnt a Separator in AString + Add(AString); +end; +{$ENDIF CLR} + +procedure TJclUnicodeStrAbstractCollection.AppendFromStrings(Strings: TJclUnicodeStrings); +var + I: Integer; +begin + for I := 0 to Strings.Count - 1 do + Add(Strings[I]); +end; + +procedure TJclUnicodeStrAbstractCollection.AppendToStrings(Strings: TJclUnicodeStrings); +var + It: IJclUnicodeStrIterator; +begin + It := First; + Strings.BeginUpdate; + try + while It.HasNext do + Strings.Add(It.Next); + finally + Strings.EndUpdate; + end; +end; + +function TJclUnicodeStrAbstractCollection.GetAsDelimited(const Separator: UnicodeString): UnicodeString; +var + It: IJclUnicodeStrIterator; +begin + It := First; + Result := ''; + if It.HasNext then + Result := It.Next; + while It.HasNext do + Result := Result + Separator + It.Next; +end; + +function TJclUnicodeStrAbstractCollection.GetAsStrings: TJclUnicodeStrings; +begin + Result := TJclUnicodeStringList.Create; + try + AppendToStrings(Result); + except + Result.Free; + raise; + end; +end; + +procedure TJclUnicodeStrAbstractCollection.LoadDelimited(const AString, Separator: UnicodeString); +begin + Clear; + AppendDelimited(AString, Separator); +end; + +procedure TJclUnicodeStrAbstractCollection.LoadFromStrings(Strings: TJclUnicodeStrings); +begin + Clear; + AppendFromStrings(Strings); +end; + +procedure TJclUnicodeStrAbstractCollection.SaveToStrings(Strings: TJclUnicodeStrings); +begin + Strings.Clear; + AppendToStrings(Strings); +end; +{$ENDIF SUPPORTS_UNICODE_STRING} + {$IFDEF UNITVERSIONING} initialization RegisterUnitVersion(HInstance, UnitVersioning); Modified: trunk/jcl/source/common/JclContainerIntf.pas =================================================================== --- trunk/jcl/source/common/JclContainerIntf.pas 2009-03-15 11:25:33 UTC (rev 2687) +++ trunk/jcl/source/common/JclContainerIntf.pas 2009-03-15 11:51:26 UTC (rev 2688) @@ -31,7 +31,7 @@ { } {**************************************************************************************************} { } -{ Last modified: $Date:: $ } +{ Last modified: $Date:: $ } { Revision: $Rev:: $ } { Author: $Author:: $ } { } @@ -49,7 +49,8 @@ {$ENDIF UNITVERSIONING} Classes, JclBase, - JclAnsiStrings; + JclAnsiStrings, + JclWideStrings; {$IFDEF BCB6} {$DEFINE BUGGY_DEFAULT_INDEXED_PROP} @@ -302,14 +303,14 @@ IJclWideStrFlatContainer = interface(IJclWideStrContainer) ['{5B001B93-CA1C-47A8-98B8-451CCB444930}'] - {procedure LoadFromStrings(Strings: TWideStrings); - procedure SaveToStrings(Strings: TWideStrings); - procedure AppendToStrings(Strings: TWideStrings); - procedure AppendFromStrings(Strings: TWideStrings); - function GetAsStrings: TWideStrings; + procedure LoadFromStrings(Strings: TJclWideStrings); + procedure SaveToStrings(Strings: TJclWideStrings); + procedure AppendToStrings(Strings: TJclWideStrings); + procedure AppendFromStrings(Strings: TJclWideStrings); + function GetAsStrings: TJclWideStrings; function GetAsDelimited(const Separator: WideString = WideLineBreak): WideString; procedure AppendDelimited(const AString: WideString; const Separator: WideString = WideLineBreak); - procedure LoadDelimited(const AString: WideString; const Separator: WideString = WideLineBreak);} + procedure LoadDelimited(const AString: WideString; const Separator: WideString = WideLineBreak); end; {$IFDEF SUPPORTS_UNICODE_STRING} @@ -319,6 +320,14 @@ IJclUnicodeStrFlatContainer = interface(IJclUnicodeStrContainer) ['{3343D73E-4ADC-458E-8289-A4B83D1479D1}'] + procedure LoadFromStrings(Strings: TJclUnicodeStrings); + procedure SaveToStrings(Strings: TJclUnicodeStrings); + procedure AppendToStrings(Strings: TJclUnicodeStrings); + procedure AppendFromStrings(Strings: TJclUnicodeStrings); + function GetAsStrings: TJclUnicodeStrings; + function GetAsDelimited(const Separator: UnicodeString = WideLineBreak): UnicodeString; + procedure AppendDelimited(const AString: UnicodeString; const Separator: UnicodeString = WideLineBreak); + procedure LoadDelimited(const AString: UnicodeString; const Separator: UnicodeString = WideLineBreak); end; {$ENDIF SUPPORTS_UNICODE_STRING} Modified: trunk/jcl/source/common/JclWideStrings.pas =================================================================== --- trunk/jcl/source/common/JclWideStrings.pas 2009-03-15 11:25:33 UTC (rev 2687) +++ trunk/jcl/source/common/JclWideStrings.pas 2009-03-15 11:51:26 UTC (rev 2688) @@ -72,10 +72,17 @@ WideFormFeed = WideChar(#12); WideCR = WideChar(#13); WideCarriageReturn = WideChar(#13); - WideCRLF: WideString = #13#10; + WideCRLF = WideString(#13#10); WideLineSeparator = WideChar($2028); WideParagraphSeparator = WideChar($2029); + {$IFDEF MSWINDOWS} + WideLineBreak = WideCRLF; + {$ENDIF MSWINDOWS} + {$IFDEF UNIX} + WideLineBreak = WideLineFeed; + {$ENDIF UNIX} + BOM_LSB_FIRST = WideChar($FEFF); BOM_MSB_FIRST = WideChar($FFFE); @@ -249,6 +256,9 @@ TWideStringList = TJclWideStringList; TWideStrings = TJclWideStrings; + TJclUnicodeStringList = TJclWideStringList; + TJclUnicodeStrings = TJclWideStrings; + // OF deprecated? TWStringList = TJclWideStringList; TWStrings = TJclWideStrings; Modified: trunk/jcl/source/prototypes/JclContainerIntf.pas =================================================================== --- trunk/jcl/source/prototypes/JclContainerIntf.pas 2009-03-15 11:25:33 UTC (rev 2687) +++ trunk/jcl/source/prototypes/JclContainerIntf.pas 2009-03-15 11:51:26 UTC (rev 2688) @@ -27,7 +27,7 @@ { } {**************************************************************************************************} { } -{ Last modified: $Date:: $ } +{ Last modified: $Date:: $ } { Revision: $Rev:: $ } { Author: $Author:: $ } { } @@ -45,7 +45,8 @@ {$ENDIF UNITVERSIONING} Classes, JclBase, - JclAnsiStrings; + JclAnsiStrings, + JclWideStrings; {$IFDEF BCB6} {$DEFINE BUGGY_DEFAULT_INDEXED_PROP} @@ -298,14 +299,14 @@ IJclWideStrFlatContainer = interface(IJclWideStrContainer) ['{5B001B93-CA1C-47A8-98B8-451CCB444930}'] - {procedure LoadFromStrings(Strings: TWideStrings); - procedure SaveToStrings(Strings: TWideStrings); - procedure AppendToStrings(Strings: TWideStrings); - procedure AppendFromStrings(Strings: TWideStrings); - function GetAsStrings: TWideStrings; + procedure LoadFromStrings(Strings: TJclWideStrings); + procedure SaveToStrings(Strings: TJclWideStrings); + procedure AppendToStrings(Strings: TJclWideStrings); + procedure AppendFromStrings(Strings: TJclWideStrings); + function GetAsStrings: TJclWideStrings; function GetAsDelimited(const Separator: WideString = WideLineBreak): WideString; procedure AppendDelimited(const AString: WideString; const Separator: WideString = WideLineBreak); - procedure LoadDelimited(const AString: WideString; const Separator: WideString = WideLineBreak);} + procedure LoadDelimited(const AString: WideString; const Separator: WideString = WideLineBreak); end; {$IFDEF SUPPORTS_UNICODE_STRING} @@ -315,6 +316,14 @@ IJclUnicodeStrFlatContainer = interface(IJclUnicodeStrContainer) ['{3343D73E-4ADC-458E-8289-A4B83D1479D1}'] + procedure LoadFromStrings(Strings: TJclUnicodeStrings); + procedure SaveToStrings(Strings: TJclUnicodeStrings); + procedure AppendToStrings(Strings: TJclUnicodeStrings); + procedure AppendFromStrings(Strings: TJclUnicodeStrings); + function GetAsStrings: TJclUnicodeStrings; + function GetAsDelimited(const Separator: UnicodeString = WideLineBreak): UnicodeString; + procedure AppendDelimited(const AString: UnicodeString; const Separator: UnicodeString = WideLineBreak); + procedure LoadDelimited(const AString: UnicodeString; const Separator: UnicodeString = WideLineBreak); end; {$ENDIF SUPPORTS_UNICODE_STRING} This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ou...@us...> - 2009-03-15 11:25:41
|
Revision: 2687 http://jcl.svn.sourceforge.net/jcl/?rev=2687&view=rev Author: outchy Date: 2009-03-15 11:25:33 +0000 (Sun, 15 Mar 2009) Log Message: ----------- Renamed string-related classes to JCL ones. Old names are now defined as type aliases. Modified Paths: -------------- trunk/jcl/source/common/JclAbstractContainers.pas trunk/jcl/source/common/JclAnsiStrings.pas trunk/jcl/source/common/JclContainerIntf.pas trunk/jcl/source/common/JclStrings.pas trunk/jcl/source/common/JclWideStrings.pas trunk/jcl/source/prototypes/JclContainerIntf.pas trunk/jcl/source/windows/JclDotNet.pas trunk/jcl/source/windows/JclMapi.pas Modified: trunk/jcl/source/common/JclAbstractContainers.pas =================================================================== --- trunk/jcl/source/common/JclAbstractContainers.pas 2009-03-15 11:05:15 UTC (rev 2686) +++ trunk/jcl/source/common/JclAbstractContainers.pas 2009-03-15 11:25:33 UTC (rev 2687) @@ -591,11 +591,11 @@ function GetEnumerator: IJclAnsistrIterator; virtual; abstract; {$ENDIF SUPPORTS_FOR_IN} { IJclAnsiStrFlatContainer } - procedure LoadFromStrings(Strings: TAnsiStrings); - procedure SaveToStrings(Strings: TAnsiStrings); - procedure AppendToStrings(Strings: TAnsiStrings); - procedure AppendFromStrings(Strings: TAnsiStrings); - function GetAsStrings: TAnsiStrings; + procedure LoadFromStrings(Strings: TJclAnsiStrings); + procedure SaveToStrings(Strings: TJclAnsiStrings); + procedure AppendToStrings(Strings: TJclAnsiStrings); + procedure AppendFromStrings(Strings: TJclAnsiStrings); + function GetAsStrings: TJclAnsiStrings; function GetAsDelimited(const Separator: AnsiString = AnsiLineBreak): AnsiString; procedure AppendDelimited(const AString: AnsiString; const Separator: AnsiString = AnsiLineBreak); procedure LoadDelimited(const AString: AnsiString; const Separator: AnsiString = AnsiLineBreak); @@ -2620,7 +2620,7 @@ end; {$ENDIF CLR} -procedure TJclAnsiStrAbstractCollection.AppendFromStrings(Strings: TAnsiStrings); +procedure TJclAnsiStrAbstractCollection.AppendFromStrings(Strings: TJclAnsiStrings); var I: Integer; begin @@ -2628,7 +2628,7 @@ Add(Strings[I]); end; -procedure TJclAnsiStrAbstractCollection.AppendToStrings(Strings: TAnsiStrings); +procedure TJclAnsiStrAbstractCollection.AppendToStrings(Strings: TJclAnsiStrings); var It: IJclAnsiStrIterator; begin @@ -2654,9 +2654,9 @@ Result := Result + Separator + It.Next; end; -function TJclAnsiStrAbstractCollection.GetAsStrings: TAnsiStrings; +function TJclAnsiStrAbstractCollection.GetAsStrings: TJclAnsiStrings; begin - Result := TAnsiStringList.Create; + Result := TJclAnsiStringList.Create; try AppendToStrings(Result); except @@ -2671,13 +2671,13 @@ AppendDelimited(AString, Separator); end; -procedure TJclAnsiStrAbstractCollection.LoadFromStrings(Strings: TAnsiStrings); +procedure TJclAnsiStrAbstractCollection.LoadFromStrings(Strings: TJclAnsiStrings); begin Clear; AppendFromStrings(Strings); end; -procedure TJclAnsiStrAbstractCollection.SaveToStrings(Strings: TAnsiStrings); +procedure TJclAnsiStrAbstractCollection.SaveToStrings(Strings: TJclAnsiStrings); begin Strings.Clear; AppendToStrings(Strings); Modified: trunk/jcl/source/common/JclAnsiStrings.pas =================================================================== --- trunk/jcl/source/common/JclAnsiStrings.pas 2009-03-15 11:05:15 UTC (rev 2686) +++ trunk/jcl/source/common/JclAnsiStrings.pas 2009-03-15 11:25:33 UTC (rev 2687) @@ -79,13 +79,13 @@ type {$IFDEF SUPPORTS_UNICODE} - TAnsiStringList = class; + TJclAnsiStringList = class; // Codegear should be the one providing this class, in the AnsiStrings unit. // It has been requested in QC 65630 but this was closed as "won't do". // So we are providing here a very light implementation that is designed // to provide the basics, and in no way be a "copy/paste" of what is in the RTL. - TAnsiStrings = class(TPersistent) + TJclAnsiStrings = class(TPersistent) private FDelimiter: AnsiChar; FNameValueSeparator: AnsiChar; @@ -120,7 +120,7 @@ function Add(const S: AnsiString): Integer; virtual; function AddObject(const S: AnsiString; AObject: TObject): Integer; virtual; abstract; - procedure AddStrings(Strings: TAnsiStrings); virtual; + procedure AddStrings(Strings: TJclAnsiStrings); virtual; procedure Insert(Index: Integer; const S: AnsiString); virtual; procedure InsertObject(Index: Integer; const S: AnsiString; AObject: TObject); virtual; abstract; procedure Delete(Index: Integer); virtual; abstract; @@ -150,22 +150,22 @@ property NameValueSeparator: AnsiChar read FNameValueSeparator write FNameValueSeparator; end; - TAnsiStringListSortCompare = function(List: TAnsiStringList; Index1, Index2: Integer): Integer; + TJclAnsiStringListSortCompare = function(List: TJclAnsiStringList; Index1, Index2: Integer): Integer; - TAnsiStringObjectHolder = record + TJclAnsiStringObjectHolder = record Str: AnsiString; Obj: TObject; end; - TAnsiStringList = class(TAnsiStrings) + TJclAnsiStringList = class(TJclAnsiStrings) private - FStrings: array of TAnsiStringObjectHolder; + FStrings: array of TJclAnsiStringObjectHolder; FCount: Integer; FDuplicates: TDuplicates; FSorted: Boolean; procedure Grow; - procedure QuickSort(L, R: Integer; SCompare: TAnsiStringListSortCompare); + procedure QuickSort(L, R: Integer; SCompare: TJclAnsiStringListSortCompare); procedure SetSorted(Value: Boolean); protected function GetString(Index: Integer): AnsiString; override; @@ -180,7 +180,7 @@ 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; - procedure CustomSort(Compare: TAnsiStringListSortCompare); virtual; + procedure CustomSort(Compare: TJclAnsiStringListSortCompare); virtual; procedure Sort; virtual; procedure Clear; override; @@ -188,10 +188,13 @@ property Sorted: Boolean read FSorted write SetSorted; end; {$ELSE ~SUPPORTS_UNICODE} - TAnsiStrings = Classes.TStrings; - TAnsiStringList = Classes.TStringList; + TJclAnsiStrings = Classes.TStrings; + TJclAnsiStringList = Classes.TStringList; {$ENDIF ~SUPPORTS_UNICODE} + TAnsiStrings = TJclAnsiStrings; + TAnsiStringList = TJclAnsiStringList; + // Exceptions type EJclAnsiStringError = class(EJclError); @@ -441,31 +444,31 @@ type PCharVector = ^PAnsiChar; -function StringsToPCharVector(var Dest: PCharVector; const Source: TAnsiStrings): PCharVector; +function StringsToPCharVector(var Dest: PCharVector; const Source: TJclAnsiStrings): PCharVector; function PCharVectorCount(Source: PCharVector): Integer; -procedure PCharVectorToStrings(const Dest: TAnsiStrings; Source: PCharVector); +procedure PCharVectorToStrings(const Dest: TJclAnsiStrings; Source: PCharVector); procedure FreePCharVector(var Dest: PCharVector); // MultiSz Routines type PAnsiMultiSz = PAnsiChar; -function StringsToMultiSz(var Dest: PAnsiMultiSz; const Source: TAnsiStrings): PAnsiMultiSz; -procedure MultiSzToStrings(const Dest: TAnsiStrings; const Source: PAnsiMultiSz); +function StringsToMultiSz(var Dest: PAnsiMultiSz; const Source: TJclAnsiStrings): PAnsiMultiSz; +procedure MultiSzToStrings(const Dest: TJclAnsiStrings; const Source: PAnsiMultiSz); function MultiSzLength(const Source: PAnsiMultiSz): Integer; procedure AllocateMultiSz(var Dest: PAnsiMultiSz; Len: Integer); procedure FreeMultiSz(var Dest: PAnsiMultiSz); function MultiSzDup(const Source: PAnsiMultiSz): PAnsiMultiSz; {$ENDIF ~CLR} -// TAnsiStrings Manipulation -procedure StrIToStrings(S, Sep: AnsiString; const List: TAnsiStrings; const AllowEmptyString: Boolean = True); -procedure StrToStrings(S, Sep: AnsiString; const List: TAnsiStrings; const AllowEmptyString: Boolean = True); -function StringsToStr(const List: TAnsiStrings; const Sep: AnsiString; const AllowEmptyString: Boolean = True): AnsiString; -procedure TrimStrings(const List: TAnsiStrings; DeleteIfEmpty: Boolean = True); -procedure TrimStringsRight(const List: TAnsiStrings; DeleteIfEmpty: Boolean = True); -procedure TrimStringsLeft(const List: TAnsiStrings; DeleteIfEmpty: Boolean = True); -function AddStringToStrings(const S: AnsiString; Strings: TAnsiStrings; const Unique: Boolean): Boolean; +// TJclAnsiStrings Manipulation +procedure StrIToStrings(S, Sep: AnsiString; const List: TJclAnsiStrings; const AllowEmptyString: Boolean = True); +procedure StrToStrings(S, Sep: AnsiString; const List: TJclAnsiStrings; const AllowEmptyString: Boolean = True); +function StringsToStr(const List: TJclAnsiStrings; const Sep: AnsiString; const AllowEmptyString: Boolean = True): AnsiString; +procedure TrimStrings(const List: TJclAnsiStrings; DeleteIfEmpty: Boolean = True); +procedure TrimStringsRight(const List: TJclAnsiStrings; DeleteIfEmpty: Boolean = True); +procedure TrimStringsLeft(const List: TJclAnsiStrings; DeleteIfEmpty: Boolean = True); +function AddStringToStrings(const S: AnsiString; Strings: TJclAnsiStrings; const Unique: Boolean): Boolean; // Miscellaneous {$IFDEF KEEP_DEPRECATED} @@ -475,8 +478,8 @@ procedure StringToFile(const FileName: TFileName; const Contents: AnsiString; Append: Boolean = False); function StrToken(var S: AnsiString; Separator: AnsiChar): AnsiString; {$IFNDEF CLR} -procedure StrTokens(const S: AnsiString; const List: TAnsiStrings); -procedure StrTokenToStrings(S: AnsiString; Separator: AnsiChar; const List: TAnsiStrings); +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; {$ENDIF ~CLR} function StrToFloatSafe(const S: AnsiString): Float; @@ -484,7 +487,7 @@ procedure StrNormIndex(const StrLen: Integer; var Index: Integer; var Count: Integer); overload; {$IFDEF CLR} -function ArrayOf(List: TAnsiStrings): TDynStringArray; overload; +function ArrayOf(List: TJclAnsiStrings): TDynStringArray; overload; {$ENDIF CLR} function AnsiCompareNaturalStr(const S1, S2: AnsiString): Integer; @@ -849,9 +852,9 @@ {$ENDIF ~CLR} {$IFDEF SUPPORTS_UNICODE} -{ TAnsiStrings } +{ TJclAnsiStrings } -constructor TAnsiStrings.Create; +constructor TJclAnsiStrings.Create; begin inherited Create; @@ -859,16 +862,16 @@ FNameValueSeparator := '='; end; -procedure TAnsiStrings.Assign(Source: TPersistent); +procedure TJclAnsiStrings.Assign(Source: TPersistent); begin - if Source is TAnsiStrings then + if Source is TJclAnsiStrings then begin BeginUpdate; try Clear; - FNameValueSeparator := TAnsiStrings(Source).FNameValueSeparator; - FDelimiter := TAnsiStrings(Source).FDelimiter; - AddStrings(TAnsiStrings(Source)); + FNameValueSeparator := TJclAnsiStrings(Source).FNameValueSeparator; + FDelimiter := TJclAnsiStrings(Source).FDelimiter; + AddStrings(TJclAnsiStrings(Source)); finally EndUpdate; end; @@ -877,12 +880,12 @@ inherited Assign(Source); end; -function TAnsiStrings.Add(const S: AnsiString): Integer; +function TJclAnsiStrings.Add(const S: AnsiString): Integer; begin Result := AddObject(S, nil); end; -procedure TAnsiStrings.AddStrings(Strings: TAnsiStrings); +procedure TJclAnsiStrings.AddStrings(Strings: TJclAnsiStrings); var I: Integer; begin @@ -890,29 +893,29 @@ Add(Strings.Strings[I]); end; -procedure TAnsiStrings.Error(const Msg: string; Data: Integer); +procedure TJclAnsiStrings.Error(const Msg: string; Data: Integer); begin raise EJclAnsiStringListError.CreateFmt(Msg, [Data]); end; -procedure TAnsiStrings.Error(Msg: PResStringRec; Data: Integer); +procedure TJclAnsiStrings.Error(Msg: PResStringRec; Data: Integer); begin Error(LoadResString(Msg), Data); end; -function TAnsiStrings.CompareStrings(const S1, S2: AnsiString): Integer; +function TJclAnsiStrings.CompareStrings(const S1, S2: AnsiString): Integer; begin Result := CompareStr(S1, S2); end; -function TAnsiStrings.IndexOf(const S: AnsiString): Integer; +function TJclAnsiStrings.IndexOf(const S: AnsiString): Integer; begin for Result := 0 to Count - 1 do if CompareStrings(Strings[Result], S) = 0 then Exit; Result := -1; end; -function TAnsiStrings.IndexOfName(const Name: AnsiString): Integer; +function TJclAnsiStrings.IndexOfName(const Name: AnsiString): Integer; var P: Integer; S: AnsiString; @@ -926,14 +929,14 @@ Result := -1; end; -function TAnsiStrings.IndexOfObject(AObject: TObject): Integer; +function TJclAnsiStrings.IndexOfObject(AObject: TObject): Integer; begin for Result := 0 to GetCount - 1 do if GetObject(Result) = AObject then Exit; Result := -1; end; -procedure TAnsiStrings.Exchange(Index1, Index2: Integer); +procedure TJclAnsiStrings.Exchange(Index1, Index2: Integer); var TempString: AnsiString; begin @@ -947,7 +950,7 @@ end; end; -function TAnsiStrings.GetDelimitedText: AnsiString; +function TJclAnsiStrings.GetDelimitedText: AnsiString; var I: Integer; begin @@ -958,12 +961,12 @@ Result := Result + Strings[Count - 1]; end; -procedure TAnsiStrings.Insert(Index: Integer; const S: AnsiString); +procedure TJclAnsiStrings.Insert(Index: Integer; const S: AnsiString); begin InsertObject(Index, S, nil); end; -procedure TAnsiStrings.SetDelimitedText(const Value: AnsiString); +procedure TJclAnsiStrings.SetDelimitedText(const Value: AnsiString); var LastStart: Integer; Index: Integer; @@ -980,7 +983,7 @@ end; end; -function TAnsiStrings.GetText: AnsiString; +function TJclAnsiStrings.GetText: AnsiString; var I: Integer; begin @@ -991,7 +994,7 @@ Result := Result + Strings[Count - 1]; end; -procedure TAnsiStrings.SetText(const Value: AnsiString); +procedure TJclAnsiStrings.SetText(const Value: AnsiString); var Index, Start, Len: Integer; S: AnsiString; @@ -1018,25 +1021,25 @@ end; end; -function TAnsiStrings.GetCapacity: Integer; +function TJclAnsiStrings.GetCapacity: Integer; begin Result := Count; // Might be overridden in derived classes end; -procedure TAnsiStrings.SetCapacity(const Value: Integer); +procedure TJclAnsiStrings.SetCapacity(const Value: Integer); begin // Nothing at this level end; -procedure TAnsiStrings.BeginUpdate; +procedure TJclAnsiStrings.BeginUpdate; begin end; -procedure TAnsiStrings.EndUpdate; +procedure TJclAnsiStrings.EndUpdate; begin end; -procedure TAnsiStrings.LoadFromFile(const FileName: string); +procedure TJclAnsiStrings.LoadFromFile(const FileName: string); var Stream: TStream; begin @@ -1048,7 +1051,7 @@ end; end; -procedure TAnsiStrings.LoadFromStream(Stream: TStream); +procedure TJclAnsiStrings.LoadFromStream(Stream: TStream); var Size: Integer; S: AnsiString; @@ -1064,7 +1067,7 @@ end; end; -procedure TAnsiStrings.SaveToFile(const FileName: string); +procedure TJclAnsiStrings.SaveToFile(const FileName: string); var Stream: TStream; begin @@ -1076,7 +1079,7 @@ end; end; -procedure TAnsiStrings.SaveToStream(Stream: TStream); +procedure TJclAnsiStrings.SaveToStream(Stream: TStream); var S: AnsiString; begin @@ -1084,7 +1087,7 @@ Stream.WriteBuffer(Pointer(S)^, Length(S)); end; -function TAnsiStrings.ExtractName(const S: AnsiString): AnsiString; +function TJclAnsiStrings.ExtractName(const S: AnsiString): AnsiString; var P: Integer; begin @@ -1096,12 +1099,12 @@ SetLength(Result, 0); end; -function TAnsiStrings.GetName(Index: Integer): AnsiString; +function TJclAnsiStrings.GetName(Index: Integer): AnsiString; begin Result := ExtractName(GetString(Index)); end; -function TAnsiStrings.GetValue(const Name: AnsiString): AnsiString; +function TJclAnsiStrings.GetValue(const Name: AnsiString): AnsiString; var I: Integer; begin @@ -1112,7 +1115,7 @@ Result := ''; end; -procedure TAnsiStrings.SetValue(const Name, Value: AnsiString); +procedure TJclAnsiStrings.SetValue(const Name, Value: AnsiString); var I: Integer; begin @@ -1130,7 +1133,7 @@ end; end; -function TAnsiStrings.GetValueFromIndex(Index: Integer): AnsiString; +function TJclAnsiStrings.GetValueFromIndex(Index: Integer): AnsiString; begin if Index >= 0 then Result := Copy(GetString(Index), Length(Names[Index]) + 2, MaxInt) @@ -1138,7 +1141,7 @@ Result := ''; end; -procedure TAnsiStrings.SetValueFromIndex(Index: Integer; const Value: AnsiString); +procedure TJclAnsiStrings.SetValueFromIndex(Index: Integer; const Value: AnsiString); begin if Value <> '' then begin @@ -1151,9 +1154,9 @@ end; end; -{ TAnsiStringList } +{ TJclAnsiStringList } -procedure TAnsiStringList.Grow; +procedure TJclAnsiStringList.Grow; var Delta: Integer; begin @@ -1167,7 +1170,7 @@ SetCapacity(Capacity + Delta); end; -function TAnsiStringList.GetString(Index: Integer): AnsiString; +function TJclAnsiStringList.GetString(Index: Integer): AnsiString; begin if (Index < 0) or (Index >= FCount) then Error(@SListIndexError, Index); @@ -1175,7 +1178,7 @@ Result := FStrings[Index].Str; end; -procedure TAnsiStringList.SetString(Index: Integer; const Value: AnsiString); +procedure TJclAnsiStringList.SetString(Index: Integer; const Value: AnsiString); begin if Sorted then Error(@SSortedListError, 0); @@ -1186,7 +1189,7 @@ FStrings[Index].Str := Value; end; -function TAnsiStringList.GetObject(Index: Integer): TObject; +function TJclAnsiStringList.GetObject(Index: Integer): TObject; begin if (Index < 0) or (Index >= FCount) then Error(@SListIndexError, Index); @@ -1194,7 +1197,7 @@ Result := FStrings[Index].Obj; end; -procedure TAnsiStringList.SetObject(Index: Integer; AObject: TObject); +procedure TJclAnsiStringList.SetObject(Index: Integer; AObject: TObject); begin if (Index < 0) or (Index >= FCount) then Error(@SListIndexError, Index); @@ -1202,12 +1205,12 @@ FStrings[Index].Obj := AObject; end; -function TAnsiStringList.GetCapacity: Integer; +function TJclAnsiStringList.GetCapacity: Integer; begin Result := Length(FStrings); end; -procedure TAnsiStringList.SetCapacity(const Value: Integer); +procedure TJclAnsiStringList.SetCapacity(const Value: Integer); begin if (Value < FCount) then Error(@SListCapacityError, Value); @@ -1216,12 +1219,12 @@ SetLength(FStrings, Value); end; -function TAnsiStringList.GetCount: Integer; +function TJclAnsiStringList.GetCount: Integer; begin Result := FCount; end; -procedure TAnsiStringList.InsertObject(Index: Integer; const S: AnsiString; AObject: TObject); +procedure TJclAnsiStringList.InsertObject(Index: Integer; const S: AnsiString; AObject: TObject); var I: Integer; begin @@ -1236,7 +1239,7 @@ Inc(FCount); end; -function TAnsiStringList.AddObject(const S: AnsiString; AObject: TObject): Integer; +function TJclAnsiStringList.AddObject(const S: AnsiString; AObject: TObject): Integer; begin if not Sorted then begin @@ -1254,7 +1257,7 @@ InsertObject(Result, S, AObject); end; -procedure TAnsiStringList.Delete(Index: Integer); +procedure TJclAnsiStringList.Delete(Index: Integer); var I: Integer; begin @@ -1265,7 +1268,7 @@ FStrings[Index] := FStrings[Index + 1]; end; -procedure TAnsiStringList.Clear; +procedure TJclAnsiStringList.Clear; var I: Integer; begin @@ -1277,7 +1280,7 @@ end; end; -function TAnsiStringList.Find(const S: AnsiString; var Index: Integer): Boolean; +function TJclAnsiStringList.Find(const S: AnsiString; var Index: Integer): Boolean; var L, H, I, C: Integer; begin @@ -1301,24 +1304,24 @@ Index := L; end; -function AnsiStringListCompareStrings(List: TAnsiStringList; Index1, Index2: Integer): Integer; +function AnsiStringListCompareStrings(List: TJclAnsiStringList; Index1, Index2: Integer): Integer; begin Result := List.CompareStrings(List.FStrings[Index1].Str, List.FStrings[Index2].Str); end; -procedure TAnsiStringList.Sort; +procedure TJclAnsiStringList.Sort; begin CustomSort(AnsiStringListCompareStrings); end; -procedure TAnsiStringList.CustomSort(Compare: TAnsiStringListSortCompare); +procedure TJclAnsiStringList.CustomSort(Compare: TJclAnsiStringListSortCompare); begin if not Sorted and (FCount > 1) then QuickSort(0, FCount - 1, Compare); end; -procedure TAnsiStringList.QuickSort(L, R: Integer; SCompare: TAnsiStringListSortCompare); +procedure TJclAnsiStringList.QuickSort(L, R: Integer; SCompare: TJclAnsiStringListSortCompare); var I, J, P: Integer; begin @@ -1346,7 +1349,7 @@ until I >= R; end; -procedure TAnsiStringList.SetSorted(Value: Boolean); +procedure TJclAnsiStringList.SetSorted(Value: Boolean); begin if FSorted <> Value then begin @@ -3835,7 +3838,7 @@ {$IFNDEF CLR} //=== PCharVector ============================================================ -function StringsToPCharVector(var Dest: PCharVector; const Source: TAnsiStrings): PCharVector; +function StringsToPCharVector(var Dest: PCharVector; const Source: TJclAnsiStrings): PCharVector; var I: Integer; S: AnsiString; @@ -3875,7 +3878,7 @@ end; end; -procedure PCharVectorToStrings(const Dest: TAnsiStrings; Source: PCharVector); +procedure PCharVectorToStrings(const Dest: TJclAnsiStrings; Source: PCharVector); var I, Count: Integer; List: array of PAnsiChar; @@ -4018,7 +4021,7 @@ {$IFNDEF CLR} //=== MultiSz ================================================================ -function StringsToMultiSz(var Dest: PAnsiMultiSz; const Source: TAnsiStrings): PAnsiMultiSz; +function StringsToMultiSz(var Dest: PAnsiMultiSz; const Source: TJclAnsiStrings): PAnsiMultiSz; var I, TotalLength: Integer; P: PAnsiMultiSz; @@ -4041,7 +4044,7 @@ Result := Dest; end; -procedure MultiSzToStrings(const Dest: TAnsiStrings; const Source: PAnsiMultiSz); +procedure MultiSzToStrings(const Dest: TJclAnsiStrings; const Source: PAnsiMultiSz); var P: PAnsiMultiSz; begin @@ -4111,9 +4114,9 @@ end; {$ENDIF ~CLR} -//=== TAnsiStrings Manipulation =============================================== +//=== TJclAnsiStrings Manipulation =============================================== -procedure StrToStrings(S, Sep: AnsiString; const List: TAnsiStrings; const AllowEmptyString: Boolean = True); +procedure StrToStrings(S, Sep: AnsiString; const List: TJclAnsiStrings; const AllowEmptyString: Boolean = True); var I, L: Integer; Left: AnsiString; @@ -4139,7 +4142,7 @@ end; end; -procedure StrIToStrings(S, Sep: AnsiString; const List: TAnsiStrings; const AllowEmptyString: Boolean = True); +procedure StrIToStrings(S, Sep: AnsiString; const List: TJclAnsiStrings; const AllowEmptyString: Boolean = True); var I, L: Integer; LowerCaseStr: AnsiString; @@ -4169,7 +4172,7 @@ end; end; -function StringsToStr(const List: TAnsiStrings; const Sep: AnsiString; +function StringsToStr(const List: TJclAnsiStrings; const Sep: AnsiString; const AllowEmptyString: Boolean): AnsiString; var I, L: Integer; @@ -4192,7 +4195,7 @@ end; end; -procedure TrimStrings(const List: TAnsiStrings; DeleteIfEmpty: Boolean); +procedure TrimStrings(const List: TJclAnsiStrings; DeleteIfEmpty: Boolean); var I: Integer; begin @@ -4210,7 +4213,7 @@ end; end; -procedure TrimStringsRight(const List: TAnsiStrings; DeleteIfEmpty: Boolean); +procedure TrimStringsRight(const List: TJclAnsiStrings; DeleteIfEmpty: Boolean); var I: Integer; begin @@ -4228,7 +4231,7 @@ end; end; -procedure TrimStringsLeft(const List: TAnsiStrings; DeleteIfEmpty: Boolean); +procedure TrimStringsLeft(const List: TJclAnsiStrings; DeleteIfEmpty: Boolean); var I: Integer; begin @@ -4246,7 +4249,7 @@ end; end; -function AddStringToStrings(const S: AnsiString; Strings: TAnsiStrings; const Unique: Boolean): Boolean; +function AddStringToStrings(const S: AnsiString; Strings: TJclAnsiStrings; const Unique: Boolean): Boolean; begin Assert(Strings <> nil); Result := Unique and (Strings.IndexOf(S) <> -1); @@ -4335,7 +4338,7 @@ {$IFNDEF CLR} -procedure StrTokens(const S: AnsiString; const List: TAnsiStrings); +procedure StrTokens(const S: AnsiString; const List: TJclAnsiStrings); var Start: PAnsiChar; Token: AnsiString; @@ -4359,7 +4362,7 @@ end; end; -procedure StrTokenToStrings(S: AnsiString; Separator: AnsiChar; const List: TAnsiStrings); +procedure StrTokenToStrings(S: AnsiString; Separator: AnsiChar; const List: TJclAnsiStrings); var Token: AnsiString; begin @@ -4506,7 +4509,7 @@ end; {$IFDEF CLR} -function ArrayOf(List: TAnsiStrings): TDynStringArray; +function ArrayOf(List: TJclAnsiStrings): TDynStringArray; var I: Integer; begin Modified: trunk/jcl/source/common/JclContainerIntf.pas =================================================================== --- trunk/jcl/source/common/JclContainerIntf.pas 2009-03-15 11:05:15 UTC (rev 2686) +++ trunk/jcl/source/common/JclContainerIntf.pas 2009-03-15 11:25:33 UTC (rev 2687) @@ -281,11 +281,11 @@ IJclAnsiStrFlatContainer = interface(IJclAnsiStrContainer) ['{8A45A4D4-6317-4CDF-8314-C3E5CC6899F4}'] - procedure LoadFromStrings(Strings: TAnsiStrings); - procedure SaveToStrings(Strings: TAnsiStrings); - procedure AppendToStrings(Strings: TAnsiStrings); - procedure AppendFromStrings(Strings: TAnsiStrings); - function GetAsStrings: TAnsiStrings; + procedure LoadFromStrings(Strings: TJclAnsiStrings); + procedure SaveToStrings(Strings: TJclAnsiStrings); + procedure AppendToStrings(Strings: TJclAnsiStrings); + procedure AppendFromStrings(Strings: TJclAnsiStrings); + function GetAsStrings: TJclAnsiStrings; function GetAsDelimited(const Separator: AnsiString = AnsiLineBreak): AnsiString; procedure AppendDelimited(const AString: AnsiString; const Separator: AnsiString = AnsiLineBreak); procedure LoadDelimited(const AString: AnsiString; const Separator: AnsiString = AnsiLineBreak); Modified: trunk/jcl/source/common/JclStrings.pas =================================================================== --- trunk/jcl/source/common/JclStrings.pas 2009-03-15 11:05:15 UTC (rev 2686) +++ trunk/jcl/source/common/JclStrings.pas 2009-03-15 11:25:33 UTC (rev 2687) @@ -338,10 +338,10 @@ PAnsiMultiSz = JclAnsiStrings.PAnsiMultiSz; PWideMultiSz = JclWideStrings.PWideMultiSz; - TAnsiStrings = JclAnsiStrings.TAnsiStrings; - TWideStrings = JclWideStrings.TWideStrings; - TAnsiStringList = JclAnsiStrings.TAnsiStringList; - TWideStringList = JclWideStrings.TWideStringList; + TAnsiStrings = JclAnsiStrings.TJclAnsiStrings; + TWideStrings = JclWideStrings.TJclWideStrings; + TAnsiStringList = JclAnsiStrings.TJclAnsiStringList; + TWideStringList = JclWideStrings.TJclWideStringList; function StringsToMultiSz(var Dest: PMultiSz; const Source: TStrings): PMultiSz; procedure MultiSzToStrings(const Dest: TStrings; const Source: PMultiSz); Modified: trunk/jcl/source/common/JclWideStrings.pas =================================================================== --- trunk/jcl/source/common/JclWideStrings.pas 2009-03-15 11:05:15 UTC (rev 2686) +++ trunk/jcl/source/common/JclWideStrings.pas 2009-03-15 11:25:33 UTC (rev 2687) @@ -81,8 +81,8 @@ type {$IFDEF SUPPORTS_UNICODE} - TWStrings = TStrings; - TWStringList = TStringList; + TJclWideStrings = Classes.TStrings; + TJclWideStringList = Classes.TStringList; {$ELSE ~SUPPORTS_UNICODE} TWideFileOptionsType = @@ -101,12 +101,12 @@ ); TSearchFlags = set of TSearchFlag; - TWStrings = class; - TWStringList = class; + TJclWideStrings = class; + TJclWideStringList = class; - TWStringListSortCompare = function(List: TWStringList; Index1, Index2: Integer): Integer; + TJclWideStringListSortCompare = function(List: TJclWideStringList; Index1, Index2: Integer): Integer; - TWStrings = class(TPersistent) + TJclWideStrings = class(TPersistent) private FDelimiter: WideChar; FQuoteChar: WideChar; @@ -146,7 +146,7 @@ function Add(const S: WideString): Integer; virtual; function AddObject(const S: WideString; AObject: TObject): Integer; virtual; procedure Append(const S: WideString); - procedure AddStrings(Strings: TWStrings); overload; virtual; + procedure AddStrings(Strings: TJclWideStrings); overload; virtual; procedure AddStrings(Strings: TStrings); overload; virtual; procedure Assign(Source: TPersistent); override; function CreateAnsiStringList: TStrings; @@ -155,7 +155,7 @@ procedure Clear; virtual; abstract; procedure Delete(Index: Integer); virtual; abstract; procedure EndUpdate; - function Equals(Strings: TWStrings): Boolean; {$IFDEF RTL200_UP}reintroduce; {$ENDIF RTL200_UP}overload; + function Equals(Strings: TJclWideStrings): Boolean; {$IFDEF RTL200_UP}reintroduce; {$ENDIF RTL200_UP}overload; function Equals(Strings: TStrings): Boolean; {$IFDEF RTL200_UP}reintroduce; {$ENDIF RTL200_UP}overload; procedure Exchange(Index1, Index2: Integer); virtual; function GetText: PWideChar; virtual; @@ -201,7 +201,7 @@ FObject: TObject; end; - TWStringList = class(TWStrings) + TJclWideStringList = class(TJclWideStrings) private FList: TList; FSorted: Boolean; @@ -237,7 +237,7 @@ procedure InsertObject(Index: Integer; const S: WideString; AObject: TObject); override; procedure Sort; virtual; - procedure CustomSort(Compare: TWStringListSortCompare); virtual; + procedure CustomSort(Compare: TJclWideStringListSortCompare); virtual; property Duplicates: TDuplicates read FDuplicates write FDuplicates; property Sorted: Boolean read FSorted write SetSorted; property CaseSensitive: Boolean read FCaseSensitive write SetCaseSensitive; @@ -246,9 +246,13 @@ end; {$ENDIF ~SUPPORTS_UNICODE} - TWideStringList = TWStringList; - TWideStrings = TWStrings; + TWideStringList = TJclWideStringList; + TWideStrings = TJclWideStrings; + // OF deprecated? + TWStringList = TJclWideStringList; + TWStrings = TJclWideStrings; + // WideChar functions function CharToWideChar(Ch: AnsiChar): WideChar; function WideCharToChar(Ch: WideChar): AnsiChar; @@ -313,8 +317,8 @@ type PWideMultiSz = PWideChar; -function StringsToMultiSz(var Dest: PWideMultiSz; const Source: TWideStrings): PWideMultiSz; -procedure MultiSzToStrings(const Dest: TWideStrings; const Source: PWideMultiSz); +function StringsToMultiSz(var Dest: PWideMultiSz; const Source: TJclWideStrings): PWideMultiSz; +procedure MultiSzToStrings(const Dest: TJclWideStrings; const Source: PWideMultiSz); function MultiSzLength(const Source: PWideMultiSz): Integer; procedure AllocateMultiSz(var Dest: PWideMultiSz; Len: Integer); procedure FreeMultiSz(var Dest: PWideMultiSz); @@ -1094,9 +1098,9 @@ {$ENDIF ~FPC} {$IFNDEF SUPPORTS_UNICODE} -//=== { TWStrings } ========================================================== +//=== { TJclWideStrings } ========================================================== -constructor TWStrings.Create; +constructor TJclWideStrings.Create; begin inherited Create; // FLineSeparator := WideChar($2028); @@ -1111,18 +1115,18 @@ FQuoteChar := '"'; end; -function TWStrings.Add(const S: WideString): Integer; +function TJclWideStrings.Add(const S: WideString): Integer; begin Result := AddObject(S, nil); end; -function TWStrings.AddObject(const S: WideString; AObject: TObject): Integer; +function TJclWideStrings.AddObject(const S: WideString; AObject: TObject): Integer; begin Result := Count; InsertObject(Result, S, AObject); end; -procedure TWStrings.AddStrings(Strings: TWStrings); +procedure TJclWideStrings.AddStrings(Strings: TJclWideStrings); var I: Integer; begin @@ -1130,7 +1134,7 @@ AddObject(Strings.GetP(I)^, Strings.Objects[I]); end; -procedure TWStrings.AddStrings(Strings: TStrings); +procedure TJclWideStrings.AddStrings(Strings: TStrings); var I: Integer; begin @@ -1138,7 +1142,7 @@ AddObject(Strings.Strings[I], Strings.Objects[I]); end; -procedure TWStrings.AddStringsTo(Dest: TStrings); +procedure TJclWideStrings.AddStringsTo(Dest: TStrings); var I: Integer; begin @@ -1146,22 +1150,22 @@ Dest.AddObject(GetP(I)^, Objects[I]); end; -procedure TWStrings.Append(const S: WideString); +procedure TJclWideStrings.Append(const S: WideString); begin Add(S); end; -procedure TWStrings.Assign(Source: TPersistent); +procedure TJclWideStrings.Assign(Source: TPersistent); begin - if Source is TWStrings then + if Source is TJclWideStrings then begin BeginUpdate; try Clear; - FDelimiter := TWStrings(Source).FDelimiter; - FNameValueSeparator := TWStrings(Source).FNameValueSeparator; - FQuoteChar := TWStrings(Source).FQuoteChar; - AddStrings(TWStrings(Source)); + FDelimiter := TJclWideStrings(Source).FDelimiter; + FNameValueSeparator := TJclWideStrings(Source).FNameValueSeparator; + FQuoteChar := TJclWideStrings(Source).FQuoteChar; + AddStrings(TJclWideStrings(Source)); finally EndUpdate; end; @@ -1194,7 +1198,7 @@ inherited Assign(Source); end; -procedure TWStrings.AssignTo(Dest: TPersistent); +procedure TJclWideStrings.AssignTo(Dest: TPersistent); var I: Integer; begin @@ -1226,19 +1230,19 @@ inherited AssignTo(Dest); end; -procedure TWStrings.BeginUpdate; +procedure TJclWideStrings.BeginUpdate; begin if FUpdateCount = 0 then SetUpdateState(True); Inc(FUpdateCount); end; -function TWStrings.CompareStrings(const S1, S2: WideString): Integer; +function TJclWideStrings.CompareStrings(const S1, S2: WideString): Integer; begin Result := WideCompareText(S1, S2); end; -function TWStrings.CreateAnsiStringList: TStrings; +function TJclWideStrings.CreateAnsiStringList: TStrings; var I: Integer; begin @@ -1254,15 +1258,15 @@ end; end; -procedure TWStrings.DefineProperties(Filer: TFiler); +procedure TJclWideStrings.DefineProperties(Filer: TFiler); function DoWrite: Boolean; begin if Filer.Ancestor <> nil then begin Result := True; - if Filer.Ancestor is TWStrings then - Result := not Equals(TWStrings(Filer.Ancestor)) + if Filer.Ancestor is TJclWideStrings then + Result := not Equals(TJclWideStrings(Filer.Ancestor)) end else Result := Count > 0; @@ -1272,14 +1276,14 @@ Filer.DefineProperty('Strings', ReadData, WriteData, DoWrite); end; -procedure TWStrings.EndUpdate; +procedure TJclWideStrings.EndUpdate; begin Dec(FUpdateCount); if FUpdateCount = 0 then SetUpdateState(False); end; -function TWStrings.Equals(Strings: TStrings): Boolean; +function TJclWideStrings.Equals(Strings: TStrings): Boolean; var I: Integer; begin @@ -1293,7 +1297,7 @@ end; end; -function TWStrings.Equals(Strings: TWStrings): Boolean; +function TJclWideStrings.Equals(Strings: TJclWideStrings): Boolean; var I: Integer; begin @@ -1307,7 +1311,7 @@ end; end; -procedure TWStrings.Exchange(Index1, Index2: Integer); +procedure TJclWideStrings.Exchange(Index1, Index2: Integer); var TempObject: TObject; TempString: WideString; @@ -1325,7 +1329,7 @@ end; end; -function TWStrings.ExtractName(const S: WideString): WideString; +function TJclWideStrings.ExtractName(const S: WideString): WideString; var Index: Integer; begin @@ -1337,27 +1341,27 @@ SetLength(Result, 0); end; -function TWStrings.Get(Index: Integer): WideString; +function TJclWideStrings.Get(Index: Integer): WideString; begin Result := GetP(Index)^; end; -function TWStrings.GetCapacity: Integer; +function TJclWideStrings.GetCapacity: Integer; begin Result := Count; end; -function TWStrings.GetCommaText: WideString; +function TJclWideStrings.GetCommaText: WideString; begin Result := GetDelimitedTextEx(',', '"'); end; -function TWStrings.GetDelimitedText: WideString; +function TJclWideStrings.GetDelimitedText: WideString; begin Result := GetDelimitedTextEx(FDelimiter, FQuoteChar); end; -function TWStrings.GetDelimitedTextEx(ADelimiter, AQuoteChar: WideChar): WideString; +function TJclWideStrings.GetDelimitedTextEx(ADelimiter, AQuoteChar: WideChar): WideString; var S: WideString; P: PWideChar; @@ -1393,7 +1397,7 @@ end; end; -function TWStrings.GetName(Index: Integer): WideString; +function TJclWideStrings.GetName(Index: Integer): WideString; var I: Integer; begin @@ -1403,17 +1407,17 @@ SetLength(Result, I - 1); end; -function TWStrings.GetObject(Index: Integer): TObject; +function TJclWideStrings.GetObject(Index: Integer): TObject; begin Result := nil; end; -function TWStrings.GetText: PWideChar; +function TJclWideStrings.GetText: PWideChar; begin Result := StrNewW(GetTextStr); end; -function TWStrings.GetTextStr: WideString; +function TJclWideStrings.GetTextStr: WideString; var I: Integer; Len, LL: Integer; @@ -1443,7 +1447,7 @@ end; end; -function TWStrings.GetValue(const Name: WideString): WideString; +function TJclWideStrings.GetValue(const Name: WideString): WideString; var Idx: Integer; begin @@ -1454,7 +1458,7 @@ Result := ''; end; -function TWStrings.GetValueFromIndex(Index: Integer): WideString; +function TJclWideStrings.GetValueFromIndex(Index: Integer): WideString; var I: Integer; begin @@ -1466,7 +1470,7 @@ Result := ''; end; -function TWStrings.IndexOf(const S: WideString): Integer; +function TJclWideStrings.IndexOf(const S: WideString): Integer; begin for Result := 0 to Count - 1 do if CompareStrings(GetP(Result)^, S) = 0 then @@ -1474,7 +1478,7 @@ Result := -1; end; -function TWStrings.IndexOfName(const Name: WideString): Integer; +function TJclWideStrings.IndexOfName(const Name: WideString): Integer; begin for Result := 0 to Count - 1 do if CompareStrings(Names[Result], Name) = 0 then @@ -1482,7 +1486,7 @@ Result := -1; end; -function TWStrings.IndexOfObject(AObject: TObject): Integer; +function TJclWideStrings.IndexOfObject(AObject: TObject): Integer; begin for Result := 0 to Count - 1 do if Objects[Result] = AObject then @@ -1490,16 +1494,16 @@ Result := -1; end; -procedure TWStrings.Insert(Index: Integer; const S: WideString); +procedure TJclWideStrings.Insert(Index: Integer; const S: WideString); begin InsertObject(Index, S, nil); end; -procedure TWStrings.InsertObject(Index: Integer; const S: WideString; AObject: TObject); +procedure TJclWideStrings.InsertObject(Index: Integer; const S: WideString; AObject: TObject); begin end; -procedure TWStrings.LoadFromFile(const FileName: string; +procedure TJclWideStrings.LoadFromFile(const FileName: string; WideFileOptions: TWideFileOptions = []); var Stream: TFileStream; @@ -1512,7 +1516,7 @@ end; end; -procedure TWStrings.LoadFromStream(Stream: TStream; +procedure TJclWideStrings.LoadFromStream(Stream: TStream; WideFileOptions: TWideFileOptions = []); var AnsiS: AnsiString; @@ -1545,7 +1549,7 @@ end; end; -procedure TWStrings.Move(CurIndex, NewIndex: Integer); +procedure TJclWideStrings.Move(CurIndex, NewIndex: Integer); var TempObject: TObject; TempString: WideString; @@ -1564,7 +1568,7 @@ end; end; -procedure TWStrings.ReadData(Reader: TReader); +procedure TJclWideStrings.ReadData(Reader: TReader); begin BeginUpdate; try @@ -1581,7 +1585,7 @@ end; end; -procedure TWStrings.SaveToFile(const FileName: string; WideFileOptions: TWideFileOptions = []); +procedure TJclWideStrings.SaveToFile(const FileName: string; WideFileOptions: TWideFileOptions = []); var Stream: TFileStream; begin @@ -1593,7 +1597,7 @@ end; end; -procedure TWStrings.SaveToStream(Stream: TStream; WideFileOptions: TWideFileOptions = []); +procedure TJclWideStrings.SaveToStream(Stream: TStream; WideFileOptions: TWideFileOptions = []); var AnsiS: AnsiString; WideS: WideString; @@ -1616,21 +1620,21 @@ end; end; -procedure TWStrings.SetCapacity(NewCapacity: Integer); +procedure TJclWideStrings.SetCapacity(NewCapacity: Integer); begin end; -procedure TWStrings.SetCommaText(const Value: WideString); +procedure TJclWideStrings.SetCommaText(const Value: WideString); begin SetDelimitedTextEx(',', '"', Value); end; -procedure TWStrings.SetDelimitedText(const Value: WideString); +procedure TJclWideStrings.SetDelimitedText(const Value: WideString); begin SetDelimitedTextEx(Delimiter, QuoteChar, Value); end; -procedure TWStrings.SetDelimitedTextEx(ADelimiter, AQuoteChar: WideChar; +procedure TJclWideStrings.SetDelimitedTextEx(ADelimiter, AQuoteChar: WideChar; const Value: WideString); var P, P1: PWideChar; @@ -1678,12 +1682,12 @@ end; end; -procedure TWStrings.SetText(Text: PWideChar); +procedure TJclWideStrings.SetText(Text: PWideChar); begin SetTextStr(Text); end; -procedure TWStrings.SetTextStr(const Value: WideString); +procedure TJclWideStrings.SetTextStr(const Value: WideString); var P, Start: PWideChar; S: WideString; @@ -1728,11 +1732,11 @@ end; end; -procedure TWStrings.SetUpdateState(Updating: Boolean); +procedure TJclWideStrings.SetUpdateState(Updating: Boolean); begin end; -procedure TWStrings.SetValue(const Name, Value: WideString); +procedure TJclWideStrings.SetValue(const Name, Value: WideString); var Idx: Integer; begin @@ -1744,7 +1748,7 @@ Add(Name + NameValueSeparator + Value); end; -procedure TWStrings.SetValueFromIndex(Index: Integer; const Value: WideString); +procedure TJclWideStrings.SetValueFromIndex(Index: Integer; const Value: WideString); var S: WideString; I: Integer; @@ -1764,7 +1768,7 @@ end; end; -procedure TWStrings.WriteData(Writer: TWriter); +procedure TJclWideStrings.WriteData(Writer: TWriter); var I: Integer; begin @@ -1774,15 +1778,15 @@ Writer.WriteListEnd; end; -//=== { TWStringList } ======================================================= +//=== { TJclWideStringList } ======================================================= -constructor TWStringList.Create; +constructor TJclWideStringList.Create; begin inherited Create; FList := TList.Create; end; -destructor TWStringList.Destroy; +destructor TJclWideStringList.Destroy; begin FOnChange := nil; FOnChanging := nil; @@ -1792,7 +1796,7 @@ inherited Destroy; end; -function TWStringList.AddObject(const S: WideString; AObject: TObject): Integer; +function TJclWideStringList.AddObject(const S: WideString; AObject: TObject): Integer; begin if not Sorted then Result := Count @@ -1807,19 +1811,19 @@ InsertObject(Result, S, AObject); end; -procedure TWStringList.Changed; +procedure TJclWideStringList.Changed; begin if Assigned(FOnChange) then FOnChange(Self); end; -procedure TWStringList.Changing; +procedure TJclWideStringList.Changing; begin if Assigned(FOnChanging) then FOnChanging(Self); end; -procedure TWStringList.Clear; +procedure TJclWideStringList.Clear; var I: Integer; Item: PWStringItem; @@ -1837,7 +1841,7 @@ Changed; end; -function TWStringList.CompareStrings(const S1, S2: WideString): Integer; +function TJclWideStringList.CompareStrings(const S1, S2: WideString): Integer; begin if CaseSensitive then Result := WideCompareStr(S1, S2) @@ -1846,8 +1850,8 @@ end; threadvar - CustomSortList: TWStringList; - CustomSortCompare: TWStringListSortCompare; + CustomSortList: TJclWideStringList; + CustomSortCompare: TJclWideStringListSortCompare; function WStringListCustomSort(Item1, Item2: Pointer): Integer; begin @@ -1856,10 +1860,10 @@ CustomSortList.FList.IndexOf(Item2)); end; -procedure TWStringList.CustomSort(Compare: TWStringListSortCompare); +procedure TJclWideStringList.CustomSort(Compare: TJclWideStringListSortCompare); var - TempList: TWStringList; - TempCompare: TWStringListSortCompare; + TempList: TJclWideStringList; + TempCompare: TJclWideStringListSortCompare; begin TempList := CustomSortList; TempCompare := CustomSortCompare; @@ -1875,7 +1879,7 @@ end; end; -procedure TWStringList.Delete(Index: Integer); +procedure TJclWideStringList.Delete(Index: Integer); var Item: PWStringItem; begin @@ -1889,7 +1893,7 @@ Changed; end; -procedure TWStringList.Exchange(Index1, Index2: Integer); +procedure TJclWideStringList.Exchange(Index1, Index2: Integer); begin if FUpdateCount = 0 then Changing; @@ -1898,7 +1902,7 @@ Changed; end; -function TWStringList.Find(const S: WideString; var Index: Integer): Boolean; +function TJclWideStringList.Find(const S: WideString; var Index: Integer): Boolean; var L, H, I, C: Integer; begin @@ -1933,32 +1937,32 @@ end; end; -function TWStringList.GetCapacity: Integer; +function TJclWideStringList.GetCapacity: Integer; begin Result := FList.Capacity; end; -function TWStringList.GetCount: Integer; +function TJclWideStringList.GetCount: Integer; begin Result := FList.Count; end; -function TWStringList.GetItem(Index: Integer): PWStringItem; +function TJclWideStringList.GetItem(Index: Integer): PWStringItem; begin Result := FList[Index]; end; -function TWStringList.GetObject(Index: Integer): TObject; +function TJclWideStringList.GetObject(Index: Integer): TObject; begin Result := GetItem(Index).FObject; end; -function TWStringList.GetP(Index: Integer): PWideString; +function TJclWideStringList.GetP(Index: Integer): PWideString; begin Result := Addr(GetItem(Index).FString); end; -function TWStringList.IndexOf(const S: WideString): Integer; +function TJclWideStringList.IndexOf(const S: WideString): Integer; begin if Sorted then begin @@ -1974,7 +1978,7 @@ end; end; -procedure TWStringList.InsertObject(Index: Integer; const S: WideString; +procedure TJclWideStringList.InsertObject(Index: Integer; const S: WideString; AObject: TObject); var P: PWStringItem; @@ -1992,7 +1996,7 @@ Changed; end; -procedure TWStringList.Put(Index: Integer; const Value: WideString); +procedure TJclWideStringList.Put(Index: Integer; const Value: WideString); begin if FUpdateCount = 0 then Changing; @@ -2001,7 +2005,7 @@ Changed; end; -procedure TWStringList.PutObject(Index: Integer; AObject: TObject); +procedure TJclWideStringList.PutObject(Index: Integer; AObject: TObject); begin if FUpdateCount = 0 then Changing; @@ -2010,12 +2014,12 @@ Changed; end; -procedure TWStringList.SetCapacity(NewCapacity: Integer); +procedure TJclWideStringList.SetCapacity(NewCapacity: Integer); begin FList.Capacity := NewCapacity; end; -procedure TWStringList.SetCaseSensitive(const Value: Boolean); +procedure TJclWideStringList.SetCaseSensitive(const Value: Boolean); begin if Value <> FCaseSensitive then begin @@ -2028,7 +2032,7 @@ end; end; -procedure TWStringList.SetSorted(Value: Boolean); +procedure TJclWideStringList.SetSorted(Value: Boolean); begin if Value <> FSorted then begin @@ -2042,7 +2046,7 @@ end; end; -procedure TWStringList.SetUpdateState(Updating: Boolean); +procedure TJclWideStringList.SetUpdateState(Updating: Boolean); begin if Updating then Changing @@ -2050,12 +2054,12 @@ Changed; end; -function DefaultSort(List: TWStringList; Index1, Index2: Integer): Integer; +function DefaultSort(List: TJclWideStringList; Index1, Index2: Integer): Integer; begin Result := List.CompareStrings(List.GetItem(Index1).FString, List.GetItem(Index2).FString); end; -procedure TWStringList.Sort; +procedure TJclWideStringList.Sort; begin if not Sorted then CustomSort(DefaultSort); @@ -2063,7 +2067,7 @@ {$ENDIF ~SUPPORTS_UNICODE} -function StringsToMultiSz(var Dest: PWideMultiSz; const Source: TWideStrings): PWideMultiSz; +function StringsToMultiSz(var Dest: PWideMultiSz; const Source: TJclWideStrings): PWideMultiSz; var I, TotalLength: Integer; P: PWideMultiSz; @@ -2086,7 +2090,7 @@ Result := Dest; end; -procedure MultiSzToStrings(const Dest: TWideStrings; const Source: PWideMultiSz); +procedure MultiSzToStrings(const Dest: TJclWideStrings; const Source: PWideMultiSz); var P: PWideMultiSz; begin Modified: trunk/jcl/source/prototypes/JclContainerIntf.pas =================================================================== --- trunk/jcl/source/prototypes/JclContainerIntf.pas 2009-03-15 11:05:15 UTC (rev 2686) +++ trunk/jcl/source/prototypes/JclContainerIntf.pas 2009-03-15 11:25:33 UTC (rev 2687) @@ -277,11 +277,11 @@ IJclAnsiStrFlatContainer = interface(IJclAnsiStrContainer) ['{8A45A4D4-6317-4CDF-8314-C3E5CC6899F4}'] - procedure LoadFromStrings(Strings: TAnsiStrings); - procedure SaveToStrings(Strings: TAnsiStrings); - procedure AppendToStrings(Strings: TAnsiStrings); - procedure AppendFromStrings(Strings: TAnsiStrings); - function GetAsStrings: TAnsiStrings; + procedure LoadFromStrings(Strings: TJclAnsiStrings); + procedure SaveToStrings(Strings: TJclAnsiStrings); + procedure AppendToStrings(Strings: TJclAnsiStrings); + procedure AppendFromStrings(Strings: TJclAnsiStrings); + function GetAsStrings: TJclAnsiStrings; function GetAsDelimited(const Separator: AnsiString = AnsiLineBreak): AnsiString; procedure AppendDelimited(const AString: AnsiString; const Separator: AnsiString = AnsiLineBreak); procedure LoadDelimited(const AString: AnsiString; const Separator: AnsiString = AnsiLineBreak); Modified: trunk/jcl/source/windows/JclDotNet.pas =================================================================== --- trunk/jcl/source/windows/JclDotNet.pas 2009-03-15 11:05:15 UTC (rev 2686) +++ trunk/jcl/source/windows/JclDotNet.pas 2009-03-15 11:25:33 UTC (rev 2687) @@ -125,7 +125,7 @@ class function CorSystemDirectory: WideString; class function CorVersion: WideString; class function CorRequiredVersion: WideString; - class procedure GetClrVersions(VersionNames: TWideStrings); overload; + class procedure GetClrVersions(VersionNames: TJclWideStrings); overload; {$IFNDEF SUPPORTS_UNICODE} class procedure GetClrVersions(VersionNames: TStrings); overload; {$ENDIF ~SUPPORTS_UNICODE} Modified: trunk/jcl/source/windows/JclMapi.pas =================================================================== --- trunk/jcl/source/windows/JclMapi.pas 2009-03-15 11:05:15 UTC (rev 2686) +++ trunk/jcl/source/windows/JclMapi.pas 2009-03-15 11:25:33 UTC (rev 2687) @@ -205,7 +205,7 @@ TJclEmail = class(TJclSimpleMapi) private - FAttachments: TAnsiStringList; + FAttachments: TJclAnsiStringList; FBody: AnsiString; FFindOptions: TJclEmailFindOptions; FHtmlBody: Boolean; @@ -219,7 +219,7 @@ FSubject: AnsiString; FTaskWindowList: TJclTaskWindowsList; FAttachmentFiles: TStringList; - function GetAttachments: TAnsiStrings; + function GetAttachments: TJclAnsiStrings; function GetAttachmentFiles: TStrings; function GetParentWnd: THandle; function GetUserLogged: Boolean; @@ -248,7 +248,7 @@ procedure SaveTaskWindows; function Send(ShowDialog: Boolean = True): Boolean; procedure SortAttachments; - property Attachments: TAnsiStrings read GetAttachments; + property Attachments: TJclAnsiStrings read GetAttachments; property AttachmentFiles: TStrings read GetAttachmentFiles; property Body: AnsiString read FBody write SetBody; property FindOptions: TJclEmailFindOptions read FFindOptions write FFindOptions; @@ -806,7 +806,7 @@ constructor TJclEmail.Create; begin inherited Create; - FAttachments := TAnsiStringList.Create; + FAttachments := TJclAnsiStringList.Create; FAttachmentFiles := TStringList.Create; FLogonOptions := [loLogonUI]; FFindOptions := [foFifo]; @@ -938,7 +938,7 @@ end; end; -function TJclEmail.GetAttachments: TAnsiStrings; +function TJclEmail.GetAttachments: TJclAnsiStrings; begin Result := FAttachments; end; @@ -1323,18 +1323,18 @@ procedure TJclEmail.SortAttachments; var - S, T: TAnsiStringList; + S, T: TJclAnsiStringList; U: TStringList; I, Nr: Integer; begin // This is confusing, quick and very dirty. - S := TAnsiStringList.Create; + S := TJclAnsiStringList.Create; try S.Capacity := FAttachments.Count; for I := 0 to Pred(FAttachments.Count) do S.AddObject(FAttachments[I], Pointer(I)); S.Sort; - T := TAnsiStringList.Create; + T := TJclAnsiStringList.Create; U := TStringList.Create; try T.Capacity := S.Count; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ou...@us...> - 2009-03-15 11:05:17
|
Revision: 2686 http://jcl.svn.sourceforge.net/jcl/?rev=2686&view=rev Author: outchy Date: 2009-03-15 11:05:15 +0000 (Sun, 15 Mar 2009) Log Message: ----------- Fixed exception names to JCL ones. Modified Paths: -------------- trunk/jcl/source/common/JclAnsiStrings.pas Modified: trunk/jcl/source/common/JclAnsiStrings.pas =================================================================== --- trunk/jcl/source/common/JclAnsiStrings.pas 2009-03-15 10:22:16 UTC (rev 2685) +++ trunk/jcl/source/common/JclAnsiStrings.pas 2009-03-15 11:05:15 UTC (rev 2686) @@ -194,7 +194,8 @@ // Exceptions type - EJclAnsiStringError = EJclError; + EJclAnsiStringError = class(EJclError); + EJclAnsiStringListError = class(EJclAnsiStringError); // Character constants and sets @@ -891,7 +892,7 @@ procedure TAnsiStrings.Error(const Msg: string; Data: Integer); begin - raise EStringListError.CreateFmt(Msg, [Data]); + raise EJclAnsiStringListError.CreateFmt(Msg, [Data]); end; procedure TAnsiStrings.Error(Msg: PResStringRec; Data: Integer); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <usc...@us...> - 2009-03-15 10:22:18
|
Revision: 2685 http://jcl.svn.sourceforge.net/jcl/?rev=2685&view=rev Author: uschuster Date: 2009-03-15 10:22:16 +0000 (Sun, 15 Mar 2009) Log Message: ----------- fixed Execute for D2009 (CreateProcessW requires a writeable commandline parameter otherwise an access violation will occur) Modified Paths: -------------- trunk/jcl/source/common/JclSysUtils.pas Modified: trunk/jcl/source/common/JclSysUtils.pas =================================================================== --- trunk/jcl/source/common/JclSysUtils.pas 2009-03-14 15:06:08 UTC (rev 2684) +++ trunk/jcl/source/common/JclSysUtils.pas 2009-03-15 10:22:16 UTC (rev 2685) @@ -2523,6 +2523,7 @@ ProcessInfo: TProcessInformation; SecurityAttr: TSecurityAttributes; PipeRead, PipeWrite: THandle; + WriteableCommandLine: array [0..1024] of Char; begin Result := $FFFFFFFF; SecurityAttr.nLength := SizeOf(SecurityAttr); @@ -2540,7 +2541,8 @@ StartupInfo.hStdInput := GetStdHandle(STD_INPUT_HANDLE); StartupInfo.hStdOutput := PipeWrite; StartupInfo.hStdError := PipeWrite; - if CreateProcess(nil, PChar(CommandLine), nil, nil, True, NORMAL_PRIORITY_CLASS, + StrPCopy(WriteableCommandLine, CommandLine); + if CreateProcess(nil, @WriteableCommandLine, nil, nil, True, NORMAL_PRIORITY_CLASS, nil, nil, StartupInfo, ProcessInfo) then begin CloseHandle(PipeWrite); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ou...@us...> - 2009-03-14 15:06:41
|
Revision: 2684 http://jcl.svn.sourceforge.net/jcl/?rev=2684&view=rev Author: outchy Date: 2009-03-14 15:06:08 +0000 (Sat, 14 Mar 2009) Log Message: ----------- from JVCL 12237: added support for the edition and generation of custom compiler defines in the package generator. updated all templates to make the compiler defines macros replaced: - %DEFINES% is replaced by the list of compiler defines. - %COMPILERDEFINES% is replaced by the equivalent command line argument. Final compiler defines are the concatenation of package-wide and target-wide compiler defines. Modified Paths: -------------- trunk/jcl/devtools/pgEdit.exe trunk/jcl/devtools/pgEdit.xml trunk/jcl/packages/c5/JclBaseExpertC50.bpk trunk/jcl/packages/c5/JclBaseExpertC50.dof trunk/jcl/packages/c5/JclBaseExpertC50.dpk trunk/jcl/packages/c5/JclC50.bpk trunk/jcl/packages/c5/JclC50.cpp trunk/jcl/packages/c5/JclC50.dof trunk/jcl/packages/c5/JclC50.dpk trunk/jcl/packages/c5/JclContainersC50.bpk trunk/jcl/packages/c5/JclContainersC50.dof trunk/jcl/packages/c5/JclContainersC50.dpk trunk/jcl/packages/c5/JclDebugExpertC50.bpk trunk/jcl/packages/c5/JclDebugExpertC50.dof trunk/jcl/packages/c5/JclDebugExpertC50.dpk trunk/jcl/packages/c5/JclDebugExpertDLLC50.bpr trunk/jcl/packages/c5/JclDebugExpertDLLC50.dof trunk/jcl/packages/c5/JclFavoriteFoldersExpertC50.bpk trunk/jcl/packages/c5/JclFavoriteFoldersExpertC50.dof trunk/jcl/packages/c5/JclFavoriteFoldersExpertC50.dpk trunk/jcl/packages/c5/JclFavoriteFoldersExpertDLLC50.bpr trunk/jcl/packages/c5/JclFavoriteFoldersExpertDLLC50.dof trunk/jcl/packages/c5/JclProjectAnalysisExpertC50.bpk trunk/jcl/packages/c5/JclProjectAnalysisExpertC50.dof trunk/jcl/packages/c5/JclProjectAnalysisExpertC50.dpk trunk/jcl/packages/c5/JclProjectAnalysisExpertDLLC50.bpr trunk/jcl/packages/c5/JclProjectAnalysisExpertDLLC50.dof trunk/jcl/packages/c5/JclRepositoryExpertC50.bpk trunk/jcl/packages/c5/JclRepositoryExpertC50.dof trunk/jcl/packages/c5/JclRepositoryExpertC50.dpk trunk/jcl/packages/c5/JclRepositoryExpertDLLC50.bpr trunk/jcl/packages/c5/JclRepositoryExpertDLLC50.dof trunk/jcl/packages/c5/JclSIMDViewExpertC50.bpk trunk/jcl/packages/c5/JclSIMDViewExpertC50.dof trunk/jcl/packages/c5/JclSIMDViewExpertC50.dpk trunk/jcl/packages/c5/JclSIMDViewExpertDLLC50.bpr trunk/jcl/packages/c5/JclSIMDViewExpertDLLC50.dof trunk/jcl/packages/c5/JclThreadNameExpertC50.bpk trunk/jcl/packages/c5/JclThreadNameExpertC50.dof trunk/jcl/packages/c5/JclThreadNameExpertC50.dpk trunk/jcl/packages/c5/JclThreadNameExpertDLLC50.bpr trunk/jcl/packages/c5/JclThreadNameExpertDLLC50.dof trunk/jcl/packages/c5/JclUsesExpertC50.bpk trunk/jcl/packages/c5/JclUsesExpertC50.dof trunk/jcl/packages/c5/JclUsesExpertC50.dpk trunk/jcl/packages/c5/JclUsesExpertDLLC50.bpr trunk/jcl/packages/c5/JclUsesExpertDLLC50.dof trunk/jcl/packages/c5/JclVclC50.bpk trunk/jcl/packages/c5/JclVclC50.dof trunk/jcl/packages/c5/JclVclC50.dpk trunk/jcl/packages/c5/JclVersionControlExpertC50.bpk trunk/jcl/packages/c5/JclVersionControlExpertC50.dof trunk/jcl/packages/c5/JclVersionControlExpertC50.dpk trunk/jcl/packages/c5/JclVersionControlExpertDLLC50.bpr trunk/jcl/packages/c5/JclVersionControlExpertDLLC50.dof trunk/jcl/packages/c5/template.bpk trunk/jcl/packages/c5/template.bpr trunk/jcl/packages/c5/template.dof trunk/jcl/packages/c5/template.dpk trunk/jcl/packages/c6/Jcl.bpk trunk/jcl/packages/c6/Jcl.dof trunk/jcl/packages/c6/Jcl.dpk trunk/jcl/packages/c6/JclBaseExpert.bpk trunk/jcl/packages/c6/JclBaseExpert.dof trunk/jcl/packages/c6/JclBaseExpert.dpk trunk/jcl/packages/c6/JclContainers.bpk trunk/jcl/packages/c6/JclContainers.dof trunk/jcl/packages/c6/JclContainers.dpk trunk/jcl/packages/c6/JclDebugExpert.bpk trunk/jcl/packages/c6/JclDebugExpert.dof trunk/jcl/packages/c6/JclDebugExpert.dpk trunk/jcl/packages/c6/JclDebugExpertDLL.bpr trunk/jcl/packages/c6/JclDebugExpertDLL.dof trunk/jcl/packages/c6/JclFavoriteFoldersExpert.bpk trunk/jcl/packages/c6/JclFavoriteFoldersExpert.dof trunk/jcl/packages/c6/JclFavoriteFoldersExpert.dpk trunk/jcl/packages/c6/JclFavoriteFoldersExpertDLL.bpr trunk/jcl/packages/c6/JclFavoriteFoldersExpertDLL.dof trunk/jcl/packages/c6/JclProjectAnalysisExpert.bpk trunk/jcl/packages/c6/JclProjectAnalysisExpert.dof trunk/jcl/packages/c6/JclProjectAnalysisExpert.dpk trunk/jcl/packages/c6/JclProjectAnalysisExpertDLL.bpr trunk/jcl/packages/c6/JclProjectAnalysisExpertDLL.dof trunk/jcl/packages/c6/JclRepositoryExpert.bpk trunk/jcl/packages/c6/JclRepositoryExpert.dof trunk/jcl/packages/c6/JclRepositoryExpert.dpk trunk/jcl/packages/c6/JclRepositoryExpertDLL.bpr trunk/jcl/packages/c6/JclRepositoryExpertDLL.dof trunk/jcl/packages/c6/JclSIMDViewExpert.bpk trunk/jcl/packages/c6/JclSIMDViewExpert.dof trunk/jcl/packages/c6/JclSIMDViewExpert.dpk trunk/jcl/packages/c6/JclSIMDViewExpertDLL.bpr trunk/jcl/packages/c6/JclSIMDViewExpertDLL.dof trunk/jcl/packages/c6/JclThreadNameExpert.bpk trunk/jcl/packages/c6/JclThreadNameExpert.dof trunk/jcl/packages/c6/JclThreadNameExpert.dpk trunk/jcl/packages/c6/JclThreadNameExpertDLL.bpr trunk/jcl/packages/c6/JclThreadNameExpertDLL.dof trunk/jcl/packages/c6/JclUsesExpert.bpk trunk/jcl/packages/c6/JclUsesExpert.dof trunk/jcl/packages/c6/JclUsesExpert.dpk trunk/jcl/packages/c6/JclUsesExpertDLL.bpr trunk/jcl/packages/c6/JclUsesExpertDLL.dof trunk/jcl/packages/c6/JclVClx.bpk trunk/jcl/packages/c6/JclVClx.dof trunk/jcl/packages/c6/JclVClx.dpk trunk/jcl/packages/c6/JclVcl.bpk trunk/jcl/packages/c6/JclVcl.dof trunk/jcl/packages/c6/JclVcl.dpk trunk/jcl/packages/c6/JclVersionControlExpert.bpk trunk/jcl/packages/c6/JclVersionControlExpert.dof trunk/jcl/packages/c6/JclVersionControlExpert.dpk trunk/jcl/packages/c6/JclVersionControlExpertDLL.bpr trunk/jcl/packages/c6/JclVersionControlExpertDLL.dof trunk/jcl/packages/c6/template.bpk trunk/jcl/packages/c6/template.bpr trunk/jcl/packages/c6/template.dof trunk/jcl/packages/c6/template.dpk trunk/jcl/packages/cs1/Jcl.bdsproj trunk/jcl/packages/cs1/Jcl.dpk trunk/jcl/packages/cs1/JclBaseExpert.bdsproj trunk/jcl/packages/cs1/JclBaseExpert.dpk trunk/jcl/packages/cs1/JclContainers.bdsproj trunk/jcl/packages/cs1/JclContainers.dpk trunk/jcl/packages/cs1/JclFavoriteFoldersExpertDLL.bdsproj trunk/jcl/packages/cs1/JclFavoriteFoldersExpertDLL.dpr trunk/jcl/packages/cs1/JclVersionControlExpertDLL.bdsproj trunk/jcl/packages/cs1/JclVersionControlExpertDLL.dpr trunk/jcl/packages/cs1/template.bdsproj trunk/jcl/packages/cs1/template.dpk trunk/jcl/packages/cs1/template.dpr trunk/jcl/packages/d10/Jcl.bdsproj trunk/jcl/packages/d10/Jcl.dpk trunk/jcl/packages/d10/JclBaseExpert.bdsproj trunk/jcl/packages/d10/JclBaseExpert.dpk trunk/jcl/packages/d10/JclContainers.bdsproj trunk/jcl/packages/d10/JclContainers.dpk trunk/jcl/packages/d10/JclDebugExpert.bdsproj trunk/jcl/packages/d10/JclDebugExpert.dpk trunk/jcl/packages/d10/JclDebugExpertDLL.bdsproj trunk/jcl/packages/d10/JclDebugExpertDLL.dpr trunk/jcl/packages/d10/JclFavoriteFoldersExpert.bdsproj trunk/jcl/packages/d10/JclFavoriteFoldersExpert.dpk trunk/jcl/packages/d10/JclFavoriteFoldersExpertDLL.bdsproj trunk/jcl/packages/d10/JclFavoriteFoldersExpertDLL.dpr trunk/jcl/packages/d10/JclProjectAnalysisExpert.bdsproj trunk/jcl/packages/d10/JclProjectAnalysisExpert.dpk trunk/jcl/packages/d10/JclProjectAnalysisExpertDLL.bdsproj trunk/jcl/packages/d10/JclProjectAnalysisExpertDLL.dpr 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/d10/JclSIMDViewExpert.bdsproj trunk/jcl/packages/d10/JclSIMDViewExpert.dpk trunk/jcl/packages/d10/JclSIMDViewExpertDLL.bdsproj trunk/jcl/packages/d10/JclSIMDViewExpertDLL.dpr trunk/jcl/packages/d10/JclVcl.bdsproj trunk/jcl/packages/d10/JclVcl.dpk trunk/jcl/packages/d10/JclVersionControlExpert.bdsproj trunk/jcl/packages/d10/JclVersionControlExpert.dpk trunk/jcl/packages/d10/JclVersionControlExpertDLL.bdsproj trunk/jcl/packages/d10/JclVersionControlExpertDLL.dpr trunk/jcl/packages/d10/template.bdsproj trunk/jcl/packages/d10/template.dpk trunk/jcl/packages/d10/template.dpr trunk/jcl/packages/d10.net/Jedi.Jcl.dpk trunk/jcl/packages/d10.net/Jedi.JclContainers.dpk trunk/jcl/packages/d10.net/template.bdsproj trunk/jcl/packages/d10.net/template.dpk trunk/jcl/packages/d11/Jcl.dpk trunk/jcl/packages/d11/Jcl.dproj trunk/jcl/packages/d11/JclBaseExpert.dpk trunk/jcl/packages/d11/JclBaseExpert.dproj trunk/jcl/packages/d11/JclContainers.dpk trunk/jcl/packages/d11/JclContainers.dproj trunk/jcl/packages/d11/JclDebugExpert.dpk trunk/jcl/packages/d11/JclDebugExpert.dproj trunk/jcl/packages/d11/JclDebugExpertDLL.dpr trunk/jcl/packages/d11/JclDebugExpertDLL.dproj trunk/jcl/packages/d11/JclFavoriteFoldersExpert.dpk trunk/jcl/packages/d11/JclFavoriteFoldersExpert.dproj trunk/jcl/packages/d11/JclFavoriteFoldersExpertDLL.dpr trunk/jcl/packages/d11/JclFavoriteFoldersExpertDLL.dproj trunk/jcl/packages/d11/JclProjectAnalysisExpert.dpk trunk/jcl/packages/d11/JclProjectAnalysisExpert.dproj trunk/jcl/packages/d11/JclProjectAnalysisExpertDLL.dpr trunk/jcl/packages/d11/JclProjectAnalysisExpertDLL.dproj 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/d11/JclSIMDViewExpert.dpk trunk/jcl/packages/d11/JclSIMDViewExpert.dproj trunk/jcl/packages/d11/JclSIMDViewExpertDLL.dpr trunk/jcl/packages/d11/JclSIMDViewExpertDLL.dproj trunk/jcl/packages/d11/JclVcl.dpk trunk/jcl/packages/d11/JclVcl.dproj trunk/jcl/packages/d11/JclVersionControlExpert.dpk trunk/jcl/packages/d11/JclVersionControlExpert.dproj trunk/jcl/packages/d11/JclVersionControlExpertDLL.dpr trunk/jcl/packages/d11/JclVersionControlExpertDLL.dproj trunk/jcl/packages/d11/template.dpk trunk/jcl/packages/d11/template.dpr trunk/jcl/packages/d11/template.dproj trunk/jcl/packages/d11.net/Jedi.Jcl.dpk trunk/jcl/packages/d11.net/Jedi.Jcl.dproj trunk/jcl/packages/d11.net/Jedi.JclContainers.dpk trunk/jcl/packages/d11.net/Jedi.JclContainers.dproj trunk/jcl/packages/d11.net/template.dpk trunk/jcl/packages/d11.net/template.dproj trunk/jcl/packages/d12/Jcl.dpk trunk/jcl/packages/d12/Jcl.dproj trunk/jcl/packages/d12/JclBaseExpert.dpk trunk/jcl/packages/d12/JclBaseExpert.dproj trunk/jcl/packages/d12/JclContainers.dpk trunk/jcl/packages/d12/JclContainers.dproj trunk/jcl/packages/d12/JclDebugExpert.dpk trunk/jcl/packages/d12/JclDebugExpert.dproj trunk/jcl/packages/d12/JclDebugExpertDLL.dpr trunk/jcl/packages/d12/JclDebugExpertDLL.dproj trunk/jcl/packages/d12/JclFavoriteFoldersExpert.dpk trunk/jcl/packages/d12/JclFavoriteFoldersExpert.dproj trunk/jcl/packages/d12/JclFavoriteFoldersExpertDLL.dpr trunk/jcl/packages/d12/JclFavoriteFoldersExpertDLL.dproj trunk/jcl/packages/d12/JclProjectAnalysisExpert.dpk trunk/jcl/packages/d12/JclProjectAnalysisExpert.dproj trunk/jcl/packages/d12/JclProjectAnalysisExpertDLL.dpr trunk/jcl/packages/d12/JclProjectAnalysisExpertDLL.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/d12/JclSIMDViewExpert.dpk trunk/jcl/packages/d12/JclSIMDViewExpert.dproj trunk/jcl/packages/d12/JclSIMDViewExpertDLL.dpr trunk/jcl/packages/d12/JclSIMDViewExpertDLL.dproj trunk/jcl/packages/d12/JclVcl.dpk trunk/jcl/packages/d12/JclVcl.dproj trunk/jcl/packages/d12/JclVersionControlExpert.dpk trunk/jcl/packages/d12/JclVersionControlExpert.dproj trunk/jcl/packages/d12/JclVersionControlExpertDLL.dpr trunk/jcl/packages/d12/JclVersionControlExpertDLL.dproj trunk/jcl/packages/d12/template.dpk trunk/jcl/packages/d12/template.dpr trunk/jcl/packages/d12/template.dproj trunk/jcl/packages/d5/JclBaseExpertD50.dof trunk/jcl/packages/d5/JclBaseExpertD50.dpk trunk/jcl/packages/d5/JclContainersD50.dof trunk/jcl/packages/d5/JclContainersD50.dpk trunk/jcl/packages/d5/JclD50.dof trunk/jcl/packages/d5/JclD50.dpk trunk/jcl/packages/d5/JclDebugExpertD50.dof trunk/jcl/packages/d5/JclDebugExpertD50.dpk trunk/jcl/packages/d5/JclDebugExpertDLLD50.dof trunk/jcl/packages/d5/JclDebugExpertDLLD50.dpr trunk/jcl/packages/d5/JclFavoriteFoldersExpertD50.dof trunk/jcl/packages/d5/JclFavoriteFoldersExpertD50.dpk trunk/jcl/packages/d5/JclFavoriteFoldersExpertDLLD50.dof trunk/jcl/packages/d5/JclFavoriteFoldersExpertDLLD50.dpr trunk/jcl/packages/d5/JclProjectAnalysisExpertD50.dof trunk/jcl/packages/d5/JclProjectAnalysisExpertD50.dpk trunk/jcl/packages/d5/JclProjectAnalysisExpertDLLD50.dof trunk/jcl/packages/d5/JclProjectAnalysisExpertDLLD50.dpr trunk/jcl/packages/d5/JclRepositoryExpertD50.dof trunk/jcl/packages/d5/JclRepositoryExpertD50.dpk trunk/jcl/packages/d5/JclRepositoryExpertDLLD50.dof trunk/jcl/packages/d5/JclRepositoryExpertDLLD50.dpr trunk/jcl/packages/d5/JclSIMDViewExpertD50.dof trunk/jcl/packages/d5/JclSIMDViewExpertD50.dpk trunk/jcl/packages/d5/JclSIMDViewExpertDLLD50.dof trunk/jcl/packages/d5/JclSIMDViewExpertDLLD50.dpr trunk/jcl/packages/d5/JclThreadNameExpertD50.dof trunk/jcl/packages/d5/JclThreadNameExpertD50.dpk trunk/jcl/packages/d5/JclThreadNameExpertDLLD50.dof trunk/jcl/packages/d5/JclThreadNameExpertDLLD50.dpr trunk/jcl/packages/d5/JclUsesExpertD50.dof trunk/jcl/packages/d5/JclUsesExpertD50.dpk trunk/jcl/packages/d5/JclUsesExpertDLLD50.dof trunk/jcl/packages/d5/JclUsesExpertDLLD50.dpr trunk/jcl/packages/d5/JclVclD50.dof trunk/jcl/packages/d5/JclVclD50.dpk trunk/jcl/packages/d5/JclVersionControlExpertD50.dof trunk/jcl/packages/d5/JclVersionControlExpertD50.dpk trunk/jcl/packages/d5/JclVersionControlExpertDLLD50.dof trunk/jcl/packages/d5/JclVersionControlExpertDLLD50.dpr trunk/jcl/packages/d5/template.dof trunk/jcl/packages/d5/template.dpk trunk/jcl/packages/d5/template.dpr trunk/jcl/packages/d6/Jcl.dof trunk/jcl/packages/d6/Jcl.dpk trunk/jcl/packages/d6/JclBaseExpert.dof trunk/jcl/packages/d6/JclBaseExpert.dpk trunk/jcl/packages/d6/JclContainers.dof trunk/jcl/packages/d6/JclContainers.dpk trunk/jcl/packages/d6/JclDebugExpert.dof trunk/jcl/packages/d6/JclDebugExpert.dpk trunk/jcl/packages/d6/JclDebugExpertDLL.dof trunk/jcl/packages/d6/JclDebugExpertDLL.dpr trunk/jcl/packages/d6/JclFavoriteFoldersExpert.dof trunk/jcl/packages/d6/JclFavoriteFoldersExpert.dpk trunk/jcl/packages/d6/JclFavoriteFoldersExpertDLL.dof trunk/jcl/packages/d6/JclFavoriteFoldersExpertDLL.dpr trunk/jcl/packages/d6/JclProjectAnalysisExpert.dof trunk/jcl/packages/d6/JclProjectAnalysisExpert.dpk trunk/jcl/packages/d6/JclProjectAnalysisExpertDLL.dof trunk/jcl/packages/d6/JclProjectAnalysisExpertDLL.dpr trunk/jcl/packages/d6/JclRepositoryExpert.dof trunk/jcl/packages/d6/JclRepositoryExpert.dpk trunk/jcl/packages/d6/JclRepositoryExpertDLL.dof trunk/jcl/packages/d6/JclRepositoryExpertDLL.dpr trunk/jcl/packages/d6/JclSIMDViewExpert.dof trunk/jcl/packages/d6/JclSIMDViewExpert.dpk trunk/jcl/packages/d6/JclSIMDViewExpertDLL.dof trunk/jcl/packages/d6/JclSIMDViewExpertDLL.dpr trunk/jcl/packages/d6/JclThreadNameExpert.dof trunk/jcl/packages/d6/JclThreadNameExpert.dpk trunk/jcl/packages/d6/JclThreadNameExpertDLL.dof trunk/jcl/packages/d6/JclThreadNameExpertDLL.dpr trunk/jcl/packages/d6/JclUsesExpert.dof trunk/jcl/packages/d6/JclUsesExpert.dpk trunk/jcl/packages/d6/JclUsesExpertDLL.dof trunk/jcl/packages/d6/JclUsesExpertDLL.dpr trunk/jcl/packages/d6/JclVClx.dof trunk/jcl/packages/d6/JclVClx.dpk trunk/jcl/packages/d6/JclVcl.dof trunk/jcl/packages/d6/JclVcl.dpk trunk/jcl/packages/d6/JclVersionControlExpert.dof trunk/jcl/packages/d6/JclVersionControlExpert.dpk trunk/jcl/packages/d6/JclVersionControlExpertDLL.dof trunk/jcl/packages/d6/JclVersionControlExpertDLL.dpr trunk/jcl/packages/d6/template.dof trunk/jcl/packages/d6/template.dpk trunk/jcl/packages/d6/template.dpr trunk/jcl/packages/d7/Jcl.dof trunk/jcl/packages/d7/Jcl.dpk trunk/jcl/packages/d7/JclBaseExpert.dof trunk/jcl/packages/d7/JclBaseExpert.dpk trunk/jcl/packages/d7/JclContainers.dof trunk/jcl/packages/d7/JclContainers.dpk trunk/jcl/packages/d7/JclDebugExpert.dof trunk/jcl/packages/d7/JclDebugExpert.dpk trunk/jcl/packages/d7/JclDebugExpertDLL.dof trunk/jcl/packages/d7/JclDebugExpertDLL.dpr trunk/jcl/packages/d7/JclFavoriteFoldersExpert.dof trunk/jcl/packages/d7/JclFavoriteFoldersExpert.dpk trunk/jcl/packages/d7/JclFavoriteFoldersExpertDLL.dof trunk/jcl/packages/d7/JclFavoriteFoldersExpertDLL.dpr trunk/jcl/packages/d7/JclProjectAnalysisExpert.dof trunk/jcl/packages/d7/JclProjectAnalysisExpert.dpk trunk/jcl/packages/d7/JclProjectAnalysisExpertDLL.dof trunk/jcl/packages/d7/JclProjectAnalysisExpertDLL.dpr trunk/jcl/packages/d7/JclRepositoryExpert.dof trunk/jcl/packages/d7/JclRepositoryExpert.dpk trunk/jcl/packages/d7/JclRepositoryExpertDLL.dof trunk/jcl/packages/d7/JclRepositoryExpertDLL.dpr trunk/jcl/packages/d7/JclSIMDViewExpert.dof trunk/jcl/packages/d7/JclSIMDViewExpert.dpk trunk/jcl/packages/d7/JclSIMDViewExpertDLL.dof trunk/jcl/packages/d7/JclSIMDViewExpertDLL.dpr trunk/jcl/packages/d7/JclUsesExpert.dof trunk/jcl/packages/d7/JclUsesExpert.dpk trunk/jcl/packages/d7/JclUsesExpertDLL.dof trunk/jcl/packages/d7/JclUsesExpertDLL.dpr trunk/jcl/packages/d7/JclVClx.dof trunk/jcl/packages/d7/JclVClx.dpk trunk/jcl/packages/d7/JclVcl.dof trunk/jcl/packages/d7/JclVcl.dpk trunk/jcl/packages/d7/JclVersionControlExpert.dof trunk/jcl/packages/d7/JclVersionControlExpert.dpk trunk/jcl/packages/d7/JclVersionControlExpertDLL.dof trunk/jcl/packages/d7/JclVersionControlExpertDLL.dpr trunk/jcl/packages/d7/template.dof trunk/jcl/packages/d7/template.dpk trunk/jcl/packages/d7/template.dpr trunk/jcl/packages/d8/Jcl.bdsproj trunk/jcl/packages/d8/Jcl.dpk trunk/jcl/packages/d8/JclBaseExpert.bdsproj trunk/jcl/packages/d8/JclBaseExpert.dpk trunk/jcl/packages/d8/JclContainers.bdsproj trunk/jcl/packages/d8/JclContainers.dpk trunk/jcl/packages/d8/JclFavoriteFoldersExpertDLL.bdsproj trunk/jcl/packages/d8/JclFavoriteFoldersExpertDLL.dpr trunk/jcl/packages/d8/JclVersionControlExpertDLL.bdsproj trunk/jcl/packages/d8/JclVersionControlExpertDLL.dpr trunk/jcl/packages/d8/template.bdsproj trunk/jcl/packages/d8/template.dpk trunk/jcl/packages/d8/template.dpr trunk/jcl/packages/d9/Jcl.bdsproj trunk/jcl/packages/d9/Jcl.dpk trunk/jcl/packages/d9/JclBaseExpert.bdsproj trunk/jcl/packages/d9/JclBaseExpert.dpk trunk/jcl/packages/d9/JclContainers.bdsproj trunk/jcl/packages/d9/JclContainers.dpk trunk/jcl/packages/d9/JclDebugExpert.bdsproj trunk/jcl/packages/d9/JclDebugExpert.dpk trunk/jcl/packages/d9/JclDebugExpertDLL.bdsproj trunk/jcl/packages/d9/JclDebugExpertDLL.dpr trunk/jcl/packages/d9/JclFavoriteFoldersExpert.bdsproj trunk/jcl/packages/d9/JclFavoriteFoldersExpert.dpk trunk/jcl/packages/d9/JclFavoriteFoldersExpertDLL.bdsproj trunk/jcl/packages/d9/JclFavoriteFoldersExpertDLL.dpr trunk/jcl/packages/d9/JclProjectAnalysisExpert.bdsproj trunk/jcl/packages/d9/JclProjectAnalysisExpert.dpk trunk/jcl/packages/d9/JclProjectAnalysisExpertDLL.bdsproj trunk/jcl/packages/d9/JclProjectAnalysisExpertDLL.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/d9/JclSIMDViewExpert.bdsproj trunk/jcl/packages/d9/JclSIMDViewExpert.dpk trunk/jcl/packages/d9/JclSIMDViewExpertDLL.bdsproj trunk/jcl/packages/d9/JclSIMDViewExpertDLL.dpr trunk/jcl/packages/d9/JclVcl.bdsproj trunk/jcl/packages/d9/JclVcl.dpk trunk/jcl/packages/d9/JclVersionControlExpert.bdsproj trunk/jcl/packages/d9/JclVersionControlExpert.dpk trunk/jcl/packages/d9/JclVersionControlExpertDLL.bdsproj trunk/jcl/packages/d9/JclVersionControlExpertDLL.dpr trunk/jcl/packages/d9/template.bdsproj trunk/jcl/packages/d9/template.dpk trunk/jcl/packages/d9/template.dpr trunk/jcl/packages/d9.net/Jedi.Jcl.dpk trunk/jcl/packages/d9.net/Jedi.JclContainers.dpk trunk/jcl/packages/d9.net/template.bdsproj trunk/jcl/packages/d9.net/template.dpk trunk/jcl/packages/k3/Jcl.bpk trunk/jcl/packages/k3/Jcl.dpk trunk/jcl/packages/k3/Jcl.kof trunk/jcl/packages/k3/JclContainers.bpk trunk/jcl/packages/k3/JclContainers.dpk trunk/jcl/packages/k3/JclContainers.kof trunk/jcl/packages/k3/JclVClx.bpk trunk/jcl/packages/k3/JclVClx.dpk trunk/jcl/packages/k3/JclVClx.kof trunk/jcl/packages/k3/template.bpk trunk/jcl/packages/k3/template.dpk trunk/jcl/packages/k3/template.kof trunk/jcl/packages/xml/Jcl-R.xml trunk/jcl/packages/xml/JclBaseExpert-D.xml trunk/jcl/packages/xml/JclContainers-R.xml trunk/jcl/packages/xml/JclDebugExpert-D.xml trunk/jcl/packages/xml/JclDebugExpertDLL-L.xml trunk/jcl/packages/xml/JclFavoriteFoldersExpert-D.xml trunk/jcl/packages/xml/JclFavoriteFoldersExpertDLL-L.xml trunk/jcl/packages/xml/JclProjectAnalysisExpert-D.xml trunk/jcl/packages/xml/JclProjectAnalysisExpertDLL-L.xml trunk/jcl/packages/xml/JclRepositoryExpert-D.xml trunk/jcl/packages/xml/JclRepositoryExpertDLL-L.xml trunk/jcl/packages/xml/JclSIMDViewExpert-D.xml trunk/jcl/packages/xml/JclSIMDViewExpertDLL-L.xml trunk/jcl/packages/xml/JclThreadNameExpert-D.xml trunk/jcl/packages/xml/JclThreadNameExpertDLL-L.xml trunk/jcl/packages/xml/JclUsesExpert-D.xml trunk/jcl/packages/xml/JclUsesExpertDLL-L.xml trunk/jcl/packages/xml/JclVClx-R.xml trunk/jcl/packages/xml/JclVcl-R.xml trunk/jcl/packages/xml/JclVersionControlExpert-D.xml trunk/jcl/packages/xml/JclVersionControlExpertDLL-L.xml Modified: trunk/jcl/devtools/pgEdit.exe =================================================================== (Binary files differ) Modified: trunk/jcl/devtools/pgEdit.xml =================================================================== --- trunk/jcl/devtools/pgEdit.xml 2009-03-14 12:28:46 UTC (rev 2683) +++ trunk/jcl/devtools/pgEdit.xml 2009-03-14 15:06:08 UTC (rev 2684) @@ -61,21 +61,21 @@ <models> <Model format="%p%n" name="JCL" prefix="Jcl" packages="..\packages" incfile="" nolibsuffixformat="%p%n%e%v0" dotnetprefix="Jedi.Jcl"> <targets> - <target name="c5"/> - <target name="c6"/> + <target name="c5" defines="BCB"/> + <target name="c6" defines="BCB"/> <target name="d5"/> <target name="d6"/> <target name="d7"/> <target name="d8" IsBds="1"/> <target name="cs1" IsBds="1"/> <target name="d9" IsBds="1"/> - <target name="d10" IsBds="1"/> - <target name="k3" PathSep="/"/> + <target name="d10" defines="BCB" IsBds="1"/> + <target name="k3" defines="BCB" PathSep="/"/> <target name="d9.net" IsDotNet="1"/> <target name="d10.net" IsDotNet="1"/> - <target name="d11" IsBds="1"/> + <target name="d11" defines="BCB" IsBds="1"/> <target name="d11.net" IsDotNet="1"/> - <target name="d12" IsBds="1"/> + <target name="d12" defines="BCB" IsBds="1"/> </targets> <aliases> <alias name="Delphi" value="d5,d6,d7,d9,d10,d11,d12"/> Modified: trunk/jcl/packages/c5/JclBaseExpertC50.bpk =================================================================== --- trunk/jcl/packages/c5/JclBaseExpertC50.bpk 2009-03-14 12:28:46 UTC (rev 2683) +++ trunk/jcl/packages/c5/JclBaseExpertC50.bpk 2009-03-14 15:06:08 UTC (rev 2684) @@ -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: 22-09-2008 21:28:22 UTC + Last generated: 14-03-2009 14:35:13 UTC ***************************************************************************** --> <PROJECT> @@ -52,7 +52,7 @@ <DEBUGLIBPATH value="$(BCB)\lib\debug"/> <RELEASELIBPATH value="$(BCB)\lib\release"/> <LINKER value="ilink32"/> - <USERDEFINES value="_DEBUG;BCB"/> + <USERDEFINES value="BCB;RELEASE"/> <SYSDEFINES value="_RTLDLL;NO_STRICT;USEPACKAGES"/> <MAINSOURCE value="JclBaseExpertC50.cpp"/> <INCLUDEPATH value="..\..\source\include;..\..\source\windows;..\..\source\vcl;..\..\source\common;..\..\experts\common;$(BCB)\include;$(BCB)\include\vcl"/> @@ -62,11 +62,11 @@ </MACROS> <OPTIONS> <IDLCFLAGS value="-I..\..\source\include -I..\..\source\windows -I..\..\source\vcl -I..\..\source\common - -I$(BCB)\include -I$(BCB)\include\vcl -src_suffix cpp -D_DEBUG -boa"/> + -I$(BCB)\include -I$(BCB)\include\vcl -src_suffix cpp -boa"/> <CFLAG1 value="-Od -H=$(BCB)\lib\vcl50.csm -Hc -Vx -Ve -X- -r- -a8 -b- -k -y -v -vi- -c - -tWM"/> + -tWM -DBCB;RELEASE"/> <PFLAGS value="-N0..\..\lib\c5 -N2..\..\lib\c5 -$YD -$W -$O- -$A8 -v -JPHNE -M - -LUvcl50 -LUdsnide50 -LUJclC50 + -LUvcl50 -LUdsnide50 -LUJclC50 -DBCB;RELEASE -U$(BCB)\Projects\Lib -U..\..\lib\c5 "/> <RFLAGS value=""/> Modified: trunk/jcl/packages/c5/JclBaseExpertC50.dof =================================================================== --- trunk/jcl/packages/c5/JclBaseExpertC50.dof 2009-03-14 12:28:46 UTC (rev 2683) +++ trunk/jcl/packages/c5/JclBaseExpertC50.dof 2009-03-14 15:06:08 UTC (rev 2684) @@ -1,5 +1,5 @@ [Directories] UnitOutputDir=..\..\lib\c5 SearchPath=..\..\source\include -Conditionals=BCB +Conditionals=BCB;RELEASE Modified: trunk/jcl/packages/c5/JclBaseExpertC50.dpk =================================================================== --- trunk/jcl/packages/c5/JclBaseExpertC50.dpk 2009-03-14 12:28:46 UTC (rev 2683) +++ trunk/jcl/packages/c5/JclBaseExpertC50.dpk 2009-03-14 15:06:08 UTC (rev 2684) @@ -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: 22-09-2008 21:28:22 UTC + Last generated: 14-03-2009 14:35:13 UTC ----------------------------------------------------------------------------- } @@ -34,6 +34,9 @@ {$DESIGNONLY} {$IMPLICITBUILD OFF} +{$DEFINE BCB} +{$DEFINE RELEASE} + requires vcl50, dsnide50, Modified: trunk/jcl/packages/c5/JclC50.bpk =================================================================== --- trunk/jcl/packages/c5/JclC50.bpk 2009-03-14 12:28:46 UTC (rev 2683) +++ trunk/jcl/packages/c5/JclC50.bpk 2009-03-14 15:06:08 UTC (rev 2684) @@ -5,7 +5,7 @@ DO NOT EDIT THIS FILE, IT IS GENERATED BY THE PACKAGE GENERATOR ALWAYS EDIT THE RELATED XML FILE (Jcl-R.xml) - Last generated: 04-02-2009 20:52:01 UTC + Last generated: 14-03-2009 14:40:19 UTC ***************************************************************************** --> <PROJECT> @@ -113,7 +113,7 @@ <DEBUGLIBPATH value="$(BCB)\lib\debug"/> <RELEASELIBPATH value="$(BCB)\lib\release"/> <LINKER value="ilink32"/> - <USERDEFINES value="_DEBUG;BCB"/> + <USERDEFINES value="BCB;RELEASE"/> <SYSDEFINES value="_RTLDLL;NO_STRICT;USEPACKAGES"/> <MAINSOURCE value="JclC50.cpp"/> <INCLUDEPATH value="..\..\source\include;..\..\source\windows;..\..\source\vcl;..\..\source\common;..\..\experts\common;$(BCB)\include;$(BCB)\include\vcl"/> @@ -123,11 +123,11 @@ </MACROS> <OPTIONS> <IDLCFLAGS value="-I..\..\source\include -I..\..\source\windows -I..\..\source\vcl -I..\..\source\common - -I$(BCB)\include -I$(BCB)\include\vcl -src_suffix cpp -D_DEBUG -boa"/> + -I$(BCB)\include -I$(BCB)\include\vcl -src_suffix cpp -boa"/> <CFLAG1 value="-Od -H=$(BCB)\lib\vcl50.csm -Hc -Vx -Ve -X- -r- -a8 -b- -k -y -v -vi- -c - -tWM"/> + -tWM -DBCB;RELEASE"/> <PFLAGS value="-N0..\..\lib\c5 -N2..\..\lib\c5 -$YD -$W -$O- -$A8 -v -JPHNE -M - -LUvcl50 + -LUvcl50 -DBCB;RELEASE -U$(BCB)\Projects\Lib -U..\..\lib\c5 "/> <RFLAGS value=""/> Modified: trunk/jcl/packages/c5/JclC50.cpp =================================================================== --- trunk/jcl/packages/c5/JclC50.cpp 2009-03-14 12:28:46 UTC (rev 2683) +++ trunk/jcl/packages/c5/JclC50.cpp 2009-03-14 15:06:08 UTC (rev 2684) @@ -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: 04-02-2009 20:52:01 UTC + Last generated: 14-03-2009 14:40:19 UTC ----------------------------------------------------------------------------- */ Modified: trunk/jcl/packages/c5/JclC50.dof =================================================================== --- trunk/jcl/packages/c5/JclC50.dof 2009-03-14 12:28:46 UTC (rev 2683) +++ trunk/jcl/packages/c5/JclC50.dof 2009-03-14 15:06:08 UTC (rev 2684) @@ -1,5 +1,5 @@ [Directories] UnitOutputDir=..\..\lib\c5 SearchPath=..\..\source\include -Conditionals=BCB +Conditionals=BCB;RELEASE Modified: trunk/jcl/packages/c5/JclC50.dpk =================================================================== --- trunk/jcl/packages/c5/JclC50.dpk 2009-03-14 12:28:46 UTC (rev 2683) +++ trunk/jcl/packages/c5/JclC50.dpk 2009-03-14 15:06:08 UTC (rev 2684) @@ -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: 04-02-2009 20:52:02 UTC + Last generated: 14-03-2009 14:40:19 UTC ----------------------------------------------------------------------------- } @@ -34,6 +34,9 @@ {$RUNONLY} {$IMPLICITBUILD OFF} +{$DEFINE BCB} +{$DEFINE RELEASE} + requires vcl50 ; Modified: trunk/jcl/packages/c5/JclContainersC50.bpk =================================================================== --- trunk/jcl/packages/c5/JclContainersC50.bpk 2009-03-14 12:28:46 UTC (rev 2683) +++ trunk/jcl/packages/c5/JclContainersC50.bpk 2009-03-14 15:06:08 UTC (rev 2684) @@ -5,7 +5,7 @@ DO NOT EDIT THIS FILE, IT IS GENERATED BY THE PACKAGE GENERATOR ALWAYS EDIT THE RELATED XML FILE (JclContainers-R.xml) - Last generated: 16-08-2008 01:20:13 UTC + Last generated: 14-03-2009 14:38:21 UTC ***************************************************************************** --> <PROJECT> @@ -50,7 +50,7 @@ <DEBUGLIBPATH value="$(BCB)\lib\debug"/> <RELEASELIBPATH value="$(BCB)\lib\release"/> <LINKER value="ilink32"/> - <USERDEFINES value="_DEBUG;BCB"/> + <USERDEFINES value="BCB;RELEASE"/> <SYSDEFINES value="_RTLDLL;NO_STRICT;USEPACKAGES"/> <MAINSOURCE value="JclContainersC50.cpp"/> <INCLUDEPATH value="..\..\source\include;..\..\source\windows;..\..\source\vcl;..\..\source\common;..\..\experts\common;$(BCB)\include;$(BCB)\include\vcl"/> @@ -60,11 +60,11 @@ </MACROS> <OPTIONS> <IDLCFLAGS value="-I..\..\source\include -I..\..\source\windows -I..\..\source\vcl -I..\..\source\common - -I$(BCB)\include -I$(BCB)\include\vcl -src_suffix cpp -D_DEBUG -boa"/> + -I$(BCB)\include -I$(BCB)\include\vcl -src_suffix cpp -boa"/> <CFLAG1 value="-Od -H=$(BCB)\lib\vcl50.csm -Hc -Vx -Ve -X- -r- -a8 -b- -k -y -v -vi- -c - -tWM"/> + -tWM -DBCB;RELEASE"/> <PFLAGS value="-N0..\..\lib\c5 -N2..\..\lib\c5 -$YD -$W -$O- -$A8 -v -JPHNE -M - -LUvcl50 + -LUvcl50 -DBCB;RELEASE -U$(BCB)\Projects\Lib -U..\..\lib\c5 "/> <RFLAGS value=""/> Modified: trunk/jcl/packages/c5/JclContainersC50.dof =================================================================== --- trunk/jcl/packages/c5/JclContainersC50.dof 2009-03-14 12:28:46 UTC (rev 2683) +++ trunk/jcl/packages/c5/JclContainersC50.dof 2009-03-14 15:06:08 UTC (rev 2684) @@ -1,5 +1,5 @@ [Directories] UnitOutputDir=..\..\lib\c5 SearchPath=..\..\source\include -Conditionals=BCB +Conditionals=BCB;RELEASE Modified: trunk/jcl/packages/c5/JclContainersC50.dpk =================================================================== --- trunk/jcl/packages/c5/JclContainersC50.dpk 2009-03-14 12:28:46 UTC (rev 2683) +++ trunk/jcl/packages/c5/JclContainersC50.dpk 2009-03-14 15:06:08 UTC (rev 2684) @@ -4,7 +4,7 @@ DO NOT EDIT THIS FILE, IT IS GENERATED BY THE PACKAGE GENERATOR ALWAYS EDIT THE RELATED XML FILE (JclContainers-R.xml) - Last generated: 16-01-2008 21:18:34 UTC + Last generated: 14-03-2009 14:38:21 UTC ----------------------------------------------------------------------------- } @@ -34,6 +34,9 @@ {$RUNONLY} {$IMPLICITBUILD OFF} +{$DEFINE BCB} +{$DEFINE RELEASE} + requires vcl50, JclC50 Modified: trunk/jcl/packages/c5/JclDebugExpertC50.bpk =================================================================== --- trunk/jcl/packages/c5/JclDebugExpertC50.bpk 2009-03-14 12:28:46 UTC (rev 2683) +++ trunk/jcl/packages/c5/JclDebugExpertC50.bpk 2009-03-14 15:06:08 UTC (rev 2684) @@ -5,7 +5,7 @@ DO NOT EDIT THIS FILE, IT IS GENERATED BY THE PACKAGE GENERATOR ALWAYS EDIT THE RELATED XML FILE (JclDebugExpert-D.xml) - Last generated: 16-08-2008 01:20:13 UTC + Last generated: 14-03-2009 14:35:13 UTC ***************************************************************************** --> <PROJECT> @@ -43,7 +43,7 @@ <DEBUGLIBPATH value="$(BCB)\lib\debug"/> <RELEASELIBPATH value="$(BCB)\lib\release"/> <LINKER value="ilink32"/> - <USERDEFINES value="_DEBUG;BCB"/> + <USERDEFINES value="BCB;RELEASE"/> <SYSDEFINES value="_RTLDLL;NO_STRICT;USEPACKAGES"/> <MAINSOURCE value="JclDebugExpertC50.cpp"/> <INCLUDEPATH value="..\..\source\include;..\..\source\windows;..\..\source\vcl;..\..\source\common;..\..\experts\common;$(BCB)\include;$(BCB)\include\vcl"/> @@ -53,11 +53,11 @@ </MACROS> <OPTIONS> <IDLCFLAGS value="-I..\..\source\include -I..\..\source\windows -I..\..\source\vcl -I..\..\source\common - -I$(BCB)\include -I$(BCB)\include\vcl -src_suffix cpp -D_DEBUG -boa"/> + -I$(BCB)\include -I$(BCB)\include\vcl -src_suffix cpp -boa"/> <CFLAG1 value="-Od -H=$(BCB)\lib\vcl50.csm -Hc -Vx -Ve -X- -r- -a8 -b- -k -y -v -vi- -c - -tWM"/> + -tWM -DBCB;RELEASE"/> <PFLAGS value="-N0..\..\lib\c5 -N2..\..\lib\c5 -$YD -$W -$O- -$A8 -v -JPHNE -M - -LUvcl50 -LUdsnide50 -LUJclC50 -LUJclBaseExpertC50 + -LUvcl50 -LUdsnide50 -LUJclC50 -LUJclBaseExpertC50 -DBCB;RELEASE -U$(BCB)\Projects\Lib -U..\..\lib\c5 "/> <RFLAGS value=""/> Modified: trunk/jcl/packages/c5/JclDebugExpertC50.dof =================================================================== --- trunk/jcl/packages/c5/JclDebugExpertC50.dof 2009-03-14 12:28:46 UTC (rev 2683) +++ trunk/jcl/packages/c5/JclDebugExpertC50.dof 2009-03-14 15:06:08 UTC (rev 2684) @@ -1,5 +1,5 @@ [Directories] UnitOutputDir=..\..\lib\c5 SearchPath=..\..\source\include -Conditionals=BCB +Conditionals=BCB;RELEASE Modified: trunk/jcl/packages/c5/JclDebugExpertC50.dpk =================================================================== --- trunk/jcl/packages/c5/JclDebugExpertC50.dpk 2009-03-14 12:28:46 UTC (rev 2683) +++ trunk/jcl/packages/c5/JclDebugExpertC50.dpk 2009-03-14 15:06:08 UTC (rev 2684) @@ -4,7 +4,7 @@ DO NOT EDIT THIS FILE, IT IS GENERATED BY THE PACKAGE GENERATOR ALWAYS EDIT THE RELATED XML FILE (JclDebugExpert-D.xml) - Last generated: 30-10-2006 08:25:08 UTC + Last generated: 14-03-2009 14:35:13 UTC ----------------------------------------------------------------------------- } @@ -34,6 +34,9 @@ {$DESIGNONLY} {$IMPLICITBUILD OFF} +{$DEFINE BCB} +{$DEFINE RELEASE} + requires vcl50, dsnide50, Modified: trunk/jcl/packages/c5/JclDebugExpertDLLC50.bpr =================================================================== --- trunk/jcl/packages/c5/JclDebugExpertDLLC50.bpr 2009-03-14 12:28:46 UTC (rev 2683) +++ trunk/jcl/packages/c5/JclDebugExpertDLLC50.bpr 2009-03-14 15:06:08 UTC (rev 2684) @@ -5,7 +5,7 @@ DO NOT EDIT THIS FILE, IT IS GENERATED BY THE PACKAGE GENERATOR ALWAYS EDIT THE RELATED XML FILE (JclDebugExpertDLL-L.xml) - Last generated: 16-08-2008 01:20:13 UTC + Last generated: 14-03-2009 14:35:13 UTC ***************************************************************************** --> <PROJECT> @@ -43,7 +43,7 @@ <DEBUGLIBPATH value="$(BCB)\lib\debug"/> <RELEASELIBPATH value="$(BCB)\lib\release"/> <LINKER value="ilink32"/> - <USERDEFINES value="_DEBUG;BCB"/> + <USERDEFINES value="BCB;RELEASE"/> <SYSDEFINES value="_RTLDLL;NO_STRICT;USEPACKAGES"/> <MAINSOURCE value="JclDebugExpertDLLC50.cpp"/> <INCLUDEPATH value="..\..\source\include;..\..\source\windows;..\..\source\vcl;..\..\source\common;..\..\experts\common;$(BCB)\include;$(BCB)\include\vcl"/> @@ -53,10 +53,10 @@ </MACROS> <OPTIONS> <IDLCFLAGS value="-I..\..\source\include -I..\..\source\windows -I..\..\source\vcl -I..\..\source\common - -I$(BCB)\include -I$(BCB)\include\vcl -src_suffix cpp -D_DEBUG -boa"/> - <CFLAG1 value="-tWD -tWM- -Od -H=$(BCB)\lib\vcl50.csm -Hc -Vx -Ve -X- -r- -a8 -b- -k -y -v -vi- -c"/> + -I$(BCB)\include -I$(BCB)\include\vcl -src_suffix cpp -boa"/> + <CFLAG1 value="-tWD -tWM- -Od -H=$(BCB)\lib\vcl50.csm -Hc -Vx -Ve -X- -r- -a8 -b- -k -y -v -vi- -c -DBCB;RELEASE"/> <PFLAGS value="-N2..\..\lib\c5 -N0..\..\lib\c5 -$YD -$W -$O- -$A8 -v -JPHNE -M - -LUvcl50 -LUdsnide50 -LUJclC50 -LUJclBaseExpertC50 + -LUvcl50 -LUdsnide50 -LUJclC50 -LUJclBaseExpertC50 -DBCB;RELEASE -U$(BCB)\Projects\Bpl -U..\..\lib\c5 "/> <RFLAGS value=""/> Modified: trunk/jcl/packages/c5/JclDebugExpertDLLC50.dof =================================================================== --- trunk/jcl/packages/c5/JclDebugExpertDLLC50.dof 2009-03-14 12:28:46 UTC (rev 2683) +++ trunk/jcl/packages/c5/JclDebugExpertDLLC50.dof 2009-03-14 15:06:08 UTC (rev 2684) @@ -1,7 +1,7 @@ [Directories] UnitOutputDir=..\..\lib\c5 SearchPath=..\..\source\include -Conditionals=BCB +Conditionals=BCB;RELEASE [Compiler] PackageNoLink=1 [Linker] Modified: trunk/jcl/packages/c5/JclFavoriteFoldersExpertC50.bpk =================================================================== --- trunk/jcl/packages/c5/JclFavoriteFoldersExpertC50.bpk 2009-03-14 12:28:46 UTC (rev 2683) +++ trunk/jcl/packages/c5/JclFavoriteFoldersExpertC50.bpk 2009-03-14 15:06:08 UTC (rev 2684) @@ -5,7 +5,7 @@ DO NOT EDIT THIS FILE, IT IS GENERATED BY THE PACKAGE GENERATOR ALWAYS EDIT THE RELATED XML FILE (JclFavoriteFoldersExpert-D.xml) - Last generated: 16-08-2008 01:20:13 UTC + Last generated: 14-03-2009 14:35:13 UTC ***************************************************************************** --> <PROJECT> @@ -40,7 +40,7 @@ <DEBUGLIBPATH value="$(BCB)\lib\debug"/> <RELEASELIBPATH value="$(BCB)\lib\release"/> <LINKER value="ilink32"/> - <USERDEFINES value="_DEBUG;BCB"/> + <USERDEFINES value="BCB;RELEASE"/> <SYSDEFINES value="_RTLDLL;NO_STRICT;USEPACKAGES"/> <MAINSOURCE value="JclFavoriteFoldersExpertC50.cpp"/> <INCLUDEPATH value="..\..\source\include;..\..\source\windows;..\..\source\vcl;..\..\source\common;..\..\experts\common;$(BCB)\include;$(BCB)\include\vcl"/> @@ -50,11 +50,11 @@ </MACROS> <OPTIONS> <IDLCFLAGS value="-I..\..\source\include -I..\..\source\windows -I..\..\source\vcl -I..\..\source\common - -I$(BCB)\include -I$(BCB)\include\vcl -src_suffix cpp -D_DEBUG -boa"/> + -I$(BCB)\include -I$(BCB)\include\vcl -src_suffix cpp -boa"/> <CFLAG1 value="-Od -H=$(BCB)\lib\vcl50.csm -Hc -Vx -Ve -X- -r- -a8 -b- -k -y -v -vi- -c - -tWM"/> + -tWM -DBCB;RELEASE"/> <PFLAGS value="-N0..\..\lib\c5 -N2..\..\lib\c5 -$YD -$W -$O- -$A8 -v -JPHNE -M - -LUvcl50 -LUdsnide50 -LUJclC50 -LUJclBaseExpertC50 + -LUvcl50 -LUdsnide50 -LUJclC50 -LUJclBaseExpertC50 -DBCB;RELEASE -U$(BCB)\Projects\Lib -U..\..\lib\c5 "/> <RFLAGS value=""/> Modified: trunk/jcl/packages/c5/JclFavoriteFoldersExpertC50.dof =================================================================== --- trunk/jcl/packages/c5/JclFavoriteFoldersExpertC50.dof 2009-03-14 12:28:46 UTC (rev 2683) +++ trunk/jcl/packages/c5/JclFavoriteFoldersExpertC50.dof 2009-03-14 15:06:08 UTC (rev 2684) @@ -1,5 +1,5 @@ [Directories] UnitOutputDir=..\..\lib\c5 SearchPath=..\..\source\include -Conditionals=BCB +Conditionals=BCB;RELEASE Modified: trunk/jcl/packages/c5/JclFavoriteFoldersExpertC50.dpk =================================================================== --- trunk/jcl/packages/c5/JclFavoriteFoldersExpertC50.dpk 2009-03-14 12:28:46 UTC (rev 2683) +++ trunk/jcl/packages/c5/JclFavoriteFoldersExpertC50.dpk 2009-03-14 15:06:08 UTC (rev 2684) @@ -4,7 +4,7 @@ DO NOT EDIT THIS FILE, IT IS GENERATED BY THE PACKAGE GENERATOR ALWAYS EDIT THE RELATED XML FILE (JclFavoriteFoldersExpert-D.xml) - Last generated: 27-02-2006 20:07:08 UTC + Last generated: 14-03-2009 14:35:13 UTC ----------------------------------------------------------------------------- } @@ -34,6 +34,9 @@ {$DESIGNONLY} {$IMPLICITBUILD OFF} +{$DEFINE BCB} +{$DEFINE RELEASE} + requires vcl50, dsnide50, Modified: trunk/jcl/packages/c5/JclFavoriteFoldersExpertDLLC50.bpr =================================================================== --- trunk/jcl/packages/c5/JclFavoriteFoldersExpertDLLC50.bpr 2009-03-14 12:28:46 UTC (rev 2683) +++ trunk/jcl/packages/c5/JclFavoriteFoldersExpertDLLC50.bpr 2009-03-14 15:06:08 UTC (rev 2684) @@ -5,7 +5,7 @@ DO NOT EDIT THIS FILE, IT IS GENERATED BY THE PACKAGE GENERATOR ALWAYS EDIT THE RELATED XML FILE (JclFavoriteFoldersExpertDLL-L.xml) - Last generated: 16-08-2008 01:20:13 UTC + Last generated: 14-03-2009 14:35:13 UTC ***************************************************************************** --> <PROJECT> @@ -40,7 +40,7 @@ <DEBUGLIBPATH value="$(BCB)\lib\debug"/> <RELEASELIBPATH value="$(BCB)\lib\release"/> <LINKER value="ilink32"/> - <USERDEFINES value="_DEBUG;BCB"/> + <USERDEFINES value="BCB;RELEASE"/> <SYSDEFINES value="_RTLDLL;NO_STRICT;USEPACKAGES"/> <MAINSOURCE value="JclFavoriteFoldersExpertDLLC50.cpp"/> <INCLUDEPATH value="..\..\source\include;..\..\source\windows;..\..\source\vcl;..\..\source\common;..\..\experts\common;$(BCB)\include;$(BCB)\include\vcl"/> @@ -50,10 +50,10 @@ </MACROS> <OPTIONS> <IDLCFLAGS value="-I..\..\source\include -I..\..\source\windows -I..\..\source\vcl -I..\..\source\common - -I$(BCB)\include -I$(BCB)\include\vcl -src_suffix cpp -D_DEBUG -boa"/> - <CFLAG1 value="-tWD -tWM- -Od -H=$(BCB)\lib\vcl50.csm -Hc -Vx -Ve -X- -r- -a8 -b- -k -y -v -vi- -c"/> + -I$(BCB)\include -I$(BCB)\include\vcl -src_suffix cpp -boa"/> + <CFLAG1 value="-tWD -tWM- -Od -H=$(BCB)\lib\vcl50.csm -Hc -Vx -Ve -X- -r- -a8 -b- -k -y -v -vi- -c -DBCB;RELEASE"/> <PFLAGS value="-N2..\..\lib\c5 -N0..\..\lib\c5 -$YD -$W -$O- -$A8 -v -JPHNE -M - -LUvcl50 -LUdsnide50 -LUJclC50 -LUJclBaseExpertC50 + -LUvcl50 -LUdsnide50 -LUJclC50 -LUJclBaseExpertC50 -DBCB;RELEASE -U$(BCB)\Projects\Bpl -U..\..\lib\c5 "/> <RFLAGS value=""/> Modified: trunk/jcl/packages/c5/JclFavoriteFoldersExpertDLLC50.dof =================================================================== --- trunk/jcl/packages/c5/JclFavoriteFoldersExpertDLLC50.dof 2009-03-14 12:28:46 UTC (rev 2683) +++ trunk/jcl/packages/c5/JclFavoriteFoldersExpertDLLC50.dof 2009-03-14 15:06:08 UTC (rev 2684) @@ -1,7 +1,7 @@ [Directories] UnitOutputDir=..\..\lib\c5 SearchPath=..\..\source\include -Conditionals=BCB +Conditionals=BCB;RELEASE [Compiler] PackageNoLink=1 [Linker] Modified: trunk/jcl/packages/c5/JclProjectAnalysisExpertC50.bpk =================================================================== --- trunk/jcl/packages/c5/JclProjectAnalysisExpertC50.bpk 2009-03-14 12:28:46 UTC (rev 2683) +++ trunk/jcl/packages/c5/JclProjectAnalysisExpertC50.bpk 2009-03-14 15:06:08 UTC (rev 2684) @@ -5,7 +5,7 @@ DO NOT EDIT THIS FILE, IT IS GENERATED BY THE PACKAGE GENERATOR ALWAYS EDIT THE RELATED XML FILE (JclProjectAnalysisExpert-D.xml) - Last generated: 16-08-2008 01:20:13 UTC + Last generated: 14-03-2009 14:35:13 UTC ***************************************************************************** --> <PROJECT> @@ -41,7 +41,7 @@ <DEBUGLIBPATH value="$(BCB)\lib\debug"/> <RELEASELIBPATH value="$(BCB)\lib\release"/> <LINKER value="ilink32"/> - <USERDEFINES value="_DEBUG;BCB"/> + <USERDEFINES value="BCB;RELEASE"/> <SYSDEFINES value="_RTLDLL;NO_STRICT;USEPACKAGES"/> <MAINSOURCE value="JclProjectAnalysisExpertC50.cpp"/> <INCLUDEPATH value="..\..\source\include;..\..\source\windows;..\..\source\vcl;..\..\source\common;..\..\experts\common;$(BCB)\include;$(BCB)\include\vcl"/> @@ -51,11 +51,11 @@ </MACROS> <OPTIONS> <IDLCFLAGS value="-I..\..\source\include -I..\..\source\windows -I..\..\source\vcl -I..\..\source\common - -I$(BCB)\include -I$(BCB)\include\vcl -src_suffix cpp -D_DEBUG -boa"/> + -I$(BCB)\include -I$(BCB)\include\vcl -src_suffix cpp -boa"/> <CFLAG1 value="-Od -H=$(BCB)\lib\vcl50.csm -Hc -Vx -Ve -X- -r- -a8 -b- -k -y -v -vi- -c - -tWM"/> + -tWM -DBCB;RELEASE"/> <PFLAGS value="-N0..\..\lib\c5 -N2..\..\lib\c5 -$YD -$W -$O- -$A8 -v -JPHNE -M - -LUvcl50 -LUdsnide50 -LUJclC50 -LUJclBaseExpertC50 + -LUvcl50 -LUdsnide50 -LUJclC50 -LUJclBaseExpertC50 -DBCB;RELEASE -U$(BCB)\Projects\Lib -U..\..\lib\c5 "/> <RFLAGS value=""/> Modified: trunk/jcl/packages/c5/JclProjectAnalysisExpertC50.dof =================================================================== --- trunk/jcl/packages/c5/JclProjectAnalysisExpertC50.dof 2009-03-14 12:28:46 UTC (rev 2683) +++ trunk/jcl/packages/c5/JclProjectAnalysisExpertC50.dof 2009-03-14 15:06:08 UTC (rev 2684) @@ -1,5 +1,5 @@ [Directories] UnitOutputDir=..\..\lib\c5 SearchPath=..\..\source\include -Conditionals=BCB +Conditionals=BCB;RELEASE Modified: trunk/jcl/packages/c5/JclProjectAnalysisExpertC50.dpk =================================================================== --- trunk/jcl/packages/c5/JclProjectAnalysisExpertC50.dpk 2009-03-14 12:28:46 UTC (rev 2683) +++ trunk/jcl/packages/c5/JclProjectAnalysisExpertC50.dpk 2009-03-14 15:06:08 UTC (rev 2684) @@ -4,7 +4,7 @@ DO NOT EDIT THIS FILE, IT IS GENERATED BY THE PACKAGE GENERATOR ALWAYS EDIT THE RELATED XML FILE (JclProjectAnalysisExpert-D.xml) - Last generated: 27-02-2006 20:07:08 UTC + Last generated: 14-03-2009 14:35:13 UTC ----------------------------------------------------------------------------- } @@ -34,6 +34,9 @@ {$DESIGNONLY} {$IMPLICITBUILD OFF} +{$DEFINE BCB} +{$DEFINE RELEASE} + requires vcl50, dsnide50, Modified: trunk/jcl/packages/c5/JclProjectAnalysisExpertDLLC50.bpr =================================================================== --- trunk/jcl/packages/c5/JclProjectAnalysisExpertDLLC50.bpr 2009-03-14 12:28:46 UTC (rev 2683) +++ trunk/jcl/packages/c5/JclProjectAnalysisExpertDLLC50.bpr 2009-03-14 15:06:08 UTC (rev 2684) @@ -5,7 +5,7 @@ DO NOT EDIT THIS FILE, IT IS GENERATED BY THE PACKAGE GENERATOR ALWAYS EDIT THE RELATED XML FILE (JclProjectAnalysisExpertDLL-L.xml) - Last generated: 16-08-2008 01:20:13 UTC + Last generated: 14-03-2009 14:35:13 UTC ***************************************************************************** --> <PROJECT> @@ -41,7 +41,7 @@ <DEBUGLIBPATH value="$(BCB)\lib\debug"/> <RELEASELIBPATH value="$(BCB)\lib\release"/> <LINKER value="ilink32"/> - <USERDEFINES value="_DEBUG;BCB"/> + <USERDEFINES value="BCB;RELEASE"/> <SYSDEFINES value="_RTLDLL;NO_STRICT;USEPACKAGES"/> <MAINSOURCE value="JclProjectAnalysisExpertDLLC50.cpp"/> <INCLUDEPATH value="..\..\source\include;..\..\source\windows;..\..\source\vcl;..\..\source\common;..\..\experts\common;$(BCB)\include;$(BCB)\include\vcl"/> @@ -51,10 +51,10 @@ </MACROS> <OPTIONS> <IDLCFLAGS value="-I..\..\source\include -I..\..\source\windows -I..\..\source\vcl -I..\..\source\common - -I$(BCB)\include -I$(BCB)\include\vcl -src_suffix cpp -D_DEBUG -boa"/> - <CFLAG1 value="-tWD -tWM- -Od -H=$(BCB)\lib\vcl50.csm -Hc -Vx -Ve -X- -r- -a8 -b- -k -y -v -vi- -c"/> + -I$(BCB)\include -I$(BCB)\include\vcl -src_suffix cpp -boa"/> + <CFLAG1 value="-tWD -tWM- -Od -H=$(BCB)\lib\vcl50.csm -Hc -Vx -Ve -X- -r- -a8 -b- -k -y -v -vi- -c -DBCB;RELEASE"/> <PFLAGS value="-N2..\..\lib\c5 -N0..\..\lib\c5 -$YD -$W -$O- -$A8 -v -JPHNE -M - -LUvcl50 -LUdsnide50 -LUJclC50 -LUJclBaseExpertC50 + -LUvcl50 -LUdsnide50 -LUJclC50 -LUJclBaseExpertC50 -DBCB;RELEASE -U$(BCB)\Projects\Bpl -U..\..\lib\c5 "/> <RFLAGS value=""/> Modified: trunk/jcl/packages/c5/JclProjectAnalysisExpertDLLC50.dof =================================================================== --- trunk/jcl/packages/c5/JclProjectAnalysisExpertDLLC50.dof 2009-03-14 12:28:46 UTC (rev 2683) +++ trunk/jcl/packages/c5/JclProjectAnalysisExpertDLLC50.dof 2009-03-14 15:06:08 UTC (rev 2684) @@ -1,7 +1,7 @@ [Directories] UnitOutputDir=..\..\lib\c5 SearchPath=..\..\source\include -Conditionals=BCB +Conditionals=BCB;RELEASE [Compiler] PackageNoLink=1 [Linker] Modified: trunk/jcl/packages/c5/JclRepositoryExpertC50.bpk =================================================================== --- trunk/jcl/packages/c5/JclRepositoryExpertC50.bpk 2009-03-14 12:28:46 UTC (rev 2683) +++ trunk/jcl/packages/c5/JclRepositoryExpertC50.bpk 2009-03-14 15:06:08 UTC (rev 2684) @@ -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: 16-08-2008 01:20:13 UTC + Last generated: 14-03-2009 14:35:13 UTC ***************************************************************************** --> <PROJECT> @@ -54,7 +54,7 @@ <DEBUGLIBPATH value="$(BCB)\lib\debug"/> <RELEASELIBPATH value="$(BCB)\lib\release"/> <LINKER value="ilink32"/> - <USERDEFINES value="_DEBUG;BCB"/> + <USERDEFINES value="BCB;RELEASE"/> <SYSDEFINES value="_RTLDLL;NO_STRICT;USEPACKAGES"/> <MAINSOURCE value="JclRepositoryExpertC50.cpp"/> <INCLUDEPATH value="..\..\source\include;..\..\source\windows;..\..\source\vcl;..\..\source\common;..\..\experts\common;$(BCB)\include;$(BCB)\include\vcl"/> @@ -64,11 +64,11 @@ </MACROS> <OPTIONS> <IDLCFLAGS value="-I..\..\source\include -I..\..\source\windows -I..\..\source\vcl -I..\..\source\common - -I$(BCB)\include -I$(BCB)\include\vcl -src_suffix cpp -D_DEBUG -boa"/> + -I$(BCB)\include -I$(BCB)\include\vcl -src_suffix cpp -boa"/> <CFLAG1 value="-Od -H=$(BCB)\lib\vcl50.csm -Hc -Vx -Ve -X- -r- -a8 -b- -k -y -v -vi- -c - -tWM"/> + -tWM -DBCB;RELEASE"/> <PFLAGS value="-N0..\..\lib\c5 -N2..\..\lib\c5 -$YD -$W -$O- -$A8 -v -JPHNE -M - -LUvcl50 -LUdsnide50 -LUJclC50 + -LUvcl50 -LUdsnide50 -LUJclC50 -DBCB;RELEASE -U$(BCB)\Projects\Lib -U..\..\lib\c5 "/> <RFLAGS value=""/> Modified: trunk/jcl/packages/c5/JclRepositoryExpertC50.dof =================================================================== --- trunk/jcl/packages/c5/JclRepositoryExpertC50.dof 2009-03-14 12:28:46 UTC (rev 2683) +++ trunk/jcl/packages/c5/JclRepositoryExpertC50.dof 2009-03-14 15:06:08 UTC (rev 2684) @@ -1,5 +1,5 @@ [Directories] UnitOutputDir=..\..\lib\c5 SearchPath=..\..\source\include -Conditionals=BCB +Conditionals=BCB;RELEASE Modified: trunk/jcl/packages/c5/JclRepositoryExpertC50.dpk =================================================================== --- trunk/jcl/packages/c5/JclRepositoryExpertC50.dpk 2009-03-14 12:28:46 UTC (rev 2683) +++ trunk/jcl/packages/c5/JclRepositoryExpertC50.dpk 2009-03-14 15:06:08 UTC (rev 2684) @@ -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: 03-02-2008 19:09:13 UTC + Last generated: 14-03-2009 14:35:13 UTC ----------------------------------------------------------------------------- } @@ -34,6 +34,9 @@ {$DESIGNONLY} {$IMPLICITBUILD OFF} +{$DEFINE BCB} +{$DEFINE RELEASE} + requires vcl50, dsnide50, Modified: trunk/jcl/packages/c5/JclRepositoryExpertDLLC50.bpr =================================================================== --- trunk/jcl/packages/c5/JclRepositoryExpertDLLC50.bpr 2009-03-14 12:28:46 UTC (rev 2683) +++ trunk/jcl/packages/c5/JclRepositoryExpertDLLC50.bpr 2009-03-14 15:06:08 UTC (rev 2684) @@ -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: 16-08-2008 01:20:13 UTC + Last generated: 14-03-2009 14:35:13 UTC ***************************************************************************** --> <PROJECT> @@ -54,7 +54,7 @@ <DEBUGLIBPATH value="$(BCB)\lib\debug"/> <RELEASELIBPATH value="$(BCB)\lib\release"/> <LINKER value="ilink32"/> - <USERDEFINES value="_DEBUG;BCB"/> + <USERDEFINES value="BCB;RELEASE"/> <SYSDEFINES value="_RTLDLL;NO_STRICT;USEPACKAGES"/> <MAINSOURCE value="JclRepositoryExpertDLLC50.cpp"/> <INCLUDEPATH value="..\..\source\include;..\..\source\windows;..\..\source\vcl;..\..\source\common;..\..\experts\common;$(BCB)\include;$(BCB)\include\vcl"/> @@ -64,10 +64,10 @@ </MACROS> <OPTIONS> <IDLCFLAGS value="-I..\..\source\include -I..\..\source\windows -I..\..\source\vcl -I..\..\source\common - -I$(BCB)\include -I$(BCB)\include\vcl -src_suffix cpp -D_DEBUG -boa"/> - <CFLAG1 value="-tWD -tWM- -Od -H=$(BCB)\lib\vcl50.csm -Hc -Vx -Ve -X- -r- -a8 -b- -k -y -v -vi- -c"/> + -I$(BCB)\include -I$(BCB)\include\vcl -src_suffix cpp -boa"/> + <CFLAG1 value="-tWD -tWM- -Od -H=$(BCB)\lib\vcl50.csm -Hc -Vx -Ve -X- -r- -a8 -b- -k -y -v -vi- -c -DBCB;RELEASE"/> <PFLAGS value="-N2..\..\lib\c5 -N0..\..\lib\c5 -$YD -$W -$O- -$A8 -v -JPHNE -M - -LUvcl50 -LUdsnide50 -LUJclC50 + -LUvcl50 -LUdsnide50 -LUJclC50 -DBCB;RELEASE -U$(BCB)\Projects\Bpl -U..\..\lib\c5 "/> <RFLAGS value=""/> Modified: trunk/jcl/packages/c5/JclRepositoryExpertDLLC50.dof =================================================================== --- trunk/jcl/packages/c5/JclRepositoryExpertDLLC50.dof 2009-03-14 12:28:46 UTC (rev 2683) +++ trunk/jcl/packages/c5/JclRepositoryExpertDLLC50.dof 2009-03-14 15:06:08 UTC (rev 2684) @@ -1,7 +1,7 @@ [Directories] UnitOutputDir=..\..\lib\c5 SearchPath=..\..\source\include -Conditionals=BCB +Conditionals=BCB;RELEASE [Compiler] PackageNoLink=1 [Linker] Modified: trunk/jcl/packages/c5/JclSIMDViewExpertC50.bpk =================================================================== --- trunk/jcl/packages/c5/JclSIMDViewExpertC50.bpk 2009-03-14 12:28:46 UTC (rev 2683) +++ trunk/jcl/packages/c5/JclSIMDViewExpertC50.bpk 2009-03-14 15:06:08 UTC (rev 2684) @@ -5,7 +5,7 @@ DO NOT EDIT THIS FILE, IT IS GENERATED BY THE PACKAGE GENERATOR ALWAYS EDIT THE RELATED XML FILE (JclSIMDViewExpert-D.xml) - Last generated: 16-08-2008 01:20:13 UTC + Last generated: 14-03-2009 14:35:13 UTC ***************************************************************************** --> <PROJECT> @@ -46,7 +46,7 @@ <DEBUGLIBPATH value="$(BCB)\lib\debug"/> <RELEASELIBPATH value="$(BCB)\lib\release"/> <LINKER value="ilink32"/> - <USERDEFINES value="_DEBUG;BCB"/> + <USERDEFINES value="BCB;RELEASE"/> <SYSDEFINES value="_RTLDLL;NO_STRICT;USEPACKAGES"/> <MAINSOURCE value="JclSIMDViewExpertC50.cpp"/> <INCLUDEPATH value="..\..\source\include;..\..\source\windows;..\..\source\vcl;..\..\source\common;..\..\experts\common;$(BCB)\include;$(BCB)\include\vcl"/> @@ -56,11 +56,11 @@ </MACROS> <OPTIONS> <IDLCFLAGS value="-I..\..\source\include -I..\..\source\windows -I..\..\source\vcl -I..\..\source\common - -I$(BCB)\include -I$(BCB)\include\vcl -src_suffix cpp -D_DEBUG -boa"/> + -I$(BCB)\include -I$(BCB)\include\vcl -src_suffix cpp -boa"/> <CFLAG1 value="-Od -H=$(BCB)\lib\vcl50.csm -Hc -Vx -Ve -X- -r- -a8 -b- -k -y -v -vi- -c - -tWM"/> + -tWM -DBCB;RELEASE"/> <PFLAGS value="-N0..\..\lib\c5 -N2..\..\lib\c5 -$YD -$W -$O- -$A8 -v -JPHNE -M - -LUvcl50 -LUdsnide50 -LUJclC50 -LUJclBaseExpertC50 + -LUvcl50 -LUdsnide50 -LUJclC50 -LUJclBaseExpertC50 -DBCB;RELEASE -U$(BCB)\Projects\Lib -U..\..\lib\c5 "/> <RFLAGS value=""/> Modified: trunk/jcl/packages/c5/JclSIMDViewExpertC50.dof =================================================================== --- trunk/jcl/packages/c5/JclSIMDViewExpertC50.dof 2009-03-14 12:28:46 UTC (rev 2683) +++ trunk/jcl/packages/c5/JclSIMDViewExpertC50.dof 2009-03-14 15:06:08 UTC (rev 2684) @@ -1,5 +1,5 @@ [Directories] UnitOutputDir=..\..\lib\c5 SearchPath=..\..\source\include -Conditionals=BCB +Conditionals=BCB;RELEASE Modified: trunk/jcl/packages/c5/JclSIMDViewExpertC50.dpk =================================================================== --- trunk/jcl/packages/c5/JclSIMDViewExpertC50.dpk 2009-03-14 12:28:46 UTC (rev 2683) +++ trunk/jcl/packages/c5/JclSIMDViewExpertC50.dpk 2009-03-14 15:06:08 UTC (rev 2684) @@ -4,7 +4,7 @@ DO NOT EDIT THIS FILE, IT IS GENERATED BY THE PACKAGE GENERATOR ALWAYS EDIT THE RELATED XML FILE (JclSIMDViewExpert-D.xml) - Last generated: 27-02-2006 20:07:08 UTC + Last generated: 14-03-2009 14:35:13 UTC ----------------------------------------------------------------------------- } @@ -34,6 +34,9 @@ {$DESIGNONLY} {$IMPLICITBUILD OFF} +{$DEFINE BCB} +{$DEFINE RELEASE} + requires vcl50, dsnide50, Modified: trunk/jcl/packages/c5/JclSIMDViewExpertDLLC50.bpr =================================================================== --- trunk/jcl/packages/c5/JclSIMDViewExpertDLLC50.bpr 2009-03-14 12:28:46 UTC (rev 2683) +++ trunk/jcl/packages/c5/JclSIMDViewExpertDLLC50.bpr 2009-03-14 15:06:08 UTC (rev 2684) @@ -5,7 +5,7 @@ DO NOT EDIT THIS FILE, IT IS GENERATED BY THE PACKAGE GENERATOR ALWAYS EDIT THE RELATED XML FILE (JclSIMDViewExpertDLL-L.xml) - Last generated: 16-08-2008 01:20:13 UTC + Last generated: 14-03-2009 14:35:13 UTC ********************... [truncated message content] |
From: <ou...@us...> - 2009-03-14 12:28:55
|
Revision: 2683 http://jcl.svn.sourceforge.net/jcl/?rev=2683&view=rev Author: outchy Date: 2009-03-14 12:28:46 +0000 (Sat, 14 Mar 2009) Log Message: ----------- compatibility with revision 2680. Revision Links: -------------- http://jcl.svn.sourceforge.net/jcl/?rev=2680&view=rev Modified Paths: -------------- trunk/jcl/source/common/JclAbstractContainers.pas trunk/jcl/source/common/JclAnsiStrings.pas trunk/jcl/source/common/JclContainerIntf.pas trunk/jcl/source/prototypes/JclContainerIntf.pas trunk/jcl/source/windows/JclCLR.pas trunk/jcl/source/windows/JclMapi.pas Modified: trunk/jcl/source/common/JclAbstractContainers.pas =================================================================== --- trunk/jcl/source/common/JclAbstractContainers.pas 2009-03-13 16:28:48 UTC (rev 2682) +++ trunk/jcl/source/common/JclAbstractContainers.pas 2009-03-14 12:28:46 UTC (rev 2683) @@ -2625,7 +2625,7 @@ I: Integer; begin for I := 0 to Strings.Count - 1 do - Add(AnsiString(Strings[I])); // OF TStrings to AnsiString + Add(Strings[I]); end; procedure TJclAnsiStrAbstractCollection.AppendToStrings(Strings: TAnsiStrings); @@ -2636,7 +2636,7 @@ Strings.BeginUpdate; try while It.HasNext do - Strings.Add(string(It.Next)); // OF AnsiString to TStrings + Strings.Add(It.Next); finally Strings.EndUpdate; end; @@ -2656,7 +2656,7 @@ function TJclAnsiStrAbstractCollection.GetAsStrings: TAnsiStrings; begin - Result := TStringList.Create; + Result := TAnsiStringList.Create; try AppendToStrings(Result); except Modified: trunk/jcl/source/common/JclAnsiStrings.pas =================================================================== --- trunk/jcl/source/common/JclAnsiStrings.pas 2009-03-13 16:28:48 UTC (rev 2682) +++ trunk/jcl/source/common/JclAnsiStrings.pas 2009-03-14 12:28:46 UTC (rev 2683) @@ -3845,7 +3845,7 @@ SetLength(List, Source.Count + SizeOf(AnsiChar)); for I := 0 to Source.Count - 1 do begin - S := AnsiString(Source[I]); // OF TStrings to AnsiString + S := Source[I]; {$IFDEF SUPPORTS_UNICODE} List[I] := AnsiStrAlloc(Length(S) + SizeOf(AnsiChar)); {$ELSE ~SUPPORTS_UNICODE} @@ -3889,7 +3889,7 @@ try Dest.Clear; for I := 0 to Count - 1 do - Dest.Add(List[I]); // OF AnsiString to TStrings + Dest.Add(List[I]); finally Dest.EndUpdate; end; @@ -4053,7 +4053,7 @@ P := Source; while P^ <> #0 do begin - Dest.Add(P); // OF AnsiString to TStrings + Dest.Add(P); P := StrEnd(P); Inc(P); end; @@ -4127,12 +4127,11 @@ begin Left := StrLeft(S, I - 1); if (Left <> '') or AllowEmptyString then - List.Add(Left); // OF AnsiString to TStrings + List.Add(Left); Delete(S, 1, I + L - 1); I := Pos(Sep, S); end; if S <> '' then - // OF AnsiString to TStrings List.Add(S); // Ignore empty strings at the end. finally List.EndUpdate; @@ -4157,13 +4156,12 @@ begin Left := StrLeft(S, I - 1); if (Left <> '') or AllowEmptyString then - List.Add(Left); // OF AnsiString to TStrings + List.Add(Left); Delete(S, 1, I + L - 1); Delete(LowerCaseStr, 1, I + L - 1); I := Pos(Sep, LowerCaseStr); end; if S <> '' then - // OF AnsiString to TStrings List.Add(S); // Ignore empty strings at the end. finally List.EndUpdate; @@ -4181,7 +4179,7 @@ if (List[I] <> '') or AllowEmptyString then begin // don't combine these into one addition, somehow it hurts performance - Result := Result + AnsiString(List[I]); // OF TStrings to AnsiString + Result := Result + List[I]; Result := Result + Sep; end; end; @@ -4250,9 +4248,9 @@ function AddStringToStrings(const S: AnsiString; Strings: TAnsiStrings; const Unique: Boolean): Boolean; begin Assert(Strings <> nil); - Result := Unique and (Strings.IndexOf(S) <> -1); // OF AnsiString to TStrings + Result := Unique and (Strings.IndexOf(S) <> -1); if not Result then - Result := Strings.Add(S) > -1; // OF AnsiString to TStrings + Result := Strings.Add(S) > -1; end; //=== Miscellaneous ========================================================== @@ -4353,7 +4351,7 @@ repeat Done := StrWord(Start, Token); if Token <> '' then - List.Add(Token); // OF AnsiString to TStrings + List.Add(Token); until Done; finally List.EndUpdate; @@ -4375,7 +4373,7 @@ while S <> '' do begin Token := StrToken(S, Separator); - List.Add(Token); // OF AnsiString to TStrings + List.Add(Token); end; finally List.EndUpdate; Modified: trunk/jcl/source/common/JclContainerIntf.pas =================================================================== --- trunk/jcl/source/common/JclContainerIntf.pas 2009-03-13 16:28:48 UTC (rev 2682) +++ trunk/jcl/source/common/JclContainerIntf.pas 2009-03-14 12:28:46 UTC (rev 2683) @@ -281,11 +281,11 @@ IJclAnsiStrFlatContainer = interface(IJclAnsiStrContainer) ['{8A45A4D4-6317-4CDF-8314-C3E5CC6899F4}'] - procedure LoadFromStrings(Strings: TStrings); - procedure SaveToStrings(Strings: TStrings); - procedure AppendToStrings(Strings: TStrings); - procedure AppendFromStrings(Strings: TStrings); - function GetAsStrings: TStrings; + procedure LoadFromStrings(Strings: TAnsiStrings); + procedure SaveToStrings(Strings: TAnsiStrings); + procedure AppendToStrings(Strings: TAnsiStrings); + procedure AppendFromStrings(Strings: TAnsiStrings); + function GetAsStrings: TAnsiStrings; function GetAsDelimited(const Separator: AnsiString = AnsiLineBreak): AnsiString; procedure AppendDelimited(const AString: AnsiString; const Separator: AnsiString = AnsiLineBreak); procedure LoadDelimited(const AString: AnsiString; const Separator: AnsiString = AnsiLineBreak); Modified: trunk/jcl/source/prototypes/JclContainerIntf.pas =================================================================== --- trunk/jcl/source/prototypes/JclContainerIntf.pas 2009-03-13 16:28:48 UTC (rev 2682) +++ trunk/jcl/source/prototypes/JclContainerIntf.pas 2009-03-14 12:28:46 UTC (rev 2683) @@ -277,11 +277,11 @@ IJclAnsiStrFlatContainer = interface(IJclAnsiStrContainer) ['{8A45A4D4-6317-4CDF-8314-C3E5CC6899F4}'] - procedure LoadFromStrings(Strings: TStrings); - procedure SaveToStrings(Strings: TStrings); - procedure AppendToStrings(Strings: TStrings); - procedure AppendFromStrings(Strings: TStrings); - function GetAsStrings: TStrings; + procedure LoadFromStrings(Strings: TAnsiStrings); + procedure SaveToStrings(Strings: TAnsiStrings); + procedure AppendToStrings(Strings: TAnsiStrings); + procedure AppendFromStrings(Strings: TAnsiStrings); + function GetAsStrings: TAnsiStrings; function GetAsDelimited(const Separator: AnsiString = AnsiLineBreak): AnsiString; procedure AppendDelimited(const AString: AnsiString; const Separator: AnsiString = AnsiLineBreak); procedure LoadDelimited(const AString: AnsiString; const Separator: AnsiString = AnsiLineBreak); Modified: trunk/jcl/source/windows/JclCLR.pas =================================================================== --- trunk/jcl/source/windows/JclCLR.pas 2009-03-13 16:28:48 UTC (rev 2682) +++ trunk/jcl/source/windows/JclCLR.pas 2009-03-14 12:28:46 UTC (rev 2683) @@ -189,7 +189,7 @@ TJclClrStringsStream = class(TJclClrStream) private - FStrings: TAnsiStringList; + FStrings: TStringList; function GetString(const Idx: Integer): WideString; function GetOffset(const Idx: Integer): DWORD; function GetStringCount: Integer; @@ -629,7 +629,7 @@ while off < Size do begin if pch^ <> #0 then - FStrings.AddObject(string(TUTF8String(pch)), TObject(off)); // OF AnsiString to TStrings + FStrings.AddObject(string(TUTF8String(pch)), TObject(off)); pch := pch + StrLen(pch) + 1; off := DWORD_PTR(pch - Data); end; @@ -643,7 +643,7 @@ function TJclClrStringsStream.GetString(const Idx: Integer): WideString; begin - Result := UTF8ToWideString(TUTF8String(FStrings.Strings[Idx])); // OF TStrings to AnsiString + Result := UTF8ToWideString(TUTF8String(FStrings.Strings[Idx])); end; function TJclClrStringsStream.GetOffset(const Idx: Integer): DWORD; Modified: trunk/jcl/source/windows/JclMapi.pas =================================================================== --- trunk/jcl/source/windows/JclMapi.pas 2009-03-13 16:28:48 UTC (rev 2682) +++ trunk/jcl/source/windows/JclMapi.pas 2009-03-14 12:28:46 UTC (rev 2683) @@ -240,7 +240,7 @@ function FindNextMessage: Boolean; procedure LogOff; procedure LogOn(const ProfileName: AnsiString = ''; const Password: AnsiString = ''); - function MessageReport(Strings: TAnsiStrings; MaxWidth: Integer = 80; IncludeAddresses: Boolean = False): Integer; + function MessageReport(Strings: TStrings; MaxWidth: Integer = 80; IncludeAddresses: Boolean = False): Integer; function Read(const Options: TJclEmailReadOptions = []): Boolean; function ResolveName(var Name, Address: AnsiString; ShowDialog: Boolean = False): Boolean; procedure RestoreTaskWindows; @@ -568,7 +568,7 @@ MailClientsKey = 'SOFTWARE\Clients\Mail'; var DefaultValue, ClientKey: string; - SL: TAnsiStringList; + SL: TStringList; I: Integer; function CheckValid(var Client: TJclMapiClient): Boolean; @@ -596,7 +596,7 @@ FDefaultClientIndex := -1; FProfiles := nil; FDefaultProfileName := ''; - SL := TAnsiStringList.Create; + SL := TStringList.Create; try if RegKeyExists(HKEY_LOCAL_MACHINE, MessageSubsytemKey) then begin @@ -979,7 +979,7 @@ MsgID: array [0..512] of AnsiChar; AttachmentFileNames: array of AnsiString; AttachmentPathNames: array of AnsiString; - HtmlBodyFileName: string; + HtmlBodyFileName: TFileName; SetDllDirectory: TSetDllDirectory; GetDllDirectory: TGetDllDirectory; DllDirectoryBuffer: array[0..1024] of Char; @@ -1001,7 +1001,7 @@ if FHtmlBody then begin HtmlBodyFileName := FindUnusedFileName(PathAddSeparator(GetWindowsTempFolder) + 'JclMapi', 'htm', 'Temp'); - Attachments.Insert(0, HtmlBodyFileName); + Attachments.Insert(0, AnsiString(HtmlBodyFileName)); AttachmentFiles.Insert(0, ''); StringToFile(HtmlBodyFileName, Body); end; @@ -1017,13 +1017,13 @@ AttachArray[I].nPosition := DWORD(-1); if (AttachmentFiles.Count > I) and (AttachmentFiles[I] <> '') then begin - AttachmentFileNames[I] := AnsiString(Attachments[I]); // OF TStrings to AnsiString + AttachmentFileNames[I] := Attachments[I]; AttachmentPathNames[I] := AnsiString(SysUtils.ExpandFileName(AttachmentFiles[I])); end else begin - AttachmentFileNames[I] := AnsiString(ExtractFileName(AnsiString(Attachments[I]))); // OF TStrings to AnsiString - AttachmentPathNames[I] := AnsiString(SysUtils.ExpandFileName(Attachments[I])); + AttachmentFileNames[I] := ExtractFileName(AnsiString(Attachments[I])); + AttachmentPathNames[I] := AnsiString(SysUtils.ExpandFileName(string(Attachments[I]))); end; AttachArray[I].lpszFileName := PAnsiChar(AttachmentFileNames[I]); AttachArray[I].lpszPathName := PAnsiChar(AttachmentPathNames[I]); @@ -1153,7 +1153,7 @@ Inc(Result, MAPI_DIALOG); end; -function TJclEmail.MessageReport(Strings: TAnsiStrings; MaxWidth: Integer; IncludeAddresses: Boolean): Integer; +function TJclEmail.MessageReport(Strings: TStrings; MaxWidth: Integer; IncludeAddresses: Boolean): Integer; const NameDelimiter = ', '; var @@ -1252,9 +1252,9 @@ for I := 0 to Msg^.nFileCount - 1 do begin if Files^.lpszPathName <> nil then - Attachments.Add(string(AnsiString(Files^.lpszPathName))) // OF AnsiString to TStrings + Attachments.Add(AnsiString(Files^.lpszPathName)) else - Attachments.Add(string(AnsiString(Files^.lpszFileName))); // OF AnsiString to TStrings + Attachments.Add(AnsiString(Files^.lpszFileName)); Inc(Files); end; FReadMsg.MessageType := Msg^.lpszMessageType; @@ -1358,24 +1358,26 @@ //=== Simple email send function ============================================= -function SimpleSendHelper(const ARecipient, AName, ASubject, ABody: AnsiString; const AAttachment: string; +function SimpleSendHelper(const ARecipient, AName, ASubject, ABody: AnsiString; const AAttachment: TFileName; AShowDialog: Boolean; AParentWND: THandle; const AProfileName, APassword, AAddressType: AnsiString): Boolean; +var + AJclEmail: TJclEmail; begin - with TJclEmail.Create do + AJclEmail := TJclEmail.Create; try if AParentWND <> 0 then - ParentWnd := AParentWND; + AJclEmail.ParentWnd := AParentWND; if ARecipient <> '' then - Recipients.Add(ARecipient, AName, rkTO, AAddressType); - Subject := ASubject; - Body := ABody; + AJclEmail.Recipients.Add(ARecipient, AName, rkTO, AAddressType); + AJclEmail.Subject := ASubject; + AJclEmail.Body := ABody; if AAttachment <> '' then - Attachments.Add(AAttachment); + AJclEmail.Attachments.Add(AnsiString(AAttachment)); if AProfileName <> '' then - LogOn(AProfileName, APassword); - Result := Send(AShowDialog); + AJclEmail.LogOn(AProfileName, APassword); + Result := AJclEmail.Send(AShowDialog); finally - Free; + AJclEmail.Free; end; end; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ou...@us...> - 2009-03-13 16:28:52
|
Revision: 2682 http://jcl.svn.sourceforge.net/jcl/?rev=2682&view=rev Author: outchy Date: 2009-03-13 16:28:48 +0000 (Fri, 13 Mar 2009) Log Message: ----------- Removed UTF-8 BOM. Modified Paths: -------------- trunk/jcl/source/common/JclAnsiStrings.pas Modified: trunk/jcl/source/common/JclAnsiStrings.pas =================================================================== --- trunk/jcl/source/common/JclAnsiStrings.pas 2009-03-13 16:26:38 UTC (rev 2681) +++ trunk/jcl/source/common/JclAnsiStrings.pas 2009-03-13 16:28:48 UTC (rev 2682) @@ -1,4 +1,4 @@ -{**************************************************************************************************} +{**************************************************************************************************} { } { Project JEDI Code Library (JCL) } { } @@ -46,7 +46,7 @@ { } {**************************************************************************************************} { } -{ Last modified: $Date:: $ } +{ Last modified: $Date:: $ } { Revision: $Rev:: $ } { Author: $Author:: $ } { } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ob...@us...> - 2009-03-13 16:26:41
|
Revision: 2681 http://jcl.svn.sourceforge.net/jcl/?rev=2681&view=rev Author: obones Date: 2009-03-13 16:26:38 +0000 (Fri, 13 Mar 2009) Log Message: ----------- Much better when it actually works... Modified Paths: -------------- trunk/jcl/source/common/JclAnsiStrings.pas Modified: trunk/jcl/source/common/JclAnsiStrings.pas =================================================================== --- trunk/jcl/source/common/JclAnsiStrings.pas 2009-03-13 15:45:58 UTC (rev 2680) +++ trunk/jcl/source/common/JclAnsiStrings.pas 2009-03-13 16:26:38 UTC (rev 2681) @@ -116,6 +116,8 @@ public constructor Create; + procedure Assign(Source: TPersistent); override; + function Add(const S: AnsiString): Integer; virtual; function AddObject(const S: AnsiString; AObject: TObject): Integer; virtual; abstract; procedure AddStrings(Strings: TAnsiStrings); virtual; @@ -856,6 +858,24 @@ FNameValueSeparator := '='; end; +procedure TAnsiStrings.Assign(Source: TPersistent); +begin + if Source is TAnsiStrings then + begin + BeginUpdate; + try + Clear; + FNameValueSeparator := TAnsiStrings(Source).FNameValueSeparator; + FDelimiter := TAnsiStrings(Source).FDelimiter; + AddStrings(TAnsiStrings(Source)); + finally + EndUpdate; + end; + Exit; + end; + inherited Assign(Source); +end; + function TAnsiStrings.Add(const S: AnsiString): Integer; begin Result := AddObject(S, nil); @@ -866,7 +886,7 @@ I: Integer; begin for I := 0 to Strings.Count - 1 do - Add(Strings[I]); + Add(Strings.Strings[I]); end; procedure TAnsiStrings.Error(const Msg: string; Data: Integer); @@ -971,7 +991,30 @@ end; procedure TAnsiStrings.SetText(const Value: AnsiString); +var + Index, Start, Len: Integer; + S: AnsiString; begin + Clear; + Len := Length(Value); + if Len > 0 then + begin + Index := 1; + while Index <= Len do + begin + Start := Index; + while not (Value[Index] in [#10, #13]) do + Inc(Index); + + S := Copy(Value, Start, Index - Start); + Add(S); + + if Value[Index] = #13 then + Inc(Index); + if Value[Index] = #10 then + Inc(Index); + end; + end; end; function TAnsiStrings.GetCapacity: Integer; @@ -1184,7 +1227,7 @@ if Count = Capacity then Grow; - for I := Index to Count do + for I := Index to Count - 1 do FStrings[I + 1] := FStrings[I]; FStrings[Index].Str := S; @@ -1194,7 +1237,7 @@ function TAnsiStringList.AddObject(const S: AnsiString; AObject: TObject): Integer; begin - if Sorted then + if not Sorted then begin Result := Count; end This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ob...@us...> - 2009-03-13 15:46:08
|
Revision: 2680 http://jcl.svn.sourceforge.net/jcl/?rev=2680&view=rev Author: obones Date: 2009-03-13 15:45:58 +0000 (Fri, 13 Mar 2009) Log Message: ----------- Added many missing functionality in TAnsiStrings/TAnsiStringList Delimiter, DelimitedText, Objects, Sort, Duplicates, Name/Value pairs Modified Paths: -------------- trunk/jcl/source/common/JclAnsiStrings.pas Modified: trunk/jcl/source/common/JclAnsiStrings.pas =================================================================== --- trunk/jcl/source/common/JclAnsiStrings.pas 2009-03-13 15:45:06 UTC (rev 2679) +++ trunk/jcl/source/common/JclAnsiStrings.pas 2009-03-13 15:45:58 UTC (rev 2680) @@ -79,55 +79,111 @@ type {$IFDEF SUPPORTS_UNICODE} + TAnsiStringList = class; + // Codegear should be the one providing this class, in the AnsiStrings unit. // It has been requested in QC 65630 but this was closed as "won't do". // So we are providing here a very light implementation that is designed // to provide the basics, and in no way be a "copy/paste" of what is in the RTL. TAnsiStrings = class(TPersistent) private + FDelimiter: AnsiChar; + FNameValueSeparator: AnsiChar; + function GetText: AnsiString; procedure SetText(const Value: AnsiString); + function GetDelimitedText: AnsiString; + procedure SetDelimitedText(const Value: AnsiString); + function ExtractName(const S: AnsiString): AnsiString; + function GetName(Index: Integer): AnsiString; + function GetValue(const Name: AnsiString): AnsiString; + procedure SetValue(const Name, Value: AnsiString); + function GetValueFromIndex(Index: Integer): AnsiString; + procedure SetValueFromIndex(Index: Integer; const Value: AnsiString); protected procedure Error(const Msg: string; Data: Integer); overload; procedure Error(Msg: PResStringRec; Data: Integer); overload; function GetString(Index: Integer): AnsiString; virtual; abstract; procedure SetString(Index: Integer; const Value: AnsiString); virtual; abstract; + function GetObject(Index: Integer): TObject; virtual; abstract; + procedure SetObject(Index: Integer; AObject: TObject); virtual; abstract; + function GetCapacity: Integer; virtual; procedure SetCapacity(const Value: Integer); virtual; function GetCount: Integer; virtual; abstract; function CompareStrings(const S1, S2: AnsiString): Integer; virtual; public - function Add(const S: AnsiString): Integer; virtual; abstract; + constructor Create; + + function Add(const S: AnsiString): Integer; virtual; + function AddObject(const S: AnsiString; AObject: TObject): Integer; virtual; abstract; + procedure AddStrings(Strings: TAnsiStrings); virtual; + procedure Insert(Index: Integer; const S: AnsiString); virtual; + procedure InsertObject(Index: Integer; const S: AnsiString; AObject: TObject); virtual; abstract; procedure Delete(Index: Integer); virtual; abstract; procedure Clear; virtual; abstract; + procedure LoadFromFile(const FileName: string); virtual; + procedure LoadFromStream(Stream: TStream); virtual; + procedure SaveToFile(const FileName: string); virtual; + procedure SaveToStream(Stream: TStream); virtual; procedure BeginUpdate; procedure EndUpdate; function IndexOf(const S: AnsiString): Integer; virtual; + function IndexOfName(const Name: AnsiString): Integer; virtual; + function IndexOfObject(AObject: TObject): Integer; virtual; procedure Exchange(Index1, Index2: Integer); virtual; + property Delimiter: AnsiChar read FDelimiter write FDelimiter; + property DelimitedText: AnsiString read GetDelimitedText write SetDelimitedText; + property Strings[Index: Integer]: AnsiString read GetString write SetString; default; + property Objects[Index: Integer]: TObject read GetObject write SetObject; property Text: AnsiString read GetText write SetText; property Count: Integer read GetCount; property Capacity: Integer read GetCapacity write SetCapacity; + property Names[Index: Integer]: AnsiString read GetName; + property Values[const Name: AnsiString]: AnsiString read GetValue write SetValue; + property ValueFromIndex[Index: Integer]: AnsiString read GetValueFromIndex write SetValueFromIndex; + property NameValueSeparator: AnsiChar read FNameValueSeparator write FNameValueSeparator; end; + TAnsiStringListSortCompare = function(List: TAnsiStringList; Index1, Index2: Integer): Integer; + + TAnsiStringObjectHolder = record + Str: AnsiString; + Obj: TObject; + end; + TAnsiStringList = class(TAnsiStrings) private - FStrings: array of AnsiString; + FStrings: array of TAnsiStringObjectHolder; FCount: Integer; + FDuplicates: TDuplicates; + FSorted: Boolean; procedure Grow; + procedure QuickSort(L, R: Integer; SCompare: TAnsiStringListSortCompare); + procedure SetSorted(Value: Boolean); protected function GetString(Index: Integer): AnsiString; override; procedure SetString(Index: Integer; const Value: AnsiString); override; + function GetObject(Index: Integer): TObject; override; + procedure SetObject(Index: Integer; AObject: TObject); override; function GetCapacity: Integer; override; procedure SetCapacity(const Value: Integer); override; function GetCount: Integer; override; public - function Add(const S: AnsiString): Integer; override; + function AddObject(const S: AnsiString; AObject: TObject): Integer; 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; + procedure CustomSort(Compare: TAnsiStringListSortCompare); virtual; + procedure Sort; virtual; procedure Clear; override; + + property Duplicates: TDuplicates read FDuplicates write FDuplicates; + property Sorted: Boolean read FSorted write SetSorted; end; {$ELSE ~SUPPORTS_UNICODE} TAnsiStrings = Classes.TStrings; @@ -792,6 +848,27 @@ {$IFDEF SUPPORTS_UNICODE} { TAnsiStrings } +constructor TAnsiStrings.Create; +begin + inherited Create; + + FDelimiter := ','; + FNameValueSeparator := '='; +end; + +function TAnsiStrings.Add(const S: AnsiString): Integer; +begin + Result := AddObject(S, nil); +end; + +procedure TAnsiStrings.AddStrings(Strings: TAnsiStrings); +var + I: Integer; +begin + for I := 0 to Strings.Count - 1 do + Add(Strings[I]); +end; + procedure TAnsiStrings.Error(const Msg: string; Data: Integer); begin raise EStringListError.CreateFmt(Msg, [Data]); @@ -814,6 +891,27 @@ Result := -1; end; +function TAnsiStrings.IndexOfName(const Name: AnsiString): Integer; +var + P: Integer; + S: AnsiString; +begin + for Result := 0 to GetCount - 1 do + begin + S := GetString(Result); + P := AnsiPos(NameValueSeparator, S); + if (P <> 0) and (CompareStrings(Copy(S, 1, P - 1), Name) = 0) then Exit; + end; + Result := -1; +end; + +function TAnsiStrings.IndexOfObject(AObject: TObject): Integer; +begin + for Result := 0 to GetCount - 1 do + if GetObject(Result) = AObject then Exit; + Result := -1; +end; + procedure TAnsiStrings.Exchange(Index1, Index2: Integer); var TempString: AnsiString; @@ -828,6 +926,39 @@ end; end; +function TAnsiStrings.GetDelimitedText: AnsiString; +var + I: Integer; +begin + Result := ''; + for I := 0 to Count - 2 do + Result := Result + Strings[I] + Delimiter; + if Count > 0 then + Result := Result + Strings[Count - 1]; +end; + +procedure TAnsiStrings.Insert(Index: Integer; const S: AnsiString); +begin + InsertObject(Index, S, nil); +end; + +procedure TAnsiStrings.SetDelimitedText(const Value: AnsiString); +var + LastStart: Integer; + Index: Integer; +begin + Clear; + LastStart := 1; + for Index := 1 to Length(Value) do + begin + if Value[Index] = Delimiter then + begin + Add(Copy(Value, LastStart, Index - LastStart)); + LastStart := Index + 1; + end; + end; +end; + function TAnsiStrings.GetText: AnsiString; var I: Integer; @@ -861,6 +992,121 @@ begin end; +procedure TAnsiStrings.LoadFromFile(const FileName: string); +var + Stream: TStream; +begin + Stream := TFileStream.Create(FileName, fmOpenRead or fmShareDenyWrite); + try + LoadFromStream(Stream); + finally + Stream.Free; + end; +end; + +procedure TAnsiStrings.LoadFromStream(Stream: TStream); +var + Size: Integer; + S: AnsiString; +begin + BeginUpdate; + try + Size := Stream.Size - Stream.Position; + System.SetString(S, nil, Size); + Stream.Read(Pointer(S)^, Size); + SetText(S); + finally + EndUpdate; + end; +end; + +procedure TAnsiStrings.SaveToFile(const FileName: string); +var + Stream: TStream; +begin + Stream := TFileStream.Create(FileName, fmCreate); + try + SaveToStream(Stream); + finally + Stream.Free; + end; +end; + +procedure TAnsiStrings.SaveToStream(Stream: TStream); +var + S: AnsiString; +begin + S := GetText; + Stream.WriteBuffer(Pointer(S)^, Length(S)); +end; + +function TAnsiStrings.ExtractName(const S: AnsiString): AnsiString; +var + P: Integer; +begin + Result := S; + P := AnsiPos(NameValueSeparator, Result); + if P <> 0 then + SetLength(Result, P-1) + else + SetLength(Result, 0); +end; + +function TAnsiStrings.GetName(Index: Integer): AnsiString; +begin + Result := ExtractName(GetString(Index)); +end; + +function TAnsiStrings.GetValue(const Name: AnsiString): AnsiString; +var + I: Integer; +begin + I := IndexOfName(Name); + if I >= 0 then + Result := Copy(GetString(I), Length(Name) + 2, MaxInt) + else + Result := ''; +end; + +procedure TAnsiStrings.SetValue(const Name, Value: AnsiString); +var + I: Integer; +begin + I := IndexOfName(Name); + if Value <> '' then + begin + if I < 0 then + I := Add(''); + SetString(I, Name + NameValueSeparator + Value); + end + else + begin + if I >= 0 then + Delete(I); + end; +end; + +function TAnsiStrings.GetValueFromIndex(Index: Integer): AnsiString; +begin + if Index >= 0 then + Result := Copy(GetString(Index), Length(Names[Index]) + 2, MaxInt) + else + Result := ''; +end; + +procedure TAnsiStrings.SetValueFromIndex(Index: Integer; const Value: AnsiString); +begin + if Value <> '' then + begin + if Index < 0 then Index := Add(''); + SetString(Index, Names[Index] + NameValueSeparator + Value); + end + else + begin + if Index >= 0 then Delete(Index); + end; +end; + { TAnsiStringList } procedure TAnsiStringList.Grow; @@ -882,17 +1128,36 @@ if (Index < 0) or (Index >= FCount) then Error(@SListIndexError, Index); - Result := FStrings[Index]; + Result := FStrings[Index].Str; end; procedure TAnsiStringList.SetString(Index: Integer; const Value: AnsiString); begin + if Sorted then + Error(@SSortedListError, 0); + if (Index < 0) or (Index >= FCount) then Error(@SListIndexError, Index); - FStrings[Index] := Value; + FStrings[Index].Str := Value; end; +function TAnsiStringList.GetObject(Index: Integer): TObject; +begin + if (Index < 0) or (Index >= FCount) then + Error(@SListIndexError, Index); + + Result := FStrings[Index].Obj; +end; + +procedure TAnsiStringList.SetObject(Index: Integer; AObject: TObject); +begin + if (Index < 0) or (Index >= FCount) then + Error(@SListIndexError, Index); + + FStrings[Index].Obj := AObject; +end; + function TAnsiStringList.GetCapacity: Integer; begin Result := Length(FStrings); @@ -912,16 +1177,39 @@ Result := FCount; end; -function TAnsiStringList.Add(const S: AnsiString): Integer; +procedure TAnsiStringList.InsertObject(Index: Integer; const S: AnsiString; AObject: TObject); +var + I: Integer; begin if Count = Capacity then Grow; - Result := Count; - FStrings[Count] := S; + for I := Index to Count do + FStrings[I + 1] := FStrings[I]; + + FStrings[Index].Str := S; + FStrings[Index].Obj := AObject; Inc(FCount); end; +function TAnsiStringList.AddObject(const S: AnsiString; AObject: TObject): Integer; +begin + if Sorted then + begin + Result := Count; + end + else + begin + if Find(S, Result) then + case Duplicates of + dupIgnore: Exit; + dupError: Error(@SDuplicateString, 0); + end; + end; + + InsertObject(Result, S, AObject); +end; + procedure TAnsiStringList.Delete(Index: Integer); var I: Integer; @@ -939,9 +1227,91 @@ begin FCount := 0; for I := 0 to Length(FStrings) - 1 do - FStrings[I] := ''; + begin + FStrings[I].Str := ''; + FStrings[I].Obj := nil; + end; end; +function TAnsiStringList.Find(const S: AnsiString; var Index: Integer): Boolean; +var + L, H, I, C: Integer; +begin + Result := False; + L := 0; + H := FCount - 1; + while L <= H do + begin + I := (L + H) shr 1; + C := CompareStrings(FStrings[I].Str, S); + if C < 0 then L := I + 1 else + begin + H := I - 1; + if C = 0 then + begin + Result := True; + if Duplicates <> dupAccept then L := I; + end; + end; + end; + Index := L; +end; + +function AnsiStringListCompareStrings(List: TAnsiStringList; Index1, Index2: Integer): Integer; +begin + Result := List.CompareStrings(List.FStrings[Index1].Str, + List.FStrings[Index2].Str); +end; + +procedure TAnsiStringList.Sort; +begin + CustomSort(AnsiStringListCompareStrings); +end; + +procedure TAnsiStringList.CustomSort(Compare: TAnsiStringListSortCompare); +begin + if not Sorted and (FCount > 1) then + QuickSort(0, FCount - 1, Compare); +end; + +procedure TAnsiStringList.QuickSort(L, R: Integer; SCompare: TAnsiStringListSortCompare); +var + I, J, P: Integer; +begin + repeat + I := L; + J := R; + P := (L + R) shr 1; + repeat + while SCompare(Self, I, P) < 0 do Inc(I); + while SCompare(Self, J, P) > 0 do Dec(J); + if I <= J then + begin + if I <> J then + Exchange(I, J); + if P = I then + P := J + else if P = J then + P := I; + Inc(I); + Dec(J); + end; + until I > J; + if L < J then QuickSort(L, J, SCompare); + L := I; + until I >= R; +end; + +procedure TAnsiStringList.SetSorted(Value: Boolean); +begin + if FSorted <> Value then + begin + if Value then + Sort; + FSorted := Value; + end; +end; + {$ENDIF SUPPORTS_UNICODE} // String Test Routines This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ob...@us...> - 2009-03-13 15:45:08
|
Revision: 2679 http://jcl.svn.sourceforge.net/jcl/?rev=2679&view=rev Author: obones Date: 2009-03-13 15:45:06 +0000 (Fri, 13 Mar 2009) Log Message: ----------- Added AnsiValue to facilitate work under D2009 Modified Paths: -------------- trunk/jcl/source/common/JclSimpleXml.pas Modified: trunk/jcl/source/common/JclSimpleXml.pas =================================================================== --- trunk/jcl/source/common/JclSimpleXml.pas 2009-03-13 09:22:23 UTC (rev 2678) +++ trunk/jcl/source/common/JclSimpleXml.pas 2009-03-13 15:45:06 UTC (rev 2679) @@ -141,6 +141,8 @@ procedure SetName(const Value: string); function GetFloatValue: Extended; procedure SetFloatValue(const Value: Extended); + function GetAnsiValue: AnsiString; + procedure SetAnsiValue(const Value: AnsiString); protected function GetIntValue: Int64; procedure SetIntValue(const Value: Int64); @@ -151,6 +153,7 @@ property Parent: TJclSimpleXMLProps read FParent write FParent; property Name: string read FName write SetName; property Value: string read FValue write FValue; + property AnsiValue: AnsiString read GetAnsiValue write SetAnsiValue; property IntValue: Int64 read GetIntValue write SetIntValue; property BoolValue: Boolean read GetBoolValue write SetBoolValue; property FloatValue: Extended read GetFloatValue write SetFloatValue; @@ -176,6 +179,9 @@ constructor Create(Parent: TJclSimpleXMLElem); destructor Destroy; override; function Add(const Name, Value: string): TJclSimpleXMLProp; overload; + {$IFDEF SUPPORTS_UNICODE} + function Add(const Name: string; const Value: AnsiString): TJclSimpleXMLProp; overload; + {$ENDIF SUPPORTS_UNICODE} function Add(const Name: string; const Value: Int64): TJclSimpleXMLProp; overload; function Add(const Name: string; const Value: Boolean): TJclSimpleXMLProp; overload; function Insert(const Index: Integer; const Name, Value: string): TJclSimpleXMLProp; overload; @@ -338,6 +344,8 @@ FContainer: TJclSimpleXMLElems; function GetFloatValue: Extended; procedure SetFloatValue(const Value: Extended); + function GetAnsiValue: AnsiString; + procedure SetAnsiValue(const Value: AnsiString); protected function GetSimpleXML: TJclSimpleXML; function GetIntValue: Int64; @@ -379,6 +387,7 @@ property BoolValue: Boolean read GetBoolValue write SetBoolValue; property FloatValue: Extended read GetFloatValue write SetFloatValue; property Value: string read FValue write FValue; + property AnsiValue: AnsiString read GetAnsiValue write SetAnsiValue; end; {$M-} TJclSimpleXMLElemClass = class of TJclSimpleXMLElem; @@ -1358,6 +1367,11 @@ Result := Name; end; +function TJclSimpleXMLElem.GetAnsiValue: AnsiString; +begin + Result := AnsiString(Value); +end; + procedure TJclSimpleXMLElem.GetBinaryValue(Stream: TStream); var I, J, ValueLength, RequiredStreamSize: Integer; @@ -1534,6 +1548,11 @@ end; end; +procedure TJclSimpleXMLElem.SetAnsiValue(const Value: AnsiString); +begin + Self.Value := string(Value); +end; + procedure TJclSimpleXMLElem.SetBoolValue(const Value: Boolean); begin FValue := BoolToStr(Value); @@ -2333,6 +2352,14 @@ Result := Add(Name, BoolToStr(Value)); end; +{$IFDEF SUPPORTS_UNICODE} +function TJclSimpleXMLProps.Add(const Name: string; + const Value: AnsiString): TJclSimpleXMLProp; +begin + Result := Add(Name, string(Value)); +end; +{$ENDIF SUPPORTS_UNICODE} + function TJclSimpleXMLProps.Insert(const Index: Integer; const Name, Value: string): TJclSimpleXMLProp; var Elem: TJclSimpleXMLProp; @@ -2653,6 +2680,11 @@ //=== { TJclSimpleXMLProp } ================================================== +function TJclSimpleXMLProp.GetAnsiValue: AnsiString; +begin + Result := AnsiString(Value); +end; + function TJclSimpleXMLProp.GetBoolValue: Boolean; begin Result := StrToBoolDef(Value, False); @@ -2701,6 +2733,11 @@ StringStream.WriteString(Tmp, 1, Length(Tmp)); end; +procedure TJclSimpleXMLProp.SetAnsiValue(const Value: AnsiString); +begin + Self.Value := string(Value); +end; + procedure TJclSimpleXMLProp.SetBoolValue(const Value: Boolean); begin FValue := BoolToStr(Value); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ou...@us...> - 2009-03-13 09:22:25
|
Revision: 2678 http://jcl.svn.sourceforge.net/jcl/?rev=2678&view=rev Author: outchy Date: 2009-03-13 09:22:23 +0000 (Fri, 13 Mar 2009) Log Message: ----------- Mantis 4700: CRC32_P Bug/Typo Modified Paths: -------------- trunk/jcl/source/common/JclMath.pas Modified: trunk/jcl/source/common/JclMath.pas =================================================================== --- trunk/jcl/source/common/JclMath.pas 2009-03-12 09:46:18 UTC (rev 2677) +++ trunk/jcl/source/common/JclMath.pas 2009-03-13 09:22:23 UTC (rev 2678) @@ -36,7 +36,7 @@ { } {**************************************************************************************************} { } -{ Last modified: $Date:: $ } +{ Last modified: $Date:: $ } { Revision: $Rev:: $ } { Author: $Author:: $ } { } @@ -4028,7 +4028,7 @@ var I: Integer; begin - Result := Crc16DefaultStart; + Result := Crc32DefaultStart; for I := 0 to N - 1 do // The CRC Bytes are located at the end of the information // a 32 bit value shr 24 is a Byte, explictit type conversion to Byte adds an ASM instruction Result := Crc32Table[Result shr (CRC32Bits-8)] xor (Result shl 8) xor X[I]; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ob...@us...> - 2009-03-12 09:46:31
|
Revision: 2677 http://jcl.svn.sourceforge.net/jcl/?rev=2677&view=rev Author: obones Date: 2009-03-12 09:46:18 +0000 (Thu, 12 Mar 2009) Log Message: ----------- Minimalistic implementation of TAnsiStrings and TAnsiStringList Modified Paths: -------------- trunk/jcl/source/common/JclAnsiStrings.pas Modified: trunk/jcl/source/common/JclAnsiStrings.pas =================================================================== --- trunk/jcl/source/common/JclAnsiStrings.pas 2009-03-12 09:45:33 UTC (rev 2676) +++ trunk/jcl/source/common/JclAnsiStrings.pas 2009-03-12 09:46:18 UTC (rev 2677) @@ -1,4 +1,4 @@ -{**************************************************************************************************} +{**************************************************************************************************} { } { Project JEDI Code Library (JCL) } { } @@ -70,14 +70,65 @@ System.Text, System.IO, {$ENDIF CLR} + {$IFDEF SUPPORTS_UNICODE} + AnsiStrings, RTLConsts, + {$ENDIF SUPPORTS_UNICODE} JclBase; // Ansi types type {$IFDEF SUPPORTS_UNICODE} - TAnsiStrings = Classes.TStrings; // QC 65630 - TAnsiStringList = Classes.TStringList; + // Codegear should be the one providing this class, in the AnsiStrings unit. + // It has been requested in QC 65630 but this was closed as "won't do". + // So we are providing here a very light implementation that is designed + // to provide the basics, and in no way be a "copy/paste" of what is in the RTL. + TAnsiStrings = class(TPersistent) + private + function GetText: AnsiString; + procedure SetText(const Value: AnsiString); + protected + procedure Error(const Msg: string; Data: Integer); overload; + procedure Error(Msg: PResStringRec; Data: Integer); overload; + + function GetString(Index: Integer): AnsiString; virtual; abstract; + procedure SetString(Index: Integer; const Value: AnsiString); virtual; abstract; + function GetCapacity: Integer; virtual; + procedure SetCapacity(const Value: Integer); virtual; + function GetCount: Integer; virtual; abstract; + function CompareStrings(const S1, S2: AnsiString): Integer; virtual; + public + function Add(const S: AnsiString): Integer; virtual; abstract; + procedure Delete(Index: Integer); virtual; abstract; + procedure Clear; virtual; abstract; + procedure BeginUpdate; + procedure EndUpdate; + function IndexOf(const S: AnsiString): Integer; virtual; + procedure Exchange(Index1, Index2: Integer); virtual; + + property Strings[Index: Integer]: AnsiString read GetString write SetString; default; + property Text: AnsiString read GetText write SetText; + property Count: Integer read GetCount; + property Capacity: Integer read GetCapacity write SetCapacity; + end; + + TAnsiStringList = class(TAnsiStrings) + private + FStrings: array of AnsiString; + FCount: Integer; + + procedure Grow; + protected + function GetString(Index: Integer): AnsiString; override; + procedure SetString(Index: Integer; const Value: AnsiString); override; + function GetCapacity: Integer; override; + procedure SetCapacity(const Value: Integer); override; + function GetCount: Integer; override; + public + function Add(const S: AnsiString): Integer; override; + procedure Delete(Index: Integer); override; + procedure Clear; override; + end; {$ELSE ~SUPPORTS_UNICODE} TAnsiStrings = Classes.TStrings; TAnsiStringList = Classes.TStringList; @@ -738,6 +789,161 @@ end; {$ENDIF ~CLR} +{$IFDEF SUPPORTS_UNICODE} +{ TAnsiStrings } + +procedure TAnsiStrings.Error(const Msg: string; Data: Integer); +begin + raise EStringListError.CreateFmt(Msg, [Data]); +end; + +procedure TAnsiStrings.Error(Msg: PResStringRec; Data: Integer); +begin + Error(LoadResString(Msg), Data); +end; + +function TAnsiStrings.CompareStrings(const S1, S2: AnsiString): Integer; +begin + Result := CompareStr(S1, S2); +end; + +function TAnsiStrings.IndexOf(const S: AnsiString): Integer; +begin + for Result := 0 to Count - 1 do + if CompareStrings(Strings[Result], S) = 0 then Exit; + Result := -1; +end; + +procedure TAnsiStrings.Exchange(Index1, Index2: Integer); +var + TempString: AnsiString; +begin + BeginUpdate; + try + TempString := Strings[Index1]; + Strings[Index1] := Strings[Index2]; + Strings[Index2] := TempString; + finally + EndUpdate; + end; +end; + +function TAnsiStrings.GetText: AnsiString; +var + I: Integer; +begin + Result := ''; + for I := 0 to Count - 2 do + Result := Result + Strings[I] + sLineBreak; + if Count > 0 then + Result := Result + Strings[Count - 1]; +end; + +procedure TAnsiStrings.SetText(const Value: AnsiString); +begin +end; + +function TAnsiStrings.GetCapacity: Integer; +begin + Result := Count; // Might be overridden in derived classes +end; + +procedure TAnsiStrings.SetCapacity(const Value: Integer); +begin + // Nothing at this level +end; + +procedure TAnsiStrings.BeginUpdate; +begin +end; + +procedure TAnsiStrings.EndUpdate; +begin +end; + +{ TAnsiStringList } + +procedure TAnsiStringList.Grow; +var + Delta: Integer; +begin + if Capacity > 64 then + Delta := Capacity div 4 + else if Capacity > 8 then + Delta := 16 + else + Delta := 4; + + SetCapacity(Capacity + Delta); +end; + +function TAnsiStringList.GetString(Index: Integer): AnsiString; +begin + if (Index < 0) or (Index >= FCount) then + Error(@SListIndexError, Index); + + Result := FStrings[Index]; +end; + +procedure TAnsiStringList.SetString(Index: Integer; const Value: AnsiString); +begin + if (Index < 0) or (Index >= FCount) then + Error(@SListIndexError, Index); + + FStrings[Index] := Value; +end; + +function TAnsiStringList.GetCapacity: Integer; +begin + Result := Length(FStrings); +end; + +procedure TAnsiStringList.SetCapacity(const Value: Integer); +begin + if (Value < FCount) then + Error(@SListCapacityError, Value); + + if Value <> Capacity then + SetLength(FStrings, Value); +end; + +function TAnsiStringList.GetCount: Integer; +begin + Result := FCount; +end; + +function TAnsiStringList.Add(const S: AnsiString): Integer; +begin + if Count = Capacity then + Grow; + + Result := Count; + FStrings[Count] := S; + Inc(FCount); +end; + +procedure TAnsiStringList.Delete(Index: Integer); +var + I: Integer; +begin + if (Index < 0) or (Index >= FCount) then + Error(@SListIndexError, Index); + + for I := Index to Count - 2 do + FStrings[Index] := FStrings[Index + 1]; +end; + +procedure TAnsiStringList.Clear; +var + I: Integer; +begin + FCount := 0; + for I := 0 to Length(FStrings) - 1 do + FStrings[I] := ''; +end; + +{$ENDIF SUPPORTS_UNICODE} + // String Test Routines function StrIsAlpha(const S: AnsiString): Boolean; var @@ -3270,7 +3476,7 @@ try Dest.Clear; for I := 0 to Count - 1 do - Dest.Add(string(AnsiString(List[I]))); // OF AnsiString to TStrings + Dest.Add(List[I]); // OF AnsiString to TStrings finally Dest.EndUpdate; end; @@ -3434,7 +3640,7 @@ P := Source; while P^ <> #0 do begin - Dest.Add(string(AnsiString(P))); // OF AnsiString to TStrings + Dest.Add(P); // OF AnsiString to TStrings P := StrEnd(P); Inc(P); end; @@ -3508,13 +3714,13 @@ begin Left := StrLeft(S, I - 1); if (Left <> '') or AllowEmptyString then - List.Add(string(Left)); // OF AnsiString to TStrings + List.Add(Left); // OF AnsiString to TStrings Delete(S, 1, I + L - 1); I := Pos(Sep, S); end; if S <> '' then // OF AnsiString to TStrings - List.Add(string(S)); // Ignore empty strings at the end. + List.Add(S); // Ignore empty strings at the end. finally List.EndUpdate; end; @@ -3538,14 +3744,14 @@ begin Left := StrLeft(S, I - 1); if (Left <> '') or AllowEmptyString then - List.Add(string(Left)); // OF AnsiString to TStrings + List.Add(Left); // OF AnsiString to TStrings Delete(S, 1, I + L - 1); Delete(LowerCaseStr, 1, I + L - 1); I := Pos(Sep, LowerCaseStr); end; if S <> '' then // OF AnsiString to TStrings - List.Add(string(S)); // Ignore empty strings at the end. + List.Add(S); // Ignore empty strings at the end. finally List.EndUpdate; end; @@ -3631,9 +3837,9 @@ function AddStringToStrings(const S: AnsiString; Strings: TAnsiStrings; const Unique: Boolean): Boolean; begin Assert(Strings <> nil); - Result := Unique and (Strings.IndexOf(string(S)) <> -1); // OF AnsiString to TStrings + Result := Unique and (Strings.IndexOf(S) <> -1); // OF AnsiString to TStrings if not Result then - Result := Strings.Add(string(S)) > -1; // OF AnsiString to TStrings + Result := Strings.Add(S) > -1; // OF AnsiString to TStrings end; //=== Miscellaneous ========================================================== @@ -3734,7 +3940,7 @@ repeat Done := StrWord(Start, Token); if Token <> '' then - List.Add(string(Token)); // OF AnsiString to TStrings + List.Add(Token); // OF AnsiString to TStrings until Done; finally List.EndUpdate; @@ -3756,7 +3962,7 @@ while S <> '' do begin Token := StrToken(S, Separator); - List.Add(string(Token)); // OF AnsiString to TStrings + List.Add(Token); // OF AnsiString to TStrings end; finally List.EndUpdate; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ob...@us...> - 2009-03-12 09:45:40
|
Revision: 2676 http://jcl.svn.sourceforge.net/jcl/?rev=2676&view=rev Author: obones Date: 2009-03-12 09:45:33 +0000 (Thu, 12 Mar 2009) Log Message: ----------- TStrings in the interface, TStrings in the implementation Modified Paths: -------------- trunk/jcl/source/common/JclSysInfo.pas Modified: trunk/jcl/source/common/JclSysInfo.pas =================================================================== --- trunk/jcl/source/common/JclSysInfo.pas 2009-03-09 21:25:03 UTC (rev 2675) +++ trunk/jcl/source/common/JclSysInfo.pas 2009-03-12 09:45:33 UTC (rev 2676) @@ -2186,12 +2186,12 @@ {$IFDEF MSWINDOWS} {$IFNDEF CLR} -procedure GetIpAddresses(Results: TAnsiStrings); +procedure GetIpAddresses(Results: TStrings); begin GetIpAddresses(Results, ''); end; -procedure GetIpAddresses(Results: TAnsiStrings; const HostName: AnsiString); +procedure GetIpAddresses(Results: TStrings; const HostName: AnsiString); type TaPInAddr = array[0..10] of PInAddr; PaPInAddr = ^TaPInAddr; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <jfu...@us...> - 2009-03-09 21:25:13
|
Revision: 2675 http://jcl.svn.sourceforge.net/jcl/?rev=2675&view=rev Author: jfudickar Date: 2009-03-09 21:25:03 +0000 (Mon, 09 Mar 2009) Log Message: ----------- Fixed StrRemoveLeadingChars Modified Paths: -------------- trunk/jcl/source/common/JclStrings.pas Modified: trunk/jcl/source/common/JclStrings.pas =================================================================== --- trunk/jcl/source/common/JclStrings.pas 2009-03-09 20:37:20 UTC (rev 2674) +++ trunk/jcl/source/common/JclStrings.pas 2009-03-09 21:25:03 UTC (rev 2675) @@ -1640,7 +1640,7 @@ begin Len := Length(S); I := 1; - while (I < Len) and Chars(s[I]) do + while (I <= Len) and Chars(s[I]) do Inc(I); sb := StringBuilder.Create(Len); for J := I to Len do @@ -1654,7 +1654,7 @@ begin Len := Length(S); I := 1; - while (I < Len) and Chars(s[I]) do + while (I <= Len) and Chars(s[I]) do Inc(I); Result := Copy (s, I, Len-I+1); end; @@ -1669,7 +1669,7 @@ begin Len := Length(S); I := 1; - while (I < Len) and ArrayContainsChar(Chars, s[I]) do + while (I <= Len) and ArrayContainsChar(Chars, s[I]) do Inc(I); sb := StringBuilder.Create(Len); for J := I to Len do @@ -1683,7 +1683,7 @@ begin Len := Length(S); I := 1; - while (I < Len) and ArrayContainsChar(Chars, s[I]) do + while (I <= Len) and ArrayContainsChar(Chars, s[I]) do Inc(I); Result := Copy (s, I, Len-I+1); end; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <jfu...@us...> - 2009-03-09 20:37:37
|
Revision: 2674 http://jcl.svn.sourceforge.net/jcl/?rev=2674&view=rev Author: jfudickar Date: 2009-03-09 20:37:20 +0000 (Mon, 09 Mar 2009) Log Message: ----------- Function StrRemoveLeadingChars added Modified Paths: -------------- trunk/jcl/source/common/JclStrings.pas Modified: trunk/jcl/source/common/JclStrings.pas =================================================================== --- trunk/jcl/source/common/JclStrings.pas 2009-03-04 18:07:18 UTC (rev 2673) +++ trunk/jcl/source/common/JclStrings.pas 2009-03-09 20:37:20 UTC (rev 2674) @@ -199,6 +199,8 @@ function StrQuote(const S: string; C: Char): string; function StrRemoveChars(const S: string; const Chars: TCharValidator): string; overload; function StrRemoveChars(const S: string; const Chars: array of Char): string; overload; +function StrRemoveLeadingChars(const S: string; const Chars: TCharValidator): string; overload; +function StrRemoveLeadingChars(const S: string; const Chars: array of Char): string; overload; function StrRemoveEndChars(const S: string; const Chars: TCharValidator): string; overload; function StrRemoveEndChars(const S: string; const Chars: array of Char): string; overload; function StrKeepChars(const S: string; const Chars: TCharValidator): string; overload; @@ -1629,6 +1631,64 @@ end; {$ENDIF ~CLR} +function StrRemoveLeadingChars(const S: string; const Chars: TCharValidator): string; +{$IFDEF CLR} +var + Len: Integer; + I,J: Integer; + sb: StringBuilder; +begin + Len := Length(S); + I := 1; + while (I < Len) and Chars(s[I]) do + Inc(I); + sb := StringBuilder.Create(Len); + for J := I to Len do + sb.Append(S[J]); + Result := sb.ToString(); +end; +{$ELSE ~CLR} +var + Len : Integer; + I: Integer; +begin + Len := Length(S); + I := 1; + while (I < Len) and Chars(s[I]) do + Inc(I); + Result := Copy (s, I, Len-I+1); +end; +{$ENDIF ~CLR} + +function StrRemoveLeadingChars(const S: string; const Chars: array of Char): string; +{$IFDEF CLR} +var + Len: Integer; + I,J: Integer; + sb: StringBuilder; +begin + Len := Length(S); + I := 1; + while (I < Len) and ArrayContainsChar(Chars, s[I]) do + Inc(I); + sb := StringBuilder.Create(Len); + for J := I to Len do + sb.Append(S[J]); + Result := sb.ToString(); +end; +{$ELSE ~CLR} +var + Len : Integer; + I: Integer; +begin + Len := Length(S); + I := 1; + while (I < Len) and ArrayContainsChar(Chars, s[I]) do + Inc(I); + Result := Copy (s, I, Len-I+1); +end; +{$ENDIF ~CLR} + function StrRemoveEndChars(const S: string; const Chars: TCharValidator): string; {$IFDEF CLR} var @@ -1681,6 +1741,7 @@ end; {$ENDIF ~CLR} + function StrKeepChars(const S: string; const Chars: TCharValidator): string; {$IFDEF CLR} var This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ah...@us...> - 2009-03-04 18:07:27
|
Revision: 2673 http://jcl.svn.sourceforge.net/jcl/?rev=2673&view=rev Author: ahuser Date: 2009-03-04 18:07:18 +0000 (Wed, 04 Mar 2009) Log Message: ----------- As usual: Delphi 5 compilation fixed Modified Paths: -------------- trunk/jcl/source/common/JclSysInfo.pas Modified: trunk/jcl/source/common/JclSysInfo.pas =================================================================== --- trunk/jcl/source/common/JclSysInfo.pas 2009-03-04 17:47:03 UTC (rev 2672) +++ trunk/jcl/source/common/JclSysInfo.pas 2009-03-04 18:07:18 UTC (rev 2673) @@ -4234,6 +4234,16 @@ end; {$ENDIF UNIX} {$IFDEF MSWINDOWS} + + {$IFDEF COMPILER5} + function IsZero(const A: Double): Boolean; + const + DoubleResolution = 1E-15 * 1000; + begin + Result := Abs(A) <= DoubleResolution; + end; + {$ENDIF COMPILER5} + var T0, T1: Int64; CountFreq: Int64; @@ -4302,7 +4312,7 @@ TotalCycles := TotalCycles + Cycles; // avoid division by zero - if Math.IsZero(Ticks) then + if IsZero(Ticks) then Freq := High(Freq) else Freq := Round(Cycles / Ticks); @@ -4311,7 +4321,7 @@ end; // avoid division by zero - if Math.IsZero(TotalTicks) then + if IsZero(TotalTicks) then begin Freq3 := High(Freq3); Freq2 := High(Freq2); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ou...@us...> - 2009-03-04 17:47:13
|
Revision: 2672 http://jcl.svn.sourceforge.net/jcl/?rev=2672&view=rev Author: outchy Date: 2009-03-04 17:47:03 +0000 (Wed, 04 Mar 2009) Log Message: ----------- Suggestion from Heiko Tappe in newsgroups: extract method in containers to remove an element without freeing it. Modified Paths: -------------- trunk/jcl/source/common/JclAbstractContainers.pas trunk/jcl/source/common/JclArrayLists.pas trunk/jcl/source/common/JclArraySets.pas trunk/jcl/source/common/JclBinaryTrees.pas trunk/jcl/source/common/JclContainerIntf.pas trunk/jcl/source/common/JclHashMaps.pas trunk/jcl/source/common/JclHashSets.pas trunk/jcl/source/common/JclLinkedLists.pas trunk/jcl/source/common/JclSortedMaps.pas trunk/jcl/source/common/JclTrees.pas trunk/jcl/source/common/JclVectors.pas trunk/jcl/source/prototypes/containers/JclArrayLists.imp trunk/jcl/source/prototypes/containers/JclArrayLists.int trunk/jcl/source/prototypes/containers/JclArraySets.int trunk/jcl/source/prototypes/containers/JclBinaryTrees.imp trunk/jcl/source/prototypes/containers/JclBinaryTrees.int trunk/jcl/source/prototypes/containers/JclContainerIntf.int trunk/jcl/source/prototypes/containers/JclHashMaps.imp trunk/jcl/source/prototypes/containers/JclHashMaps.int trunk/jcl/source/prototypes/containers/JclHashSets.imp trunk/jcl/source/prototypes/containers/JclHashSets.int trunk/jcl/source/prototypes/containers/JclLinkedLists.imp trunk/jcl/source/prototypes/containers/JclLinkedLists.int trunk/jcl/source/prototypes/containers/JclSortedMaps.imp trunk/jcl/source/prototypes/containers/JclSortedMaps.int trunk/jcl/source/prototypes/containers/JclTrees.imp trunk/jcl/source/prototypes/containers/JclTrees.int trunk/jcl/source/prototypes/containers/JclVectors.imp trunk/jcl/source/prototypes/containers/JclVectors.int Modified: trunk/jcl/source/common/JclAbstractContainers.pas =================================================================== --- trunk/jcl/source/common/JclAbstractContainers.pas 2009-03-03 19:53:35 UTC (rev 2671) +++ trunk/jcl/source/common/JclAbstractContainers.pas 2009-03-04 17:47:03 UTC (rev 2672) @@ -578,10 +578,12 @@ function Contains(const AString: AnsiString): Boolean; virtual; abstract; function ContainsAll(const ACollection: IJclAnsiStrCollection): Boolean; virtual; abstract; function CollectionEquals(const ACollection: IJclAnsiStrCollection): Boolean; virtual; abstract; + function Extract(const AString: AnsiString): Boolean; virtual; abstract; + function ExtractAll(const ACollection: IJclAnsiStrCollection): Boolean; virtual; abstract; function First: IJclAnsiStrIterator; virtual; abstract; function IsEmpty: Boolean; virtual; abstract; function Last: IJclAnsiStrIterator; virtual; abstract; - function Remove(const AString: AnsiString): Boolean; overload; virtual; abstract; + function Remove(const AString: AnsiString): Boolean; virtual; abstract; function RemoveAll(const ACollection: IJclAnsiStrCollection): Boolean; virtual; abstract; function RetainAll(const ACollection: IJclAnsiStrCollection): Boolean; virtual; abstract; function Size: Integer; virtual; abstract; @@ -611,10 +613,12 @@ function Contains(const AString: WideString): Boolean; virtual; abstract; function ContainsAll(const ACollection: IJclWideStrCollection): Boolean; virtual; abstract; function CollectionEquals(const ACollection: IJclWideStrCollection): Boolean; virtual; abstract; + function Extract(const AString: WideString): Boolean; virtual; abstract; + function ExtractAll(const ACollection: IJclWideStrCollection): Boolean; virtual; abstract; function First: IJclWideStrIterator; virtual; abstract; function IsEmpty: Boolean; virtual; abstract; function Last: IJclWideStrIterator; virtual; abstract; - function Remove(const AString: WideString): Boolean; overload; virtual; abstract; + function Remove(const AString: WideString): Boolean; virtual; abstract; function RemoveAll(const ACollection: IJclWideStrCollection): Boolean; virtual; abstract; function RetainAll(const ACollection: IJclWideStrCollection): Boolean; virtual; abstract; function Size: Integer; virtual; abstract; @@ -637,10 +641,12 @@ function Contains(const AString: UnicodeString): Boolean; virtual; abstract; function ContainsAll(const ACollection: IJclUnicodeStrCollection): Boolean; virtual; abstract; function CollectionEquals(const ACollection: IJclUnicodeStrCollection): Boolean; virtual; abstract; + function Extract(const AString: UnicodeString): Boolean; virtual; abstract; + function ExtractAll(const ACollection: IJclUnicodeStrCollection): Boolean; virtual; abstract; function First: IJclUnicodeStrIterator; virtual; abstract; function IsEmpty: Boolean; virtual; abstract; function Last: IJclUnicodeStrIterator; virtual; abstract; - function Remove(const AString: UnicodeString): Boolean; overload; virtual; abstract; + function Remove(const AString: UnicodeString): Boolean; virtual; abstract; function RemoveAll(const ACollection: IJclUnicodeStrCollection): Boolean; virtual; abstract; function RetainAll(const ACollection: IJclUnicodeStrCollection): Boolean; virtual; abstract; function Size: Integer; virtual; abstract; Modified: trunk/jcl/source/common/JclArrayLists.pas =================================================================== --- trunk/jcl/source/common/JclArrayLists.pas 2009-03-03 19:53:35 UTC (rev 2671) +++ trunk/jcl/source/common/JclArrayLists.pas 2009-03-04 17:47:03 UTC (rev 2672) @@ -78,6 +78,8 @@ function Contains(const AInterface: IInterface): Boolean; function ContainsAll(const ACollection: IJclIntfCollection): Boolean; function CollectionEquals(const ACollection: IJclIntfCollection): Boolean; + function Extract(const AInterface: IInterface): Boolean; + function ExtractAll(const ACollection: IJclIntfCollection): Boolean; function First: IJclIntfIterator; function IsEmpty: Boolean; function Last: IJclIntfIterator; @@ -89,12 +91,13 @@ function GetEnumerator: IJclIntfIterator; {$ENDIF SUPPORTS_FOR_IN} { IJclIntfList } + function Delete(Index: Integer): IInterface; + function ExtractIndex(Index: Integer): IInterface; + function GetObject(Index: Integer): IInterface; + function IndexOf(const AInterface: IInterface): Integer; function Insert(Index: Integer; const AInterface: IInterface): Boolean; function InsertAll(Index: Integer; const ACollection: IJclIntfCollection): Boolean; - function GetObject(Index: Integer): IInterface; - function IndexOf(const AInterface: IInterface): Integer; function LastIndexOf(const AInterface: IInterface): Integer; - function Delete(Index: Integer): IInterface; overload; procedure SetObject(Index: Integer; const AInterface: IInterface); function SubList(First, Count: Integer): IJclIntfList; public @@ -114,11 +117,12 @@ function CreateEmptyIterator: TJclAbstractIterator; override; { IJclIntfIterator } function Add(const AInterface: IInterface): Boolean; - function IteratorEquals(const AIterator: IJclIntfIterator): Boolean; + procedure Extract; function GetObject: IInterface; function HasNext: Boolean; function HasPrevious: Boolean; function Insert(const AInterface: IInterface): Boolean; + function IteratorEquals(const AIterator: IJclIntfIterator): Boolean; function Next: IInterface; function NextIndex: Integer; function Previous: IInterface; @@ -155,6 +159,8 @@ function Contains(const AString: AnsiString): Boolean; override; function ContainsAll(const ACollection: IJclAnsiStrCollection): Boolean; override; function CollectionEquals(const ACollection: IJclAnsiStrCollection): Boolean; override; + function Extract(const AString: AnsiString): Boolean; override; + function ExtractAll(const ACollection: IJclAnsiStrCollection): Boolean; override; function First: IJclAnsiStrIterator; override; function IsEmpty: Boolean; override; function Last: IJclAnsiStrIterator; override; @@ -166,12 +172,13 @@ function GetEnumerator: IJclAnsiStrIterator; override; {$ENDIF SUPPORTS_FOR_IN} { IJclAnsiStrList } + function Delete(Index: Integer): AnsiString; + function ExtractIndex(Index: Integer): AnsiString; + function GetString(Index: Integer): AnsiString; + function IndexOf(const AString: AnsiString): Integer; function Insert(Index: Integer; const AString: AnsiString): Boolean; function InsertAll(Index: Integer; const ACollection: IJclAnsiStrCollection): Boolean; - function GetString(Index: Integer): AnsiString; - function IndexOf(const AString: AnsiString): Integer; function LastIndexOf(const AString: AnsiString): Integer; - function Delete(Index: Integer): AnsiString; overload; procedure SetString(Index: Integer; const AString: AnsiString); function SubList(First, Count: Integer): IJclAnsiStrList; public @@ -191,11 +198,12 @@ function CreateEmptyIterator: TJclAbstractIterator; override; { IJclAnsiStrIterator } function Add(const AString: AnsiString): Boolean; - function IteratorEquals(const AIterator: IJclAnsiStrIterator): Boolean; + procedure Extract; function GetString: AnsiString; function HasNext: Boolean; function HasPrevious: Boolean; function Insert(const AString: AnsiString): Boolean; + function IteratorEquals(const AIterator: IJclAnsiStrIterator): Boolean; function Next: AnsiString; function NextIndex: Integer; function Previous: AnsiString; @@ -232,6 +240,8 @@ function Contains(const AString: WideString): Boolean; override; function ContainsAll(const ACollection: IJclWideStrCollection): Boolean; override; function CollectionEquals(const ACollection: IJclWideStrCollection): Boolean; override; + function Extract(const AString: WideString): Boolean; override; + function ExtractAll(const ACollection: IJclWideStrCollection): Boolean; override; function First: IJclWideStrIterator; override; function IsEmpty: Boolean; override; function Last: IJclWideStrIterator; override; @@ -243,12 +253,13 @@ function GetEnumerator: IJclWideStrIterator; override; {$ENDIF SUPPORTS_FOR_IN} { IJclWideStrList } + function Delete(Index: Integer): WideString; + function ExtractIndex(Index: Integer): WideString; + function GetString(Index: Integer): WideString; + function IndexOf(const AString: WideString): Integer; function Insert(Index: Integer; const AString: WideString): Boolean; function InsertAll(Index: Integer; const ACollection: IJclWideStrCollection): Boolean; - function GetString(Index: Integer): WideString; - function IndexOf(const AString: WideString): Integer; function LastIndexOf(const AString: WideString): Integer; - function Delete(Index: Integer): WideString; overload; procedure SetString(Index: Integer; const AString: WideString); function SubList(First, Count: Integer): IJclWideStrList; public @@ -268,11 +279,12 @@ function CreateEmptyIterator: TJclAbstractIterator; override; { IJclWideStrIterator } function Add(const AString: WideString): Boolean; - function IteratorEquals(const AIterator: IJclWideStrIterator): Boolean; + procedure Extract; function GetString: WideString; function HasNext: Boolean; function HasPrevious: Boolean; function Insert(const AString: WideString): Boolean; + function IteratorEquals(const AIterator: IJclWideStrIterator): Boolean; function Next: WideString; function NextIndex: Integer; function Previous: WideString; @@ -310,6 +322,8 @@ function Contains(const AString: UnicodeString): Boolean; override; function ContainsAll(const ACollection: IJclUnicodeStrCollection): Boolean; override; function CollectionEquals(const ACollection: IJclUnicodeStrCollection): Boolean; override; + function Extract(const AString: UnicodeString): Boolean; override; + function ExtractAll(const ACollection: IJclUnicodeStrCollection): Boolean; override; function First: IJclUnicodeStrIterator; override; function IsEmpty: Boolean; override; function Last: IJclUnicodeStrIterator; override; @@ -321,12 +335,13 @@ function GetEnumerator: IJclUnicodeStrIterator; override; {$ENDIF SUPPORTS_FOR_IN} { IJclUnicodeStrList } + function Delete(Index: Integer): UnicodeString; + function ExtractIndex(Index: Integer): UnicodeString; + function GetString(Index: Integer): UnicodeString; + function IndexOf(const AString: UnicodeString): Integer; function Insert(Index: Integer; const AString: UnicodeString): Boolean; function InsertAll(Index: Integer; const ACollection: IJclUnicodeStrCollection): Boolean; - function GetString(Index: Integer): UnicodeString; - function IndexOf(const AString: UnicodeString): Integer; function LastIndexOf(const AString: UnicodeString): Integer; - function Delete(Index: Integer): UnicodeString; overload; procedure SetString(Index: Integer; const AString: UnicodeString); function SubList(First, Count: Integer): IJclUnicodeStrList; public @@ -346,11 +361,12 @@ function CreateEmptyIterator: TJclAbstractIterator; override; { IJclUnicodeStrIterator } function Add(const AString: UnicodeString): Boolean; - function IteratorEquals(const AIterator: IJclUnicodeStrIterator): Boolean; + procedure Extract; function GetString: UnicodeString; function HasNext: Boolean; function HasPrevious: Boolean; function Insert(const AString: UnicodeString): Boolean; + function IteratorEquals(const AIterator: IJclUnicodeStrIterator): Boolean; function Next: UnicodeString; function NextIndex: Integer; function Previous: UnicodeString; @@ -398,6 +414,8 @@ function Contains(const AValue: Single): Boolean; function ContainsAll(const ACollection: IJclSingleCollection): Boolean; function CollectionEquals(const ACollection: IJclSingleCollection): Boolean; + function Extract(const AValue: Single): Boolean; + function ExtractAll(const ACollection: IJclSingleCollection): Boolean; function First: IJclSingleIterator; function IsEmpty: Boolean; function Last: IJclSingleIterator; @@ -409,12 +427,13 @@ function GetEnumerator: IJclSingleIterator; {$ENDIF SUPPORTS_FOR_IN} { IJclSingleList } + function Delete(Index: Integer): Single; + function ExtractIndex(Index: Integer): Single; + function GetValue(Index: Integer): Single; + function IndexOf(const AValue: Single): Integer; function Insert(Index: Integer; const AValue: Single): Boolean; function InsertAll(Index: Integer; const ACollection: IJclSingleCollection): Boolean; - function GetValue(Index: Integer): Single; - function IndexOf(const AValue: Single): Integer; function LastIndexOf(const AValue: Single): Integer; - function Delete(Index: Integer): Single; overload; procedure SetValue(Index: Integer; const AValue: Single); function SubList(First, Count: Integer): IJclSingleList; public @@ -434,11 +453,12 @@ function CreateEmptyIterator: TJclAbstractIterator; override; { IJclSingleIterator } function Add(const AValue: Single): Boolean; - function IteratorEquals(const AIterator: IJclSingleIterator): Boolean; + procedure Extract; function GetValue: Single; function HasNext: Boolean; function HasPrevious: Boolean; function Insert(const AValue: Single): Boolean; + function IteratorEquals(const AIterator: IJclSingleIterator): Boolean; function Next: Single; function NextIndex: Integer; function Previous: Single; @@ -475,6 +495,8 @@ function Contains(const AValue: Double): Boolean; function ContainsAll(const ACollection: IJclDoubleCollection): Boolean; function CollectionEquals(const ACollection: IJclDoubleCollection): Boolean; + function Extract(const AValue: Double): Boolean; + function ExtractAll(const ACollection: IJclDoubleCollection): Boolean; function First: IJclDoubleIterator; function IsEmpty: Boolean; function Last: IJclDoubleIterator; @@ -486,12 +508,13 @@ function GetEnumerator: IJclDoubleIterator; {$ENDIF SUPPORTS_FOR_IN} { IJclDoubleList } + function Delete(Index: Integer): Double; + function ExtractIndex(Index: Integer): Double; + function GetValue(Index: Integer): Double; + function IndexOf(const AValue: Double): Integer; function Insert(Index: Integer; const AValue: Double): Boolean; function InsertAll(Index: Integer; const ACollection: IJclDoubleCollection): Boolean; - function GetValue(Index: Integer): Double; - function IndexOf(const AValue: Double): Integer; function LastIndexOf(const AValue: Double): Integer; - function Delete(Index: Integer): Double; overload; procedure SetValue(Index: Integer; const AValue: Double); function SubList(First, Count: Integer): IJclDoubleList; public @@ -511,11 +534,12 @@ function CreateEmptyIterator: TJclAbstractIterator; override; { IJclDoubleIterator } function Add(const AValue: Double): Boolean; - function IteratorEquals(const AIterator: IJclDoubleIterator): Boolean; + procedure Extract; function GetValue: Double; function HasNext: Boolean; function HasPrevious: Boolean; function Insert(const AValue: Double): Boolean; + function IteratorEquals(const AIterator: IJclDoubleIterator): Boolean; function Next: Double; function NextIndex: Integer; function Previous: Double; @@ -552,6 +576,8 @@ function Contains(const AValue: Extended): Boolean; function ContainsAll(const ACollection: IJclExtendedCollection): Boolean; function CollectionEquals(const ACollection: IJclExtendedCollection): Boolean; + function Extract(const AValue: Extended): Boolean; + function ExtractAll(const ACollection: IJclExtendedCollection): Boolean; function First: IJclExtendedIterator; function IsEmpty: Boolean; function Last: IJclExtendedIterator; @@ -563,12 +589,13 @@ function GetEnumerator: IJclExtendedIterator; {$ENDIF SUPPORTS_FOR_IN} { IJclExtendedList } + function Delete(Index: Integer): Extended; + function ExtractIndex(Index: Integer): Extended; + function GetValue(Index: Integer): Extended; + function IndexOf(const AValue: Extended): Integer; function Insert(Index: Integer; const AValue: Extended): Boolean; function InsertAll(Index: Integer; const ACollection: IJclExtendedCollection): Boolean; - function GetValue(Index: Integer): Extended; - function IndexOf(const AValue: Extended): Integer; function LastIndexOf(const AValue: Extended): Integer; - function Delete(Index: Integer): Extended; overload; procedure SetValue(Index: Integer; const AValue: Extended); function SubList(First, Count: Integer): IJclExtendedList; public @@ -588,11 +615,12 @@ function CreateEmptyIterator: TJclAbstractIterator; override; { IJclExtendedIterator } function Add(const AValue: Extended): Boolean; - function IteratorEquals(const AIterator: IJclExtendedIterator): Boolean; + procedure Extract; function GetValue: Extended; function HasNext: Boolean; function HasPrevious: Boolean; function Insert(const AValue: Extended): Boolean; + function IteratorEquals(const AIterator: IJclExtendedIterator): Boolean; function Next: Extended; function NextIndex: Integer; function Previous: Extended; @@ -639,6 +667,8 @@ function Contains(AValue: Integer): Boolean; function ContainsAll(const ACollection: IJclIntegerCollection): Boolean; function CollectionEquals(const ACollection: IJclIntegerCollection): Boolean; + function Extract(AValue: Integer): Boolean; + function ExtractAll(const ACollection: IJclIntegerCollection): Boolean; function First: IJclIntegerIterator; function IsEmpty: Boolean; function Last: IJclIntegerIterator; @@ -650,12 +680,13 @@ function GetEnumerator: IJclIntegerIterator; {$ENDIF SUPPORTS_FOR_IN} { IJclIntegerList } + function Delete(Index: Integer): Integer; + function ExtractIndex(Index: Integer): Integer; + function GetValue(Index: Integer): Integer; + function IndexOf(AValue: Integer): Integer; function Insert(Index: Integer; AValue: Integer): Boolean; function InsertAll(Index: Integer; const ACollection: IJclIntegerCollection): Boolean; - function GetValue(Index: Integer): Integer; - function IndexOf(AValue: Integer): Integer; function LastIndexOf(AValue: Integer): Integer; - function Delete(Index: Integer): Integer; overload; procedure SetValue(Index: Integer; AValue: Integer); function SubList(First, Count: Integer): IJclIntegerList; public @@ -675,11 +706,12 @@ function CreateEmptyIterator: TJclAbstractIterator; override; { IJclIntegerIterator } function Add(AValue: Integer): Boolean; - function IteratorEquals(const AIterator: IJclIntegerIterator): Boolean; + procedure Extract; function GetValue: Integer; function HasNext: Boolean; function HasPrevious: Boolean; function Insert(AValue: Integer): Boolean; + function IteratorEquals(const AIterator: IJclIntegerIterator): Boolean; function Next: Integer; function NextIndex: Integer; function Previous: Integer; @@ -716,6 +748,8 @@ function Contains(AValue: Cardinal): Boolean; function ContainsAll(const ACollection: IJclCardinalCollection): Boolean; function CollectionEquals(const ACollection: IJclCardinalCollection): Boolean; + function Extract(AValue: Cardinal): Boolean; + function ExtractAll(const ACollection: IJclCardinalCollection): Boolean; function First: IJclCardinalIterator; function IsEmpty: Boolean; function Last: IJclCardinalIterator; @@ -727,12 +761,13 @@ function GetEnumerator: IJclCardinalIterator; {$ENDIF SUPPORTS_FOR_IN} { IJclCardinalList } + function Delete(Index: Integer): Cardinal; + function ExtractIndex(Index: Integer): Cardinal; + function GetValue(Index: Integer): Cardinal; + function IndexOf(AValue: Cardinal): Integer; function Insert(Index: Integer; AValue: Cardinal): Boolean; function InsertAll(Index: Integer; const ACollection: IJclCardinalCollection): Boolean; - function GetValue(Index: Integer): Cardinal; - function IndexOf(AValue: Cardinal): Integer; function LastIndexOf(AValue: Cardinal): Integer; - function Delete(Index: Integer): Cardinal; overload; procedure SetValue(Index: Integer; AValue: Cardinal); function SubList(First, Count: Integer): IJclCardinalList; public @@ -752,11 +787,12 @@ function CreateEmptyIterator: TJclAbstractIterator; override; { IJclCardinalIterator } function Add(AValue: Cardinal): Boolean; - function IteratorEquals(const AIterator: IJclCardinalIterator): Boolean; + procedure Extract; function GetValue: Cardinal; function HasNext: Boolean; function HasPrevious: Boolean; function Insert(AValue: Cardinal): Boolean; + function IteratorEquals(const AIterator: IJclCardinalIterator): Boolean; function Next: Cardinal; function NextIndex: Integer; function Previous: Cardinal; @@ -793,6 +829,8 @@ function Contains(const AValue: Int64): Boolean; function ContainsAll(const ACollection: IJclInt64Collection): Boolean; function CollectionEquals(const ACollection: IJclInt64Collection): Boolean; + function Extract(const AValue: Int64): Boolean; + function ExtractAll(const ACollection: IJclInt64Collection): Boolean; function First: IJclInt64Iterator; function IsEmpty: Boolean; function Last: IJclInt64Iterator; @@ -804,12 +842,13 @@ function GetEnumerator: IJclInt64Iterator; {$ENDIF SUPPORTS_FOR_IN} { IJclInt64List } + function Delete(Index: Integer): Int64; + function ExtractIndex(Index: Integer): Int64; + function GetValue(Index: Integer): Int64; + function IndexOf(const AValue: Int64): Integer; function Insert(Index: Integer; const AValue: Int64): Boolean; function InsertAll(Index: Integer; const ACollection: IJclInt64Collection): Boolean; - function GetValue(Index: Integer): Int64; - function IndexOf(const AValue: Int64): Integer; function LastIndexOf(const AValue: Int64): Integer; - function Delete(Index: Integer): Int64; overload; procedure SetValue(Index: Integer; const AValue: Int64); function SubList(First, Count: Integer): IJclInt64List; public @@ -829,11 +868,12 @@ function CreateEmptyIterator: TJclAbstractIterator; override; { IJclInt64Iterator } function Add(const AValue: Int64): Boolean; - function IteratorEquals(const AIterator: IJclInt64Iterator): Boolean; + procedure Extract; function GetValue: Int64; function HasNext: Boolean; function HasPrevious: Boolean; function Insert(const AValue: Int64): Boolean; + function IteratorEquals(const AIterator: IJclInt64Iterator): Boolean; function Next: Int64; function NextIndex: Integer; function Previous: Int64; @@ -871,6 +911,8 @@ function Contains(APtr: Pointer): Boolean; function ContainsAll(const ACollection: IJclPtrCollection): Boolean; function CollectionEquals(const ACollection: IJclPtrCollection): Boolean; + function Extract(APtr: Pointer): Boolean; + function ExtractAll(const ACollection: IJclPtrCollection): Boolean; function First: IJclPtrIterator; function IsEmpty: Boolean; function Last: IJclPtrIterator; @@ -882,12 +924,13 @@ function GetEnumerator: IJclPtrIterator; {$ENDIF SUPPORTS_FOR_IN} { IJclPtrList } + function Delete(Index: Integer): Pointer; + function ExtractIndex(Index: Integer): Pointer; + function GetPointer(Index: Integer): Pointer; + function IndexOf(APtr: Pointer): Integer; function Insert(Index: Integer; APtr: Pointer): Boolean; function InsertAll(Index: Integer; const ACollection: IJclPtrCollection): Boolean; - function GetPointer(Index: Integer): Pointer; - function IndexOf(APtr: Pointer): Integer; function LastIndexOf(APtr: Pointer): Integer; - function Delete(Index: Integer): Pointer; overload; procedure SetPointer(Index: Integer; APtr: Pointer); function SubList(First, Count: Integer): IJclPtrList; public @@ -907,11 +950,12 @@ function CreateEmptyIterator: TJclAbstractIterator; override; { IJclPtrIterator } function Add(APtr: Pointer): Boolean; - function IteratorEquals(const AIterator: IJclPtrIterator): Boolean; + procedure Extract; function GetPointer: Pointer; function HasNext: Boolean; function HasPrevious: Boolean; function Insert(APtr: Pointer): Boolean; + function IteratorEquals(const AIterator: IJclPtrIterator): Boolean; function Next: Pointer; function NextIndex: Integer; function Previous: Pointer; @@ -949,6 +993,8 @@ function Contains(AObject: TObject): Boolean; function ContainsAll(const ACollection: IJclCollection): Boolean; function CollectionEquals(const ACollection: IJclCollection): Boolean; + function Extract(AObject: TObject): Boolean; + function ExtractAll(const ACollection: IJclCollection): Boolean; function First: IJclIterator; function IsEmpty: Boolean; function Last: IJclIterator; @@ -960,12 +1006,13 @@ function GetEnumerator: IJclIterator; {$ENDIF SUPPORTS_FOR_IN} { IJclList } + function Delete(Index: Integer): TObject; + function ExtractIndex(Index: Integer): TObject; + function GetObject(Index: Integer): TObject; + function IndexOf(AObject: TObject): Integer; function Insert(Index: Integer; AObject: TObject): Boolean; function InsertAll(Index: Integer; const ACollection: IJclCollection): Boolean; - function GetObject(Index: Integer): TObject; - function IndexOf(AObject: TObject): Integer; function LastIndexOf(AObject: TObject): Integer; - function Delete(Index: Integer): TObject; overload; procedure SetObject(Index: Integer; AObject: TObject); function SubList(First, Count: Integer): IJclList; public @@ -985,11 +1032,12 @@ function CreateEmptyIterator: TJclAbstractIterator; override; { IJclIterator } function Add(AObject: TObject): Boolean; - function IteratorEquals(const AIterator: IJclIterator): Boolean; + procedure Extract; function GetObject: TObject; function HasNext: Boolean; function HasPrevious: Boolean; function Insert(AObject: TObject): Boolean; + function IteratorEquals(const AIterator: IJclIterator): Boolean; function Next: TObject; function NextIndex: Integer; function Previous: TObject; @@ -1032,6 +1080,8 @@ function Contains(const AItem: T): Boolean; function ContainsAll(const ACollection: IJclCollection<T>): Boolean; function CollectionEquals(const ACollection: IJclCollection<T>): Boolean; + function Extract(const AItem: T): Boolean; + function ExtractAll(const ACollection: IJclCollection<T>): Boolean; function First: IJclIterator<T>; function IsEmpty: Boolean; function Last: IJclIterator<T>; @@ -1043,12 +1093,13 @@ function GetEnumerator: IJclIterator<T>; {$ENDIF SUPPORTS_FOR_IN} { IJclList<T> } + function Delete(Index: Integer): T; + function ExtractIndex(Index: Integer): T; + function GetItem(Index: Integer): T; + function IndexOf(const AItem: T): Integer; function Insert(Index: Integer; const AItem: T): Boolean; function InsertAll(Index: Integer; const ACollection: IJclCollection<T>): Boolean; - function GetItem(Index: Integer): T; - function IndexOf(const AItem: T): Integer; function LastIndexOf(const AItem: T): Integer; - function Delete(Index: Integer): T; overload; procedure SetItem(Index: Integer; const AItem: T); function SubList(First, Count: Integer): IJclList<T>; public @@ -1068,11 +1119,12 @@ function CreateEmptyIterator: TJclAbstractIterator; override; { IJclIterator<T> } function Add(const AItem: T): Boolean; - function IteratorEquals(const AIterator: IJclIterator<T>): Boolean; + procedure Extract; function GetItem: T; function HasNext: Boolean; function HasPrevious: Boolean; function Insert(const AItem: T): Boolean; + function IteratorEquals(const AIterator: IJclIterator<T>): Boolean; function Next: T; function NextIndex: Integer; function Previous: T; @@ -1316,6 +1368,34 @@ {$ENDIF THREADSAFE} end; +function TJclIntfArrayList.CollectionEquals(const ACollection: IJclIntfCollection): Boolean; +var + I: Integer; + It: IJclIntfIterator; +begin + {$IFDEF THREADSAFE} + if FThreadSafe then + SyncReaderWriter.BeginRead; + try + {$ENDIF THREADSAFE} + Result := False; + if ACollection = nil then + Exit; + if FSize <> ACollection.Size then + Exit; + It := ACollection.First; + for I := 0 to FSize - 1 do + if not ItemsEqual(FElementData[I], It.Next) then + Exit; + Result := True; + {$IFDEF THREADSAFE} + finally + if FThreadSafe then + SyncReaderWriter.EndRead; + end; + {$ENDIF THREADSAFE} +end; + function TJclIntfArrayList.Contains(const AInterface: IInterface): Boolean; var I: Integer; @@ -1365,6 +1445,8 @@ end; function TJclIntfArrayList.Delete(Index: Integer): IInterface; +var + Extracted: IInterface; begin if ReadOnly then raise EJclReadOnlyError.Create; @@ -1373,16 +1455,8 @@ SyncReaderWriter.BeginWrite; try {$ENDIF THREADSAFE} - if (Index >= 0) and (Index < FSize) then - begin - Result := FreeObject(FElementData[Index]); - if Index < (FSize - 1) then - MoveArray(FElementData, Index + 1, Index, FSize - Index - 1); - Dec(FSize); - AutoPack; - end - else - Result := RaiseOutOfBoundsError; + Extracted := ExtractIndex(Index); + Result := FreeObject(Extracted); {$IFDEF THREADSAFE} finally if FThreadSafe then @@ -1391,34 +1465,90 @@ {$ENDIF THREADSAFE} end; -function TJclIntfArrayList.CollectionEquals(const ACollection: IJclIntfCollection): Boolean; +function TJclIntfArrayList.Extract(const AInterface: IInterface): Boolean; var I: Integer; +begin + if ReadOnly then + raise EJclReadOnlyError.Create; + {$IFDEF THREADSAFE} + if FThreadSafe then + SyncReaderWriter.BeginWrite; + try + {$ENDIF THREADSAFE} + Result := False; + for I := FSize - 1 downto 0 do + if ItemsEqual(FElementData[I], AInterface) then + begin + if I < (FSize - 1) then + MoveArray(FElementData, I + 1, I, FSize - I - 1); + Dec(FSize); + Result := True; + if FRemoveSingleElement then + Break; + end; + AutoPack; + {$IFDEF THREADSAFE} + finally + if FThreadSafe then + SyncReaderWriter.EndWrite; + end; + {$ENDIF THREADSAFE} +end; + +function TJclIntfArrayList.ExtractAll(const ACollection: IJclIntfCollection): Boolean; +var It: IJclIntfIterator; begin + if ReadOnly then + raise EJclReadOnlyError.Create; {$IFDEF THREADSAFE} if FThreadSafe then - SyncReaderWriter.BeginRead; + SyncReaderWriter.BeginWrite; try {$ENDIF THREADSAFE} Result := False; if ACollection = nil then Exit; - if FSize <> ACollection.Size then - Exit; + Result := True; It := ACollection.First; - for I := 0 to FSize - 1 do - if not ItemsEqual(FElementData[I], It.Next) then - Exit; - Result := True; + while It.HasNext do + Result := Extract(It.Next) and Result; {$IFDEF THREADSAFE} finally if FThreadSafe then - SyncReaderWriter.EndRead; + SyncReaderWriter.EndWrite; end; {$ENDIF THREADSAFE} end; +function TJclIntfArrayList.ExtractIndex(Index: Integer): IInterface; +begin + if ReadOnly then + raise EJclReadOnlyError.Create; + {$IFDEF THREADSAFE} + if FThreadSafe then + SyncReaderWriter.BeginWrite; + try + {$ENDIF THREADSAFE} + if (Index >= 0) and (Index < FSize) then + begin + Result := FElementData[Index]; + if Index < (FSize - 1) then + MoveArray(FElementData, Index + 1, Index, FSize - Index - 1); + Dec(FSize); + AutoPack; + end + else + Result := RaiseOutOfBoundsError; + {$IFDEF THREADSAFE} + finally + if FThreadSafe then + SyncReaderWriter.EndWrite; + end; + {$ENDIF THREADSAFE} +end; + function TJclIntfArrayList.First: IJclIntfIterator; begin Result := TJclIntfArrayIterator.Create(Self, 0, False, isFirst); @@ -1592,7 +1722,7 @@ function TJclIntfArrayList.Remove(const AInterface: IInterface): Boolean; var - I: Integer; + Extracted: IInterface; begin if ReadOnly then raise EJclReadOnlyError.Create; @@ -1601,19 +1731,12 @@ SyncReaderWriter.BeginWrite; try {$ENDIF THREADSAFE} - Result := False; - for I := FSize - 1 downto 0 do - if ItemsEqual(FElementData[I], AInterface) then - begin - FreeObject(FElementData[I]); - if I < (FSize - 1) then - MoveArray(FElementData, I + 1, I, FSize - I - 1); - Dec(FSize); - Result := True; - if FRemoveSingleElement then - Break; - end; - AutoPack; + Result := Extract(AInterface); + if Result then + begin + Extracted := AInterface; + FreeObject(Extracted); + end; {$IFDEF THREADSAFE} finally if FThreadSafe then @@ -1807,20 +1930,11 @@ Result := TJclIntfArrayIterator.Create(FOwnList, FCursor, Valid, FStart); end; -function TJclIntfArrayIterator.IteratorEquals(const AIterator: IJclIntfIterator): Boolean; -var - Obj: TObject; - ItrObj: TJclIntfArrayIterator; +procedure TJclIntfArrayIterator.Extract; begin - Result := False; - if AIterator = nil then - Exit; - Obj := AIterator.GetIteratorReference; - if Obj is TJclIntfArrayIterator then - begin - ItrObj := TJclIntfArrayIterator(Obj); - Result := (FOwnList = ItrObj.FOwnList) and (FCursor = ItrObj.FCursor) and (Valid = ItrObj.Valid); - end; + CheckValid; + Valid := False; + FOwnList.ExtractIndex(FCursor); end; function TJclIntfArrayIterator.GetObject: IInterface; @@ -1851,6 +1965,22 @@ Result := FOwnList.Insert(FCursor, AInterface); end; +function TJclIntfArrayIterator.IteratorEquals(const AIterator: IJclIntfIterator): Boolean; +var + Obj: TObject; + ItrObj: TJclIntfArrayIterator; +begin + Result := False; + if AIterator = nil then + Exit; + Obj := AIterator.GetIteratorReference; + if Obj is TJclIntfArrayIterator then + begin + ItrObj := TJclIntfArrayIterator(Obj); + Result := (FOwnList = ItrObj.FOwnList) and (FCursor = ItrObj.FCursor) and (Valid = ItrObj.Valid); + end; +end; + {$IFDEF SUPPORTS_FOR_IN} function TJclIntfArrayIterator.MoveNext: Boolean; begin @@ -2093,6 +2223,34 @@ {$ENDIF THREADSAFE} end; +function TJclAnsiStrArrayList.CollectionEquals(const ACollection: IJclAnsiStrCollection): Boolean; +var + I: Integer; + It: IJclAnsiStrIterator; +begin + {$IFDEF THREADSAFE} + if FThreadSafe then + SyncReaderWriter.BeginRead; + try + {$ENDIF THREADSAFE} + Result := False; + if ACollection = nil then + Exit; + if FSize <> ACollection.Size then + Exit; + It := ACollection.First; + for I := 0 to FSize - 1 do + if not ItemsEqual(FElementData[I], It.Next) then + Exit; + Result := True; + {$IFDEF THREADSAFE} + finally + if FThreadSafe then + SyncReaderWriter.EndRead; + end; + {$ENDIF THREADSAFE} +end; + function TJclAnsiStrArrayList.Contains(const AString: AnsiString): Boolean; var I: Integer; @@ -2142,6 +2300,8 @@ end; function TJclAnsiStrArrayList.Delete(Index: Integer): AnsiString; +var + Extracted: AnsiString; begin if ReadOnly then raise EJclReadOnlyError.Create; @@ -2150,16 +2310,8 @@ SyncReaderWriter.BeginWrite; try {$ENDIF THREADSAFE} - if (Index >= 0) and (Index < FSize) then - begin - Result := FreeString(FElementData[Index]); - if Index < (FSize - 1) then - MoveArray(FElementData, Index + 1, Index, FSize - Index - 1); - Dec(FSize); - AutoPack; - end - else - Result := RaiseOutOfBoundsError; + Extracted := ExtractIndex(Index); + Result := FreeString(Extracted); {$IFDEF THREADSAFE} finally if FThreadSafe then @@ -2168,34 +2320,90 @@ {$ENDIF THREADSAFE} end; -function TJclAnsiStrArrayList.CollectionEquals(const ACollection: IJclAnsiStrCollection): Boolean; +function TJclAnsiStrArrayList.Extract(const AString: AnsiString): Boolean; var I: Integer; +begin + if ReadOnly then + raise EJclReadOnlyError.Create; + {$IFDEF THREADSAFE} + if FThreadSafe then + SyncReaderWriter.BeginWrite; + try + {$ENDIF THREADSAFE} + Result := False; + for I := FSize - 1 downto 0 do + if ItemsEqual(FElementData[I], AString) then + begin + if I < (FSize - 1) then + MoveArray(FElementData, I + 1, I, FSize - I - 1); + Dec(FSize); + Result := True; + if FRemoveSingleElement then + Break; + end; + AutoPack; + {$IFDEF THREADSAFE} + finally + if FThreadSafe then + SyncReaderWriter.EndWrite; + end; + {$ENDIF THREADSAFE} +end; + +function TJclAnsiStrArrayList.ExtractAll(const ACollection: IJclAnsiStrCollection): Boolean; +var It: IJclAnsiStrIterator; begin + if ReadOnly then + raise EJclReadOnlyError.Create; {$IFDEF THREADSAFE} if FThreadSafe then - SyncReaderWriter.BeginRead; + SyncReaderWriter.BeginWrite; try {$ENDIF THREADSAFE} Result := False; if ACollection = nil then Exit; - if FSize <> ACollection.Size then - Exit; + Result := True; It := ACollection.First; - for I := 0 to FSize - 1 do - if not ItemsEqual(FElementData[I], It.Next) then - Exit; - Result := True; + while It.HasNext do + Result := Extract(It.Next) and Result; {$IFDEF THREADSAFE} finally if FThreadSafe then - SyncReaderWriter.EndRead; + SyncReaderWriter.EndWrite; end; {$ENDIF THREADSAFE} end; +function TJclAnsiStrArrayList.ExtractIndex(Index: Integer): AnsiString; +begin + if ReadOnly then + raise EJclReadOnlyError.Create; + {$IFDEF THREADSAFE} + if FThreadSafe then + SyncReaderWriter.BeginWrite; + try + {$ENDIF THREADSAFE} + if (Index >= 0) and (Index < FSize) then + begin + Result := FElementData[Index]; + if Index < (FSize - 1) then + MoveArray(FElementData, Index + 1, Index, FSize - Index - 1); + Dec(FSize); + AutoPack; + end + else + Result := RaiseOutOfBoundsError; + {$IFDEF THREADSAFE} + finally + if FThreadSafe then + SyncReaderWriter.EndWrite; + end; + {$ENDIF THREADSAFE} +end; + function TJclAnsiStrArrayList.First: IJclAnsiStrIterator; begin Result := TJclAnsiStrArrayIterator.Create(Self, 0, False, isFirst); @@ -2369,7 +2577,7 @@ function TJclAnsiStrArrayList.Remove(const AString: AnsiString): Boolean; var - I: Integer; + Extracted: AnsiString; begin if ReadOnly then raise EJclReadOnlyError.Create; @@ -2378,19 +2586,12 @@ SyncReaderWriter.BeginWrite; try {$ENDIF THREADSAFE} - Result := False; - for I := FSize - 1 downto 0 do - if ItemsEqual(FElementData[I], AString) then - begin - FreeString(FElementData[I]); - if I < (FSize - 1) then - MoveArray(FElementData, I + 1, I, FSize - I - 1); - Dec(FSize); - Result := True; - if FRemoveSingleElement then - Break; - end; - AutoPack; + Result := Extract(AString); + if Result then + begin + Extracted := AString; + FreeString(Extracted); + end; {$IFDEF THREADSAFE} finally if FThreadSafe then @@ -2584,20 +2785,11 @@ Result := TJclAnsiStrArrayIterator.Create(FOwnList, FCursor, Valid, FStart); end; -function TJclAnsiStrArrayIterator.IteratorEquals(const AIterator: IJclAnsiStrIterator): Boolean; -var - Obj: TObject; - ItrObj: TJclAnsiStrArrayIterator; +procedure TJclAnsiStrArrayIterator.Extract; begin - Result := False; - if AIterator = nil then - Exit; - Obj := AIterator.GetIteratorReference; - if Obj is TJclAnsiStrArrayIterator then - begin - ItrObj := TJclAnsiStrArrayIterator(Obj); - Result := (FOwnList = ItrObj.FOwnList) and (FCursor = ItrObj.FCursor) and (Valid = ItrObj.Valid); - end; + CheckValid; + Valid := False; + FOwnList.ExtractIndex(FCursor); end; function TJclAnsiStrArrayIterator.GetString: AnsiString; @@ -2628,6 +2820,22 @@ Result := FOwnList.Insert(FCursor, AString); end; +function TJclAnsiStrArrayIterator.IteratorEquals(const AIterator: IJclAnsiStrIterator): Boolean; +var + Obj: TObject; + ItrObj: TJclAnsiStrArrayIterator; +begin + Result := False; + if AIterator = nil then + Exit; + Obj := AIterator.GetIteratorReference; + if Obj is TJclAnsiStrArrayIterator then + begin + ItrObj := TJclAnsiStrArrayIterator(Obj); + Result := (FOwnList = ItrObj.FOwnList) and (FCursor = ItrObj.FCursor) and (Valid = ItrObj.Valid); + end; +end; + {$IFDEF SUPPORTS_FOR_IN} function TJclAnsiStrArrayIterator.MoveNext: Boolean; begin @@ -2870,6 +3078,34 @@ {$ENDIF THREADSAFE} end; +function TJclWideStrArrayList.CollectionEquals(const ACollection: IJclWideStrCollection): Boolean; +var + I: Integer; + It: IJclWideStrIterator; +begin + {$IFDEF THREADSAFE} + if FThreadSafe then + SyncReaderWriter.BeginRead; + try + {$ENDIF THREADSAFE} + Result := False; + if ACollection = nil then + Exit; + if FSize <> ACollection.Size then + Exit; + It := ACollection.First; + for I := 0 to FSize - 1 do + if not ItemsEqual(FElementData[I], It.Next) then + Exit; + Result := True; + {$IFDEF THREADSAFE} + finally + if FThreadSafe then + SyncReaderWriter.EndRead; + end; + {$ENDIF THREADSAFE} +end; + function TJclWideStrArrayList.Contains(const AString: WideString): Boolean; var I: Integer; @@ -2919,6 +3155,8 @@ end; function TJclWideStrArrayList.Delete(Index: Integer): WideString; +var + Extracted: WideString; begin if ReadOnly then raise EJclReadOnlyError.Create; @@ -2927,16 +3165,8 @@ SyncReaderWriter.BeginWrite; try {$ENDIF THREADSAFE} - if (Index >= 0) and (Index < FSize) then - begin - Result := FreeString(FElementData[Index]); - if Index < (FSize - 1) then - MoveArray(FElementData, Index + 1, Index, FSize - Index - 1); - Dec(FSize); - AutoPack; - end - else - Result := RaiseOutOfBoundsError; + Extracted := ExtractIndex(Index); + Result := FreeString(Extracted); {$IFDEF THREADSAFE} finally if FThreadSafe then @@ -2945,34 +3175,90 @@ {$ENDIF THREADSAFE} end; -function TJclWideStrArrayList.CollectionEquals(const ACollection: IJclWideStrCollection): Boolean; +function TJclWideStrArrayList.Extract(const AString: WideString): Boolean; var I: Integer; +begin + if ReadOnly then + raise EJclReadOnlyError.Create; + {$IFDEF THREADSAFE} + if FThreadSafe then + SyncReaderWriter.BeginWrite; + try + {$ENDIF THREADSAFE} + Result := False; + for I := FSize - 1 downto 0 do + if ItemsEqual(FElementData[I], AString) then + begin + if I < (FSize - 1) then + MoveArray(FElementData, I + 1, I, FSize - I - 1); + Dec(FSize); + Result := True; + if FRemoveSingleElement then + Break; + end; + AutoPack; + {$IFDEF THREADSAFE} + finally + if FThreadSafe then + SyncReaderWriter.EndWrite; + end; + {$ENDIF THREADSAFE} +end; + +function TJclWideStrArrayList.ExtractAll(const ACollection: IJclWideStrCollection): Boolean; +var It: IJclWideStrIterator; begin + if ReadOnly then + raise EJclReadOnlyError.Create; {$IFDEF THREADSAFE} if FThreadSafe then - SyncReaderWriter.BeginRead; + SyncReaderWriter.BeginWrite; try {$ENDIF THREADSAFE} Result := False; if ACollection = nil then Exit; - if FSize <> ACollection.Size then - Exit; + Result := True; It := ACollection.First; - for I := 0 to FSize - 1 do - if not ItemsEqual(FElementData[I], It.Next) then - Exit; - Result := True; + while It.HasNext do + Result := Extract(It.Next) and Result; {$IFDEF THREADSAFE} finally if FThreadSafe then - SyncReaderWriter.EndRead; + SyncReaderWriter.EndWrite; end; {$ENDIF THREADSAFE} end; +function TJclWideStrArrayList.ExtractIndex(Index: Integer): WideString; +begin + if ReadOnly then + raise EJclReadOnlyError.Create; + {$IFDEF THREADSAFE} + if FThreadSafe then + SyncReaderWriter.BeginWrite; + try + {$ENDIF THREADSAFE} + if (Index >= 0) and (Index < FSize) then + begin + Result := FElementData[Index]; + if Index < (FSize - 1) then + MoveArray(FElementData, Index + 1, Index, FSize - Index - 1); + Dec(FSize); + AutoPack; + end + else + Result := RaiseOutOfBoundsError; + {$IFDEF THREADSAFE} + finally + if FThreadSafe then + SyncReaderWriter.EndWrite; + end; + {$ENDIF THREADSAFE} +end; + function TJclWideStrArrayList.First: IJclWideStrIterator; begin Result := TJclWideStrArrayIterator.Create(Self, 0, False, isFirst); @@ -3146,7 +3432,7 @@ function TJclWideStrArrayList.Remove(const AString: WideString): Boolean; var - I: Integer; + Extracted: WideString; begin if ReadOnly then raise EJclReadOnlyError.Create; @@ -3155,19 +3441,12 @@ SyncReaderWriter.BeginWrite; try {$ENDIF THREADSAFE} - Result := False; - for I := FSize - 1 downto 0 do - if ItemsEqual(FElementData[I], AString) then - begin - FreeString(FElementData[I]); - if I < (FSize - 1) then - MoveArray(FElementData, I + 1, I, FSize - I - 1); - Dec(FSize); - Result := True; - if FRemoveSingleElement then - Break; - end; - AutoPack; + Result := Extract(AString); + if Result then + begin + Extracted := AString; + FreeString(Extracted); + end; {$IFDEF THREADSAFE} finally if FThreadSafe then @@ -3361,20 +3640,11 @@ Result := TJclWideStrArrayIterator.Create(FOwnList, FCursor, Valid, FStart); end; -function TJclWideStrArrayIterator.IteratorEquals(const AIterator: IJclWideStrIterator): Boolean; -var - Obj: TObject; - ItrObj: TJclWideStrArrayIterator; +procedure TJclWideStrArrayIterator.Extract; begin - Result := False; - if AIterator = nil then - Exit; - Obj := AIterator.GetIteratorReference; - if Obj is TJclWideStrArrayIterator then - begin - ItrObj := TJclWideStrArrayIterator(Obj); - Result := (FOwnList = ItrObj.FOwnList) and (FCursor = ItrObj.FCursor) and (Valid = ItrObj.Valid); - end; + CheckValid; + Valid := False; + FOwnList.ExtractIndex(FCursor); end; function TJclWideStrArrayIterator.GetString: WideString; @@ -3405,6 +3675,22 @@ Result := FOwnList.Insert(FCursor, AString); end; +function TJclWideStrArrayIterator.IteratorEquals(const AIterator: IJclWideStrIterator): Boolean; +var + Obj: TObject; + ItrObj: TJclWideStrArrayIterator; +begin + Result := False; + if AIterator = nil then + Exit; + Obj := AIterator.GetIteratorReference; + if Obj is TJclWideStrArrayIterator then + begin + ItrObj := TJclWideStrArrayIterator(Obj); + Result := (FOwnList = ItrObj.FOwnList) and (FCursor = ItrObj.FCursor) and (Valid = ItrObj.Valid); + end; +end; + {$IFDEF SUPPORTS_FOR_IN} function TJclWideStrArrayIterator.MoveNext: Boolean; begin @@ -3648,6 +3934,34 @@ {$ENDIF THREADSAFE} end; +function TJclUnicodeStrArrayList.CollectionEquals(const ACollection: IJclUnicodeStrCollection): Boolean; +var + I: Integer; + It: IJclUnicodeStrIterator; +begin + {$IFDEF THREADSAFE} + if FThreadSafe then + SyncReaderWriter.BeginRead; + try + {$ENDIF THREADSAFE} + Result := False; + if ACollection = nil then + Exit; + if FSize <> ACollection.Size then + Exit; + It := ACollection.First; + for I := 0 to FSize - 1 do + if not ItemsEqual(FElementData[I], It.Next) then + Exit; + Result := True; + {$IFDEF THREADSAFE} + finally + if FThreadSafe then + SyncReaderWriter.EndRead; + end; + {$ENDIF THREADSAFE} +end; + function TJclUnicodeStrArrayList.Contains(const AString: UnicodeString): Boolean; var I: Integer; @@ -3697,6 +4011,8 @@ end; function TJclUnicodeStrArrayList.Delete(Index: Integer): UnicodeString; +var + Extracted: UnicodeString; begin if ReadOnly then raise EJclReadOnlyError.Create; @@ -3705,16 +4021,8 @@ SyncReaderWriter.BeginWrite; try {$ENDIF THREADSAFE} - if (Index >= 0) and (Index < FSize) then - begin - Result := FreeString(FElementData[Index]); - if Index < (FSize - 1) then - MoveArray(FElementData, Index + 1, Index, FSize - Index - 1); - Dec(FSize); - AutoPack; - end - else - Result := RaiseOutOfBoundsError; + Extracted := ExtractIndex(Index); + Result := FreeString(Extracted); {$IFDEF THREADSAFE} finally if FThreadSafe then @@ -3723,34 +4031,90 @@ {$ENDIF THREADSAFE} end; -function TJclUnicodeStrArrayList.CollectionEquals(const ACollection: IJclUnicodeStrCollection): Boolean; +function TJclUnicodeStrArrayList.Extract(const AString: UnicodeString): Boolean; var I: Integer; +begin + if ReadOnly then + raise EJclReadOnlyError.Create; + {$IFDEF THREADSAFE} + if FThreadSafe then + SyncReaderWriter.BeginWrite; + try + {$ENDIF THREADSAFE} + Result := False; + for I := FSize - 1 downto 0 do + if ItemsEqual(FElementData[I], AString) then + begin + if I < (FSize - 1) then + MoveArray(FElementData, I + 1, I, FSize - I - 1); + Dec(FSize); + Result := True; + if FRemoveSingleElement then + Break; + end; + AutoPack; + {$IFDEF THREADSAFE} + finally + if FThreadSafe then + SyncReaderWriter.EndWrite; + end; + {$ENDIF THREADSAFE} +end; + +function TJclUnicodeStrArrayList.ExtractAll(const ACollection: IJclUnicodeStrCollection): Boolean; +var It: IJclUnicodeStrIterator; begin + if ReadOnly then + raise EJclReadOnlyError.Create; {$IFDEF THREADSAFE} if FThreadSafe then - SyncReaderWriter.BeginRead; + SyncReaderWriter.BeginWrite; try {$ENDIF THREADSAFE} Result := False; if ACollection = nil then Exit; - if FSize <> ACollection.Size then - Exit; + Result := True; It := ACollection.First; - for I := 0 to FSize - 1 do - if not ItemsEqual(FElementData[I], It.Next) then - Exit; - Result := True; + while It.HasNext do + Result := Extract(It.Next) and Result; {$IFDEF THREADSAFE} finally if FThreadSafe then - SyncReaderWriter.EndRead; + SyncReaderWriter.EndWrite; end; {$ENDIF THREADSAFE} end; +function TJclUnicodeStrArrayList.ExtractIndex(Index: Integer): UnicodeString; +begin + if ReadOnly then + raise EJclReadOnlyError.Create; + {$IFDEF THREADSAFE} + if FThreadSafe then + SyncReaderWriter.BeginWrite; + try + {$ENDIF THREADSAFE} + if (Index >= 0) and (Index < FSize) then + begin + Result := FElementData[Index]; + if Index < (FSize - 1) then + MoveArray(FElementData, Index + 1, Index, FSize - Index - 1); + Dec(FSize); + AutoPack; + end + else + Result := RaiseOutOfBoundsError; + {$IFDEF THREADSAFE} + finally + if FThreadSafe then + SyncReaderWriter.EndWrite; + end; + {$ENDIF THREADSAFE} +end; + function TJclUnicodeStrArrayList.First: IJclUnicodeStrIterator; begin Result := TJclUnicodeStrArrayIterator.Create(Self, 0, False, isFirst); @@ -3924,7 +4288,7 @@ function TJclUnicodeStrArrayList.Remove(const AString: UnicodeString): Boolean; var - I: Integer; + Extracted: UnicodeString; begin if ReadOnly then raise EJclReadOnlyError.Create; @@ -3933,19 +4297,12 @@ SyncReaderWriter.BeginWrite; try {$ENDIF THREADSAFE} - Result := False; - for I := FSize - 1 downto 0 do - if ItemsEqual(FElementData[I], AString) then - begin - FreeString(FElementData[I]); - if I < (FSize - 1) then - MoveArray(FElementData, I + 1, I, FSize - I - 1); - Dec(FSize); - Result := True; - if FRemoveSingleElement then - Break; - end; - AutoPack; + Result := Extract(AString); + if Result then + begin + Extracted := AString; + FreeString(Extracted); + end; {$IFDEF THREADSAFE} finally if FThreadSafe then @@ -4139,20 +4496,11 @@ Result := TJclUnicodeStrArrayIterator.Create(FOwnList, FCursor, Valid, FStart); end; -function TJclUnicodeStrArrayIterator.IteratorEquals(const AIterator: IJclUnicodeStrIterator): Boolean; -var - Obj: TObject; - ItrObj: TJclUnicodeStrArrayIterator; +procedure TJclUnicodeStrArrayIterator.Extract; begin - Result := False; - if AIterator = nil then - Exit; - Obj := AIterator.GetIteratorReference; - if Obj is TJclUnicodeStrArrayIterator then - begin - ItrObj := TJclUnicodeStrArrayIterator(Obj); - Result := (FOwnList = ItrObj.FOwnList) and (FCursor = ItrObj.FCursor) and (Valid = ItrObj.Valid); - end; + CheckValid; + Valid := False; + FOwnList.ExtractIndex(FCursor); end; function TJclUnicodeStrArrayIterator.GetString: UnicodeString; @@ -4183,6 +4531,22 @@ Result := FOwnList.Insert(FCursor, AString); end; +function TJclUnicodeStrArrayIterator.IteratorEquals(const AIterator: IJclUnicodeStrIterator): Boolean; +var + Obj: TObject; + ItrObj: TJclUnicodeStrArrayIterator; +begin + Result := False; + if AIterator = nil then + Exit; + Obj := AIterator.GetIteratorReference; + if Obj is TJclUnicodeStrArrayIterator then + begin + ItrObj := TJclUnicodeStrArrayIterator(Obj); + Result := (FOwnList = ItrObj.FOwnList) and (FCursor = ItrObj.FCursor) and (Valid = ItrObj.Valid); + end; +end; + {$IFDEF SUPPORTS_FOR_IN} function TJclUnicodeStrArrayIterator.MoveNext: Boolean; begin @@ -4427,6 +4791,34 @@ {$ENDIF THREADSAFE} end; +function TJclSingleArrayList.CollectionEquals(const ACollection: IJclSingleCollection): Boolean; +var + I: Integer; + It: IJclSingleIterator; +begin + {$IFDEF THREADSAFE} + if FThreadSafe then + SyncReaderWriter.BeginRead; + try + {$ENDIF THREADSAFE} + Result := False; + if ACollection = nil then + Exit; + if FSize <> ACollection.Size then + Exit; + It := ACollection.First; + for I := 0 to FSize - 1 do + if not ItemsEqual(FElementData[I], It.Next) then + Exit; + Result := True; + {$IFDEF THREADSAFE} + finally + if FThreadSafe then + SyncReaderWriter.EndRead; + end; + {$ENDIF THREADSAFE} +end; + function TJclSingleArrayList.Contains(const AValue: Single): Boolean; var I: Integer; @@ -4476,6 +4868,8 @@ end; function TJclSingleArrayList.Delete(Index: Integer): Single; +var + Extracted: Single; begin if ReadOnly then raise EJclReadOnlyError.Create; @@ -4484,16 +4878,8 @@ SyncReaderWriter.BeginWrite; try {$ENDIF THREADSAFE} - if (Index >= 0) and (Index < FSize) then - begin - Result := FreeSingle(FElementData[Index]); - if Index < (FSize - 1) then - MoveArray(FElementData, Index + 1, Index, FSize - Index - 1); - Dec(FSize); - AutoPack; - end - else - Result := RaiseOutOfBoundsError; + Extracted := ExtractIndex(Index); + Result := FreeSingle(Extracted); {$IFDEF THREADSAFE} finally if FThreadSafe then @@ -4502,34 +4888,90 @@ {$ENDIF THREADSAFE} end; -function TJclSingleArrayList.CollectionEquals(const ACollection: IJclSingleCollection): Boolean; +function TJclSingleArrayList.Extract(const AValue: Single): Boolean; var I: Integer; +begin + if ReadOnly then + raise EJclReadOnlyError.Create; + {$IFDEF THREADSAFE} + if FThreadSafe then + SyncReaderWriter.BeginWrite; + try + {$ENDIF THREADSAFE} + Result := False; + for I := FSize - 1 downto 0 do + if ItemsEqual(FElementData[I], AValue) then + begin + if I < (FSize - 1) then + MoveArray(FElementData, I + 1, I, FSize - I - 1); + Dec(FSize); + Result := True; + if FRemoveSingleElement then + Break; + end; + AutoPack; + {$IFDEF THREADSAFE} + finally + if FThreadSafe then + SyncReaderWriter.EndWrite; + end; + {$ENDIF THREADSAFE} +end; + +function TJclSingleArrayList.ExtractAll(const ACollection: IJclSingleCollection): Boolean; +var It: IJclSingleIterator; begin + if ReadOnly then + raise EJclReadOnlyError.Create; {$IFDEF THREADSAFE} if FThreadSafe then - SyncReaderWriter.BeginRead; + SyncReaderWriter.BeginWrite; try {$ENDIF THREADSAFE} Result := False; if ACollection = nil then Exit; - if FSize <> ACollection.Size then - Exit; + Result := True; It := ACollection.First; - for I := 0 to FSize - 1 do - if not ItemsEqual(FElementData[I], It.Next) then - Exit; - Result := True; + while It.HasNext do + Result := Extract(It.Next) and Result; {$IFDEF THREADSAFE} finally if FThreadSafe then - SyncReaderWriter.EndRead; + SyncReaderWriter.EndWrite; end; {$ENDIF THREADSAFE} end; +function TJclSingleArrayList.ExtractIndex(Index: Integer): Single; +begin + if ReadOnly then + raise EJclReadOnlyError.Create; + {$IFDEF THREADSAFE} + if FThreadSafe then + SyncReaderWriter.BeginWrite; + try + {$ENDIF THREADSAFE} + if (Index >= 0) and (Index < FSize) then + begin + Result := FElementData[Index]; + if Index < (FSize - 1) then + MoveArray(FElementData, Index + 1, Index, FSize - Index - 1); + Dec(FSize); + AutoPack; + end + else + Result := RaiseOutOfBoundsError; + {$IFDEF THREADSAFE} + finally + if FThreadSafe then + SyncReaderWriter.EndWrite; + end; + {$ENDIF THREADSAFE} +end; + function TJclSingleArrayList.First: IJclSingleIterator; begin Result := TJclSingleArrayIterator.Create(Self, 0, False, isFirst); @@ -4703,7 +5145,7 @@ function TJclSingleArrayList.Remove(const AValue: Single): Boolean; var - I: Integer; + Extracted: Single; begin ... [truncated message content] |
From: <jed...@us...> - 2009-03-03 19:53:37
|
Revision: 2671 http://jcl.svn.sourceforge.net/jcl/?rev=2671&view=rev Author: jedi_mbe Date: 2009-03-03 19:53:35 +0000 (Tue, 03 Mar 2009) Log Message: ----------- * Removed compiler hints/warnings * Removed Comprehensive_003 from the TEDIObjectList_Tests; no description of what should be tested Modified Paths: -------------- trunk/qa/automated/dunit/units/TestJclEDI.pas Modified: trunk/qa/automated/dunit/units/TestJclEDI.pas =================================================================== --- trunk/qa/automated/dunit/units/TestJclEDI.pas 2009-03-03 19:39:47 UTC (rev 2670) +++ trunk/qa/automated/dunit/units/TestJclEDI.pas 2009-03-03 19:53:35 UTC (rev 2671) @@ -41,7 +41,6 @@ published procedure Comprehensive_001; procedure Comprehensive_002; - procedure Comprehensive_003; end; TEDIStringReplace_Tests = class(TTestCase) @@ -146,16 +145,16 @@ procedure TEDIObjectList_Tests.Comprehensive_002; var OL: TEDIObjectList; - LI0, LI1, LI2, LI3, LI4, LI5: TEDIObjectListItem; + {LI0, }LI1, LI2, LI3, {LI4, }LI5: TEDIObjectListItem; O: TEDIObject; begin OL := TEDIObjectList.Create(True); try - LI0 := OL.Add(TEDIObject.Create, 'Element 1'); + {LI0 := }OL.Add(TEDIObject.Create, 'Element 1'); LI1 := OL.Add(TEDIObject.Create, 'Element 2'); LI2 := OL.Add(TEDIObject.Create, 'Element 3'); LI3 := OL.Add(TEDIObject.Create, 'Element 4'); - LI4 := OL.Add(TEDIObject.Create, 'Element 5'); + {LI4 := }OL.Add(TEDIObject.Create, 'Element 5'); Check(OL.Count = 5, 'TEDIObjectList.Add failed.'); {$IFDEF USING_EDI_NEW_PROTOTYPE THEN} LI5 := OL.FindItem(LI2.EDIObject); @@ -169,20 +168,13 @@ Check(OL.Count = 3, 'TEDIObjectList.Remove failed.'); LI2 := OL.Insert(O, LI3.EDIObject); Check(OL.Count = 4, 'TEDIObjectList.Insert failed.'); - LI1 := OL.Insert(LI2.EDIObject); + {LI1 := }OL.Insert(LI2.EDIObject); Check(OL.Count = 5, 'TEDIObjectList.Insert failed.'); finally OL.Free; end; //try end; -{ - Tests with dynamic array emulation -} -procedure TEDIObjectList_Tests.Comprehensive_003; -begin -end; - { TEDIStringReplace_Tests } procedure TEDIStringReplace_Tests.DoTest(S1, OldPattern, NewPattern: string; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <jed...@us...> - 2009-03-03 19:39:48
|
Revision: 2670 http://jcl.svn.sourceforge.net/jcl/?rev=2670&view=rev Author: jedi_mbe Date: 2009-03-03 19:39:47 +0000 (Tue, 03 Mar 2009) Log Message: ----------- * Fixed compiler hint/warning test suite JclContainer * Fixed bug in JclLinkedLists.imp's implementation of HasPrevious Modified Paths: -------------- trunk/jcl/source/common/JclLinkedLists.pas trunk/jcl/source/prototypes/containers/JclLinkedLists.imp trunk/qa/automated/dunit/units/TestJclContainer.pas Modified: trunk/jcl/source/common/JclLinkedLists.pas =================================================================== --- trunk/jcl/source/common/JclLinkedLists.pas 2009-03-03 00:33:15 UTC (rev 2669) +++ trunk/jcl/source/common/JclLinkedLists.pas 2009-03-03 19:39:47 UTC (rev 2670) @@ -2102,7 +2102,7 @@ try {$ENDIF THREADSAFE} if Valid then - Result := (FCursor <> nil) and (FCursor.Next <> nil) + Result := (FCursor <> nil) and (FCursor.Previous <> nil) else Result := FCursor <> nil; {$IFDEF THREADSAFE} @@ -3232,7 +3232,7 @@ try {$ENDIF THREADSAFE} if Valid then - Result := (FCursor <> nil) and (FCursor.Next <> nil) + Result := (FCursor <> nil) and (FCursor.Previous <> nil) else Result := FCursor <> nil; {$IFDEF THREADSAFE} @@ -4362,7 +4362,7 @@ try {$ENDIF THREADSAFE} if Valid then - Result := (FCursor <> nil) and (FCursor.Next <> nil) + Result := (FCursor <> nil) and (FCursor.Previous <> nil) else Result := FCursor <> nil; {$IFDEF THREADSAFE} @@ -5495,7 +5495,7 @@ try {$ENDIF THREADSAFE} if Valid then - Result := (FCursor <> nil) and (FCursor.Next <> nil) + Result := (FCursor <> nil) and (FCursor.Previous <> nil) else Result := FCursor <> nil; {$IFDEF THREADSAFE} @@ -6627,7 +6627,7 @@ try {$ENDIF THREADSAFE} if Valid then - Result := (FCursor <> nil) and (FCursor.Next <> nil) + Result := (FCursor <> nil) and (FCursor.Previous <> nil) else Result := FCursor <> nil; {$IFDEF THREADSAFE} @@ -7758,7 +7758,7 @@ try {$ENDIF THREADSAFE} if Valid then - Result := (FCursor <> nil) and (FCursor.Next <> nil) + Result := (FCursor <> nil) and (FCursor.Previous <> nil) else Result := FCursor <> nil; {$IFDEF THREADSAFE} @@ -8890,7 +8890,7 @@ try {$ENDIF THREADSAFE} if Valid then - Result := (FCursor <> nil) and (FCursor.Next <> nil) + Result := (FCursor <> nil) and (FCursor.Previous <> nil) else Result := FCursor <> nil; {$IFDEF THREADSAFE} @@ -10020,7 +10020,7 @@ try {$ENDIF THREADSAFE} if Valid then - Result := (FCursor <> nil) and (FCursor.Next <> nil) + Result := (FCursor <> nil) and (FCursor.Previous <> nil) else Result := FCursor <> nil; {$IFDEF THREADSAFE} @@ -11150,7 +11150,7 @@ try {$ENDIF THREADSAFE} if Valid then - Result := (FCursor <> nil) and (FCursor.Next <> nil) + Result := (FCursor <> nil) and (FCursor.Previous <> nil) else Result := FCursor <> nil; {$IFDEF THREADSAFE} @@ -12280,7 +12280,7 @@ try {$ENDIF THREADSAFE} if Valid then - Result := (FCursor <> nil) and (FCursor.Next <> nil) + Result := (FCursor <> nil) and (FCursor.Previous <> nil) else Result := FCursor <> nil; {$IFDEF THREADSAFE} @@ -13411,7 +13411,7 @@ try {$ENDIF THREADSAFE} if Valid then - Result := (FCursor <> nil) and (FCursor.Next <> nil) + Result := (FCursor <> nil) and (FCursor.Previous <> nil) else Result := FCursor <> nil; {$IFDEF THREADSAFE} @@ -14542,7 +14542,7 @@ try {$ENDIF THREADSAFE} if Valid then - Result := (FCursor <> nil) and (FCursor.Next <> nil) + Result := (FCursor <> nil) and (FCursor.Previous <> nil) else Result := FCursor <> nil; {$IFDEF THREADSAFE} @@ -15668,7 +15668,7 @@ try {$ENDIF THREADSAFE} if Valid then - Result := (FCursor <> nil) and (FCursor.Next <> nil) + Result := (FCursor <> nil) and (FCursor.Previous <> nil) else Result := FCursor <> nil; {$IFDEF THREADSAFE} Modified: trunk/jcl/source/prototypes/containers/JclLinkedLists.imp =================================================================== --- trunk/jcl/source/prototypes/containers/JclLinkedLists.imp 2009-03-03 00:33:15 UTC (rev 2669) +++ trunk/jcl/source/prototypes/containers/JclLinkedLists.imp 2009-03-03 19:39:47 UTC (rev 2670) @@ -77,7 +77,7 @@ begin {$JPPEXPANDMACRO DELEGATEREADBEGIN(FOwnList)} if Valid then - Result := (FCursor <> nil) and (FCursor.Next <> nil) + Result := (FCursor <> nil) and (FCursor.Previous <> nil) else Result := FCursor <> nil; {$JPPEXPANDMACRO DELEGATEREADEND(FOwnList)} Modified: trunk/qa/automated/dunit/units/TestJclContainer.pas =================================================================== --- trunk/qa/automated/dunit/units/TestJclContainer.pas 2009-03-03 00:33:15 UTC (rev 2669) +++ trunk/qa/automated/dunit/units/TestJclContainer.pas 2009-03-03 19:39:47 UTC (rev 2670) @@ -22,8 +22,7 @@ uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, - Dialogs, JclContainerIntf, JclLinkedLists, JclVectors, JclArrayLists, JclAlgorithms, TestFramework, GUITestRunner, - JvDebugHandler; + Dialogs, JclContainerIntf, JclLinkedLists, JclVectors, JclArrayLists, JclAlgorithms, TestFramework, GUITestRunner; type TJclStrListImplType = (litArray, litLinkedList, litVector); @@ -40,6 +39,7 @@ procedure IJclStrList_InsertAll_with_ArrayList; procedure IJclStrList_InsertAll_with_VectorList; end; + implementation //================================================================================================== @@ -80,11 +80,6 @@ end; procedure TJclContainerTest.IJclStrList_AppendDelim_with_LinkedList; -var - I: IJclStrList; - sl: TStringList; - x: integer; - s: string; begin DoDelimTest(GetStrList); end; @@ -101,9 +96,7 @@ procedure TJclContainerTest.InsertAll(x, y, SavedX: IJclStrList); var i: byte; - cc, v, c: cardinal; - s: string; - it: IJclStrIterator; + c: cardinal; const StartChar = 'A'; EndChar = 'Z'; @@ -121,11 +114,15 @@ for c := 0 to Pred(count div 50) do begin - CheckEquals(Count * (ord(EndChar) - ord(StartChar) + 1), x.size); - CheckEquals(Count * (ord(EndChar) - ord(StartChar) + 1), y.size); - x.InsertAll(c, y); + CheckEquals(Count * (ord(EndChar) - ord(StartChar) + 1), x.size, 'x.size[' + IntToStr(c) + ']'); + CheckEquals(Count * (ord(EndChar) - ord(StartChar) + 1), y.size, 'y.size[' + IntToStr(c) + ']'); + CheckEquals(True, x.InsertAll(c, y), 'x.InsertAll(' + IntToStr(c) + ', y)'); for i := ord(StartChar) to ord(EndChar) do - CheckEquals(Count * 2, CountObject(x.First, x.Size, chr(i), StrSimpleCompare)); + CheckEquals( + Count * 2, + CountObject(x.First, x.Size, chr(i), StrSimpleCompare), + 'Count char #' + IntToStr(i) + ', c=' + IntToStr(c) + ); x.Clear; x.AddAll(SavedX); end; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <jg...@us...> - 2009-03-03 00:33:17
|
Revision: 2669 http://jcl.svn.sourceforge.net/jcl/?rev=2669&view=rev Author: jgsoft Date: 2009-03-03 00:33:15 +0000 (Tue, 03 Mar 2009) Log Message: ----------- Removed FArchiveReference from compression demo because copy-and-paste programmers don't realize what really happens in CloseArchive Modified Paths: -------------- trunk/jcl/examples/windows/compression/archive/UMain.pas Modified: trunk/jcl/examples/windows/compression/archive/UMain.pas =================================================================== --- trunk/jcl/examples/windows/compression/archive/UMain.pas 2009-03-02 22:24:18 UTC (rev 2668) +++ trunk/jcl/examples/windows/compression/archive/UMain.pas 2009-03-03 00:33:15 UTC (rev 2669) @@ -75,7 +75,6 @@ procedure ActionPropertiesExecute(Sender: TObject); private FArchive: TJclCompressionArchive; - FArchiveReference: IUnknown; procedure CloseArchive; procedure ArchiveProgress(Sender: TObject; const Value, MaxValue: Int64); public @@ -244,7 +243,6 @@ ArchiveFileName := ArchiveFileName + '.%.3d'; FArchive := AFormat.Create(ArchiveFileName, VolumeSize, VolumeSize <> 0); - FArchiveReference := FArchive; FArchive.Password := Password; FArchive.OnProgress := ArchiveProgress; end @@ -287,7 +285,6 @@ ArchiveFileName := ArchiveFileName + '.%.3d'; FArchive := AFormat.Create(ArchiveFileName, VolumeSize, VolumeSize <> 0); - FArchiveReference := FArchive; FArchive.Password := Password; FArchive.OnProgress := ArchiveProgress; end @@ -321,7 +318,6 @@ InputQuery('Archive password', 'Value', Password); FArchive := AFormat.Create(ArchiveFileName, 0, SplitArchive); - FArchiveReference := FArchive; FArchive.Password := Password; FArchive.OnProgress := ArchiveProgress; @@ -369,7 +365,6 @@ InputQuery('Archive password', 'Value', Password); FArchive := AFormat.Create(ArchiveFileName, 0, SplitArchive); - FArchiveReference := FArchive; FArchive.Password := Password; FArchive.OnProgress := ArchiveProgress; @@ -431,8 +426,7 @@ procedure TFormMain.CloseArchive; begin - FArchiveReference := nil; // free - FArchive := nil; + FreeAndNil(FArchive); ListView1.Items.Clear; end; @@ -569,4 +563,4 @@ if not Load7Zip then raise EJclCompressionError.Create('Cannot load sevenzip library'); -end. +end. \ No newline at end of file This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ou...@us...> - 2009-03-02 22:24:29
|
Revision: 2668 http://jcl.svn.sourceforge.net/jcl/?rev=2668&view=rev Author: outchy Date: 2009-03-02 22:24:18 +0000 (Mon, 02 Mar 2009) Log Message: ----------- Report from Hans-Arno Mielsch in newsgroups: TJclSimpleXMLElem.SaveToString returns an empty string. Modified Paths: -------------- trunk/jcl/source/common/JclSimpleXml.pas Modified: trunk/jcl/source/common/JclSimpleXml.pas =================================================================== --- trunk/jcl/source/common/JclSimpleXml.pas 2009-03-02 22:02:05 UTC (rev 2667) +++ trunk/jcl/source/common/JclSimpleXml.pas 2009-03-02 22:24:18 UTC (rev 2668) @@ -1524,10 +1524,11 @@ Stream := TJclAutoStream.Create(StrStream); try SaveToStringStream(Stream); - Result := StrStream.DataString; + Stream.Flush; finally Stream.Free; end; + Result := StrStream.DataString; finally StrStream.Free; end; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ou...@us...> - 2009-03-02 22:02:22
|
Revision: 2667 http://jcl.svn.sourceforge.net/jcl/?rev=2667&view=rev Author: outchy Date: 2009-03-02 22:02:05 +0000 (Mon, 02 Mar 2009) Log Message: ----------- JPP is now Unicode-enabled. Modified Paths: -------------- trunk/jcl/devtools/jpp.exe trunk/jpp/JppLexer.pas trunk/jpp/JppParser.pas trunk/jpp/JppState.pas trunk/jpp/PCharUtils.pas trunk/jpp/jpp.dpr Modified: trunk/jcl/devtools/jpp.exe =================================================================== (Binary files differ) Modified: trunk/jpp/JppLexer.pas =================================================================== --- trunk/jpp/JppLexer.pas 2009-03-02 21:58:52 UTC (rev 2666) +++ trunk/jpp/JppLexer.pas 2009-03-02 22:02:05 UTC (rev 2667) @@ -51,7 +51,9 @@ interface uses - SysUtils, Classes, JclStrHashMap, PCharUtils; + SysUtils, Classes, + JclStrHashMap, JclStrings, JclStreams, + PCharUtils; type TJppToken = (ptEof, ptComment, ptText, ptEol, @@ -70,7 +72,7 @@ FTokenAsString: string; FRawComment: string; public - constructor Create(AStream: TStream); + constructor Create(AStream: TJclStringStream); destructor Destroy; override; procedure Error(const AMsg: string); @@ -90,7 +92,7 @@ { TJppLexer } -constructor TJppLexer.Create(AStream: TStream); +constructor TJppLexer.Create(AStream: TJclStringStream); procedure AddToken(const AIdent: string; AValue: TJppToken); var @@ -116,8 +118,7 @@ AddToken('jppexpandmacro', ptJppExpandMacro); AddToken('jppundefmacro', ptJppUndefMacro); - SetLength(FBuf, AStream.Size); - AStream.ReadBuffer(Pointer(FBuf)^, Length(FBuf)); + FBuf := AStream.ReadString; Reset; end; @@ -145,9 +146,9 @@ begin Inc(cp); start := cp; - while not (cp^ in [#0, #10, #13, '"']) do + while (cp^ <> #0) and (cp^ <> #10) and (cp^ <> #13) and (cp^ <> '"') do Inc(cp); - if cp^ in [#0, #10, #13] then + if (cp^ = #0) or (cp^ = #10) or (cp^ = #13) then Error('Unterminated string'); SetString(ident, start, cp - start); Result := cp + 1; @@ -155,7 +156,7 @@ else begin start := cp; - while not (cp^ in [#0..#32, '*', '}']) do + while (not CharIsSpace(cp^)) and (cp^ <> '*') and (cp^ <> '}') do Inc(cp); if cp^ = #0 then Error('Unterminated string'); @@ -174,7 +175,7 @@ start := APos; { read identifier } - while APos^ in ['a'..'z', 'A'..'Z', '_'] do + while CharIsValidIdentifierLetter(APos^) do Inc(APos); SetString(ident, start, APos - start); Modified: trunk/jpp/JppParser.pas =================================================================== --- trunk/jpp/JppParser.pas 2009-03-02 21:58:52 UTC (rev 2666) +++ trunk/jpp/JppParser.pas 2009-03-02 22:02:05 UTC (rev 2667) @@ -47,7 +47,9 @@ interface uses - SysUtils, Classes, JppState, JppLexer; + SysUtils, Classes, + JclStreams, + JppState, JppLexer; type EPppParserError = class(Exception); @@ -88,7 +90,7 @@ property Lexer: TJppLexer read FLexer; property State: TSimplePppState read FState; public - constructor Create(AStream: TStream; APppState: TSimplePppState); + constructor Create(AStream: TJclStringStream; APppState: TSimplePppState); destructor Destroy; override; function Parse: string; end; @@ -96,7 +98,7 @@ implementation uses - JclBase, JclAnsiStrings; + JclBase, JclStrings; {$IFDEF MSWINDOWS} const @@ -121,10 +123,10 @@ begin Result := True; for I := 1 to Length(P) do - if P^ in [#9, #10, #13, ' '] then - Inc(P) + case P^ of + #9, #10, #13, ' ': + Inc(P); else - begin Result := False; Break; end; @@ -138,12 +140,12 @@ ParenthesisCount: Integer; begin I := 1; - while (I <= Length(MacroText)) and not (MacroText[I] in [#1..#32]) do + while (I <= Length(MacroText)) and not CharIsSpace(MacroText[I]) do Inc(I); - while (I <= Length(MacroText)) and (MacroText[I] in [#1..#32]) do + while (I <= Length(MacroText)) and CharIsSpace(MacroText[I]) do Inc(I); J := I; - while (J <= Length(MacroText)) and (MacroText[J] in ['a'..'z', 'A'..'Z', '0'..'9', '_']) do + while (J <= Length(MacroText)) and CharIsValidIdentifierLetter(MacroText[J]) do Inc(J); MacroName := Copy(MacroText, I, J - I); @@ -156,14 +158,14 @@ if ParamDeclaration then begin repeat - while (J <= Length(MacroText)) and (MacroText[J] in [#1..#32]) do + while (J <= Length(MacroText)) and CharIsSpace(MacroText[J]) do Inc(J); I := J; - while (I <= Length(MacroText)) and (MacroText[I] in ['a'..'z', 'A'..'Z', '0'..'9', '_']) do + while (I <= Length(MacroText)) and CharIsValidIdentifierLetter(MacroText[I]) do Inc(I); SetLength(ParamNames, Length(ParamNames) + 1); ParamNames[High(ParamNames)] := Copy(MacroText, J, I - J); - while (I <= Length(MacroText)) and (MacroText[I] in [#1..#32]) do + while (I <= Length(MacroText)) and CharIsSpace(MacroText[I]) do Inc(I); if (I <= Length(MacroText)) then case MacroText[I] of @@ -186,7 +188,7 @@ while I <= Length(MacroText) do begin case MacroText[I] of - AnsiSingleQuote: + NativeSingleQuote: Comment := not Comment; '(': if not Comment then @@ -198,10 +200,10 @@ if not Comment then Dec(ParenthesisCount); end; - AnsiBackslash: - if (not Comment) and (ParenthesisCount = 0) and (I < Length(MacroText)) and (MacroText[i + 1] = AnsiComma) then + NativeBackslash: + if (not Comment) and (ParenthesisCount = 0) and (I < Length(MacroText)) and (MacroText[i + 1] = NativeComma) then Inc(I); - AnsiComma: + NativeComma: if (not Comment) and (ParenthesisCount = 0) then Break; end; @@ -225,7 +227,7 @@ end else begin - while (J <= Length(MacroText)) and (MacroText[J] in [#1..#32]) do + while (J <= Length(MacroText)) and CharIsSpace(MacroText[J]) do Inc(J); end; end; @@ -234,7 +236,7 @@ { TJppParser } -constructor TJppParser.Create(AStream: TStream; APppState: TSimplePppState); +constructor TJppParser.Create(AStream: TJclStringStream; APppState: TSimplePppState); begin Assert(AStream <> nil); Assert(APppState <> nil); @@ -254,6 +256,7 @@ procedure TJppParser.AddResult(const S: string); var TempMemoryStream: TMemoryStream; + TempStringStream: TJclAutoStream; TempParser: TJppParser; AResult: string; begin @@ -264,13 +267,18 @@ begin TempMemoryStream := TMemoryStream.Create; try - TempMemoryStream.WriteBuffer(S[1], Length(S)); - TempMemoryStream.Seek(0, soBeginning); - TempParser := TJppParser.Create(TempMemoryStream, State); + TempStringStream := TJclAutoStream.Create(TempMemoryStream); try - AResult := TempParser.Parse; + TempStringStream.WriteString(S, 1, Length(S)); + TempStringStream.Seek(0, soBeginning); + TempParser := TJppParser.Create(TempStringStream, State); + try + AResult := TempParser.Parse; + finally + TempParser.Free; + end; finally - TempParser.Free; + TempStringStream.Free; end; finally TempMemoryStream.Free; @@ -281,7 +289,7 @@ while FResultLen + Length(AResult) > Length(FResult) do SetLength(FResult, Length(FResult) * 2); - Move(AResult[1], FResult[FResultLen + 1], Length(AResult)); + Move(AResult[1], FResult[FResultLen + 1], Length(AResult) * SizeOf(Char)); if FAllWhiteSpaceOut then FAllWhiteSpaceOut := AllWhiteSpace(@FResult[FLineBreakPos]); Inc(FResultLen, Length(AResult)); @@ -438,8 +446,8 @@ I := ParseMacro(MacroText, MacroName, ParamNames, True); if I <= Length(MacroText) then begin - if Copy(MacroText, I, Length(AnsiLineBreak)) = AnsiLineBreak then - Inc(I, Length(AnsiLineBreak)); + if Copy(MacroText, I, Length(NativeLineBreak)) = NativeLineBreak then + Inc(I, Length(NativeLineBreak)); J := Length(MacroText); if MacroText[J] = ')' then Dec(J); @@ -488,16 +496,19 @@ var oldLexer, newLexer: TJppLexer; fsIn: TStream; + ssIn: TJclAutoStream; begin Result := ''; Assert(Lexer.TokenAsString <> ''); { we must prevent case of $I- & $I+ becoming file names } - if (Lexer.TokenAsString[1] in ['-', '+']) - or IsExcludedInclude(Lexer.TokenAsString) then + if (Lexer.TokenAsString[1] = '-') + or (Lexer.TokenAsString[1] = '+') + or IsExcludedInclude(Lexer.TokenAsString) then Result := Lexer.RawComment else begin fsIn := nil; + ssIn := nil; newLexer := nil; oldLexer := Lexer; @@ -508,11 +519,13 @@ on e: Exception do Lexer.Error(e.Message); end; - newLexer := TJppLexer.Create(fsIn); + ssIn := TJclAutoStream.Create(fsIn); + newLexer := TJppLexer.Create(ssIn); FLexer := newLexer; ParseText; finally FLexer := oldLexer; + ssIn.Free; fsIn.Free; newLexer.Free; end; Modified: trunk/jpp/JppState.pas =================================================================== --- trunk/jpp/JppState.pas 2009-03-02 21:58:52 UTC (rev 2666) +++ trunk/jpp/JppState.pas 2009-03-02 22:02:05 UTC (rev 2667) @@ -45,6 +45,8 @@ interface +{$I jcl.inc} + uses SysUtils, Classes, JclBase, JclContainerIntf; @@ -138,7 +140,7 @@ implementation uses - JclAnsiStrings, JclArrayLists, JclHashMaps, JclStacks; + JclStrings, JclArrayLists, JclHashMaps, JclStacks; type TSimplePppStateItem = class @@ -188,13 +190,18 @@ AMacroNames := AMacros.KeySet.First; while AMacroNames.HasNext do begin - if JclAnsiStrings.StrSame(AMacroNames.Next, AMacroName) then + if JclStrings.StrSame(AMacroNames.Next, AMacroName) then begin SetLength(Params, Length(ParamValues)); for Index := Low(ParamValues) to High(ParamValues) do begin + {$IFDEF SUPPORTS_UNICODE} + Params[Index].VType := vtPWideChar; + Params[Index].VPWideChar := PWideChar(ParamValues[Index]); + {$ELSE ~SUPPORTS_UNICODE} Params[Index].VType := vtPChar; Params[Index].VPChar := PAnsiChar(ParamValues[Index]); + {$ENDIF ~SUPPORTS_UNICODE} end; Result := Format(AMacros.Items[AMacroNames.GetString], Params); Exit; @@ -220,7 +227,7 @@ AMacroName := Format('%s`%d', [AName, Length(ParamNames)]); AMacroNames := AMacros.KeySet.First; while AMacroNames.HasNext do - if JclAnsiStrings.StrSame(AMacroNames.Next, AMacroName) then + if JclStrings.StrSame(AMacroNames.Next, AMacroName) then raise EPppState.CreateFmt('macro "%s" is already defined', [AName]); AMacroFormat := Value; for Index := Low(ParamNames) to High(ParamNames) do @@ -268,7 +275,7 @@ ASymbolNames := ADefines.KeySet.First; while ASymbolNames.HasNext do begin - if JclAnsiStrings.StrSame(ASymbolNames.Next, ASymbol) then + if JclStrings.StrSame(ASymbolNames.Next, ASymbol) then begin Result := TTriState(ADefines.Items[ASymbolNames.GetString]); Break; @@ -332,7 +339,7 @@ Result := False; while AFileNames.HasNext do begin - if JclAnsiStrings.StrSame(AFileNames.Next, AName) then + if JclStrings.StrSame(AFileNames.Next, AName) then begin Result := True; Break; @@ -378,7 +385,7 @@ ASymbolNames := ADefines.KeySet.First; while ASymbolNames.HasNext do begin - if JclAnsiStrings.StrSame(ASymbolNames.Next, ASymbol) then + if JclStrings.StrSame(ASymbolNames.Next, ASymbol) then begin ADefines.Items[ASymbolNames.GetString] := TObject(Value); Found := True; @@ -404,7 +411,7 @@ AMacroName := Format('%s`%d', [AName, Length(ParamNames)]); AMacroNames := AMacros.KeySet.First; while AMacroNames.HasNext do - if JclAnsiStrings.StrSame(AMacroNames.Next, AMacroName) then + if JclStrings.StrSame(AMacroNames.Next, AMacroName) then AMacros.Remove(AMacroNames.GetString); end; Modified: trunk/jpp/PCharUtils.pas =================================================================== --- trunk/jpp/PCharUtils.pas 2009-03-02 21:58:52 UTC (rev 2666) +++ trunk/jpp/PCharUtils.pas 2009-03-02 22:02:05 UTC (rev 2667) @@ -38,7 +38,9 @@ interface -uses SysUtils; +uses + SysUtils, + JclStrings; function SkipWhite(cp: PChar): PChar; function ReadStringDoubleQuotedMaybe(cp: PChar; var AStr: string): PChar; @@ -49,7 +51,7 @@ function SkipWhite(cp: PChar): PChar; begin - while cp^ in [#1..#32] do + while CharIsSpace(cp^) do Inc(cp); Result := cp; end; @@ -60,7 +62,7 @@ Result := cp; if Result^ = '"' then begin - while not (Result^ in [#0, '"']) do + while (Result^ <> #0) and (Result^ <> '"') do Inc(Result); if Result^ = #0 then raise Exception.Create('Unterminated string'); @@ -69,7 +71,7 @@ end else begin - while not (Result^ in [#0..#32]) do + while (Result^ <> #0) and not CharIsSpace(Result^) do Inc(Result); SetString(AStr, cp, Result - cp); end; @@ -81,7 +83,7 @@ Result := cp; if Result^ = '"' then begin - while not (Result^ in [#0, '"']) do + while (Result^ <> #0) and (Result^ <> '"') do Inc(Result); if Result^ = #0 then raise Exception.Create('Unterminated string'); @@ -90,7 +92,7 @@ end else begin - while not (Result^ in [#0..#32]) do + while (Result^ <> #0) and not CharIsSpace(Result^) do Inc(Result); SetString(AStr, cp, Result - cp); end; @@ -101,7 +103,7 @@ start: PChar; begin start := cp; - while cp^ in ['a'..'z', 'A'..'Z', '0'..'9', '_'] do + while CharIsValidIdentifierLetter(cp^) do Inc(cp); SetString(ident, start, cp - start); Result := cp; Modified: trunk/jpp/jpp.dpr =================================================================== --- trunk/jpp/jpp.dpr 2009-03-02 21:58:52 UTC (rev 2666) +++ trunk/jpp/jpp.dpr 2009-03-02 22:02:05 UTC (rev 2667) @@ -57,6 +57,7 @@ Classes, TypInfo, JclFileUtils, + JclStreams, JclSysUtils, JppState in 'JppState.pas', JppParser in 'JppParser.pas', @@ -107,22 +108,40 @@ var parse: TJppParser; fsIn, fsOut: TStream; + ssIn: TJclAutoStream; + ssOut: TJclStringStream; answer: string; begin fsOut := nil; parse := nil; fsIn := nil; + ssIn := nil; + ssOut := nil; AState.PushState; try fsIn := TFileStream.Create(AOld, fmOpenRead); - parse := TJppParser.Create(fsIn, AState); + ssIn := TJclAutoStream.Create(fsIn); + parse := TJppParser.Create(ssIn, AState); answer := Format('%s'#13#10'%s', [SWarningJppGenerated, parse.Parse]); fsOut := TFileStream.Create(ANew, fmCreate); - fsOut.WriteBuffer(Pointer(answer)^, Length(answer)); + case ssIn.Encoding of + seAnsi: + ssOut := TJclAnsiStream.Create(fsOut); + seUTF8: + ssOut := TJclUTF8Stream.Create(fsOut); + seUTF16: + ssOut := TJclUTF16Stream.Create(fsOut); + else + WriteLn('Unknown encoding for file ' + AOld); + Abort; + end; + ssOut.WriteString(answer, 1, Length(answer)); finally AState.PopState; + ssOut.Free; fsOut.Free; parse.Free; + ssIn.Free; fsIn.Free; end; end; @@ -180,16 +199,19 @@ begin case cp^ of '+': - pppState.Options := pppState.Options + [AOpt]; + begin + pppState.Options := pppState.Options + [AOpt]; + Result := cp + 1; + end; '-': - pppState.Options := pppState.Options - [AOpt]; + begin + pppState.Options := pppState.Options - [AOpt]; + Result := cp + 1; + end; else pppState.Options := pppState.Options + [AOpt]; + Result := cp; end; - if cp^ in ['+', '-'] then - Result := cp + 1 - else - Result := cp; end; var @@ -281,7 +303,7 @@ NewName, tmp: string; iter: IFindFileIterator; begin - while not (cp^ in ['-', #0]) do + while (cp^ <> '-') and (cp^ <> #0) do begin cp := SkipWhite(ReadStringDoubleQuotedMaybe(cp, tmp)); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |