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-06-17 19:05:17
|
Revision: 2817 http://jcl.svn.sourceforge.net/jcl/?rev=2817&view=rev Author: outchy Date: 2009-06-17 19:04:10 +0000 (Wed, 17 Jun 2009) Log Message: ----------- Mantis 4820: TStringBuilder declaration in JclStrings can conflict with SysUtils Modified Paths: -------------- trunk/jcl/source/common/JclStrings.pas Modified: trunk/jcl/source/common/JclStrings.pas =================================================================== --- trunk/jcl/source/common/JclStrings.pas 2009-06-16 21:12:24 UTC (rev 2816) +++ trunk/jcl/source/common/JclStrings.pas 2009-06-17 19:04:10 UTC (rev 2817) @@ -505,7 +505,11 @@ property MaxCapacity: Integer read FMaxCapacity; end; + {$IFDEF RTL200_UP} + TStringBuilder = SysUtils.TStringBuilder; + {$ELSE ~RTL200_UP} TStringBuilder = TJclStringBuilder; + {$ENDIF ~RTL200_UP} // DotNetFormat() uses the .NET format style: "{argX}" function DotNetFormat(const Fmt: string; const Args: array of const): string; overload; @@ -5855,13 +5859,13 @@ function TJclTabSet.Expand(const S: string; Column: Integer): string; var - sb: TStringBuilder; + sb: TJclStringBuilder; head: PChar; cur: PChar; begin if Column < StartColumn then raise ArgumentOutOfRangeException.Create('Column'); - sb := TStringBuilder.Create(Length(S)); + sb := TJclStringBuilder.Create(Length(S)); try cur := PChar(S); while cur^ <> #0 do @@ -6087,7 +6091,7 @@ function TJclTabSet.Optimize(const S: string; Column: Integer): string; var - sb: TStringBuilder; + sb: TJclStringBuilder; head: PChar; cur: PChar; tgt: Integer; @@ -6110,7 +6114,7 @@ begin if Column < StartColumn then raise ArgumentOutOfRangeException.Create('Column'); - sb := TStringBuilder.Create(Length(S)); + sb := TJclStringBuilder.Create(Length(S)); try cur := PChar(s); while cur^ <> #0 do @@ -6275,7 +6279,7 @@ function TJclTabSet.ToString(FormattingOptions: Integer): string; var - sb: TStringBuilder; + sb: TJclStringBuilder; idx: Integer; function WantBrackets: Boolean; @@ -6304,7 +6308,7 @@ end; begin - sb := TStringBuilder.Create; + sb := TJclStringBuilder.Create; try // output the fixed tabulation positions if requested... if IncludeStops then This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ou...@us...> - 2009-06-16 21:12:26
|
Revision: 2816 http://jcl.svn.sourceforge.net/jcl/?rev=2816&view=rev Author: outchy Date: 2009-06-16 21:12:24 +0000 (Tue, 16 Jun 2009) Log Message: ----------- Mantis 4819: SimpleXMLEncode does not work with non-occidental ACP. Modified Paths: -------------- trunk/jcl/source/common/JclSimpleXml.pas Modified: trunk/jcl/source/common/JclSimpleXml.pas =================================================================== --- trunk/jcl/source/common/JclSimpleXml.pas 2009-06-13 19:16:10 UTC (rev 2815) +++ trunk/jcl/source/common/JclSimpleXml.pas 2009-06-16 21:12:24 UTC (rev 2816) @@ -876,8 +876,12 @@ AddEntity(Tmp, RIndex, RLen, '<'); '>': AddEntity(Tmp, RIndex, RLen, '>'); - #128..High(Char): + Char(128)..Char(255): AddEntity(Tmp, RIndex, RLen, Format('&#x%.2x;', [Ord(C)])); + {$IFDEF SUPPORTS_UNICODE} + Char(256)..High(Char): + AddEntity(Tmp, RIndex, RLen, Format('&#x%.4x;', [Ord(C)])); + {$ENDIF SUPPORTS_UNICODE} else if RIndex > RLen then begin This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ou...@us...> - 2009-06-13 19:16:12
|
Revision: 2815 http://jcl.svn.sourceforge.net/jcl/?rev=2815&view=rev Author: outchy Date: 2009-06-13 19:16:10 +0000 (Sat, 13 Jun 2009) Log Message: ----------- style cleaning of revision 2814. Revision Links: -------------- http://jcl.svn.sourceforge.net/jcl/?rev=2814&view=rev Modified Paths: -------------- trunk/jcl/source/common/JclFileUtils.pas Modified: trunk/jcl/source/common/JclFileUtils.pas =================================================================== --- trunk/jcl/source/common/JclFileUtils.pas 2009-06-13 18:26:43 UTC (rev 2814) +++ trunk/jcl/source/common/JclFileUtils.pas 2009-06-13 19:16:10 UTC (rev 2815) @@ -675,8 +675,12 @@ public constructor Attach(VersionInfoData: Pointer; Size: Integer); constructor Create(const FileName: string); overload; - constructor Create(const Window: hwnd); overload; + {$IFNDEF CLR} + {$IFDEF MSWINDOWS} + constructor Create(const Window: HWND); overload; constructor Create(const Module: HMODULE); overload; + {$ENDIF MSWINDOWS} + {$ENDIF ~CLR} destructor Destroy; override; class function VersionLanguageId(const LangIdRec: TLangIdRec): string; class function VersionLanguageName(const LangId: Word): string; @@ -5356,68 +5360,75 @@ ExtractData; end; -constructor TJclFileVersionInfo.Create(const Window: hwnd); +{$IFNDEF CLR} +{$IFDEF MSWINDOWS} +constructor TJclFileVersionInfo.Create(const Window: HWND); type -{$IFDEF VER200} -TGetModuleFileNameEx =function(hProcess: THandle; hModule: HMODULE; FileName: PWideChar; nSize: DWORD): DWORD; stdcall; -{$ELSE} -TGetModuleFileNameEx =function(hProcess: THandle; hModule: HMODULE; FileName: PAnsiChar; nSize: DWORD): DWORD; stdcall; -{$ENDIF} + {$IFDEF SUPPORTS_UNICODE} + TGetModuleFileNameEx =function(hProcess: THandle; hModule: HMODULE; FileName: PWideChar; nSize: DWORD): DWORD; stdcall; + {$ELSE ~SUPPORTS_UNICODE} + TGetModuleFileNameEx =function(hProcess: THandle; hModule: HMODULE; FileName: PAnsiChar; nSize: DWORD): DWORD; stdcall; + {$ENDIF ~SUPPORTS_UNICODE} var -filename: array[0..300] of Char; -DllHinst: HMODULE; -ProcessID: DWORD; -HProcess: THandle; + FileName: array[0..300] of Char; + DllHinst: HMODULE; + ProcessID: DWORD; + HProcess: THandle; const -GetModuleFileNameExAddress: TGetModuleFileNameEx =nil; + GetModuleFileNameExAddress: TGetModuleFileNameEx = nil; begin -if Window <>0 then -begin -Windows.GetWindowThreadProcessId(Window, ProcessID); -hProcess :=Windows.OpenProcess(PROCESS_QUERY_INFORMATION or PROCESS_VM_READ, false, ProcessID); -if hProcess <> 0 then -begin -if GetWindowsVersion() <WVWin2000 then -raise EJclWin32Error.CreateRes(@RsEWindowsVersionNotSupported) -else -begin -DllHinst :=LoadLibrary('Psapi.dll'); -if DllHinst < HINSTANCE_ERROR then -begin -{$IFDEF VER200} -GetModuleFileNameExAddress :=GetProcAddress(DllHinst, 'GetModuleFileNameExW'); -{$ELSE} -GetModuleFileNameExAddress :=GetProcAddress(DllHinst, 'GetModuleFileNameExA'); -{$ENDIF} -if Assigned(GetModuleFileNameExAddress) then -begin -GetModuleFileNameExAddress(hProcess, 0, FileName, sizeof(FileName)); -Create(FileName); -end -else -begin -FreeLibrary(DllHinst); -raise EJclError.CreateResFmt(@RsEFunctionNotFound, ['Psapi.dll', 'GetModuleFileNameEx']); -end -end -else -raise EJclError.CreateResFmt(@RsELibraryNotFound, ['Psapi.dll']); + if Window <>0 then + begin + Windows.GetWindowThreadProcessId(Window, ProcessID); + hProcess := Windows.OpenProcess(PROCESS_QUERY_INFORMATION or PROCESS_VM_READ, false, ProcessID); + if hProcess <> 0 then + begin + if GetWindowsVersion() < WVWin2000 then + raise EJclWin32Error.CreateRes(@RsEWindowsVersionNotSupported) + else + begin + DllHinst := LoadLibrary('Psapi.dll'); + if DllHinst < HINSTANCE_ERROR then + begin + try + {$IFDEF SUPPORTS_UNICODE} + GetModuleFileNameExAddress := GetProcAddress(DllHinst, 'GetModuleFileNameExW'); + {$ELSE ~SUPPORTS_UNICODE} + GetModuleFileNameExAddress := GetProcAddress(DllHinst, 'GetModuleFileNameExA'); + {$ENDIF ~SUPPORTS_UNICODE} + if Assigned(GetModuleFileNameExAddress) then + begin + GetModuleFileNameExAddress(hProcess, 0, FileName, sizeof(FileName)); + Create(FileName); + end + else + begin + raise EJclError.CreateResFmt(@RsEFunctionNotFound, ['Psapi.dll', 'GetModuleFileNameEx']); + end + finally + FreeLibrary(DllHinst); + end; + end + else + raise EJclError.CreateResFmt(@RsELibraryNotFound, ['Psapi.dll']); + end; + end + else + raise EJclError.CreateResFmt(@RsEProcessNotValid, [ProcessID]); + end + else + raise EJclError.CreateResFmt(@RsEWindowNotValid, [Window]); end; -end -else -raise EJclError.CreateResFmt(@RsEProcessNotValid, [ProcessID]); -end -else -raise EJclError.CreateResFmt(@RsEWindowNotValid, [Window]); -end; - constructor TJclFileVersionInfo.Create(const Module: HMODULE); +constructor TJclFileVersionInfo.Create(const Module: HMODULE); begin -if Module <> 0 then -Create(GetModulePath(Module)) -else -raise EJclError.CreateResFmt(@RsEModuleNotValid, [Module]); + if Module <> 0 then + Create(GetModulePath(Module)) + else + raise EJclError.CreateResFmt(@RsEModuleNotValid, [Module]); end; +{$ENDIF MSWINDOWS} +{$ENDIF ~CLR} destructor TJclFileVersionInfo.Destroy; begin This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <sf...@us...> - 2009-06-13 18:27:04
|
Revision: 2814 http://jcl.svn.sourceforge.net/jcl/?rev=2814&view=rev Author: sfarrow Date: 2009-06-13 18:26:43 +0000 (Sat, 13 Jun 2009) Log Message: ----------- Modified the TJclFileVersionInfo component to allow version information to be obtained from a window handle and also from a loaded dll/ocx etc. Modified Paths: -------------- trunk/jcl/source/common/JclFileUtils.pas trunk/jcl/source/common/JclResources.pas Modified: trunk/jcl/source/common/JclFileUtils.pas =================================================================== --- trunk/jcl/source/common/JclFileUtils.pas 2009-06-13 16:33:46 UTC (rev 2813) +++ trunk/jcl/source/common/JclFileUtils.pas 2009-06-13 18:26:43 UTC (rev 2814) @@ -674,7 +674,9 @@ function GetVersionKeyValue(Index: Integer): string; public constructor Attach(VersionInfoData: Pointer; Size: Integer); - constructor Create(const FileName: string); + constructor Create(const FileName: string); overload; + constructor Create(const Window: hwnd); overload; + constructor Create(const Module: HMODULE); overload; destructor Destroy; override; class function VersionLanguageId(const LangIdRec: TLangIdRec): string; class function VersionLanguageName(const LangId: Word): string; @@ -5354,6 +5356,69 @@ ExtractData; end; +constructor TJclFileVersionInfo.Create(const Window: hwnd); +type +{$IFDEF VER200} +TGetModuleFileNameEx =function(hProcess: THandle; hModule: HMODULE; FileName: PWideChar; nSize: DWORD): DWORD; stdcall; +{$ELSE} +TGetModuleFileNameEx =function(hProcess: THandle; hModule: HMODULE; FileName: PAnsiChar; nSize: DWORD): DWORD; stdcall; +{$ENDIF} +var +filename: array[0..300] of Char; +DllHinst: HMODULE; +ProcessID: DWORD; +HProcess: THandle; +const +GetModuleFileNameExAddress: TGetModuleFileNameEx =nil; +begin +if Window <>0 then +begin +Windows.GetWindowThreadProcessId(Window, ProcessID); +hProcess :=Windows.OpenProcess(PROCESS_QUERY_INFORMATION or PROCESS_VM_READ, false, ProcessID); +if hProcess <> 0 then +begin +if GetWindowsVersion() <WVWin2000 then +raise EJclWin32Error.CreateRes(@RsEWindowsVersionNotSupported) +else +begin +DllHinst :=LoadLibrary('Psapi.dll'); +if DllHinst < HINSTANCE_ERROR then +begin +{$IFDEF VER200} +GetModuleFileNameExAddress :=GetProcAddress(DllHinst, 'GetModuleFileNameExW'); +{$ELSE} +GetModuleFileNameExAddress :=GetProcAddress(DllHinst, 'GetModuleFileNameExA'); +{$ENDIF} +if Assigned(GetModuleFileNameExAddress) then +begin +GetModuleFileNameExAddress(hProcess, 0, FileName, sizeof(FileName)); +Create(FileName); +end +else +begin +FreeLibrary(DllHinst); +raise EJclError.CreateResFmt(@RsEFunctionNotFound, ['Psapi.dll', 'GetModuleFileNameEx']); +end +end +else +raise EJclError.CreateResFmt(@RsELibraryNotFound, ['Psapi.dll']); +end; +end +else +raise EJclError.CreateResFmt(@RsEProcessNotValid, [ProcessID]); +end +else +raise EJclError.CreateResFmt(@RsEWindowNotValid, [Window]); +end; + + constructor TJclFileVersionInfo.Create(const Module: HMODULE); +begin +if Module <> 0 then +Create(GetModulePath(Module)) +else +raise EJclError.CreateResFmt(@RsEModuleNotValid, [Module]); +end; + destructor TJclFileVersionInfo.Destroy; begin FreeAndNil(FItemList); Modified: trunk/jcl/source/common/JclResources.pas =================================================================== --- trunk/jcl/source/common/JclResources.pas 2009-06-13 16:33:46 UTC (rev 2813) +++ trunk/jcl/source/common/JclResources.pas 2009-06-13 18:26:43 UTC (rev 2814) @@ -2079,7 +2079,10 @@ resourcestring RsELibraryNotFound = 'Library not found: %s'; RsEFunctionNotFound = 'Function not found: %s.%s'; - + RsEWindowsVersionNotSupported = 'This windows version is not supported'; + RsEWindowNotValid = 'The window with handle %d is not valid'; + RsEProcessNotValid = 'The process with ID %d is not valid'; + RsEModuleNotValid = 'The Module with handle %d is not valid'; //=== JclWinMidi ============================================================= resourcestring RsMidiInUnknownError = 'Unknown MIDI-In error No. %d'; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <usc...@us...> - 2009-06-13 16:33:50
|
Revision: 2813 http://jcl.svn.sourceforge.net/jcl/?rev=2813&view=rev Author: uschuster Date: 2009-06-13 16:33:46 +0000 (Sat, 13 Jun 2009) Log Message: ----------- some cleanup Modified Paths: -------------- branches/jcl-stack-trace/jcl/examples/windows/debug/mttest/JclDebugMTTestMain.pas branches/jcl-stack-trace/jcl/experts/stacktraceviewer/JclDebugSerialization.pas branches/jcl-stack-trace/jcl/experts/stacktraceviewer/JclStackTraceViewerClasses.pas branches/jcl-stack-trace/jcl/experts/stacktraceviewer/JclStackTraceViewerExceptInfoFrame.pas branches/jcl-stack-trace/jcl/experts/stacktraceviewer/JclStackTraceViewerMainFrame.pas branches/jcl-stack-trace/jcl/experts/stacktraceviewer/JclStackTraceViewerModuleFrame.pas branches/jcl-stack-trace/jcl/experts/stacktraceviewer/JclStackTraceViewerStackCodeUtils.pas branches/jcl-stack-trace/jcl/experts/stacktraceviewer/JclStackTraceViewerStackUtils.pas branches/jcl-stack-trace/jcl/experts/stacktraceviewer/JclStackTraceViewerThreadFrame.pas Modified: branches/jcl-stack-trace/jcl/examples/windows/debug/mttest/JclDebugMTTestMain.pas =================================================================== --- branches/jcl-stack-trace/jcl/examples/windows/debug/mttest/JclDebugMTTestMain.pas 2009-06-13 14:39:35 UTC (rev 2812) +++ branches/jcl-stack-trace/jcl/examples/windows/debug/mttest/JclDebugMTTestMain.pas 2009-06-13 16:33:46 UTC (rev 2813) @@ -28,7 +28,7 @@ {$R *.dfm} -procedure LoadedModules(ModuleList: TModuleList); +procedure LoadedModules(ModuleList: TJclSerializableModuleInfoList); var I: Integer; ProcessHandle: THandle; @@ -37,7 +37,7 @@ FileVersionInfo: TJclFileVersionInfo; ModuleInfoList: TJclModuleInfoList; ModuleBase: Cardinal; - Module: TModule; + Module: TJclSerializableModuleInfo; begin ProcessHandle := GetCurrentProcess; ModuleInfoList := TJclModuleInfoList.Create(False, False); @@ -79,10 +79,10 @@ procedure SaveExceptInfo(AExceptObj: TObject; AThreadInfoList: TJclThreadInfoList); var StackInfo: TStringList; - ExceptionInfo: TExceptionInfo; + ExceptionInfo: TJclSerializableExceptionInfo; XMLSerializer: TJclXMLSerializer; begin - ExceptionInfo := TExceptionInfo.Create; + ExceptionInfo := TJclSerializableExceptionInfo.Create; try if AExceptObj is Exception then begin Modified: branches/jcl-stack-trace/jcl/experts/stacktraceviewer/JclDebugSerialization.pas =================================================================== --- branches/jcl-stack-trace/jcl/experts/stacktraceviewer/JclDebugSerialization.pas 2009-06-13 14:39:35 UTC (rev 2812) +++ branches/jcl-stack-trace/jcl/experts/stacktraceviewer/JclDebugSerialization.pas 2009-06-13 16:33:46 UTC (rev 2813) @@ -108,7 +108,7 @@ property Items[AIndex: Integer]: TJclSerializableThreadInfo read GetItems; default; end; - TException = class(TPersistent) + TJclSerializableException = class(TPersistent) private FExceptionClassName: string; FExceptionMessage: string; @@ -122,7 +122,7 @@ property ExceptionMessage: string read FExceptionMessage write FExceptionMessage; end; - TModule = class(TPersistent) + TJclSerializableModuleInfo = class(TPersistent) private FStartStr: string; FEndStr: string; @@ -145,37 +145,37 @@ property FileDescription: string read FFileDescription write FFileDescription; end; - TModuleList = class(TPersistent) + TJclSerializableModuleInfoList = class(TPersistent) private FItems: TObjectList; function GetCount: Integer; - function GetItems(AIndex: Integer): TModule; + function GetItems(AIndex: Integer): TJclSerializableModuleInfo; protected procedure AssignTo(Dest: TPersistent); override; public constructor Create; destructor Destroy; override; - function Add: TModule; + function Add: TJclSerializableModuleInfo; procedure Clear; procedure Deserialize(ASerializer: TJclCustomSimpleSerializer); procedure Serialize(ASerializer: TJclCustomSimpleSerializer); property Count: Integer read GetCount; - property Items[AIndex: Integer]: TModule read GetItems; default; + property Items[AIndex: Integer]: TJclSerializableModuleInfo read GetItems; default; end; - TExceptionInfo = class(TObject) + TJclSerializableExceptionInfo = class(TObject) private - FException: TException; + FException: TJclSerializableException; FThreadInfoList: TJclSerializableThreadInfoList; - FModules: TModuleList; + FModules: TJclSerializableModuleInfoList; public constructor Create; destructor Destroy; override; procedure Deserialize(ASerializer: TJclCustomSimpleSerializer); procedure Serialize(ASerializer: TJclCustomSimpleSerializer); property ThreadInfoList: TJclSerializableThreadInfoList read FThreadInfoList; - property Exception: TException read FException; - property Modules: TModuleList read FModules; + property Exception: TJclSerializableException read FException; + property Modules: TJclSerializableModuleInfoList read FModules; end; {$IFDEF UNITVERSIONING} @@ -190,6 +190,69 @@ implementation +uses + JclDateTime; + +const + MinutesPerDay = 60 * 24; + +{ TODO -oUSc : move to JclDateTime } +function ISOFormatStrToDateTime(const AISOFormatTimeStampStr: string; ADefault: TDateTime): TDateTime; +var + Year, Month, Day, Hour, Minute, Second: Word; +begin + Result := ADefault; + { TODO -oUSc : make it more generics to accept for exam. milliseconds } + if (Length(AISOFormatTimeStampStr) = 25) or ((Length(AISOFormatTimeStampStr) = 20) and + (AISOFormatTimeStampStr[20] = 'Z')) then + begin + if (AISOFormatTimeStampStr[5] = '-') and (AISOFormatTimeStampStr[8] = '-') and + (AISOFormatTimeStampStr[11] = 'T') and (AISOFormatTimeStampStr[14] = ':') and + (AISOFormatTimeStampStr[17] = ':') then + begin + Year := StrToInt(Copy(AISOFormatTimeStampStr, 1, 4)); + Month := StrToInt(Copy(AISOFormatTimeStampStr, 6, 2)); + Day := StrToInt(Copy(AISOFormatTimeStampStr, 9, 2)); + Hour := StrToInt(Copy(AISOFormatTimeStampStr, 12, 2)); + Minute := StrToInt(Copy(AISOFormatTimeStampStr, 15, 2)); + Second := StrToInt(Copy(AISOFormatTimeStampStr, 18, 2)); + Result := EncodeDate(Year, Month, Day) + EncodeTime(Hour, Minute, Second, 0); + end; + end; +end; + +function ISOFormatStrToLocalDateTime(const AISOFormatTimeStampStr: string; ADefault: TDateTime): TDateTime; +begin + Result := ISOFormatStrToDateTime(AISOFormatTimeStampStr, ADefault); + Result := DateTimeToLocalDateTime(Result); +end; + +function DateTimeToISOFormatStr(ATimeStamp: TDateTime; ABias: Longint): string; +var + TimeZoneAsDateTime: TDateTime; + S: string; +begin + Result := FormatDateTime('yyyy-mm-dd"T"hh:nn:ss', ATimeStamp); + TimeZoneAsDateTime := ABias / MinutesPerDay; + S := FormatDateTime('hh:nn', Abs(TimeZoneAsDateTime)); + if ABias > 0 then + Result := Result + '+' + S + else + if ABias = 0 then + Result := Result + 'Z' + else + Result := Result + '-' + S; +end; + +function LocalDateTimeToISOFormatStr(ATimeStamp: TDateTime): string; +var + UTCTimeStamp, TimeZoneAsDateTime: TDateTime; +begin + UTCTimeStamp := LocalDateTimeToDateTime(ATimeStamp); + TimeZoneAsDateTime := ATimeStamp - UTCTimeStamp; + Result := DateTimeToISOFormatStr(UTCTimeStamp, Round(TimeZoneAsDateTime * MinutesPerDay)); +end; + //=== { TJclCustomSimpleSerializer } ========================================= constructor TJclCustomSimpleSerializer.Create(const AName: string); @@ -334,8 +397,11 @@ S := ASerializer.ReadString(Self, 'OffsetFromLineNumber'); OffsetFromLineNumber := StrToIntDef(S, -1); LineNumberOffsetFromProcedureStart := StrToIntDef(SLineNumberOffsetFromProcedureStart, -1); - UnitVersionRevision := ASerializer.ReadString(Self, 'Revision'); - //todo more unitversion fields + UnitVersionDateTime := ISOFormatStrToDateTime(ASerializer.ReadString(Self, 'UnitVersionDateTime'), 0); + UnitVersionExtra := ASerializer.ReadString(Self, 'UnitVersionExtra'); + UnitVersionLogPath := ASerializer.ReadString(Self, 'UnitVersionLogPath'); + UnitVersionRCSfile := ASerializer.ReadString(Self, 'UnitVersionRCSfile'); + UnitVersionRevision := ASerializer.ReadString(Self, 'UnitVersionRevision'); end; procedure TJclSerializableLocationInfo.Serialize(ASerializer: TJclCustomSimpleSerializer); @@ -364,8 +430,13 @@ ASerializer.WriteString(Self, 'LineNumberOffsetFromProcedureStart', IntToStr(LineNumberOffsetFromProcedureStart)); end; if lievUnitVersionInfo in Values then - ASerializer.WriteString(Self, 'Revision', UnitVersionRevision); - //todo more unitversion fields + begin + ASerializer.WriteString(Self, 'UnitVersionDateTime', DateTimeToISOFormatStr(UnitVersionDateTime, 0)); + ASerializer.WriteString(Self, 'UnitVersionExtra', UnitVersionExtra); + ASerializer.WriteString(Self, 'UnitVersionLogPath', UnitVersionLogPath); + ASerializer.WriteString(Self, 'UnitVersionRCSfile', UnitVersionRCSfile); + ASerializer.WriteString(Self, 'UnitVersionRevision', UnitVersionRevision); + end; end; //=== { TJclSerializableLocationInfoList } =================================== @@ -451,8 +522,9 @@ S := ASerializer.ReadString(Self, 'CreationTime'); if S <> '' then begin - CreationTime := StrToDateTime(S);{ TODO -oUSc : ISO format } - Values := Values + [tioCreationTime]; + CreationTime := ISOFormatStrToLocalDateTime(S, 0); + if CreationTime > 0 then + Values := Values + [tioCreationTime]; end; S := ASerializer.ReadString(Self, 'ParentThreadID'); if S <> '' then @@ -483,7 +555,7 @@ if tioName in Values then ASerializer.WriteString(Self, 'Name', Name); if tioCreationTime in Values then - ASerializer.WriteString(Self, 'CreationTime', DateTimeToStr(CreationTime)); { TODO -oUSc : ISO format } + ASerializer.WriteString(Self, 'CreationTime', LocalDateTimeToISOFormatStr(CreationTime)); if tioParentThreadID in Values then ASerializer.WriteString(Self, 'ParentThreadID', IntToStr(ParentThreadID)); if tioStack in Values then @@ -494,15 +566,15 @@ //=== { TExceptionInfo } ===================================================== -constructor TExceptionInfo.Create; +constructor TJclSerializableExceptionInfo.Create; begin inherited Create; - FException := TException.Create; + FException := TJclSerializableException.Create; FThreadInfoList := TJclSerializableThreadInfoList.Create; - FModules := TModuleList.Create; + FModules := TJclSerializableModuleInfoList.Create; end; -destructor TExceptionInfo.Destroy; +destructor TJclSerializableExceptionInfo.Destroy; begin FModules.Free; FException.Free; @@ -510,7 +582,7 @@ inherited Destroy; end; -procedure TExceptionInfo.Deserialize(ASerializer: TJclCustomSimpleSerializer); +procedure TJclSerializableExceptionInfo.Deserialize(ASerializer: TJclCustomSimpleSerializer); var I: Integer; begin @@ -528,7 +600,7 @@ FModules.Deserialize(ASerializer[I]); end; -procedure TExceptionInfo.Serialize(ASerializer: TJclCustomSimpleSerializer); +procedure TJclSerializableExceptionInfo.Serialize(ASerializer: TJclCustomSimpleSerializer); begin FThreadInfoList.Serialize(ASerializer.AddChild(Self, 'ThreadInfo')); FException.Serialize(ASerializer.AddChild(Self, 'Exception')); @@ -537,31 +609,31 @@ //=== { TException } ========================================================= -procedure TException.AssignTo(Dest: TPersistent); +procedure TJclSerializableException.AssignTo(Dest: TPersistent); begin - if Dest is TException then + if Dest is TJclSerializableException then begin - TException(Dest).FExceptionClassName := FExceptionClassName; - TException(Dest).FExceptionMessage := FExceptionMessage; + TJclSerializableException(Dest).FExceptionClassName := FExceptionClassName; + TJclSerializableException(Dest).FExceptionMessage := FExceptionMessage; end else inherited AssignTo(Dest); end; -procedure TException.Clear; +procedure TJclSerializableException.Clear; begin FExceptionClassName := ''; FExceptionMessage := ''; end; -procedure TException.Deserialize(ASerializer: TJclCustomSimpleSerializer); +procedure TJclSerializableException.Deserialize(ASerializer: TJclCustomSimpleSerializer); begin Clear; FExceptionClassName := ASerializer.ReadString(Self, 'ClassName'); FExceptionMessage := ASerializer.ReadString(Self, 'Message'); end; -procedure TException.Serialize(ASerializer: TJclCustomSimpleSerializer); +procedure TJclSerializableException.Serialize(ASerializer: TJclCustomSimpleSerializer); begin ASerializer.WriteString(Self, 'ClassName', FExceptionClassName); ASerializer.WriteString(Self, 'Message', FExceptionMessage); @@ -569,23 +641,23 @@ //=== { TModule } ============================================================ -procedure TModule.AssignTo(Dest: TPersistent); +procedure TJclSerializableModuleInfo.AssignTo(Dest: TPersistent); begin - if Dest is TModule then + if Dest is TJclSerializableModuleInfo then begin - TModule(Dest).FStartStr := FStartStr; - TModule(Dest).FEndStr := FEndStr; - TModule(Dest).FSystemModuleStr := FSystemModuleStr; - TModule(Dest).FModuleName := FModuleName; - TModule(Dest).FBinFileVersion := FBinFileVersion; - TModule(Dest).FFileVersion := FFileVersion; - TModule(Dest).FFileDescription := FFileDescription; + TJclSerializableModuleInfo(Dest).FStartStr := FStartStr; + TJclSerializableModuleInfo(Dest).FEndStr := FEndStr; + TJclSerializableModuleInfo(Dest).FSystemModuleStr := FSystemModuleStr; + TJclSerializableModuleInfo(Dest).FModuleName := FModuleName; + TJclSerializableModuleInfo(Dest).FBinFileVersion := FBinFileVersion; + TJclSerializableModuleInfo(Dest).FFileVersion := FFileVersion; + TJclSerializableModuleInfo(Dest).FFileDescription := FFileDescription; end else inherited AssignTo(Dest); end; -procedure TModule.Deserialize(ASerializer: TJclCustomSimpleSerializer); +procedure TJclSerializableModuleInfo.Deserialize(ASerializer: TJclCustomSimpleSerializer); begin FStartStr := ASerializer.ReadString(Self, 'StartAddr'); FEndStr := ASerializer.ReadString(Self, 'EndAddr'); @@ -596,7 +668,7 @@ FFileDescription := ASerializer.ReadString(Self, 'FileDescription'); end; -procedure TModule.Serialize(ASerializer: TJclCustomSimpleSerializer); +procedure TJclSerializableModuleInfo.Serialize(ASerializer: TJclCustomSimpleSerializer); begin ASerializer.WriteString(Self, 'StartAddr', FStartStr); ASerializer.WriteString(Self, 'EndAddr', FEndStr); @@ -609,54 +681,54 @@ //=== { TModuleList } ======================================================== -constructor TModuleList.Create; +constructor TJclSerializableModuleInfoList.Create; begin inherited Create; FItems := TObjectList.Create; end; -destructor TModuleList.Destroy; +destructor TJclSerializableModuleInfoList.Destroy; begin FItems.Free; inherited Destroy; end; -function TModuleList.Add: TModule; +function TJclSerializableModuleInfoList.Add: TJclSerializableModuleInfo; begin - FItems.Add(TModule.Create); - Result := TModule(FItems.Last); + FItems.Add(TJclSerializableModuleInfo.Create); + Result := TJclSerializableModuleInfo(FItems.Last); end; -procedure TModuleList.AssignTo(Dest: TPersistent); +procedure TJclSerializableModuleInfoList.AssignTo(Dest: TPersistent); var I: Integer; begin - if Dest is TModuleList then + if Dest is TJclSerializableModuleInfoList then begin - TModuleList(Dest).Clear; + TJclSerializableModuleInfoList(Dest).Clear; for I := 0 to Count - 1 do - TModuleList(Dest).Add.Assign(TModule(FItems[I])); + TJclSerializableModuleInfoList(Dest).Add.Assign(TJclSerializableModuleInfo(FItems[I])); end else inherited AssignTo(Dest); end; -procedure TModuleList.Clear; +procedure TJclSerializableModuleInfoList.Clear; begin FItems.Clear; end; -function TModuleList.GetCount: Integer; +function TJclSerializableModuleInfoList.GetCount: Integer; begin Result := FItems.Count; end; -function TModuleList.GetItems(AIndex: Integer): TModule; +function TJclSerializableModuleInfoList.GetItems(AIndex: Integer): TJclSerializableModuleInfo; begin - Result := TModule(FItems[AIndex]); + Result := TJclSerializableModuleInfo(FItems[AIndex]); end; -procedure TModuleList.Deserialize(ASerializer: TJclCustomSimpleSerializer); +procedure TJclSerializableModuleInfoList.Deserialize(ASerializer: TJclCustomSimpleSerializer); var I: Integer; begin @@ -666,7 +738,7 @@ Add.Deserialize(ASerializer[I]); end; -procedure TModuleList.Serialize(ASerializer: TJclCustomSimpleSerializer); +procedure TJclSerializableModuleInfoList.Serialize(ASerializer: TJclCustomSimpleSerializer); var I: Integer; begin Modified: branches/jcl-stack-trace/jcl/experts/stacktraceviewer/JclStackTraceViewerClasses.pas =================================================================== --- branches/jcl-stack-trace/jcl/experts/stacktraceviewer/JclStackTraceViewerClasses.pas 2009-06-13 14:39:35 UTC (rev 2812) +++ branches/jcl-stack-trace/jcl/experts/stacktraceviewer/JclStackTraceViewerClasses.pas 2009-06-13 16:33:46 UTC (rev 2813) @@ -33,7 +33,7 @@ interface uses - Classes, Contnrs, + Windows, Classes, Contnrs, {$IFDEF UNITVERSIONING} JclUnitVersioning, {$ENDIF UNITVERSIONING} @@ -142,7 +142,7 @@ property Items[AIndex: Integer]: TJclStackTraceViewerThreadInfo read GetItems; default; end; - TJclStackTraceViewerModuleModuleInfo = class(TModule, IJclModuleInfo) + TJclStackTraceViewerModuleModuleInfo = class(TJclSerializableModuleInfo, IJclModuleInfo) { IInterface } function QueryInterface(const IID: TGUID; out Obj): HRESULT; stdcall; function _AddRef: Integer; stdcall; @@ -172,16 +172,16 @@ TJclStackTraceViewerExceptionInfo = class(TObject) private - FException: TException; + FException: TJclSerializableException; FThreadInfoList: TJclStackTraceViewerThreadInfoList; FModules: TJclStackTraceViewerModuleInfoList; procedure AddModuleListToStacks; public constructor Create; destructor Destroy; override; - procedure AssignExceptionInfo(AExceptionInfo: TExceptionInfo); + procedure AssignExceptionInfo(AExceptionInfo: TJclSerializableExceptionInfo); property ThreadInfoList: TJclStackTraceViewerThreadInfoList read FThreadInfoList; - property Exception: TException read FException; + property Exception: TJclSerializableException read FException; property Modules: TJclStackTraceViewerModuleInfoList read FModules; end; @@ -317,7 +317,7 @@ constructor TJclStackTraceViewerExceptionInfo.Create; begin inherited Create; - FException := TException.Create; + FException := TJclSerializableException.Create; FThreadInfoList := TJclStackTraceViewerThreadInfoList.Create; FModules := TJclStackTraceViewerModuleInfoList.Create; end; @@ -340,7 +340,7 @@ FThreadInfoList[I].Stack.ModuleInfoList := FModules; end; -procedure TJclStackTraceViewerExceptionInfo.AssignExceptionInfo(AExceptionInfo: TExceptionInfo); +procedure TJclStackTraceViewerExceptionInfo.AssignExceptionInfo(AExceptionInfo: TJclSerializableExceptionInfo); var I: Integer; begin Modified: branches/jcl-stack-trace/jcl/experts/stacktraceviewer/JclStackTraceViewerExceptInfoFrame.pas =================================================================== --- branches/jcl-stack-trace/jcl/experts/stacktraceviewer/JclStackTraceViewerExceptInfoFrame.pas 2009-06-13 14:39:35 UTC (rev 2812) +++ branches/jcl-stack-trace/jcl/experts/stacktraceviewer/JclStackTraceViewerExceptInfoFrame.pas 2009-06-13 16:33:46 UTC (rev 2813) @@ -47,12 +47,12 @@ lbExceptionClassName: TLabel; lbExceptionMessage: TLabel; private - FException: TException; - procedure SetException(const Value: TException); + FException: TJclSerializableException; + procedure SetException(const Value: TJclSerializableException); { Private declarations } public { Public declarations } - property Exception: TException read FException write SetException; + property Exception: TJclSerializableException read FException write SetException; end; {$IFDEF UNITVERSIONING} @@ -71,7 +71,7 @@ { TfrmException } -procedure TfrmException.SetException(const Value: TException); +procedure TfrmException.SetException(const Value: TJclSerializableException); begin FException := Value; if Assigned(FException) then Modified: branches/jcl-stack-trace/jcl/experts/stacktraceviewer/JclStackTraceViewerMainFrame.pas =================================================================== --- branches/jcl-stack-trace/jcl/experts/stacktraceviewer/JclStackTraceViewerMainFrame.pas 2009-06-13 14:39:35 UTC (rev 2812) +++ branches/jcl-stack-trace/jcl/experts/stacktraceviewer/JclStackTraceViewerMainFrame.pas 2009-06-13 16:33:46 UTC (rev 2813) @@ -149,11 +149,11 @@ TThreadData = class(TObject) private - FException: TException; + FException: TJclSerializableException; FModuleList: TJclStackTraceViewerModuleInfoList; FThreadInfo: TJclStackTraceViewerThreadInfo; public - property Exception: TException read FException write FException; + property Exception: TJclSerializableException read FException write FException; property ModuleList: TJclStackTraceViewerModuleInfoList read FModuleList write FModuleList; property ThreadInfo: TJclStackTraceViewerThreadInfo read FThreadInfo write FThreadInfo; end; @@ -277,7 +277,7 @@ begin case FKind of tvlkModuleList: if AFrame is TfrmModule then - TfrmModule(AFrame).ModuleList := TModuleList(Data); + TfrmModule(AFrame).ModuleList := TJclSerializableModuleInfoList(Data); tvlkThread: if AFrame is TfrmThread then begin ThreadData := TThreadData(Data); @@ -297,7 +297,7 @@ ThreadFrame.StackList := nil; end; tvlkException: if AFrame is TfrmException then - TfrmException(AFrame).Exception := TException(Data); + TfrmException(AFrame).Exception := TJclSerializableException(Data); tvlkThreadStack, tvlkThreadCreationStack: if AFrame is TfrmStack then begin StackData := TStackData(Data); @@ -557,7 +557,7 @@ I: Integer; ThreadTreeViewLink, TreeViewLink: TDefaultTreeViewLink; XMLDeserializer: TJclXMLDeserializer; - SerializeExceptionInfo: TExceptionInfo; + SerializeExceptionInfo: TJclSerializableExceptionInfo; RootTreeViewLink: TRootTreeViewLink; ThreadData: TThreadData; StackData: TStackData; @@ -584,7 +584,7 @@ FS.Free; end; {$ENDIF ~COMPILER12_UP} - SerializeExceptionInfo := TExceptionInfo.Create; + SerializeExceptionInfo := TJclSerializableExceptionInfo.Create; try XMLDeserializer := TJclXMLDeserializer.Create('ExceptInfo'); try Modified: branches/jcl-stack-trace/jcl/experts/stacktraceviewer/JclStackTraceViewerModuleFrame.pas =================================================================== --- branches/jcl-stack-trace/jcl/experts/stacktraceviewer/JclStackTraceViewerModuleFrame.pas 2009-06-13 14:39:35 UTC (rev 2812) +++ branches/jcl-stack-trace/jcl/experts/stacktraceviewer/JclStackTraceViewerModuleFrame.pas 2009-06-13 16:33:46 UTC (rev 2813) @@ -44,12 +44,12 @@ TfrmModule = class(TFrame) lv: TListView; private - FModuleList: TModuleList; - procedure SetModuleList(const Value: TModuleList); + FModuleList: TJclSerializableModuleInfoList; + procedure SetModuleList(const Value: TJclSerializableModuleInfoList); { Private declarations } public { Public declarations } - property ModuleList: TModuleList read FModuleList write SetModuleList; + property ModuleList: TJclSerializableModuleInfoList read FModuleList write SetModuleList; procedure LoadState(AIni: TCustomIniFile; const ASection: string); procedure SaveState(AIni: TCustomIniFile; const ASection: string); end; @@ -87,7 +87,7 @@ AIni.WriteInteger(ASection, Format('ModuleFrameColumnWidth%d', [I]), lv.Columns.Items[I].Width); end; -procedure TfrmModule.SetModuleList(const Value: TModuleList); +procedure TfrmModule.SetModuleList(const Value: TJclSerializableModuleInfoList); var I: Integer; ListItem: TListItem; Modified: branches/jcl-stack-trace/jcl/experts/stacktraceviewer/JclStackTraceViewerStackCodeUtils.pas =================================================================== --- branches/jcl-stack-trace/jcl/experts/stacktraceviewer/JclStackTraceViewerStackCodeUtils.pas 2009-06-13 14:39:35 UTC (rev 2812) +++ branches/jcl-stack-trace/jcl/experts/stacktraceviewer/JclStackTraceViewerStackCodeUtils.pas 2009-06-13 16:33:46 UTC (rev 2813) @@ -35,7 +35,7 @@ uses SysUtils, {$IFNDEF BDS} - Classes, + Windows, Classes, {$ENDIF ~BDS} ActiveX, ToolsAPI, {$IFDEF UNITVERSIONING} Modified: branches/jcl-stack-trace/jcl/experts/stacktraceviewer/JclStackTraceViewerStackUtils.pas =================================================================== --- branches/jcl-stack-trace/jcl/experts/stacktraceviewer/JclStackTraceViewerStackUtils.pas 2009-06-13 14:39:35 UTC (rev 2812) +++ branches/jcl-stack-trace/jcl/experts/stacktraceviewer/JclStackTraceViewerStackUtils.pas 2009-06-13 16:33:46 UTC (rev 2813) @@ -33,7 +33,7 @@ interface uses - SysUtils, Classes, Contnrs, ActiveX, + Windows, SysUtils, Classes, Contnrs, ActiveX, ToolsAPI, {$IFDEF UNITVERSIONING} JclUnitVersioning, @@ -296,7 +296,7 @@ MS: TMemoryStream; SA: TStreamAdapter; - S: string; + S, ModuleListModulePath, FindMappingModulePath: string; EV: IOTAEnvironmentOptions; FileSearcher: TFileSearcher; BrowsingPaths: TStringList; @@ -362,19 +362,23 @@ if (FindMapping.Count > 0) and (FindMapping[0].Revision = '') and (FindMapping[0].ModuleName <> '') then begin Idx := -1; - { TODO -oUSc : Compare full filename when the filename in the stack contains also the path + {Why full filenames? - Why full filenames? - - It is possible to load - <Path 1>\TestDLL.DLL - <Path 2>\TestDLL.DLL} + It is possible to load + <Path 1>\TestDLL.DLL + <Path 2>\TestDLL.DLL} for J := 0 to FModuleList.Count - 1 do - if CompareText(ExtractFileName(FModuleList[J].ModuleName), ExtractFileName(FindMapping[0].ModuleName)) = 0 then + begin + ModuleListModulePath := ExtractFilePath(FModuleList[J].ModuleName); + FindMappingModulePath := ExtractFilePath(FindMapping[0].ModuleName); + if (CompareText(ExtractFileName(FModuleList[J].ModuleName), ExtractFileName(FindMapping[0].ModuleName)) = 0) and + ((ModuleListModulePath = '') or (FindMappingModulePath = '') or + (CompareText(ModuleListModulePath, FindMappingModulePath) = 0)) then begin Idx := J; Break; end; + end; if Idx <> -1 then begin S := FModuleList[Idx].BinFileVersion; Modified: branches/jcl-stack-trace/jcl/experts/stacktraceviewer/JclStackTraceViewerThreadFrame.pas =================================================================== --- branches/jcl-stack-trace/jcl/experts/stacktraceviewer/JclStackTraceViewerThreadFrame.pas 2009-06-13 14:39:35 UTC (rev 2812) +++ branches/jcl-stack-trace/jcl/experts/stacktraceviewer/JclStackTraceViewerThreadFrame.pas 2009-06-13 16:33:46 UTC (rev 2813) @@ -52,13 +52,13 @@ FStackFrame: TfrmStack; FCreationStackList: TJclStackTraceViewerLocationInfoList; FStackList: TJclStackTraceViewerLocationInfoList; - FException: TException; + FException: TJclSerializableException; FLastStackFrame: TObject; FCreationStackHeight: Integer; FStackInterfaceList: TInterfaceList; procedure SaveSplitterState; procedure SetCreationStackList(const Value: TJclStackTraceViewerLocationInfoList); - procedure SetException(const Value: TException); + procedure SetException(const Value: TJclSerializableException); procedure SetStackList(const Value: TJclStackTraceViewerLocationInfoList); function GetSelected: IJclLocationInfo; procedure HandleStackSelection(ASender: TObject); @@ -75,7 +75,7 @@ procedure LoadState(AIni: TCustomIniFile; const ASection: string); procedure SaveState(AIni: TCustomIniFile; const ASection: string); property CreationStackList: TJclStackTraceViewerLocationInfoList read FCreationStackList write SetCreationStackList; - property Exception: TException read FException write SetException; + property Exception: TJclSerializableException read FException write SetException; property StackList: TJclStackTraceViewerLocationInfoList read FStackList write SetStackList; end; @@ -187,7 +187,7 @@ UpdateSplitterState; end; -procedure TfrmThread.SetException(const Value: TException); +procedure TfrmThread.SetException(const Value: TJclSerializableException); begin FException := Value; FExceptionFrame.Exception := FException; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ou...@us...> - 2009-06-13 14:39:37
|
Revision: 2812 http://jcl.svn.sourceforge.net/jcl/?rev=2812&view=rev Author: outchy Date: 2009-06-13 14:39:35 +0000 (Sat, 13 Jun 2009) Log Message: ----------- Mantis 4818: SimpleXMLDecode in JclSimpleXML does not work with "&" as value. Modified Paths: -------------- trunk/jcl/source/common/JclSimpleXml.pas Modified: trunk/jcl/source/common/JclSimpleXml.pas =================================================================== --- trunk/jcl/source/common/JclSimpleXml.pas 2009-06-13 11:47:09 UTC (rev 2811) +++ trunk/jcl/source/common/JclSimpleXml.pas 2009-06-13 14:39:35 UTC (rev 2812) @@ -895,9 +895,6 @@ end; procedure SimpleXMLDecode(var S: string; TrimBlanks: Boolean); -var - StringLength, ReadIndex, WriteIndex: Cardinal; - procedure DecodeEntity(var S: string; StringLength: Cardinal; var ReadIndex, WriteIndex: Cardinal); const @@ -943,6 +940,8 @@ end; end; +var + StringLength, ReadIndex, WriteIndex: Cardinal; begin // NB! This procedure replaces the text inplace to speed up the conversion. This // works because when decoding, the string can only become shorter. This is @@ -959,7 +958,7 @@ SkipBlanks(S, StringLength, ReadIndex); if S[ReadIndex] = '&' then begin - if S[ReadIndex + 1] = '#' then + if (ReadIndex < StringLength) and (S[ReadIndex + 1] = '#') then begin DecodeEntity(S, StringLength, ReadIndex, WriteIndex); Inc(WriteIndex); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <usc...@us...> - 2009-06-13 11:47:11
|
Revision: 2811 http://jcl.svn.sourceforge.net/jcl/?rev=2811&view=rev Author: uschuster Date: 2009-06-13 11:47:09 +0000 (Sat, 13 Jun 2009) Log Message: ----------- fixed properties in unit headers Modified Paths: -------------- branches/jcl-stack-trace/jcl/experts/stacktraceviewer/JclDebugXMLDeserializer.pas branches/jcl-stack-trace/jcl/experts/stacktraceviewer/JclDebugXMLSerializer.pas branches/jcl-stack-trace/jcl/experts/stacktraceviewer/JclStackTraceViewerAPI.pas branches/jcl-stack-trace/jcl/experts/stacktraceviewer/JclStackTraceViewerAPIImpl.pas branches/jcl-stack-trace/jcl/experts/stacktraceviewer/JclStackTraceViewerConfigFrame.pas branches/jcl-stack-trace/jcl/experts/stacktraceviewer/JclStackTraceViewerExceptInfoFrame.pas branches/jcl-stack-trace/jcl/experts/stacktraceviewer/JclStackTraceViewerImpl.pas branches/jcl-stack-trace/jcl/experts/stacktraceviewer/JclStackTraceViewerMainFormBDS.pas branches/jcl-stack-trace/jcl/experts/stacktraceviewer/JclStackTraceViewerMainFormDelphi.pas branches/jcl-stack-trace/jcl/experts/stacktraceviewer/JclStackTraceViewerModuleFrame.pas branches/jcl-stack-trace/jcl/experts/stacktraceviewer/JclStackTraceViewerOptions.pas branches/jcl-stack-trace/jcl/experts/stacktraceviewer/JclStackTraceViewerStackCodeUtils.pas branches/jcl-stack-trace/jcl/experts/stacktraceviewer/JclStackTraceViewerStackUtils.pas branches/jcl-stack-trace/jcl/experts/stacktraceviewer/JclStackTraceViewerThreadFrame.pas Modified: branches/jcl-stack-trace/jcl/experts/stacktraceviewer/JclDebugXMLDeserializer.pas =================================================================== --- branches/jcl-stack-trace/jcl/experts/stacktraceviewer/JclDebugXMLDeserializer.pas 2009-06-13 11:36:15 UTC (rev 2810) +++ branches/jcl-stack-trace/jcl/experts/stacktraceviewer/JclDebugXMLDeserializer.pas 2009-06-13 11:47:09 UTC (rev 2811) @@ -20,9 +20,9 @@ { } {**************************************************************************************************} { } -{ Last modified: $Date:: $ } -{ Revision: $Rev:: $ } -{ Author: $Author:: $ } +{ Last modified: $Date:: $ } +{ Revision: $Rev:: $ } +{ Author: $Author:: $ } { } {**************************************************************************************************} Modified: branches/jcl-stack-trace/jcl/experts/stacktraceviewer/JclDebugXMLSerializer.pas =================================================================== --- branches/jcl-stack-trace/jcl/experts/stacktraceviewer/JclDebugXMLSerializer.pas 2009-06-13 11:36:15 UTC (rev 2810) +++ branches/jcl-stack-trace/jcl/experts/stacktraceviewer/JclDebugXMLSerializer.pas 2009-06-13 11:47:09 UTC (rev 2811) @@ -20,9 +20,9 @@ { } {**************************************************************************************************} { } -{ Last modified: $Date:: $ } -{ Revision: $Rev:: $ } -{ Author: $Author:: $ } +{ Last modified: $Date:: $ } +{ Revision: $Rev:: $ } +{ Author: $Author:: $ } { } {**************************************************************************************************} Modified: branches/jcl-stack-trace/jcl/experts/stacktraceviewer/JclStackTraceViewerAPI.pas =================================================================== --- branches/jcl-stack-trace/jcl/experts/stacktraceviewer/JclStackTraceViewerAPI.pas 2009-06-13 11:36:15 UTC (rev 2810) +++ branches/jcl-stack-trace/jcl/experts/stacktraceviewer/JclStackTraceViewerAPI.pas 2009-06-13 11:47:09 UTC (rev 2811) @@ -20,9 +20,9 @@ { } {**************************************************************************************************} { } -{ Last modified: $Date:: $ } -{ Revision: $Rev:: $ } -{ Author: $Author:: $ } +{ Last modified: $Date:: $ } +{ Revision: $Rev:: $ } +{ Author: $Author:: $ } { } {**************************************************************************************************} Modified: branches/jcl-stack-trace/jcl/experts/stacktraceviewer/JclStackTraceViewerAPIImpl.pas =================================================================== --- branches/jcl-stack-trace/jcl/experts/stacktraceviewer/JclStackTraceViewerAPIImpl.pas 2009-06-13 11:36:15 UTC (rev 2810) +++ branches/jcl-stack-trace/jcl/experts/stacktraceviewer/JclStackTraceViewerAPIImpl.pas 2009-06-13 11:47:09 UTC (rev 2811) @@ -20,9 +20,9 @@ { } {**************************************************************************************************} { } -{ Last modified: $Date:: $ } -{ Revision: $Rev:: $ } -{ Author: $Author:: $ } +{ Last modified: $Date:: $ } +{ Revision: $Rev:: $ } +{ Author: $Author:: $ } { } {**************************************************************************************************} Modified: branches/jcl-stack-trace/jcl/experts/stacktraceviewer/JclStackTraceViewerConfigFrame.pas =================================================================== --- branches/jcl-stack-trace/jcl/experts/stacktraceviewer/JclStackTraceViewerConfigFrame.pas 2009-06-13 11:36:15 UTC (rev 2810) +++ branches/jcl-stack-trace/jcl/experts/stacktraceviewer/JclStackTraceViewerConfigFrame.pas 2009-06-13 11:47:09 UTC (rev 2811) @@ -20,9 +20,9 @@ { } {**************************************************************************************************} { } -{ Last modified: $Date:: $ } -{ Revision: $Rev:: $ } -{ Author: $Author:: $ } +{ Last modified: $Date:: $ } +{ Revision: $Rev:: $ } +{ Author: $Author:: $ } { } {**************************************************************************************************} Modified: branches/jcl-stack-trace/jcl/experts/stacktraceviewer/JclStackTraceViewerExceptInfoFrame.pas =================================================================== --- branches/jcl-stack-trace/jcl/experts/stacktraceviewer/JclStackTraceViewerExceptInfoFrame.pas 2009-06-13 11:36:15 UTC (rev 2810) +++ branches/jcl-stack-trace/jcl/experts/stacktraceviewer/JclStackTraceViewerExceptInfoFrame.pas 2009-06-13 11:47:09 UTC (rev 2811) @@ -20,9 +20,9 @@ { } {**************************************************************************************************} { } -{ Last modified: $Date:: $ } -{ Revision: $Rev:: $ } -{ Author: $Author:: $ } +{ Last modified: $Date:: $ } +{ Revision: $Rev:: $ } +{ Author: $Author:: $ } { } {**************************************************************************************************} Modified: branches/jcl-stack-trace/jcl/experts/stacktraceviewer/JclStackTraceViewerImpl.pas =================================================================== --- branches/jcl-stack-trace/jcl/experts/stacktraceviewer/JclStackTraceViewerImpl.pas 2009-06-13 11:36:15 UTC (rev 2810) +++ branches/jcl-stack-trace/jcl/experts/stacktraceviewer/JclStackTraceViewerImpl.pas 2009-06-13 11:47:09 UTC (rev 2811) @@ -20,9 +20,9 @@ { } {**************************************************************************************************} { } -{ Last modified: $Date:: $ } -{ Revision: $Rev:: $ } -{ Author: $Author:: $ } +{ Last modified: $Date:: $ } +{ Revision: $Rev:: $ } +{ Author: $Author:: $ } { } {**************************************************************************************************} Modified: branches/jcl-stack-trace/jcl/experts/stacktraceviewer/JclStackTraceViewerMainFormBDS.pas =================================================================== --- branches/jcl-stack-trace/jcl/experts/stacktraceviewer/JclStackTraceViewerMainFormBDS.pas 2009-06-13 11:36:15 UTC (rev 2810) +++ branches/jcl-stack-trace/jcl/experts/stacktraceviewer/JclStackTraceViewerMainFormBDS.pas 2009-06-13 11:47:09 UTC (rev 2811) @@ -20,9 +20,9 @@ { } {**************************************************************************************************} { } -{ Last modified: $Date:: $ } -{ Revision: $Rev:: $ } -{ Author: $Author:: $ } +{ Last modified: $Date:: $ } +{ Revision: $Rev:: $ } +{ Author: $Author:: $ } { } {**************************************************************************************************} Modified: branches/jcl-stack-trace/jcl/experts/stacktraceviewer/JclStackTraceViewerMainFormDelphi.pas =================================================================== --- branches/jcl-stack-trace/jcl/experts/stacktraceviewer/JclStackTraceViewerMainFormDelphi.pas 2009-06-13 11:36:15 UTC (rev 2810) +++ branches/jcl-stack-trace/jcl/experts/stacktraceviewer/JclStackTraceViewerMainFormDelphi.pas 2009-06-13 11:47:09 UTC (rev 2811) @@ -20,9 +20,9 @@ { } {**************************************************************************************************} { } -{ Last modified: $Date:: $ } -{ Revision: $Rev:: $ } -{ Author: $Author:: $ } +{ Last modified: $Date:: $ } +{ Revision: $Rev:: $ } +{ Author: $Author:: $ } { } {**************************************************************************************************} Modified: branches/jcl-stack-trace/jcl/experts/stacktraceviewer/JclStackTraceViewerModuleFrame.pas =================================================================== --- branches/jcl-stack-trace/jcl/experts/stacktraceviewer/JclStackTraceViewerModuleFrame.pas 2009-06-13 11:36:15 UTC (rev 2810) +++ branches/jcl-stack-trace/jcl/experts/stacktraceviewer/JclStackTraceViewerModuleFrame.pas 2009-06-13 11:47:09 UTC (rev 2811) @@ -20,9 +20,9 @@ { } {**************************************************************************************************} { } -{ Last modified: $Date:: $ } -{ Revision: $Rev:: $ } -{ Author: $Author:: $ } +{ Last modified: $Date:: $ } +{ Revision: $Rev:: $ } +{ Author: $Author:: $ } { } {**************************************************************************************************} Modified: branches/jcl-stack-trace/jcl/experts/stacktraceviewer/JclStackTraceViewerOptions.pas =================================================================== --- branches/jcl-stack-trace/jcl/experts/stacktraceviewer/JclStackTraceViewerOptions.pas 2009-06-13 11:36:15 UTC (rev 2810) +++ branches/jcl-stack-trace/jcl/experts/stacktraceviewer/JclStackTraceViewerOptions.pas 2009-06-13 11:47:09 UTC (rev 2811) @@ -20,9 +20,9 @@ { } {**************************************************************************************************} { } -{ Last modified: $Date:: $ } -{ Revision: $Rev:: $ } -{ Author: $Author:: $ } +{ Last modified: $Date:: $ } +{ Revision: $Rev:: $ } +{ Author: $Author:: $ } { } {**************************************************************************************************} Modified: branches/jcl-stack-trace/jcl/experts/stacktraceviewer/JclStackTraceViewerStackCodeUtils.pas =================================================================== --- branches/jcl-stack-trace/jcl/experts/stacktraceviewer/JclStackTraceViewerStackCodeUtils.pas 2009-06-13 11:36:15 UTC (rev 2810) +++ branches/jcl-stack-trace/jcl/experts/stacktraceviewer/JclStackTraceViewerStackCodeUtils.pas 2009-06-13 11:47:09 UTC (rev 2811) @@ -20,9 +20,9 @@ { } {**************************************************************************************************} { } -{ Last modified: $Date:: $ } -{ Revision: $Rev:: $ } -{ Author: $Author:: $ } +{ Last modified: $Date:: $ } +{ Revision: $Rev:: $ } +{ Author: $Author:: $ } { } {**************************************************************************************************} Modified: branches/jcl-stack-trace/jcl/experts/stacktraceviewer/JclStackTraceViewerStackUtils.pas =================================================================== --- branches/jcl-stack-trace/jcl/experts/stacktraceviewer/JclStackTraceViewerStackUtils.pas 2009-06-13 11:36:15 UTC (rev 2810) +++ branches/jcl-stack-trace/jcl/experts/stacktraceviewer/JclStackTraceViewerStackUtils.pas 2009-06-13 11:47:09 UTC (rev 2811) @@ -20,9 +20,9 @@ { } {**************************************************************************************************} { } -{ Last modified: $Date:: $ } -{ Revision: $Rev:: $ } -{ Author: $Author:: $ } +{ Last modified: $Date:: $ } +{ Revision: $Rev:: $ } +{ Author: $Author:: $ } { } {**************************************************************************************************} Modified: branches/jcl-stack-trace/jcl/experts/stacktraceviewer/JclStackTraceViewerThreadFrame.pas =================================================================== --- branches/jcl-stack-trace/jcl/experts/stacktraceviewer/JclStackTraceViewerThreadFrame.pas 2009-06-13 11:36:15 UTC (rev 2810) +++ branches/jcl-stack-trace/jcl/experts/stacktraceviewer/JclStackTraceViewerThreadFrame.pas 2009-06-13 11:47:09 UTC (rev 2811) @@ -20,9 +20,9 @@ { } {**************************************************************************************************} { } -{ Last modified: $Date:: $ } -{ Revision: $Rev:: $ } -{ Author: $Author:: $ } +{ 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: <usc...@us...> - 2009-06-13 11:36:17
|
Revision: 2810 http://jcl.svn.sourceforge.net/jcl/?rev=2810&view=rev Author: uschuster Date: 2009-06-13 11:36:15 +0000 (Sat, 13 Jun 2009) Log Message: ----------- - packages for D5-D7, D9, D10 - removed duplicate entries in resources.mak Modified Paths: -------------- branches/jcl-stack-trace/jcl/TODO.txt branches/jcl-stack-trace/jcl/packages/resources.mak Added Paths: ----------- branches/jcl-stack-trace/jcl/packages/d10/JclStackTraceViewerExpert.bdsproj branches/jcl-stack-trace/jcl/packages/d10/JclStackTraceViewerExpert.dpk branches/jcl-stack-trace/jcl/packages/d10/JclStackTraceViewerExpert.rc branches/jcl-stack-trace/jcl/packages/d10/JclStackTraceViewerExpert.res branches/jcl-stack-trace/jcl/packages/d10/JclStackTraceViewerExpertDLL.bdsproj branches/jcl-stack-trace/jcl/packages/d10/JclStackTraceViewerExpertDLL.dpr branches/jcl-stack-trace/jcl/packages/d10/JclStackTraceViewerExpertDLL.rc branches/jcl-stack-trace/jcl/packages/d10/JclStackTraceViewerExpertDLL.res branches/jcl-stack-trace/jcl/packages/d5/JclStackTraceViewerExpertD50.dof branches/jcl-stack-trace/jcl/packages/d5/JclStackTraceViewerExpertD50.dpk branches/jcl-stack-trace/jcl/packages/d5/JclStackTraceViewerExpertD50.rc branches/jcl-stack-trace/jcl/packages/d5/JclStackTraceViewerExpertD50.res branches/jcl-stack-trace/jcl/packages/d5/JclStackTraceViewerExpertDLLD50.dof branches/jcl-stack-trace/jcl/packages/d5/JclStackTraceViewerExpertDLLD50.dpr branches/jcl-stack-trace/jcl/packages/d5/JclStackTraceViewerExpertDLLD50.rc branches/jcl-stack-trace/jcl/packages/d5/JclStackTraceViewerExpertDLLD50.res branches/jcl-stack-trace/jcl/packages/d6/JclStackTraceViewerExpert.dof branches/jcl-stack-trace/jcl/packages/d6/JclStackTraceViewerExpert.dpk branches/jcl-stack-trace/jcl/packages/d6/JclStackTraceViewerExpert.rc branches/jcl-stack-trace/jcl/packages/d6/JclStackTraceViewerExpert.res branches/jcl-stack-trace/jcl/packages/d6/JclStackTraceViewerExpertDLL.dof branches/jcl-stack-trace/jcl/packages/d6/JclStackTraceViewerExpertDLL.dpr branches/jcl-stack-trace/jcl/packages/d6/JclStackTraceViewerExpertDLL.rc branches/jcl-stack-trace/jcl/packages/d6/JclStackTraceViewerExpertDLL.res branches/jcl-stack-trace/jcl/packages/d7/JclStackTraceViewerExpert.dof branches/jcl-stack-trace/jcl/packages/d7/JclStackTraceViewerExpert.dpk branches/jcl-stack-trace/jcl/packages/d7/JclStackTraceViewerExpert.rc branches/jcl-stack-trace/jcl/packages/d7/JclStackTraceViewerExpert.res branches/jcl-stack-trace/jcl/packages/d7/JclStackTraceViewerExpertDLL.dof branches/jcl-stack-trace/jcl/packages/d7/JclStackTraceViewerExpertDLL.dpr branches/jcl-stack-trace/jcl/packages/d7/JclStackTraceViewerExpertDLL.rc branches/jcl-stack-trace/jcl/packages/d7/JclStackTraceViewerExpertDLL.res branches/jcl-stack-trace/jcl/packages/d9/JclStackTraceViewerExpert.bdsproj branches/jcl-stack-trace/jcl/packages/d9/JclStackTraceViewerExpert.dpk branches/jcl-stack-trace/jcl/packages/d9/JclStackTraceViewerExpert.rc branches/jcl-stack-trace/jcl/packages/d9/JclStackTraceViewerExpert.res branches/jcl-stack-trace/jcl/packages/d9/JclStackTraceViewerExpertDLL.bdsproj branches/jcl-stack-trace/jcl/packages/d9/JclStackTraceViewerExpertDLL.dpr branches/jcl-stack-trace/jcl/packages/d9/JclStackTraceViewerExpertDLL.rc branches/jcl-stack-trace/jcl/packages/d9/JclStackTraceViewerExpertDLL.res Modified: branches/jcl-stack-trace/jcl/TODO.txt =================================================================== --- branches/jcl-stack-trace/jcl/TODO.txt 2009-06-13 11:17:03 UTC (rev 2809) +++ branches/jcl-stack-trace/jcl/TODO.txt 2009-06-13 11:36:15 UTC (rev 2810) @@ -17,7 +17,4 @@ * icon's * clean up/minor things - - use updated TJclFileEnumerator instead of TFileSearcher - -* integrate it into the installation - - commit packages for D5-D7, D9, D10 \ No newline at end of file + - use updated TJclFileEnumerator instead of TFileSearcher \ No newline at end of file Added: branches/jcl-stack-trace/jcl/packages/d10/JclStackTraceViewerExpert.bdsproj =================================================================== --- branches/jcl-stack-trace/jcl/packages/d10/JclStackTraceViewerExpert.bdsproj (rev 0) +++ branches/jcl-stack-trace/jcl/packages/d10/JclStackTraceViewerExpert.bdsproj 2009-06-13 11:36:15 UTC (rev 2810) @@ -0,0 +1,163 @@ +<?xml version="1.0" encoding="utf-8"?> +<BorlandProject> + <PersonalityInfo> + <Option> + <Option Name="Personality">Delphi.Personality</Option> + <Option Name="ProjectType"></Option> + <Option Name="Version">1.0</Option> + <Option Name="GUID">{85153A85-6CA4-4CD5-92E6-C39A5C5161E2}</Option> + </Option> + </PersonalityInfo> + <Delphi.Personality> + <Source> + <Source Name="MainSource">JclStackTraceViewerExpert.dpk</Source> + </Source> + <FileVersion> + <FileVersion Name="Version">7.0</FileVersion> + </FileVersion> + <Compiler> + <Compiler Name="A">8</Compiler> + <Compiler Name="B">0</Compiler> + <Compiler Name="C">0</Compiler> + <Compiler Name="D">0</Compiler> + <Compiler Name="E">0</Compiler> + <Compiler Name="F">0</Compiler> + <Compiler Name="G">1</Compiler> + <Compiler Name="H">1</Compiler> + <Compiler Name="I">1</Compiler> + <Compiler Name="J">1</Compiler> + <Compiler Name="K">0</Compiler> + <Compiler Name="L">0</Compiler> + <Compiler Name="M">0</Compiler> + <Compiler Name="N">1</Compiler> + <Compiler Name="O">1</Compiler> + <Compiler Name="P">1</Compiler> + <Compiler Name="Q">0</Compiler> + <Compiler Name="R">1</Compiler> + <Compiler Name="S">0</Compiler> + <Compiler Name="T">0</Compiler> + <Compiler Name="U">0</Compiler> + <Compiler Name="V">1</Compiler> + <Compiler Name="W">0</Compiler> + <Compiler Name="X">1</Compiler> + <Compiler Name="Y">0</Compiler> + <Compiler Name="Z">1</Compiler> + <Compiler Name="ShowHints">True</Compiler> + <Compiler Name="ShowWarnings">True</Compiler> + <Compiler Name="UnitAliases"></Compiler> + <Compiler Name="NamespacePrefix"></Compiler> + <Compiler Name="GenerateDocumentation">False</Compiler> + <Compiler Name="DefaultNamespace"></Compiler> + <Compiler Name="SymbolDeprecated">True</Compiler> + <Compiler Name="SymbolLibrary">True</Compiler> + <Compiler Name="SymbolPlatform">True</Compiler> + <Compiler Name="SymbolExperimental">True</Compiler> + <Compiler Name="UnitLibrary">True</Compiler> + <Compiler Name="UnitPlatform">True</Compiler> + <Compiler Name="UnitDeprecated">True</Compiler> + <Compiler Name="UnitExperimental">True</Compiler> + <Compiler Name="HResultCompat">True</Compiler> + <Compiler Name="HidingMember">True</Compiler> + <Compiler Name="HiddenVirtual">True</Compiler> + <Compiler Name="Garbage">True</Compiler> + <Compiler Name="BoundsError">True</Compiler> + <Compiler Name="ZeroNilCompat">True</Compiler> + <Compiler Name="StringConstTruncated">True</Compiler> + <Compiler Name="ForLoopVarVarPar">True</Compiler> + <Compiler Name="TypedConstVarPar">True</Compiler> + <Compiler Name="AsgToTypedConst">True</Compiler> + <Compiler Name="CaseLabelRange">True</Compiler> + <Compiler Name="ForVariable">True</Compiler> + <Compiler Name="ConstructingAbstract">True</Compiler> + <Compiler Name="ComparisonFalse">True</Compiler> + <Compiler Name="ComparisonTrue">True</Compiler> + <Compiler Name="ComparingSignedUnsigned">True</Compiler> + <Compiler Name="CombiningSignedUnsigned">True</Compiler> + <Compiler Name="UnsupportedConstruct">True</Compiler> + <Compiler Name="FileOpen">True</Compiler> + <Compiler Name="FileOpenUnitSrc">True</Compiler> + <Compiler Name="BadGlobalSymbol">True</Compiler> + <Compiler Name="DuplicateConstructorDestructor">True</Compiler> + <Compiler Name="InvalidDirective">True</Compiler> + <Compiler Name="PackageNoLink">True</Compiler> + <Compiler Name="PackageThreadVar">True</Compiler> + <Compiler Name="ImplicitImport">True</Compiler> + <Compiler Name="HPPEMITIgnored">True</Compiler> + <Compiler Name="NoRetVal">True</Compiler> + <Compiler Name="UseBeforeDef">True</Compiler> + <Compiler Name="ForLoopVarUndef">True</Compiler> + <Compiler Name="UnitNameMismatch">True</Compiler> + <Compiler Name="NoCFGFileFound">True</Compiler> + <Compiler Name="MessageDirective">True</Compiler> + <Compiler Name="ImplicitVariants">True</Compiler> + <Compiler Name="UnicodeToLocale">True</Compiler> + <Compiler Name="LocaleToUnicode">True</Compiler> + <Compiler Name="ImagebaseMultiple">True</Compiler> + <Compiler Name="SuspiciousTypecast">True</Compiler> + <Compiler Name="PrivatePropAccessor">True</Compiler> + <Compiler Name="UnsafeType">True</Compiler> + <Compiler Name="UnsafeCode">True</Compiler> + <Compiler Name="UnsafeCast">True</Compiler> + <Compiler Name="OptionTruncated">True</Compiler> + <Compiler Name="WideCharReduced">True</Compiler> + <Compiler Name="DuplicatesIgnored">True</Compiler> + <Compiler Name="UnitInitSeq">True</Compiler> + <Compiler Name="LocalPInvoke">True</Compiler> + <Compiler Name="CodePage"></Compiler> + </Compiler> + <Linker> + <Linker Name="MapFile">0</Linker> + <Linker Name="OutputObjs">44</Linker> + <Linker Name="ConsoleApp">1</Linker> + <Linker Name="DebugInfo">False</Linker> + <Linker Name="RemoteSymbols">False</Linker> + <Linker Name="GenerateDRC">False</Linker> + <Linker Name="MinStackSize">16384</Linker> + <Linker Name="MaxStackSize">1048576</Linker> + <Linker Name="ImageBase">$58120000</Linker> + <Linker Name="ExeDescription">JCL Stack Trace Viewer</Linker> + <Linker Name="GenerateHpps">True</Linker> + </Linker> + <Directories> + <Directories Name="UnitOutputDir">..\..\lib\d10</Directories> + <Directories Name="SearchPath">..\..\lib\d10;..\..\source\include</Directories> + <Directories Name="OutputDir"></Directories> + <Directories Name="PackageDLLOutputDir"></Directories> + <Directories Name="PackageDCPOutputDir">..\..\lib\d10</Directories> + <Directories Name="Packages">rtl;vcl;designide;Jcl;JclBaseExpert</Directories> + <Directories Name="Conditionals">BCB;RELEASE</Directories> + <Directories Name="DebugSourceDirs"></Directories> + <Directories Name="UsePackages">True</Directories> + </Directories> + <Parameters> + </Parameters> + <Language> + </Language> + <VersionInfo> + <VersionInfo Name="IncludeVerInfo">True</VersionInfo> + <VersionInfo Name="AutoIncBuild">False</VersionInfo> + <VersionInfo Name="MajorVer">1</VersionInfo> + <VersionInfo Name="MinorVer">105</VersionInfo> + <VersionInfo Name="Release">0</VersionInfo> + <VersionInfo Name="Build">3249</VersionInfo> + <VersionInfo Name="Debug">False</VersionInfo> + <VersionInfo Name="PreRelease">False</VersionInfo> + <VersionInfo Name="Special">False</VersionInfo> + <VersionInfo Name="Private">False</VersionInfo> + <VersionInfo Name="DLL">False</VersionInfo> + <VersionInfo Name="Locale">1053</VersionInfo> + <VersionInfo Name="CodePage">1252</VersionInfo> + </VersionInfo> + <VersionInfoKeys> + <VersionInfoKeys Name="CompanyName">Project JEDI</VersionInfoKeys> + <VersionInfoKeys Name="FileDescription">JCL Stack Trace Viewer</VersionInfoKeys> + <VersionInfoKeys Name="FileVersion">1.105.0.3249</VersionInfoKeys> + <VersionInfoKeys Name="InternalName">JclStackTraceViewerExpert</VersionInfoKeys> + <VersionInfoKeys Name="LegalCopyright">Copyright (C) 1999, 2008 Project JEDI</VersionInfoKeys> + <VersionInfoKeys Name="LegalTrademarks"></VersionInfoKeys> + <VersionInfoKeys Name="OriginalFilename">JclStackTraceViewerExpert100.bpl</VersionInfoKeys> + <VersionInfoKeys Name="ProductName">JEDI Code Library</VersionInfoKeys> + <VersionInfoKeys Name="ProductVersion">1.105 Build 3249</VersionInfoKeys> + </VersionInfoKeys> + </Delphi.Personality> +</BorlandProject> Added: branches/jcl-stack-trace/jcl/packages/d10/JclStackTraceViewerExpert.dpk =================================================================== --- branches/jcl-stack-trace/jcl/packages/d10/JclStackTraceViewerExpert.dpk (rev 0) +++ branches/jcl-stack-trace/jcl/packages/d10/JclStackTraceViewerExpert.dpk 2009-06-13 11:36:15 UTC (rev 2810) @@ -0,0 +1,68 @@ +package JclStackTraceViewerExpert; +{ +----------------------------------------------------------------------------- + DO NOT EDIT THIS FILE, IT IS GENERATED BY THE PACKAGE GENERATOR + ALWAYS EDIT THE RELATED XML FILE (JclStackTraceViewerExpert-D.xml) + + Last generated: 13-06-2009 11:28:21 UTC +----------------------------------------------------------------------------- +} + +{$R *.res} +{$ALIGN 8} +{$ASSERTIONS ON} +{$BOOLEVAL OFF} +{$DEBUGINFO OFF} +{$EXTENDEDSYNTAX ON} +{$IMPORTEDDATA ON} +{$IOCHECKS ON} +{$LOCALSYMBOLS OFF} +{$LONGSTRINGS ON} +{$OPENSTRINGS ON} +{$OPTIMIZATION ON} +{$OVERFLOWCHECKS OFF} +{$RANGECHECKS OFF} +{$REFERENCEINFO OFF} +{$SAFEDIVIDE OFF} +{$STACKFRAMES OFF} +{$TYPEDADDRESS OFF} +{$VARSTRINGCHECKS ON} +{$WRITEABLECONST ON} +{$MINENUMSIZE 1} +{$IMAGEBASE $58120000} +{$DESCRIPTION 'JCL Stack Trace Viewer'} +{$LIBSUFFIX '100'} +{$DESIGNONLY} +{$IMPLICITBUILD OFF} + +{$DEFINE BCB} +{$DEFINE RELEASE} + +requires + rtl, + vcl, + designide, + Jcl, + JclBaseExpert + ; + +contains + JclStackTraceViewerImpl in '..\..\experts\stacktraceviewer\JclStackTraceViewerImpl.pas' , + JclStackTraceViewerExceptInfoFrame in '..\..\experts\stacktraceviewer\JclStackTraceViewerExceptInfoFrame.pas' {frmException: TFrame}, + JclStackTraceViewerStackFrame in '..\..\experts\stacktraceviewer\JclStackTraceViewerStackFrame.pas' {frmStack: TFrame}, + JclStackTraceViewerThreadFrame in '..\..\experts\stacktraceviewer\JclStackTraceViewerThreadFrame.pas' {frmThread: TFrame}, + JclStackTraceViewerModuleFrame in '..\..\experts\stacktraceviewer\JclStackTraceViewerModuleFrame.pas' {frmModule: TFrame}, + JclStackTraceViewerMainFormBDS in '..\..\experts\stacktraceviewer\JclStackTraceViewerMainFormBDS.pas' {frmStackView}, + JclStackTraceViewerMainFrame in '..\..\experts\stacktraceviewer\JclStackTraceViewerMainFrame.pas' {frmMain: TFrame}, + JclStackTraceViewerConfigFrame in '..\..\experts\stacktraceviewer\JclStackTraceViewerConfigFrame.pas' {JclStackTraceViewerConfigFrame: TFrame}, + JclStackTraceViewerClasses in '..\..\experts\stacktraceviewer\JclStackTraceViewerClasses.pas' , + JclStackTraceViewerStackCodeUtils in '..\..\experts\stacktraceviewer\JclStackTraceViewerStackCodeUtils.pas' , + JclStackTraceViewerOptions in '..\..\experts\stacktraceviewer\JclStackTraceViewerOptions.pas' , + JclStackTraceViewerAPIImpl in '..\..\experts\stacktraceviewer\JclStackTraceViewerAPIImpl.pas' , + JclStackTraceViewerAPI in '..\..\experts\stacktraceviewer\JclStackTraceViewerAPI.pas' , + JclStackTraceViewerStackUtils in '..\..\experts\stacktraceviewer\JclStackTraceViewerStackUtils.pas' , + JclDebugSerialization in '..\..\experts\stacktraceviewer\JclDebugSerialization.pas' , + JclDebugXMLDeserializer in '..\..\experts\stacktraceviewer\JclDebugXMLDeserializer.pas' + ; + +end. Added: branches/jcl-stack-trace/jcl/packages/d10/JclStackTraceViewerExpert.rc =================================================================== --- branches/jcl-stack-trace/jcl/packages/d10/JclStackTraceViewerExpert.rc (rev 0) +++ branches/jcl-stack-trace/jcl/packages/d10/JclStackTraceViewerExpert.rc 2009-06-13 11:36:15 UTC (rev 2810) @@ -0,0 +1,32 @@ +VS_VERSION_INFO VERSIONINFO +FILEVERSION 1,105,0,3249 +PRODUCTVERSION 1,105,0,3249 + FILEFLAGSMASK VS_FFI_FILEFLAGSMASK +#ifdef _DEBUG + FILEFLAGS VS_FF_DEBUG +#else + FILEFLAGS 0x0L +#endif + FILEOS VOS__WINDOWS32 + FILETYPE VFT_DLL + FILESUBTYPE 0x0L +BEGIN + BLOCK "StringFileInfo" + BEGIN + BLOCK "040904E4" + BEGIN + VALUE "CompanyName", "Project JEDI\0" + VALUE "FileDescription", "JCL Stack Trace Viewer\0" + VALUE "FileVersion", "1.105.0.3249\0" + VALUE "InternalName", "JclStackTraceViewerExpert\0" + VALUE "LegalCopyright", "Copyright (C) 1999, 2008 Project JEDI\0" + VALUE "OriginalFilename", "JclStackTraceViewerExpert100.bpl\0" + VALUE "ProductName", "JEDI Code Library\0" + VALUE "ProductVersion", "1.105 Build 3249\0" + END + END + BLOCK "VarFileInfo" + BEGIN + VALUE "Translation", 0x0409, 1252 + END +END Added: branches/jcl-stack-trace/jcl/packages/d10/JclStackTraceViewerExpert.res =================================================================== (Binary files differ) Property changes on: branches/jcl-stack-trace/jcl/packages/d10/JclStackTraceViewerExpert.res ___________________________________________________________________ Added: svn:mime-type + application/octet-stream Added: branches/jcl-stack-trace/jcl/packages/d10/JclStackTraceViewerExpertDLL.bdsproj =================================================================== --- branches/jcl-stack-trace/jcl/packages/d10/JclStackTraceViewerExpertDLL.bdsproj (rev 0) +++ branches/jcl-stack-trace/jcl/packages/d10/JclStackTraceViewerExpertDLL.bdsproj 2009-06-13 11:36:15 UTC (rev 2810) @@ -0,0 +1,163 @@ +<?xml version="1.0" encoding="utf-8"?> +<BorlandProject> + <PersonalityInfo> + <Option> + <Option Name="Personality">Delphi.Personality</Option> + <Option Name="ProjectType"></Option> + <Option Name="Version">1.0</Option> + <Option Name="GUID">{851E8773-ADE0-479D-94F9-FE3AAB64A847}</Option> + </Option> + </PersonalityInfo> + <Delphi.Personality> + <Source> + <Source Name="MainSource">JclStackTraceViewerExpertDLL.dpr</Source> + </Source> + <FileVersion> + <FileVersion Name="Version">7.0</FileVersion> + </FileVersion> + <Compiler> + <Compiler Name="A">8</Compiler> + <Compiler Name="B">0</Compiler> + <Compiler Name="C">0</Compiler> + <Compiler Name="D">0</Compiler> + <Compiler Name="E">0</Compiler> + <Compiler Name="F">0</Compiler> + <Compiler Name="G">1</Compiler> + <Compiler Name="H">1</Compiler> + <Compiler Name="I">1</Compiler> + <Compiler Name="J">1</Compiler> + <Compiler Name="K">0</Compiler> + <Compiler Name="L">0</Compiler> + <Compiler Name="M">0</Compiler> + <Compiler Name="N">1</Compiler> + <Compiler Name="O">1</Compiler> + <Compiler Name="P">1</Compiler> + <Compiler Name="Q">0</Compiler> + <Compiler Name="R">1</Compiler> + <Compiler Name="S">0</Compiler> + <Compiler Name="T">0</Compiler> + <Compiler Name="U">0</Compiler> + <Compiler Name="V">1</Compiler> + <Compiler Name="W">0</Compiler> + <Compiler Name="X">1</Compiler> + <Compiler Name="Y">0</Compiler> + <Compiler Name="Z">1</Compiler> + <Compiler Name="ShowHints">True</Compiler> + <Compiler Name="ShowWarnings">True</Compiler> + <Compiler Name="UnitAliases"></Compiler> + <Compiler Name="NamespacePrefix"></Compiler> + <Compiler Name="GenerateDocumentation">False</Compiler> + <Compiler Name="DefaultNamespace"></Compiler> + <Compiler Name="SymbolDeprecated">True</Compiler> + <Compiler Name="SymbolLibrary">True</Compiler> + <Compiler Name="SymbolPlatform">True</Compiler> + <Compiler Name="SymbolExperimental">True</Compiler> + <Compiler Name="UnitLibrary">True</Compiler> + <Compiler Name="UnitPlatform">True</Compiler> + <Compiler Name="UnitDeprecated">True</Compiler> + <Compiler Name="UnitExperimental">True</Compiler> + <Compiler Name="HResultCompat">True</Compiler> + <Compiler Name="HidingMember">True</Compiler> + <Compiler Name="HiddenVirtual">True</Compiler> + <Compiler Name="Garbage">True</Compiler> + <Compiler Name="BoundsError">True</Compiler> + <Compiler Name="ZeroNilCompat">True</Compiler> + <Compiler Name="StringConstTruncated">True</Compiler> + <Compiler Name="ForLoopVarVarPar">True</Compiler> + <Compiler Name="TypedConstVarPar">True</Compiler> + <Compiler Name="AsgToTypedConst">True</Compiler> + <Compiler Name="CaseLabelRange">True</Compiler> + <Compiler Name="ForVariable">True</Compiler> + <Compiler Name="ConstructingAbstract">True</Compiler> + <Compiler Name="ComparisonFalse">True</Compiler> + <Compiler Name="ComparisonTrue">True</Compiler> + <Compiler Name="ComparingSignedUnsigned">True</Compiler> + <Compiler Name="CombiningSignedUnsigned">True</Compiler> + <Compiler Name="UnsupportedConstruct">True</Compiler> + <Compiler Name="FileOpen">True</Compiler> + <Compiler Name="FileOpenUnitSrc">True</Compiler> + <Compiler Name="BadGlobalSymbol">True</Compiler> + <Compiler Name="DuplicateConstructorDestructor">True</Compiler> + <Compiler Name="InvalidDirective">True</Compiler> + <Compiler Name="PackageNoLink">True</Compiler> + <Compiler Name="PackageThreadVar">True</Compiler> + <Compiler Name="ImplicitImport">True</Compiler> + <Compiler Name="HPPEMITIgnored">True</Compiler> + <Compiler Name="NoRetVal">True</Compiler> + <Compiler Name="UseBeforeDef">True</Compiler> + <Compiler Name="ForLoopVarUndef">True</Compiler> + <Compiler Name="UnitNameMismatch">True</Compiler> + <Compiler Name="NoCFGFileFound">True</Compiler> + <Compiler Name="MessageDirective">True</Compiler> + <Compiler Name="ImplicitVariants">True</Compiler> + <Compiler Name="UnicodeToLocale">True</Compiler> + <Compiler Name="LocaleToUnicode">True</Compiler> + <Compiler Name="ImagebaseMultiple">True</Compiler> + <Compiler Name="SuspiciousTypecast">True</Compiler> + <Compiler Name="PrivatePropAccessor">True</Compiler> + <Compiler Name="UnsafeType">True</Compiler> + <Compiler Name="UnsafeCode">True</Compiler> + <Compiler Name="UnsafeCast">True</Compiler> + <Compiler Name="OptionTruncated">True</Compiler> + <Compiler Name="WideCharReduced">True</Compiler> + <Compiler Name="DuplicatesIgnored">True</Compiler> + <Compiler Name="UnitInitSeq">True</Compiler> + <Compiler Name="LocalPInvoke">True</Compiler> + <Compiler Name="CodePage"></Compiler> + </Compiler> + <Linker> + <Linker Name="MapFile">0</Linker> + <Linker Name="OutputObjs">44</Linker> + <Linker Name="ConsoleApp">1</Linker> + <Linker Name="DebugInfo">False</Linker> + <Linker Name="RemoteSymbols">False</Linker> + <Linker Name="GenerateDRC">False</Linker> + <Linker Name="MinStackSize">16384</Linker> + <Linker Name="MaxStackSize">1048576</Linker> + <Linker Name="ImageBase">$58120000</Linker> + <Linker Name="ExeDescription">JCL Stack Trace Viewer</Linker> + <Linker Name="GenerateHpps">False</Linker> + </Linker> + <Directories> + <Directories Name="UnitOutputDir">..\..\lib\d10</Directories> + <Directories Name="SearchPath">..\..\lib\d10;..\..\source\include</Directories> + <Directories Name="OutputDir"></Directories> + <Directories Name="PackageDLLOutputDir"></Directories> + <Directories Name="PackageDCPOutputDir">..\..\lib\d10</Directories> + <Directories Name="Packages">rtl;vcl;designide;Jcl;JclBaseExpert</Directories> + <Directories Name="Conditionals">BCB;RELEASE</Directories> + <Directories Name="DebugSourceDirs"></Directories> + <Directories Name="UsePackages">True</Directories> + </Directories> + <Parameters> + </Parameters> + <Language> + </Language> + <VersionInfo> + <VersionInfo Name="IncludeVerInfo">True</VersionInfo> + <VersionInfo Name="AutoIncBuild">False</VersionInfo> + <VersionInfo Name="MajorVer">1</VersionInfo> + <VersionInfo Name="MinorVer">105</VersionInfo> + <VersionInfo Name="Release">0</VersionInfo> + <VersionInfo Name="Build">3249</VersionInfo> + <VersionInfo Name="Debug">False</VersionInfo> + <VersionInfo Name="PreRelease">False</VersionInfo> + <VersionInfo Name="Special">False</VersionInfo> + <VersionInfo Name="Private">False</VersionInfo> + <VersionInfo Name="DLL">True</VersionInfo> + <VersionInfo Name="Locale">1053</VersionInfo> + <VersionInfo Name="CodePage">1252</VersionInfo> + </VersionInfo> + <VersionInfoKeys> + <VersionInfoKeys Name="CompanyName">Project JEDI</VersionInfoKeys> + <VersionInfoKeys Name="FileDescription">JCL Stack Trace Viewer</VersionInfoKeys> + <VersionInfoKeys Name="FileVersion">1.105.0.3249</VersionInfoKeys> + <VersionInfoKeys Name="InternalName">JclStackTraceViewerExpertDLL</VersionInfoKeys> + <VersionInfoKeys Name="LegalCopyright">Copyright (C) 1999, 2008 Project JEDI</VersionInfoKeys> + <VersionInfoKeys Name="LegalTrademarks"></VersionInfoKeys> + <VersionInfoKeys Name="OriginalFilename">JclStackTraceViewerExpertDLL100.dll</VersionInfoKeys> + <VersionInfoKeys Name="ProductName">JEDI Code Library</VersionInfoKeys> + <VersionInfoKeys Name="ProductVersion">1.105 Build 3249</VersionInfoKeys> + </VersionInfoKeys> + </Delphi.Personality> +</BorlandProject> Added: branches/jcl-stack-trace/jcl/packages/d10/JclStackTraceViewerExpertDLL.dpr =================================================================== --- branches/jcl-stack-trace/jcl/packages/d10/JclStackTraceViewerExpertDLL.dpr (rev 0) +++ branches/jcl-stack-trace/jcl/packages/d10/JclStackTraceViewerExpertDLL.dpr 2009-06-13 11:36:15 UTC (rev 2810) @@ -0,0 +1,63 @@ +Library JclStackTraceViewerExpertDLL; +{ +----------------------------------------------------------------------------- + DO NOT EDIT THIS FILE, IT IS GENERATED BY THE PACKAGE GENERATOR + ALWAYS EDIT THE RELATED XML FILE (JclStackTraceViewerExpertDLL-L.xml) + + Last generated: 13-06-2009 11:28:22 UTC +----------------------------------------------------------------------------- +} + +{$R *.res} +{$ALIGN 8} +{$ASSERTIONS ON} +{$BOOLEVAL OFF} +{$DEBUGINFO OFF} +{$EXTENDEDSYNTAX ON} +{$IMPORTEDDATA ON} +{$IOCHECKS ON} +{$LOCALSYMBOLS OFF} +{$LONGSTRINGS ON} +{$OPENSTRINGS ON} +{$OPTIMIZATION ON} +{$OVERFLOWCHECKS OFF} +{$RANGECHECKS OFF} +{$REFERENCEINFO OFF} +{$SAFEDIVIDE OFF} +{$STACKFRAMES OFF} +{$TYPEDADDRESS OFF} +{$VARSTRINGCHECKS ON} +{$WRITEABLECONST ON} +{$MINENUMSIZE 1} +{$IMAGEBASE $58120000} +{$DESCRIPTION 'JCL Stack Trace Viewer'} +{$LIBSUFFIX '100'} +{$IMPLICITBUILD OFF} + +{$DEFINE BCB} +{$DEFINE RELEASE} + +uses + ToolsAPI, + JclStackTraceViewerImpl in '..\..\experts\stacktraceviewer\JclStackTraceViewerImpl.pas' , + JclStackTraceViewerExceptInfoFrame in '..\..\experts\stacktraceviewer\JclStackTraceViewerExceptInfoFrame.pas' {frmException: TFrame}, + JclStackTraceViewerStackFrame in '..\..\experts\stacktraceviewer\JclStackTraceViewerStackFrame.pas' {frmStack: TFrame}, + JclStackTraceViewerThreadFrame in '..\..\experts\stacktraceviewer\JclStackTraceViewerThreadFrame.pas' {frmThread: TFrame}, + JclStackTraceViewerModuleFrame in '..\..\experts\stacktraceviewer\JclStackTraceViewerModuleFrame.pas' {frmModule: TFrame}, + JclStackTraceViewerMainFormBDS in '..\..\experts\stacktraceviewer\JclStackTraceViewerMainFormBDS.pas' {frmStackView}, + JclStackTraceViewerMainFrame in '..\..\experts\stacktraceviewer\JclStackTraceViewerMainFrame.pas' {frmMain: TFrame}, + JclStackTraceViewerConfigFrame in '..\..\experts\stacktraceviewer\JclStackTraceViewerConfigFrame.pas' {JclStackTraceViewerConfigFrame: TFrame}, + JclStackTraceViewerClasses in '..\..\experts\stacktraceviewer\JclStackTraceViewerClasses.pas' , + JclStackTraceViewerStackCodeUtils in '..\..\experts\stacktraceviewer\JclStackTraceViewerStackCodeUtils.pas' , + JclStackTraceViewerOptions in '..\..\experts\stacktraceviewer\JclStackTraceViewerOptions.pas' , + JclStackTraceViewerAPIImpl in '..\..\experts\stacktraceviewer\JclStackTraceViewerAPIImpl.pas' , + JclStackTraceViewerAPI in '..\..\experts\stacktraceviewer\JclStackTraceViewerAPI.pas' , + JclStackTraceViewerStackUtils in '..\..\experts\stacktraceviewer\JclStackTraceViewerStackUtils.pas' , + JclDebugSerialization in '..\..\experts\stacktraceviewer\JclDebugSerialization.pas' , + JclDebugXMLDeserializer in '..\..\experts\stacktraceviewer\JclDebugXMLDeserializer.pas' + ; + +exports + JCLWizardInit name WizardEntryPoint; + +end. Added: branches/jcl-stack-trace/jcl/packages/d10/JclStackTraceViewerExpertDLL.rc =================================================================== --- branches/jcl-stack-trace/jcl/packages/d10/JclStackTraceViewerExpertDLL.rc (rev 0) +++ branches/jcl-stack-trace/jcl/packages/d10/JclStackTraceViewerExpertDLL.rc 2009-06-13 11:36:15 UTC (rev 2810) @@ -0,0 +1,32 @@ +VS_VERSION_INFO VERSIONINFO +FILEVERSION 1,105,0,3249 +PRODUCTVERSION 1,105,0,3249 + FILEFLAGSMASK VS_FFI_FILEFLAGSMASK +#ifdef _DEBUG + FILEFLAGS VS_FF_DEBUG +#else + FILEFLAGS 0x0L +#endif + FILEOS VOS__WINDOWS32 + FILETYPE VFT_DLL + FILESUBTYPE 0x0L +BEGIN + BLOCK "StringFileInfo" + BEGIN + BLOCK "040904E4" + BEGIN + VALUE "CompanyName", "Project JEDI\0" + VALUE "FileDescription", "JCL Stack Trace Viewer\0" + VALUE "FileVersion", "1.105.0.3249\0" + VALUE "InternalName", "JclStackTraceViewerExpertDLL\0" + VALUE "LegalCopyright", "Copyright (C) 1999, 2008 Project JEDI\0" + VALUE "OriginalFilename", "JclStackTraceViewerExpertDLL100.dll\0" + VALUE "ProductName", "JEDI Code Library\0" + VALUE "ProductVersion", "1.105 Build 3249\0" + END + END + BLOCK "VarFileInfo" + BEGIN + VALUE "Translation", 0x0409, 1252 + END +END Added: branches/jcl-stack-trace/jcl/packages/d10/JclStackTraceViewerExpertDLL.res =================================================================== (Binary files differ) Property changes on: branches/jcl-stack-trace/jcl/packages/d10/JclStackTraceViewerExpertDLL.res ___________________________________________________________________ Added: svn:mime-type + application/octet-stream Added: branches/jcl-stack-trace/jcl/packages/d5/JclStackTraceViewerExpertD50.dof =================================================================== --- branches/jcl-stack-trace/jcl/packages/d5/JclStackTraceViewerExpertD50.dof (rev 0) +++ branches/jcl-stack-trace/jcl/packages/d5/JclStackTraceViewerExpertD50.dof 2009-06-13 11:36:15 UTC (rev 2810) @@ -0,0 +1,5 @@ +[Directories] +UnitOutputDir=..\..\lib\d5 +SearchPath=..\..\source\include;..\..\experts\common +Conditionals=RELEASE + Added: branches/jcl-stack-trace/jcl/packages/d5/JclStackTraceViewerExpertD50.dpk =================================================================== --- branches/jcl-stack-trace/jcl/packages/d5/JclStackTraceViewerExpertD50.dpk (rev 0) +++ branches/jcl-stack-trace/jcl/packages/d5/JclStackTraceViewerExpertD50.dpk 2009-06-13 11:36:15 UTC (rev 2810) @@ -0,0 +1,65 @@ +package JclStackTraceViewerExpertD50; +{ +----------------------------------------------------------------------------- + DO NOT EDIT THIS FILE, IT IS GENERATED BY THE PACKAGE GENERATOR + ALWAYS EDIT THE RELATED XML FILE (JclStackTraceViewerExpert-D.xml) + + Last generated: 13-06-2009 11:28:19 UTC +----------------------------------------------------------------------------- +} + +{$R *.res} +{$ALIGN ON} +{$ASSERTIONS ON} +{$BOOLEVAL OFF} +{$DEBUGINFO OFF} +{$EXTENDEDSYNTAX ON} +{$IMPORTEDDATA ON} +{$IOCHECKS ON} +{$LOCALSYMBOLS OFF} +{$LONGSTRINGS ON} +{$OPENSTRINGS ON} +{$OPTIMIZATION ON} +{$OVERFLOWCHECKS OFF} +{$RANGECHECKS OFF} +{$REFERENCEINFO OFF} +{$SAFEDIVIDE OFF} +{$STACKFRAMES OFF} +{$TYPEDADDRESS OFF} +{$VARSTRINGCHECKS ON} +{$WRITEABLECONST OFF} +{$MINENUMSIZE 1} +{$IMAGEBASE $58120000} +{$DESCRIPTION 'JCL Stack Trace Viewer'} +{$DESIGNONLY} +{$IMPLICITBUILD OFF} + +{$DEFINE RELEASE} + +requires + vcl50, + dsnide50, + JclD50, + JclBaseExpertD50 + ; + +contains + JclStackTraceViewerImpl in '..\..\experts\stacktraceviewer\JclStackTraceViewerImpl.pas' , + JclStackTraceViewerExceptInfoFrame in '..\..\experts\stacktraceviewer\JclStackTraceViewerExceptInfoFrame.pas' {frmException: TFrame}, + JclStackTraceViewerStackFrame in '..\..\experts\stacktraceviewer\JclStackTraceViewerStackFrame.pas' {frmStack: TFrame}, + JclStackTraceViewerThreadFrame in '..\..\experts\stacktraceviewer\JclStackTraceViewerThreadFrame.pas' {frmThread: TFrame}, + JclStackTraceViewerModuleFrame in '..\..\experts\stacktraceviewer\JclStackTraceViewerModuleFrame.pas' {frmModule: TFrame}, + JclStackTraceViewerMainFormDelphi in '..\..\experts\stacktraceviewer\JclStackTraceViewerMainFormDelphi.pas' {frmStackView}, + JclStackTraceViewerMainFrame in '..\..\experts\stacktraceviewer\JclStackTraceViewerMainFrame.pas' {frmMain: TFrame}, + JclStackTraceViewerConfigFrame in '..\..\experts\stacktraceviewer\JclStackTraceViewerConfigFrame.pas' {JclStackTraceViewerConfigFrame: TFrame}, + JclStackTraceViewerClasses in '..\..\experts\stacktraceviewer\JclStackTraceViewerClasses.pas' , + JclStackTraceViewerStackCodeUtils in '..\..\experts\stacktraceviewer\JclStackTraceViewerStackCodeUtils.pas' , + JclStackTraceViewerOptions in '..\..\experts\stacktraceviewer\JclStackTraceViewerOptions.pas' , + JclStackTraceViewerAPIImpl in '..\..\experts\stacktraceviewer\JclStackTraceViewerAPIImpl.pas' , + JclStackTraceViewerAPI in '..\..\experts\stacktraceviewer\JclStackTraceViewerAPI.pas' , + JclStackTraceViewerStackUtils in '..\..\experts\stacktraceviewer\JclStackTraceViewerStackUtils.pas' , + JclDebugSerialization in '..\..\experts\stacktraceviewer\JclDebugSerialization.pas' , + JclDebugXMLDeserializer in '..\..\experts\stacktraceviewer\JclDebugXMLDeserializer.pas' + ; + +end. Added: branches/jcl-stack-trace/jcl/packages/d5/JclStackTraceViewerExpertD50.rc =================================================================== --- branches/jcl-stack-trace/jcl/packages/d5/JclStackTraceViewerExpertD50.rc (rev 0) +++ branches/jcl-stack-trace/jcl/packages/d5/JclStackTraceViewerExpertD50.rc 2009-06-13 11:36:15 UTC (rev 2810) @@ -0,0 +1,32 @@ +VS_VERSION_INFO VERSIONINFO +FILEVERSION 1,105,0,3249 +PRODUCTVERSION 1,105,0,3249 + FILEFLAGSMASK VS_FFI_FILEFLAGSMASK +#ifdef _DEBUG + FILEFLAGS VS_FF_DEBUG +#else + FILEFLAGS 0x0L +#endif + FILEOS VOS__WINDOWS32 + FILETYPE VFT_DLL + FILESUBTYPE 0x0L +BEGIN + BLOCK "StringFileInfo" + BEGIN + BLOCK "040904E4" + BEGIN + VALUE "CompanyName", "Project JEDI\0" + VALUE "FileDescription", "JCL Stack Trace Viewer\0" + VALUE "FileVersion", "1.105.0.3249\0" + VALUE "InternalName", "JclStackTraceViewerExpertD50\0" + VALUE "LegalCopyright", "Copyright (C) 1999, 2008 Project JEDI\0" + VALUE "OriginalFilename", "JclStackTraceViewerExpertD50D50.bpl\0" + VALUE "ProductName", "JEDI Code Library\0" + VALUE "ProductVersion", "1.105 Build 3249\0" + END + END + BLOCK "VarFileInfo" + BEGIN + VALUE "Translation", 0x0409, 1252 + END +END Added: branches/jcl-stack-trace/jcl/packages/d5/JclStackTraceViewerExpertD50.res =================================================================== (Binary files differ) Property changes on: branches/jcl-stack-trace/jcl/packages/d5/JclStackTraceViewerExpertD50.res ___________________________________________________________________ Added: svn:mime-type + application/octet-stream Added: branches/jcl-stack-trace/jcl/packages/d5/JclStackTraceViewerExpertDLLD50.dof =================================================================== --- branches/jcl-stack-trace/jcl/packages/d5/JclStackTraceViewerExpertDLLD50.dof (rev 0) +++ branches/jcl-stack-trace/jcl/packages/d5/JclStackTraceViewerExpertDLLD50.dof 2009-06-13 11:36:15 UTC (rev 2810) @@ -0,0 +1,9 @@ +[Directories] +UnitOutputDir=..\..\lib\d5 +SearchPath=..\..\source\include;..\..\experts\common +Conditionals=RELEASE +[Compiler] +PackageNoLink=1 +[Linker] +Packages=vcl50;dsnide50;JclD50;JclBaseExpertD50 + Added: branches/jcl-stack-trace/jcl/packages/d5/JclStackTraceViewerExpertDLLD50.dpr =================================================================== --- branches/jcl-stack-trace/jcl/packages/d5/JclStackTraceViewerExpertDLLD50.dpr (rev 0) +++ branches/jcl-stack-trace/jcl/packages/d5/JclStackTraceViewerExpertDLLD50.dpr 2009-06-13 11:36:15 UTC (rev 2810) @@ -0,0 +1,61 @@ +Library JclStackTraceViewerExpertDLLD50; +{ +----------------------------------------------------------------------------- + DO NOT EDIT THIS FILE, IT IS GENERATED BY THE PACKAGE GENERATOR + ALWAYS EDIT THE RELATED XML FILE (JclStackTraceViewerExpertDLL-L.xml) + + Last generated: 13-06-2009 11:28:19 UTC +----------------------------------------------------------------------------- +} + +{$R *.res} +{$ALIGN ON} +{$ASSERTIONS ON} +{$BOOLEVAL OFF} +{$DEBUGINFO OFF} +{$EXTENDEDSYNTAX ON} +{$IMPORTEDDATA ON} +{$IOCHECKS ON} +{$LOCALSYMBOLS OFF} +{$LONGSTRINGS ON} +{$OPENSTRINGS ON} +{$OPTIMIZATION ON} +{$OVERFLOWCHECKS OFF} +{$RANGECHECKS OFF} +{$REFERENCEINFO OFF} +{$SAFEDIVIDE OFF} +{$STACKFRAMES OFF} +{$TYPEDADDRESS OFF} +{$VARSTRINGCHECKS ON} +{$WRITEABLECONST OFF} +{$MINENUMSIZE 1} +{$IMAGEBASE $58120000} +{$DESCRIPTION 'JCL Stack Trace Viewer'} +{$IMPLICITBUILD OFF} + +{$DEFINE RELEASE} + +uses + ToolsAPI, + JclStackTraceViewerImpl in '..\..\experts\stacktraceviewer\JclStackTraceViewerImpl.pas' , + JclStackTraceViewerExceptInfoFrame in '..\..\experts\stacktraceviewer\JclStackTraceViewerExceptInfoFrame.pas' {frmException: TFrame}, + JclStackTraceViewerStackFrame in '..\..\experts\stacktraceviewer\JclStackTraceViewerStackFrame.pas' {frmStack: TFrame}, + JclStackTraceViewerThreadFrame in '..\..\experts\stacktraceviewer\JclStackTraceViewerThreadFrame.pas' {frmThread: TFrame}, + JclStackTraceViewerModuleFrame in '..\..\experts\stacktraceviewer\JclStackTraceViewerModuleFrame.pas' {frmModule: TFrame}, + JclStackTraceViewerMainFormDelphi in '..\..\experts\stacktraceviewer\JclStackTraceViewerMainFormDelphi.pas' {frmStackView}, + JclStackTraceViewerMainFrame in '..\..\experts\stacktraceviewer\JclStackTraceViewerMainFrame.pas' {frmMain: TFrame}, + JclStackTraceViewerConfigFrame in '..\..\experts\stacktraceviewer\JclStackTraceViewerConfigFrame.pas' {JclStackTraceViewerConfigFrame: TFrame}, + JclStackTraceViewerClasses in '..\..\experts\stacktraceviewer\JclStackTraceViewerClasses.pas' , + JclStackTraceViewerStackCodeUtils in '..\..\experts\stacktraceviewer\JclStackTraceViewerStackCodeUtils.pas' , + JclStackTraceViewerOptions in '..\..\experts\stacktraceviewer\JclStackTraceViewerOptions.pas' , + JclStackTraceViewerAPIImpl in '..\..\experts\stacktraceviewer\JclStackTraceViewerAPIImpl.pas' , + JclStackTraceViewerAPI in '..\..\experts\stacktraceviewer\JclStackTraceViewerAPI.pas' , + JclStackTraceViewerStackUtils in '..\..\experts\stacktraceviewer\JclStackTraceViewerStackUtils.pas' , + JclDebugSerialization in '..\..\experts\stacktraceviewer\JclDebugSerialization.pas' , + JclDebugXMLDeserializer in '..\..\experts\stacktraceviewer\JclDebugXMLDeserializer.pas' + ; + +exports + JCLWizardInit name WizardEntryPoint; + +end. Added: branches/jcl-stack-trace/jcl/packages/d5/JclStackTraceViewerExpertDLLD50.rc =================================================================== --- branches/jcl-stack-trace/jcl/packages/d5/JclStackTraceViewerExpertDLLD50.rc (rev 0) +++ branches/jcl-stack-trace/jcl/packages/d5/JclStackTraceViewerExpertDLLD50.rc 2009-06-13 11:36:15 UTC (rev 2810) @@ -0,0 +1,32 @@ +VS_VERSION_INFO VERSIONINFO +FILEVERSION 1,105,0,3249 +PRODUCTVERSION 1,105,0,3249 + FILEFLAGSMASK VS_FFI_FILEFLAGSMASK +#ifdef _DEBUG + FILEFLAGS VS_FF_DEBUG +#else + FILEFLAGS 0x0L +#endif + FILEOS VOS__WINDOWS32 + FILETYPE VFT_DLL + FILESUBTYPE 0x0L +BEGIN + BLOCK "StringFileInfo" + BEGIN + BLOCK "040904E4" + BEGIN + VALUE "CompanyName", "Project JEDI\0" + VALUE "FileDescription", "JCL Stack Trace Viewer\0" + VALUE "FileVersion", "1.105.0.3249\0" + VALUE "InternalName", "JclStackTraceViewerExpertDLLD50\0" + VALUE "LegalCopyright", "Copyright (C) 1999, 2008 Project JEDI\0" + VALUE "OriginalFilename", "JclStackTraceViewerExpertDLLD50D50.dll\0" + VALUE "ProductName", "JEDI Code Library\0" + VALUE "ProductVersion", "1.105 Build 3249\0" + END + END + BLOCK "VarFileInfo" + BEGIN + VALUE "Translation", 0x0409, 1252 + END +END Added: branches/jcl-stack-trace/jcl/packages/d5/JclStackTraceViewerExpertDLLD50.res =================================================================== (Binary files differ) Property changes on: branches/jcl-stack-trace/jcl/packages/d5/JclStackTraceViewerExpertDLLD50.res ___________________________________________________________________ Added: svn:mime-type + application/octet-stream Added: branches/jcl-stack-trace/jcl/packages/d6/JclStackTraceViewerExpert.dof =================================================================== --- branches/jcl-stack-trace/jcl/packages/d6/JclStackTraceViewerExpert.dof (rev 0) +++ branches/jcl-stack-trace/jcl/packages/d6/JclStackTraceViewerExpert.dof 2009-06-13 11:36:15 UTC (rev 2810) @@ -0,0 +1,5 @@ +[Directories] +UnitOutputDir=..\..\lib\d6 +SearchPath=..\..\source\include;..\..\experts\common +Conditionals=RELEASE + Added: branches/jcl-stack-trace/jcl/packages/d6/JclStackTraceViewerExpert.dpk =================================================================== --- branches/jcl-stack-trace/jcl/packages/d6/JclStackTraceViewerExpert.dpk (rev 0) +++ branches/jcl-stack-trace/jcl/packages/d6/JclStackTraceViewerExpert.dpk 2009-06-13 11:36:15 UTC (rev 2810) @@ -0,0 +1,67 @@ +package JclStackTraceViewerExpert; +{ +----------------------------------------------------------------------------- + DO NOT EDIT THIS FILE, IT IS GENERATED BY THE PACKAGE GENERATOR + ALWAYS EDIT THE RELATED XML FILE (JclStackTraceViewerExpert-D.xml) + + Last generated: 13-06-2009 11:28:20 UTC +----------------------------------------------------------------------------- +} + +{$R *.res} +{$ALIGN 8} +{$ASSERTIONS ON} +{$BOOLEVAL OFF} +{$DEBUGINFO OFF} +{$EXTENDEDSYNTAX ON} +{$IMPORTEDDATA ON} +{$IOCHECKS ON} +{$LOCALSYMBOLS OFF} +{$LONGSTRINGS ON} +{$OPENSTRINGS ON} +{$OPTIMIZATION ON} +{$OVERFLOWCHECKS OFF} +{$RANGECHECKS OFF} +{$REFERENCEINFO OFF} +{$SAFEDIVIDE OFF} +{$STACKFRAMES OFF} +{$TYPEDADDRESS OFF} +{$VARSTRINGCHECKS ON} +{$WRITEABLECONST OFF} +{$MINENUMSIZE 1} +{$IMAGEBASE $58120000} +{$DESCRIPTION 'JCL Stack Trace Viewer'} +{$LIBSUFFIX 'D60'} +{$DESIGNONLY} +{$IMPLICITBUILD OFF} + +{$DEFINE RELEASE} + +requires + rtl, + vcl, + designide, + Jcl, + JclBaseExpert + ; + +contains + JclStackTraceViewerImpl in '..\..\experts\stacktraceviewer\JclStackTraceViewerImpl.pas' , + JclStackTraceViewerExceptInfoFrame in '..\..\experts\stacktraceviewer\JclStackTraceViewerExceptInfoFrame.pas' {frmException: TFrame}, + JclStackTraceViewerStackFrame in '..\..\experts\stacktraceviewer\JclStackTraceViewerStackFrame.pas' {frmStack: TFrame}, + JclStackTraceViewerThreadFrame in '..\..\experts\stacktraceviewer\JclStackTraceViewerThreadFrame.pas' {frmThread: TFrame}, + JclStackTraceViewerModuleFrame in '..\..\experts\stacktraceviewer\JclStackTraceViewerModuleFrame.pas' {frmModule: TFrame}, + JclStackTraceViewerMainFormDelphi in '..\..\experts\stacktraceviewer\JclStackTraceViewerMainFormDelphi.pas' {frmStackView}, + JclStackTraceViewerMainFrame in '..\..\experts\stacktraceviewer\JclStackTraceViewerMainFrame.pas' {frmMain: TFrame}, + JclStackTraceViewerConfigFrame in '..\..\experts\stacktraceviewer\JclStackTraceViewerConfigFrame.pas' {JclStackTraceViewerConfigFrame: TFrame}, + JclStackTraceViewerClasses in '..\..\experts\stacktraceviewer\JclStackTraceViewerClasses.pas' , + JclStackTraceViewerStackCodeUtils in '..\..\experts\stacktraceviewer\JclStackTraceViewerStackCodeUtils.pas' , + JclStackTraceViewerOptions in '..\..\experts\stacktraceviewer\JclStackTraceViewerOptions.pas' , + JclStackTraceViewerAPIImpl in '..\..\experts\stacktraceviewer\JclStackTraceViewerAPIImpl.pas' , + JclStackTraceViewerAPI in '..\..\experts\stacktraceviewer\JclStackTraceViewerAPI.pas' , + JclStackTraceViewerStackUtils in '..\..\experts\stacktraceviewer\JclStackTraceViewerStackUtils.pas' , + JclDebugSerialization in '..\..\experts\stacktraceviewer\JclDebugSerialization.pas' , + JclDebugXMLDeserializer in '..\..\experts\stacktraceviewer\JclDebugXMLDeserializer.pas' + ; + +end. Added: branches/jcl-stack-trace/jcl/packages/d6/JclStackTraceViewerExpert.rc =================================================================== --- branches/jcl-stack-trace/jcl/packages/d6/JclStackTraceViewerExpert.rc (rev 0) +++ branches/jcl-stack-trace/jcl/packages/d6/JclStackTraceViewerExpert.rc 2009-06-13 11:36:15 UTC (rev 2810) @@ -0,0 +1,32 @@ +VS_VERSION_INFO VERSIONINFO +FILEVERSION 1,105,0,3249 +PRODUCTVERSION 1,105,0,3249 + FILEFLAGSMASK VS_FFI_FILEFLAGSMASK +#ifdef _DEBUG + FILEFLAGS VS_FF_DEBUG +#else + FILEFLAGS 0x0L +#endif + FILEOS VOS__WINDOWS32 + FILETYPE VFT_DLL + FILESUBTYPE 0x0L +BEGIN + BLOCK "StringFileInfo" + BEGIN + BLOCK "040904E4" + BEGIN + VALUE "CompanyName", "Project JEDI\0" + VALUE "FileDescription", "JCL Stack Trace Viewer\0" + VALUE "FileVersion", "1.105.0.3249\0" + VALUE "InternalName", "JclStackTraceViewerExpert\0" + VALUE "LegalCopyright", "Copyright (C) 1999, 2008 Project JEDI\0" + VALUE "OriginalFilename", "JclStackTraceViewerExpertD60.bpl\0" + VALUE "ProductName", "JEDI Code Library\0" + VALUE "ProductVersion", "1.105 Build 3249\0" + END + END + BLOCK "VarFileInfo" + BEGIN + VALUE "Translation", 0x0409, 1252 + END +END Added: branches/jcl-stack-trace/jcl/packages/d6/JclStackTraceViewerExpert.res =================================================================== (Binary files differ) Property changes on: branches/jcl-stack-trace/jcl/packages/d6/JclStackTraceViewerExpert.res ___________________________________________________________________ Added: svn:mime-type + application/octet-stream Added: branches/jcl-stack-trace/jcl/packages/d6/JclStackTraceViewerExpertDLL.dof =================================================================== --- branches/jcl-stack-trace/jcl/packages/d6/JclStackTraceViewerExpertDLL.dof (rev 0) +++ branches/jcl-stack-trace/jcl/packages/d6/JclStackTraceViewerExpertDLL.dof 2009-06-13 11:36:15 UTC (rev 2810) @@ -0,0 +1,9 @@ +[Directories] +UnitOutputDir=..\..\lib\d6 +SearchPath=..\..\source\include;..\..\experts\common +Conditionals=RELEASE +[Compiler] +PackageNoLink=1 +[Linker] +Packages=rtl;vcl;designide;Jcl;JclBaseExpert + Added: branches/jcl-stack-trace/jcl/packages/d6/JclStackTraceViewerExpertDLL.dpr =================================================================== --- branches/jcl-stack-trace/jcl/packages/d6/JclStackTraceViewerExpertDLL.dpr (rev 0) +++ branches/jcl-stack-trace/jcl/packages/d6/JclStackTraceViewerExpertDLL.dpr 2009-06-13 11:36:15 UTC (rev 2810) @@ -0,0 +1,62 @@ +Library JclStackTraceViewerExpertDLL; +{ +----------------------------------------------------------------------------- + DO NOT EDIT THIS FILE, IT IS GENERATED BY THE PACKAGE GENERATOR + ALWAYS EDIT THE RELATED XML FILE (JclStackTraceViewerExpertDLL-L.xml) + + Last generated: 13-06-2009 11:28:20 UTC +----------------------------------------------------------------------------- +} + +{$R *.res} +{$ALIGN 8} +{$ASSERTIONS ON} +{$BOOLEVAL OFF} +{$DEBUGINFO OFF} +{$EXTENDEDSYNTAX ON} +{$IMPORTEDDATA ON} +{$IOCHECKS ON} +{$LOCALSYMBOLS ON} +{$LONGSTRINGS ON} +{$OPENSTRINGS ON} +{$OPTIMIZATION ON} +{$OVERFLOWCHECKS OFF} +{$RANGECHECKS OFF} +{$REFERENCEINFO ON} +{$SAFEDIVIDE OFF} +{$STACKFRAMES OFF} +{$TYPEDADDRESS OFF} +{$VARSTRINGCHECKS ON} +{$WRITEABLECONST OFF} +{$MINENUMSIZE 1} +{$IMAGEBASE $58120000} +{$DESCRIPTION 'JCL Stack Trace Viewer'} +{$LIBSUFFIX 'D60'} +{$IMPLICITBUILD OFF} + +{$DEFINE RELEASE} + +uses + ToolsAPI, + JclStackTraceViewerImpl in '..\..\experts\stacktraceviewer\JclStackTraceViewerImpl.pas' , + JclStackTraceViewerExceptInfoFrame in '..\..\experts\stacktraceviewer\JclStackTraceViewerExceptInfoFrame.pas' {frmException: TFrame}, + JclStackTraceViewerStackFrame in '..\..\experts\stacktraceviewer\JclStackTraceViewerStackFrame.pas' {frmStack: TFrame}, + JclStackTraceViewerThreadFrame in '..\..\experts\stacktraceviewer\JclStackTraceViewerThreadFrame.pas' {frmThread: TFrame}, + JclStackTraceViewerModuleFrame in '..\..\experts\stacktraceviewer\JclStackTraceViewerModuleFrame.pas' {frmModule: TFrame}, + JclStackTraceViewerMainFormDelphi in '..\..\experts\stacktraceviewer\JclStackTraceViewerMainFormDelphi.pas' {frmStackView}, + JclStackTraceViewerMainFrame in '..\..\experts\stacktraceviewer\JclStackTraceViewerMainFrame.pas' {frmMain: TFrame}, + JclStackTraceViewerConfigFrame in '..\..\experts\stacktraceviewer\JclStackTraceViewerConfigFrame.pas' {JclStackTraceViewerConfigFrame: TFrame}, + JclStackTraceViewerClasses in '..\..\experts\stacktraceviewer\JclStackTraceViewerClasses.pas' , + JclStackTraceViewerStackCodeUtils in '..\..\experts\stacktraceviewer\JclStackTraceViewerStackCodeUtils.pas' , + JclStackTraceViewerOptions in '..\..\experts\stacktraceviewer\JclStackTraceViewerOptions.pas' , + JclStackTraceViewerAPIImpl in '..\..\experts\stacktraceviewer\JclStackTraceViewerAPIImpl.pas' , + JclStackTraceViewerAPI in '..\..\experts\stacktraceviewer\JclStackTraceViewerAPI.pas' , + JclStackTraceViewerStackUtils in '..\..\experts\stacktraceviewer\JclStackTraceViewerStackUtils.pas' , + JclDebugSerialization in '..\..\experts\stacktraceviewer\JclDebugSerialization.pas' , + JclDebugXMLDeserializer in '..\..\experts\stacktraceviewer\JclDebugXMLDeserializer.pas' + ; + +exports + JCLWizardInit name WizardEntryPoint; + +end. Added: branches/jcl-stack-trace/jcl/packages/d6/JclStackTraceViewerExpertDLL.rc =================================================================== --- branches/jcl-stack-trace/jcl/packages/d6/JclStackTraceViewerExpertDLL.rc (rev 0) +++ branches/jcl-stack-trace/jcl/packages/d6/JclStackTraceViewerExpertDLL.rc 2009-06-13 11:36:15 UTC (rev 2810) @@ -0,0 +1,32 @@ +VS_VERSION_INFO VERSIONINFO +FILEVERSION 1,105,0,3249 +PRODUCTVERSION 1,105,0,3249 + FILEFLAGSMASK VS_FFI_FILEFLAGSMASK +#ifdef _DEBUG + FILEFLAGS VS_FF_DEBUG +#else + FILEFLAGS 0x0L +#endif + FILEOS VOS__WINDOWS32 + FILETYPE VFT_DLL + FILESUBTYPE 0x0L +BEGIN + BLOCK "StringFileInfo" + BEGIN + BLOCK "040904E4" + BEGIN + VALUE "CompanyName", "Project JEDI\0" + VALUE "FileDescription", "JCL Stack Trace Viewer\0" + VALUE "FileVersion", "1.105.0.3249\0" + VALUE "InternalName", "JclStackTraceViewerExpertDLL\0" + VALUE "LegalCopyright", "Copyright (C) 1999, 2008 Project JEDI\0" + VALUE "OriginalFilename", "JclStackTraceViewerExpertDLLD60.dll\0" + VALUE "ProductName", "JEDI Code Library\0" + VALUE "ProductVersion", "1.105 Build 3249\0" + END + END + BLOCK "VarFileInfo" + BEGIN + VALUE "Translation", 0x0409, 1252 + END +END Added: branches/jcl-stack-trace/jcl/packages/d6/JclStackTraceViewerExpertDLL.res =================================================================== (Binary files differ) Property changes on: branches/jcl-stack-trace/jcl/packages/d6/JclStackTraceViewerExpertDLL.res ___________________________________________________________________ Added: svn:mime-type + application/octet-stream Added: branches/jcl-stack-trace/jcl/packages/d7/JclStackTraceViewerExpert.dof =================================================================== --- branches/jcl-stack-trace/jcl/packages/d7/JclStackTraceViewerExpert.dof (rev 0) +++ branches/jcl-stack-trace/jcl/packages/d7/JclStackTraceViewerExpert.dof 2009-06-13 11:36:15 UTC (rev 2810) @@ -0,0 +1,5 @@ +[Directories] +UnitOutputDir=..\..\lib\d7 +SearchPath=..\..\source\include;..\..\experts\common +Conditionals=RELEASE + Added: branches/jcl-stack-trace/jcl/packages/d7/JclStackTraceViewerExpert.dpk =================================================================== --- branches/jcl-stack-trace/jcl/packages/d7/JclStackTraceViewerExpert.dpk (rev 0) +++ branches/jcl-stack-trace/jcl/packages/d7/JclStackTraceViewerExpert.dpk 2009-06-13 11:36:15 UTC (rev 2810) @@ -0,0 +1,67 @@ +package JclStackTraceViewerExpert; +{ +----------------------------------------------------------------------------- + DO NOT EDIT THIS FILE, IT IS GENERATED BY THE PACKAGE GENERATOR + ALWAYS EDIT THE RELATED XML FILE (JclStackTraceViewerExpert-D.xml) + + Last generated: 13-06-2009 11:28:20 UTC +----------------------------------------------------------------------------- +} + +{$R *.res} +{$ALIGN 8} +{$ASSERTIONS ON} +{$BOOLEVAL OFF} +{$DEBUGINFO OFF} +{$EXTENDEDSYNTAX ON} +{$IMPORTEDDATA ON} +{$IOCHECKS ON} +{$LOCALSYMBOLS OFF} +{$LONGSTRINGS ON} +{$OPENSTRINGS ON} +{$OPTIMIZATION ON} +{$OVERFLOWCHECKS OFF} +{$RANGECHECKS OFF} +{$REFERENCEINFO OFF} +{$SAFEDIVIDE OFF} +{$STACKFRAMES OFF} +{$TYPEDADDRESS OFF} +{$VARSTRINGCHECKS ON} +{$WRITEABLECONST OFF} +{$MINENUMSIZE 1} +{$IMAGEBASE $58120000} +{$DESCRIPTION 'JCL Stack Trace Viewer'} +{$LIBSUFFIX '70'} +{$DESIGNONLY} +{$IMPLICITBUILD OFF} + +{$DEFINE RELEASE} + +requires + rtl, + vcl, + designide, + Jcl, + JclBaseExpert + ; + +contains + JclStackTraceViewerImpl in '..\..\experts\stacktraceviewer\JclStackTraceViewerImpl.pas' , + JclStackTraceViewerExceptInfoFrame in '..\..\experts\stacktraceviewer\JclStackTraceViewerExceptInfoFrame.pas' {frmException: TFrame}, + JclStackTraceViewerStackFrame in '..\..\experts\stacktraceviewer\JclStackTraceViewerStackFrame.pas' {frmStack: TFrame}, + JclStackTraceViewerThreadFrame in '..\..\experts\stacktraceviewer\JclStackTraceViewerThreadFrame.pas' {frmThread: TFrame}, + JclStackTraceViewerModuleFrame in '..\..\experts\stacktraceviewer\JclStackTraceViewerModuleFrame.pas' {frmModule: TFrame}, + JclStackTraceViewerMainFormDelphi in '..\..\experts\stacktraceviewer\JclStackTraceViewerMainFormDelphi.pas' {frmStackView}, + JclStackTraceViewerMainFrame in '..\..\experts\stacktraceviewer\JclStackTraceViewerMainFrame.pas' {frmMain: TFrame}, + JclStackTraceViewerConfigFrame in '..\..\experts\stacktraceviewer\JclStackTraceViewerConfigFrame.pas' {JclStackTraceViewerConfigFrame: TFrame}, + JclStackTraceViewerClasses in '..\..\experts\stacktraceviewer\JclStackTraceViewerClasses.pas' , + JclStackTraceViewerStackCodeUtils in '..\..\experts\stacktraceviewer\JclStackTraceViewerStackCodeUtils.pas' , + JclStackTraceViewerOptions in '..\..\experts\stacktraceviewer\JclStackTraceViewerOptions.pas' , + JclStackTraceViewerAPIImpl in '..\..\experts\stacktraceviewer\JclStackTraceViewerAPIImpl.pas' , + JclStackTraceViewerAPI in '..\..\experts\stacktraceviewer\JclStackTraceViewerAPI.pas' , + JclStackTraceViewerStackUtils in '..\..\experts\stacktraceviewer\JclStackTraceViewerStackUtils.pas' , + JclDebugSerialization in '..\..\experts\stacktraceviewer\JclDebugSerialization.pas' , + JclDebugXMLDeserializer in '..\..\experts\stacktraceviewer\JclDebugXMLDeserializer.pas' + ; + +end. Added: branches/jcl-stack-trace/jcl/packages/d7/JclStackTraceViewerExpert.rc =================================================================== --- branches/jcl-stack-trace/jcl/packages/d7/JclStackTraceViewerExpert.rc (rev 0) +++ branches/jcl-stack-trace/jcl/packages/d7/JclStackTraceViewerExpert.rc 2009-06-13 11:36:15 UTC (rev 2810) @@ -0,0 +1,32 @@ +VS_VERSION_INFO VERSIONINFO +FILEVERSION 1,105,0,3249 +PRODUCTVERSION 1,105,0,3249 + FILEFLAGSMASK VS_FFI_FILEFLAGSMASK +#ifdef _DEBUG + FILEFLAGS VS_FF_DEBUG +#else + FILEFLAGS 0x0L +#endif + FILEOS VOS__WINDOWS32 + FILETYPE VFT_DLL + FILESUBTYPE 0x0L +BEGIN + BLOCK "StringFileInfo" + BEGIN + BLOCK "040904E4" + BEGIN + VALUE "CompanyName", "Project JEDI\0" + VALUE "FileDescription", "JCL Stack Trace Viewer\0" + VALUE "FileVersion", "1.105.0.3249\0" + VALUE "InternalName", "JclStackTraceViewerExpert\0" + VALUE "LegalCopyright", "Copyright (C) 1999, 2008 Project JEDI\0" + VALUE "OriginalFilename", "JclStackTraceViewerExpert70.bpl\0" + VALUE "ProductName", "JEDI Code Library\0" + VALUE "ProductVersion", "1.105 Build 3249\0" + END + END + BLOCK "VarFileInfo" + BEGIN + VALUE "Translation", 0x0409, 1252 + END +END Added: branches/jcl-stack-trace/jcl/packages/d7/JclStackTraceViewerExpert.res =================================================================== (Binary files differ) Property changes on: branches/jcl-stack-trace/jcl/packages/d7/JclStackTraceViewerExpert.res ___________________________________________________________________ Added: svn:mime-type + application/octet-stream Added: branches/jcl-stack-trace/jcl/packages/d7/JclStackTraceViewerExpertDLL.dof =================================================================== --- branches/jcl-stack-trace/jcl/packages/d7/JclStackTraceViewerExpertDLL.dof (rev 0) +++ branches/jcl-stack-trace/jcl/packages/d7/JclStackTraceViewerExpertDLL.dof 2009-06-13 11:36:15 UTC (rev 2810) @@ -0,0 +1,9 @@ +[Directories] +UnitOutputDir=..\..\lib\d7 +SearchPath=..\..\source\include;..\..\experts\common +Conditionals=RELEASE +[Compiler] +PackageNoLink=1 +[Linker] +Packages=rtl;vcl;designide;Jcl;JclBaseExpert + Added: branches/jcl-stack-trace/jcl/packages/d7/JclStackTraceViewerExpertDLL.dpr =================================================================== --- branches/jcl-stack-trace/jcl/packages/d7/JclStackTraceViewerExpertDLL.dpr (rev 0) +++ branches/jcl-stack-trace/jcl/packages/d7/JclStackTraceViewerExpertDLL.dpr 2009-06-13 11:36:15 UTC (rev 2810) @@ -0,0 +1,62 @@ +Library JclStackTraceViewerExpertDLL; +{ +----------------------------------------------------------------------------- + DO NOT EDIT THIS FILE, IT IS GENERATED BY THE PACKAGE GENERATOR + ALWAYS EDIT THE RELATED XML FILE (JclStackTraceViewerExpertDLL-L.xml) + + Last generated: 13-06-2009 11:28:20 UTC +----------------------------------------------------------------------------- +} + +{$R *.res} +{$ALIGN 8} +{$ASSERTIONS ON} +{$BOOLEVAL OFF} +{$DEBUGINFO OFF} +{$EXTENDEDSYNTAX ON} +{$IMPORTEDDATA ON} +{$IOCHECKS ON} +{$LOCALSYMBOLS OFF} +{$LONGSTRINGS ON} +{$OPENSTRINGS ON} +{$OPTIMIZATION ON} +{$OVERFLOWCHECKS OFF} +{$RANGECHECKS OFF} +{$REFERENCEINFO OFF} +{$SAFEDIVIDE OFF} +{$STACKFRAMES OFF} +{$TYPEDADDRESS OFF} +{$VARSTRINGCHECKS ON} +{$WRITEABLECONST OFF} +{$MINENUMSIZE 1} +{$IMAGEBASE $58120000} +{$DESCRIPTION 'JCL Stack Trace Viewer'} +{$LIBSUFFIX '70'} +{$IMPLICITBUILD OFF} + +{$DEFINE RELEASE} + +uses + ToolsAPI, + JclStackTraceViewerImpl in '..\..\experts\stacktraceviewer\JclStackTraceViewerImpl.pas' , + JclStackTraceViewerExceptInfoFrame in '..\..\experts\stacktraceviewer\JclStackTraceViewerExceptInfoFrame.pas' {frmException: TFrame}, + JclStackTraceViewerStackFrame in '..\..\experts\stacktraceviewer\JclStackTraceViewerStackFrame.pas' {frmStack: TFrame}, + JclStackTraceViewerThreadFrame in '..\..\experts\stacktraceviewer\JclStackTraceViewerThreadFrame.pas' {frmThread: TFrame}, + JclStackTraceViewerModuleFrame in '..\..\experts\stacktraceviewer\JclStack... [truncated message content] |
From: <usc...@us...> - 2009-06-13 11:17:05
|
Revision: 2809 http://jcl.svn.sourceforge.net/jcl/?rev=2809&view=rev Author: uschuster Date: 2009-06-13 11:17:03 +0000 (Sat, 13 Jun 2009) Log Message: ----------- removed AsCSV Modified Paths: -------------- branches/jcl-stack-trace/jcl/TODO.txt branches/jcl-stack-trace/jcl/examples/windows/debug/mttest/JclDebugMTTestMain.dfm branches/jcl-stack-trace/jcl/examples/windows/debug/mttest/JclDebugMTTestMain.pas branches/jcl-stack-trace/jcl/experts/stacktraceviewer/JclDebugSerialization.pas branches/jcl-stack-trace/jcl/source/windows/JclDebug.pas Modified: branches/jcl-stack-trace/jcl/TODO.txt =================================================================== --- branches/jcl-stack-trace/jcl/TODO.txt 2009-06-11 22:11:17 UTC (rev 2808) +++ branches/jcl-stack-trace/jcl/TODO.txt 2009-06-13 11:17:03 UTC (rev 2809) @@ -5,9 +5,6 @@ * ? merge TJclDebugThreadInfo/TJclDebugThreadList and TJclThreadInfo/TJclThreadInfoList - investigate if the stack can stay a TJclStackInfoList and if the location information can be retrieved later correctly -* remove AsCSV - - Expert ------ * serialization Modified: branches/jcl-stack-trace/jcl/examples/windows/debug/mttest/JclDebugMTTestMain.dfm =================================================================== --- branches/jcl-stack-trace/jcl/examples/windows/debug/mttest/JclDebugMTTestMain.dfm 2009-06-11 22:11:17 UTC (rev 2808) +++ branches/jcl-stack-trace/jcl/examples/windows/debug/mttest/JclDebugMTTestMain.dfm 2009-06-13 11:17:03 UTC (rev 2809) @@ -1,9 +1,9 @@ object MTTestForm: TMTTestForm Left = 399 Top = 375 - Width = 325 - Height = 159 Caption = 'JclDebug MT Test' + ClientHeight = 123 + ClientWidth = 309 Color = clBtnFace Font.Charset = DEFAULT_CHARSET Font.Color = clWindowText @@ -20,7 +20,7 @@ Top = 8 Width = 225 Height = 25 - Caption = 'Thread Exception Test (requires 2009)' + Caption = 'Thread Exception Test (requires Delphi 2009)' TabOrder = 0 OnClick = Button1Click end Modified: branches/jcl-stack-trace/jcl/examples/windows/debug/mttest/JclDebugMTTestMain.pas =================================================================== --- branches/jcl-stack-trace/jcl/examples/windows/debug/mttest/JclDebugMTTestMain.pas 2009-06-11 22:11:17 UTC (rev 2808) +++ branches/jcl-stack-trace/jcl/examples/windows/debug/mttest/JclDebugMTTestMain.pas 2009-06-13 11:17:03 UTC (rev 2809) @@ -28,12 +28,7 @@ {$R *.dfm} -function CSVEncode(const AStr: string): string; -begin - Result := '"' + StringReplace(AStr, '"', '""', [rfReplaceAll]) + '"'; -end; - -procedure LoadedModules(ModuleList: TStrings); +procedure LoadedModules(ModuleList: TModuleList); var I: Integer; ProcessHandle: THandle; @@ -42,49 +37,6 @@ FileVersionInfo: TJclFileVersionInfo; ModuleInfoList: TJclModuleInfoList; ModuleBase: Cardinal; -begin - ProcessHandle := GetCurrentProcess; - ModuleList.Add('StartAddr;EndAddr;SystemModule;FileName;BinFileVersion;FileVersion;FileDescription'); - ModuleInfoList := TJclModuleInfoList.Create(False, False); - try - for I := 0 to ModuleInfoList.Count - 1 do - begin - ModuleBase := Cardinal(ModuleInfoList.Items[I].StartAddr); - GetModuleFileNameEx(ProcessHandle, ModuleBase, FileName, SizeOf(FileName)); - FileVersion := ''; - if (FileName <> '') and VersionResourceAvailable(FileName) then - begin - FileVersionInfo := TJclFileVersionInfo.Create(FileName); - try - BinFileVersion := FileVersionInfo.BinFileVersion; - FileVersion := FileVersionInfo.FileVersion; - FileDescription := FileVersionInfo.FileDescription; - finally - FileVersionInfo.Free; - end; - end; - if ModuleInfoList.Items[I].SystemModule then - S := '1' - else - S := '0'; - S := Format('"0x%.8x";"0x%.8x";"%s";%s;%s;%s;%s', [ModuleBase, Cardinal(ModuleInfoList.Items[I].EndAddr), S, - CSVEncode(FileName), CSVEncode(BinFileVersion), CSVEncode(FileVersion), CSVEncode(FileDescription)]); - ModuleList.Add(S); - end; - finally - ModuleInfoList.Free; - end; -end; - -procedure LoadedModulesNew(ModuleList: TModuleList); -var - I: Integer; - ProcessHandle: THandle; - FileName: array [0..Max_Path] of Char; - S, BinFileVersion, FileVersion, FileDescription: string; - FileVersionInfo: TJclFileVersionInfo; - ModuleInfoList: TJclModuleInfoList; - ModuleBase: Cardinal; Module: TModule; begin ProcessHandle := GetCurrentProcess; @@ -126,45 +78,19 @@ procedure SaveExceptInfo(AExceptObj: TObject; AThreadInfoList: TJclThreadInfoList); var - StackInfo, DetailSL: TStringList; + StackInfo: TStringList; ExceptionInfo: TExceptionInfo; XMLSerializer: TJclXMLSerializer; - I: Integer; begin - StackInfo := TStringList.Create; + ExceptionInfo := TExceptionInfo.Create; try - StackInfo.Add('Type;Data'); if AExceptObj is Exception then begin - DetailSL := TStringList.Create; - try - DetailSL.Add('ClassName;Message'); - DetailSL.Add(CSVEncode(Exception(AExceptObj).ClassName) + ';' + CSVEncode(Exception(AExceptObj).Message)); - StackInfo.Add('"Exception";' + CSVEncode(DetailSL.Text)); - finally - DetailSL.Free; - end; + ExceptionInfo.Exception.ExceptionClassName := Exception(AExceptObj).ClassName; + ExceptionInfo.Exception.ExceptionMessage := Exception(AExceptObj).Message; end; - StackInfo.Add('"ThreadInfo";' + CSVEncode(AThreadInfoList.AsCSVString)); - DetailSL := TStringList.Create; - try - LoadedModules(DetailSL); - StackInfo.Add('"Modules";' + CSVEncode(DetailSL.Text)); - finally - DetailSL.Free; - end; - StackInfo.SaveToFile('ExceptInfo.csv'); - finally - StackInfo.Free; - end; - - ExceptionInfo := TExceptionInfo.Create; - try - ExceptionInfo.Exception.ExceptionClassName := Exception(AExceptObj).ClassName; - ExceptionInfo.Exception.ExceptionMessage := Exception(AExceptObj).Message; - LoadedModulesNew(ExceptionInfo.Modules); - for I := 0 to AThreadInfoList.Count - 1 do - ExceptionInfo.ThreadInfoList.Add.Assign(AThreadInfoList[I]);//todo - implement Assign + LoadedModules(ExceptionInfo.Modules); + ExceptionInfo.ThreadInfoList.Assign(AThreadInfoList); XMLSerializer := TJclXMLSerializer.Create('ExceptInfo'); try ExceptionInfo.Serialize(XMLSerializer); @@ -214,7 +140,6 @@ ThreadName := '[MainThread]' else ThreadName := ThreadInfoList[0].Name; - //ExceptInfo := ThreadInfoList.AsCSVString; ExceptInfo := ThreadInfoList.AsString; SaveExceptInfo(AObj, ThreadInfoList); finally @@ -274,7 +199,6 @@ ThreadInfoList := TJclThreadInfoList.Create; try ThreadInfoList.Gather(TID); - //ExceptInfo := ThreadInfoList.AsCSVString; ThreadInfo := ThreadInfoList.AsString; finally ThreadInfoList.Free; Modified: branches/jcl-stack-trace/jcl/experts/stacktraceviewer/JclDebugSerialization.pas =================================================================== --- branches/jcl-stack-trace/jcl/experts/stacktraceviewer/JclDebugSerialization.pas 2009-06-11 22:11:17 UTC (rev 2808) +++ branches/jcl-stack-trace/jcl/experts/stacktraceviewer/JclDebugSerialization.pas 2009-06-13 11:17:03 UTC (rev 2809) @@ -20,9 +20,9 @@ { } {**************************************************************************************************} { } -{ Last modified: $Date:: $ } -{ Revision: $Rev:: $ } -{ Author: $Author:: $ } +{ Last modified: $Date:: $ } +{ Revision: $Rev:: $ } +{ Author: $Author:: $ } { } {**************************************************************************************************} @@ -91,7 +91,7 @@ property Stack: TJclSerializableLocationInfoList index 2 read GetStack; end; - TJclSerializableThreadInfoList = class(TObject) + TJclSerializableThreadInfoList = class(TPersistent) private FItems: TObjectList; function GetItems(AIndex: Integer): TJclSerializableThreadInfo; @@ -100,6 +100,7 @@ constructor Create; destructor Destroy; override; function Add: TJclSerializableThreadInfo; + procedure Assign(Source: TPersistent); override; procedure Clear; procedure Deserialize(ASerializer: TJclCustomSimpleSerializer); procedure Serialize(ASerializer: TJclCustomSimpleSerializer); @@ -259,6 +260,20 @@ Result := TJclSerializableThreadInfo(FItems.Last); end; +procedure TJclSerializableThreadInfoList.Assign(Source: TPersistent); +var + I: Integer; +begin + if Source is TJclThreadInfoList then + begin + Clear; + for I := 0 to TJclThreadInfoList(Source).Count - 1 do + Add.Assign(TJclThreadInfoList(Source)[I]); + end + else + inherited Assign(Source); +end; + procedure TJclSerializableThreadInfoList.Clear; begin FItems.Clear; Modified: branches/jcl-stack-trace/jcl/source/windows/JclDebug.pas =================================================================== --- branches/jcl-stack-trace/jcl/source/windows/JclDebug.pas 2009-06-11 22:11:17 UTC (rev 2808) +++ branches/jcl-stack-trace/jcl/source/windows/JclDebug.pas 2009-06-13 11:17:03 UTC (rev 2809) @@ -379,16 +379,13 @@ FVAddress: Pointer; FValues: TJclLocationInfoExValues; procedure Fill(AOptions: TJclLocationInfoListOptions); - function GetAsCSVString: string; function GetAsString: string; protected procedure AssignTo(Dest: TPersistent); override; public constructor Create(AParent: TJclCustomLocationInfoList; Address: Pointer); - class function CSVHeader: string; procedure Clear; virtual; property Address: Pointer read FAddress write FAddress; - property AsCSVString: string read GetAsCSVString; property AsString: string read GetAsString; property BinaryFileName: string read FBinaryFileName write FBinaryFileName; property DebugInfo: TJclDebugInfoSource read FDebugInfo write FDebugInfo; @@ -420,7 +417,6 @@ FItemClass: TJclLocationInfoClass; FItems: TObjectList; FOptions: TJclLocationInfoListOptions; - function GetAsCSVString: string; function GetAsString: string; function GetCount: Integer; function InternalAdd(Addr: Pointer): TJclLocationInfoEx; @@ -431,7 +427,6 @@ destructor Destroy; override; procedure AddStackInfoList(AStackInfoList: TObject); procedure Clear; - property AsCSVString: string read GetAsCSVString; property AsString: string read GetAsString; property Count: Integer read GetCount; property Options: TJclLocationInfoListOptions read FOptions write FOptions; @@ -898,31 +893,29 @@ TJclThreadInfo = class(TJclCustomThreadInfo) private - function GetAsCSVString: string; function GetAsString: string; procedure InternalFill(AThreadHandle: THandle; AThreadID: DWORD; AGatherOptions: TJclThreadInfoOptions; AExceptThread: Boolean); function GetStack(const AIndex: Integer): TJclLocationInfoList; protected function GetStackClass: TJclCustomLocationInfoListClass; override; public - class function CSVHeader: string; procedure Fill(AThreadHandle: THandle; AThreadID: DWORD; AGatherOptions: TJclThreadInfoOptions); procedure FillFromExceptThread(AGatherOptions: TJclThreadInfoOptions); - property AsCSVString: string read GetAsCSVString; property AsString: string read GetAsString; property CreationStack: TJclLocationInfoList index 1 read GetStack; property Stack: TJclLocationInfoList index 2 read GetStack; end; - TJclThreadInfoList = class(TObject) + TJclThreadInfoList = class(TPersistent) private FGatherOptions: TJclThreadInfoOptions; FItems: TObjectList; - function GetAsCSVString: string; function GetAsString: string; function GetCount: Integer; function GetItems(AIndex: Integer): TJclThreadInfo; procedure InternalGather(AIncludeThreadIDs, AExcludeThreadIDs: array of DWORD); + protected + procedure AssignTo(Dest: TPersistent); override; public constructor Create; destructor Destroy; override; @@ -931,7 +924,6 @@ procedure Gather(AExceptThreadID: DWORD); procedure GatherExclude(AThreadIDs: array of DWORD); procedure GatherInclude(AThreadIDs: array of DWORD); - property AsCSVString: string read GetAsCSVString; property AsString: string read GetAsString; property Count: Integer read GetCount; property GatherOptions: TJclThreadInfoOptions read FGatherOptions write FGatherOptions; @@ -2871,14 +2863,6 @@ Fill([]); end; -class function TJclLocationInfoEx.CSVHeader: string; -begin - Result := '"VAddress";"ModuleName";"Address";"OffsetFromProcName";"UnitName";"ProcedureName";"SourceName";"LineNumber";"OffsetFromLineNumber";"LineNumberOffsetFromProcedureStart"'; - {$IFDEF UNITVERSIONING} - Result := Result + '"Revision"'; - {$ENDIF UNITVERSIONING} -end; - procedure TJclLocationInfoEx.Fill(AOptions: TJclLocationInfoListOptions); var Info, StartProcInfo: TJclLocationInfo; @@ -2977,43 +2961,6 @@ {$ENDIF UNITVERSIONING} end; -function TJclLocationInfoEx.GetAsCSVString: string; -var - S: string; -begin - S := Format('"%p"', [VAddress]); - S := S + ';' + Format('"%s"', [ModuleName]); - S := S + ';' + Format('"%p"', [Address]); - if lievLocationInfo in FValues then - begin - S := S + Format(';"+ $%x"', [OffsetFromProcName]); - S := S + Format(';"%s"', [SourceUnitName]); - S := S + Format(';"%s"', [ProcedureName]); - S := S + Format(';"%s"', [SourceName]); - if LineNumber > 0 then - begin - S := S + Format(';"%d"', [LineNumber]); - if OffsetFromLineNumber >= 0 then - S := S + Format(';"+ $%x"', [OffsetFromLineNumber]) - else - S := S + Format(';"- $%x"', [-OffsetFromLineNumber]); - end - else - S := S + ';"";""'; - if lievProcedureStartLocationInfo in FValues then - S := S + Format(';"%d"', [LineNumberOffsetFromProcedureStart]) - else - S := S + ';""'; - end - else - S := S + ';"";"";"";"";"";"";""'; - if lievUnitVersionInfo in FValues then - S := S + Format(';"%s"', [UnitVersionRevision]) - else - S := S + ';""'; - Result := S; -end; - { TODO -oUSc : Include... better as function than property? } function TJclLocationInfoEx.GetAsString: string; const @@ -3115,22 +3062,6 @@ FItems.Clear; end; -function TJclCustomLocationInfoList.GetAsCSVString: string; -var - I: Integer; - Strings: TStringList; -begin - Strings := TStringList.Create; - try - Strings.Add(TJclLocationInfoEx.CSVHeader); - for I := 0 to Count - 1 do - Strings.Add(TJclLocationInfoEx(FItems[I]).AsCSVString); - Result := Strings.Text; - finally - Strings.Free; - end; -end; - function TJclCustomLocationInfoList.GetAsString: string; var I: Integer; @@ -5913,11 +5844,6 @@ //=== { TJclThreadInfo } ===================================================== -class function TJclThreadInfo.CSVHeader: string; -begin - Result := 'ThreadID;MainThread;Name;CreationTime;ParentThreadID;Stack;CreationStack'; -end; - procedure TJclThreadInfo.Fill(AThreadHandle: THandle; AThreadID: DWORD; AGatherOptions: TJclThreadInfoOptions); begin InternalFill(AThreadHandle, AThreadID, AGatherOptions, False); @@ -5928,35 +5854,6 @@ InternalFill(0, GetCurrentThreadID, AGatherOptions, True); end; -function TJclThreadInfo.GetAsCSVString: string; - - function CSVEncode(const AStr: string): string; - begin - Result := '"' + StringReplace(AStr, '"', '""', [rfReplaceAll]) + '"'; - end; - -begin - Result := CSVEncode(IntToStr(ThreadID)); - Result := Result + ';'; - if tioIsMainThread in Values then - Result := Result + CSVEncode('1'); - Result := Result + ';'; - if tioName in Values then - Result := Result + CSVEncode(Name); - Result := Result + ';'; - if tioCreationTime in Values then - Result := Result + CSVEncode(DateTimeToStr(CreationTime));{ TODO -oUSc : ISO format } - Result := Result + ';'; - if tioParentThreadID in Values then - Result := Result + CSVEncode(IntToStr(ParentThreadID)); - Result := Result + ';'; - if tioStack in Values then - Result := Result + CSVEncode(Stack.AsCSVString); - Result := Result + ';'; - if tioCreationStack in Values then - Result := Result + CSVEncode(CreationStack.AsCSVString); -end; - function TJclThreadInfo.GetAsString: string; var ExceptInfo, ThreadName, ThreadInfoStr: string; @@ -6071,18 +5968,24 @@ Result := TJclThreadInfo(FItems.Last); end; -procedure TJclThreadInfoList.Clear; +procedure TJclThreadInfoList.AssignTo(Dest: TPersistent); +var + I: Integer; begin - FItems.Clear; + if Dest is TJclThreadInfoList then + begin + TJclThreadInfoList(Dest).Clear; + for I := 0 to Count - 1 do + TJclThreadInfoList(Dest).Add.Assign(Items[I]); + TJclThreadInfoList(Dest).GatherOptions := FGatherOptions; + end + else + inherited AssignTo(Dest); end; -function TJclThreadInfoList.GetAsCSVString: string; -var - I: Integer; +procedure TJclThreadInfoList.Clear; begin - Result := TJclThreadInfo.CSVHeader + #13#10; - for I := 0 to Count - 1 do - Result := Result + Items[I].AsCSVString + #13#10; + FItems.Clear; end; function TJclThreadInfoList.GetAsString: string; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ou...@us...> - 2009-06-11 22:11:23
|
Revision: 2808 http://jcl.svn.sourceforge.net/jcl/?rev=2808&view=rev Author: outchy Date: 2009-06-11 22:11:17 +0000 (Thu, 11 Jun 2009) Log Message: ----------- Mantis 4747: wrong encoding in XML prolog The right stream encoding is now elaborated from XML property, if any. Modified Paths: -------------- trunk/jcl/source/common/JclSimpleXml.pas Modified: trunk/jcl/source/common/JclSimpleXml.pas =================================================================== --- trunk/jcl/source/common/JclSimpleXml.pas 2009-06-11 22:08:24 UTC (rev 2807) +++ trunk/jcl/source/common/JclSimpleXml.pas 2009-06-11 22:11:17 UTC (rev 2808) @@ -460,6 +460,7 @@ TJclSimpleXML = class(TObject) protected FEncoding: TJclStringEncoding; + FCodePage: Word; FFileName: TFileName; FOptions: TJclSimpleXMLOptions; FRoot: TJclSimpleXMLElemClassic; @@ -488,12 +489,12 @@ constructor Create; destructor Destroy; override; procedure LoadFromString(const Value: string); - procedure LoadFromFile(const FileName: TFileName; Encoding: TJclStringEncoding = seAuto); - procedure LoadFromStream(Stream: TStream; Encoding: TJclStringEncoding = seAuto); + procedure LoadFromFile(const FileName: TFileName; Encoding: TJclStringEncoding = seAuto; CodePage: Word = CP_ACP); + procedure LoadFromStream(Stream: TStream; Encoding: TJclStringEncoding = seAuto; CodePage: Word = CP_ACP); procedure LoadFromStringStream(StringStream: TJclStringStream); - procedure LoadFromResourceName(Instance: THandle; const ResName: string; Encoding: TJclStringEncoding = seAuto); - procedure SaveToFile(const FileName: TFileName; Encoding: TJclStringEncoding = seAuto); - procedure SaveToStream(Stream: TStream; Encoding: TJclStringEncoding = seAuto); + procedure LoadFromResourceName(Instance: THandle; const ResName: string; Encoding: TJclStringEncoding = seAuto; CodePage: Word = CP_ACP); + procedure SaveToFile(const FileName: TFileName; Encoding: TJclStringEncoding = seAuto; CodePage: Word = CP_ACP); + procedure SaveToStream(Stream: TStream; Encoding: TJclStringEncoding = seAuto; CodePage: Word = CP_ACP); procedure SaveToStringStream(StringStream: TJclStringStream); function SaveToString: string; property Prolog: TJclSimpleXMLElemsProlog read FProlog write FProlog; @@ -582,6 +583,7 @@ implementation uses + JclCharsets, JclStrings, JclStringConversions, JclResources; @@ -1098,21 +1100,21 @@ FOnValue(Self, AName, AValue); end; -procedure TJclSimpleXML.LoadFromFile(const FileName: TFileName; Encoding: TJclStringEncoding); +procedure TJclSimpleXML.LoadFromFile(const FileName: TFileName; Encoding: TJclStringEncoding; CodePage: Word); var Stream: TMemoryStream; begin Stream := TMemoryStream.Create; try Stream.LoadFromFile(FileName); - LoadFromStream(Stream, Encoding); + LoadFromStream(Stream, Encoding, CodePage); finally Stream.Free; end; end; procedure TJclSimpleXML.LoadFromResourceName(Instance: THandle; const ResName: string; - Encoding: TJclStringEncoding); + Encoding: TJclStringEncoding; CodePage: Word); {$IFNDEF MSWINDOWS} const RT_RCDATA = PChar(10); @@ -1122,13 +1124,13 @@ begin Stream := TResourceStream.Create(Instance, ResName, RT_RCDATA); try - LoadFromStream(Stream, Encoding); + LoadFromStream(Stream, Encoding, CodePage); finally Stream.Free; end; end; -procedure TJclSimpleXML.LoadFromStream(Stream: TStream; Encoding: TJclStringEncoding); +procedure TJclSimpleXML.LoadFromStream(Stream: TStream; Encoding: TJclStringEncoding; CodePage: Word); var AOutStream: TStream; AStringStream: TJclStringStream; @@ -1151,23 +1153,40 @@ case Encoding of seAnsi: - AStringStream := TJclAnsiStream.Create(AOutStream, False); + begin + AStringStream := TJclAnsiStream.Create(AOutStream, False); + TJclAnsiStream(AStringStream).CodePage := CodePage; + end; seUTF8: AStringStream := TJclUTF8Stream.Create(AOutStream, False); seUTF16: AStringStream := TJclUTF16Stream.Create(AOutStream, False); else AStringStream := TJclAutoStream.Create(AOutStream, False); + TJclAutoStream(AStringStream).CodePage := CodePage; end; try AStringStream.SkipBOM; + LoadFromStringStream(AStringStream); + + // save codepage and encoding for future saves if AStringStream is TJclAutoStream then - FEncoding := TJclAutoStream(AStringStream).Encoding + begin + FCodePage := TJclAutoStream(AStringStream).CodePage; + FEncoding := TJclAutoStream(AStringStream).Encoding; + end else + if AStringStream is TJclAnsiStream then + begin + FCodePage := TJclAnsiStream(AStringStream).CodePage; FEncoding := Encoding; - - LoadFromStringStream(AStringStream); + end + else + begin + FCodePage := CodePage; + FEncoding := Encoding; + end; finally AStringStream.Free; end; @@ -1203,7 +1222,7 @@ end; end; -procedure TJclSimpleXML.SaveToFile(const FileName: TFileName; Encoding: TJclStringEncoding); +procedure TJclSimpleXML.SaveToFile(const FileName: TFileName; Encoding: TJclStringEncoding; CodePage: Word); var Stream: TFileStream; begin @@ -1215,17 +1234,19 @@ else Stream := TFileStream.Create(FileName, fmCreate); try - SaveToStream(Stream, Encoding); + SaveToStream(Stream, Encoding, CodePage); finally Stream.Free; end; end; -procedure TJclSimpleXML.SaveToStream(Stream: TStream; Encoding: TJclStringEncoding); +procedure TJclSimpleXML.SaveToStream(Stream: TStream; Encoding: TJclStringEncoding; CodePage: Word); var AOutStream: TStream; AStringStream: TJclStringStream; DoFree: Boolean; + XmlHeader: TJclSimpleXMLElemHeader; + I: Integer; begin if Assigned(FOnEncodeStream) then begin @@ -1239,7 +1260,33 @@ end; try if Encoding = seAuto then - Encoding := FEncoding; + begin + XmlHeader := nil; + for I := 0 to Prolog.Count - 1 do + if Prolog.Item[I] is TJclSimpleXMLElemHeader then + begin + XmlHeader := TJclSimpleXMLElemHeader(Prolog.Item[I]); + Break; + end; + if Assigned(XmlHeader) then + begin + CodePage := CodePageFromCharsetName(XmlHeader.Encoding); + case CodePage of + CP_UTF8: + Encoding := seUTF8; + CP_UTF16LE: + Encoding := seUTF16; + else + Encoding := seAnsi; + end; + end + else + begin + // restore from previous load + Encoding := FEncoding; + CodePage := FCodePage; + end; + end; case Encoding of seUTF8: @@ -1248,6 +1295,7 @@ AStringStream := TJclUTF16Stream.Create(AOutStream, False); else AStringStream := TJclAnsiStream.Create(AOutStream); + TJclAnsiStream(AStringStream).CodePage := CodePage; end; try AStringStream.WriteBOM; @@ -3284,6 +3332,15 @@ Error(RsEInvalidCommentUnexpectedEndOfData); Name := ''; + + // set current stringstream codepage + if StringStream is TJclAutoStream then + TJclAutoStream(StringStream).CodePage := CodePageFromCharsetName(FEncoding) + else + if StringStream is TJclAnsiStream then + TJclAnsiStream(StringStream).CodePage := CodePageFromCharsetName(FEncoding) + else + Error(RsENoCharset); end; procedure TJclSimpleXMLElemHeader.SaveToStringStream(StringStream: TJclStringStream; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ou...@us...> - 2009-06-11 22:08:28
|
Revision: 2807 http://jcl.svn.sourceforge.net/jcl/?rev=2807&view=rev Author: outchy Date: 2009-06-11 22:08:24 +0000 (Thu, 11 Jun 2009) Log Message: ----------- New stream properties to select the Ansi codepage. Modified Paths: -------------- trunk/jcl/source/common/JclStreams.pas trunk/jcl/source/common/JclStringConversions.pas Modified: trunk/jcl/source/common/JclStreams.pas =================================================================== --- trunk/jcl/source/common/JclStreams.pas 2009-06-11 22:06:52 UTC (rev 2806) +++ trunk/jcl/source/common/JclStreams.pas 2009-06-11 22:08:24 UTC (rev 2807) @@ -533,10 +533,10 @@ TJclStringStream = class(TJclBufferedStream) protected FBOM: array of Byte; - FCharacterReader: TJclStreamGetNextCharFunc; - FCharacterWriter: TJclStreamSetNextCharFunc; FPeekPosition: Int64; function GetCalcedSize: Int64; override; + function InternalGetNextChar(S: TStream; var Ch: UCS4): Boolean; virtual; abstract; + function InternalSetNextChar(S: TStream; Ch: UCS4): Boolean; virtual; abstract; procedure SetSize({$IFNDEF CLR}const{$ENDIF ~CLR} NewSize: Int64); override; public constructor Create(AStream: TStream; AOwnsStream: Boolean = False); virtual; @@ -566,16 +566,28 @@ TJclStringStreamClass = class of TJclStringStream; TJclAnsiStream = class(TJclStringStream) + private + FCodePage: Word; + protected + function InternalGetNextChar(S: TStream; var Ch: UCS4): Boolean; override; + function InternalSetNextChar(S: TStream; Ch: UCS4): Boolean; override; public constructor Create(AStream: TStream; AOwnsStream: Boolean = False); override; + property CodePage: Word read FCodePage write FCodePage; end; TJclUTF8Stream = class(TJclStringStream) + protected + function InternalGetNextChar(S: TStream; var Ch: UCS4): Boolean; override; + function InternalSetNextChar(S: TStream; Ch: UCS4): Boolean; override; public constructor Create(AStream: TStream; AOwnsStream: Boolean = False); override; end; TJclUTF16Stream = class(TJclStringStream) + protected + function InternalGetNextChar(S: TStream; var Ch: UCS4): Boolean; override; + function InternalSetNextChar(S: TStream; Ch: UCS4): Boolean; override; public constructor Create(AStream: TStream; AOwnsStream: Boolean = False); override; end; @@ -584,10 +596,15 @@ TJclAutoStream = class(TJclStringStream) private + FCodePage: Word; FEncoding: TJclStringEncoding; + protected + function InternalGetNextChar(S: TStream; var Ch: UCS4): Boolean; override; + function InternalSetNextChar(S: TStream; Ch: UCS4): Boolean; override; public constructor Create(AStream: TStream; AOwnsStream: Boolean = False); override; function SkipBOM: LongInt; override; + property CodePage: Word read FCodePage write FCodePage; property Encoding: TJclStringEncoding read FEncoding; end; @@ -627,7 +644,7 @@ {$IFDEF CLR} System.Text, {$ENDIF CLR} - JclResources, JclMath; + JclResources, JclCharsets, JclMath; {$IFDEF KYLIX} function __open(PathName: PChar; Flags: Integer; Mode: Integer): Integer; cdecl; @@ -2869,7 +2886,7 @@ begin Pos := FPosition; FPosition := FPeekPosition; - Result := FCharacterReader(Self, Ch); + Result := InternalGetNextChar(Self, Ch); if Result then Buffer := UCS4ToAnsiChar(Ch); FPosition := Pos; @@ -2883,7 +2900,7 @@ begin Pos := FPosition; FPosition := FPeekPosition; - Result := FCharacterReader(Self, Ch); + Result := InternalGetNextChar(Self, Ch); if Result then Buffer := UCS4ToChar(Ch); FPosition := Pos; @@ -2897,7 +2914,7 @@ begin Pos := FPosition; FPosition := FPeekPosition; - Result := FCharacterReader(Self, Ch); + Result := InternalGetNextChar(Self, Ch); if Result then Buffer := UCS4ToWideChar(Ch); FPosition := Pos; @@ -2912,7 +2929,7 @@ Index := Start; while Index < Start + Count - 1 do // avoid overflow on surrogate pairs for WideString begin - if FCharacterReader(Self, Ch) then + if InternalGetNextChar(Self, Ch) then begin StrPos := Index; if StringSetNextChar(Buffer, StrPos, Ch) and (StrPos > 0) then @@ -2945,7 +2962,7 @@ var Ch: UCS4; begin - Result := FCharacterReader(Self, Ch); + Result := InternalGetNextChar(Self, Ch); if Result then Buffer := UCS4ToAnsiChar(Ch); FPeekPosition := FPosition; @@ -2959,7 +2976,7 @@ Index := Start; while Index < Start + Count do begin - if FCharacterReader(Self, Ch) then + if InternalGetNextChar(Self, Ch) then begin StrPos := Index; if AnsiSetNextChar(Buffer, StrPos, Ch) and (StrPos > 0) then @@ -2992,7 +3009,7 @@ var Ch: UCS4; begin - Result := FCharacterReader(Self, Ch); + Result := InternalGetNextChar(Self, Ch); if Result then Buffer := UCS4ToChar(Ch); FPeekPosition := FPosition; @@ -3002,7 +3019,7 @@ var Ch: UCS4; begin - Result := FCharacterReader(Self, Ch); + Result := InternalGetNextChar(Self, Ch); if Result then Buffer := UCS4ToWideChar(Ch); FPeekPosition := FPosition; @@ -3016,7 +3033,7 @@ Index := Start; while Index < Start + Count - 1 do // avoid overflow on surrogate pairs begin - if FCharacterReader(Self, Ch) then + if InternalGetNextChar(Self, Ch) then begin StrPos := Index; if UTF16SetNextChar(Buffer, StrPos, Ch) and (StrPos > 0) then @@ -3101,7 +3118,7 @@ function TJclStringStream.WriteChar(Value: Char): Boolean; begin - Result := FCharacterWriter(Self, CharToUCS4(Value)); + Result := InternalSetNextChar(Self, CharToUCS4(Value)); end; function TJclStringStream.WriteString(const Buffer: string; Start, Count: Longint): Longint; @@ -3114,7 +3131,7 @@ begin StrPos := Index; Ch := StringGetNextChar(Buffer, StrPos); - if (StrPos > 0) and FCharacterWriter(Self, Ch) then + if (StrPos > 0) and InternalSetNextChar(Self, Ch) then Index := StrPos else Break; // end of string (read) or end of stream (write) @@ -3125,7 +3142,7 @@ function TJclStringStream.WriteAnsiChar(Value: AnsiChar): Boolean; begin - Result := FCharacterWriter(Self, AnsiCharToUCS4(Value)); + Result := InternalSetNextChar(Self, AnsiCharToUCS4(Value)); FPeekPosition := FPosition; end; @@ -3139,7 +3156,7 @@ begin StrPos := Index; Ch := AnsiGetNextChar(Buffer, StrPos); - if (StrPos > 0) and FCharacterWriter(Self, Ch) then + if (StrPos > 0) and InternalSetNextChar(Self, Ch) then Index := StrPos else Break; // end of string (read) or end of stream (write) @@ -3150,7 +3167,7 @@ function TJclStringStream.WriteWideChar(Value: WideChar): Boolean; begin - Result := FCharacterWriter(Self, WideCharToUCS4(Value)); + Result := InternalSetNextChar(Self, WideCharToUCS4(Value)); FPeekPosition := FPosition; end; @@ -3164,7 +3181,7 @@ begin StrPos := Index; Ch := UTF16GetNextChar(Buffer, StrPos); - if (StrPos > 0) and FCharacterWriter(Self, Ch) then + if (StrPos > 0) and InternalSetNextChar(Self, Ch) then Index := StrPos else Break; // end of string (read) or end of stream (write) @@ -3178,12 +3195,26 @@ constructor TJclAnsiStream.Create(AStream: TStream; AOwnsStream: Boolean); begin inherited Create(AStream, AOwnsStream); - // not adding the @ character causes an internal error in Delphi 5 and C++Builder 5 - FCharacterReader := {$IFNDEF CLR}@{$ENDIF ~CLR}AnsiGetNextCharFromStream; - FCharacterWriter := {$IFNDEF CLR}@{$ENDIF ~CLR}AnsiSetNextCharToStream; SetLength(FBOM, 0); + FCodePage := CP_ACP; end; +function TJclAnsiStream.InternalGetNextChar(S: TStream; var Ch: UCS4): Boolean; +begin + if FCodePage = CP_ACP then + Result := AnsiGetNextCharFromStream(S, Ch) + else + Result := AnsiGetNextCharFromStream(S, FCodePage, Ch); +end; + +function TJclAnsiStream.InternalSetNextChar(S: TStream; Ch: UCS4): Boolean; +begin + if FCodePage = CP_ACP then + Result := AnsiSetNextCharToStream(S, Ch) + else + Result := AnsiSetNextCharToStream(S, FCodePage, Ch); +end; + //=== { TJclUTF8Stream } ====================================================== constructor TJclUTF8Stream.Create(AStream: TStream; AOwnsStream: Boolean); @@ -3191,13 +3222,21 @@ I: Integer; begin inherited Create(AStream, AOwnsStream); - FCharacterReader := {$IFNDEF CLR}@{$ENDIF ~CLR}UTF8GetNextCharFromStream; - FCharacterWriter := {$IFNDEF CLR}@{$ENDIF ~CLR}UTF8SetNextCharToStream; SetLength(FBOM, Length(BOM_UTF8)); for I := Low(BOM_UTF8) to High(BOM_UTF8) do FBOM[I - Low(BOM_UTF8)] := BOM_UTF8[I]; end; +function TJclUTF8Stream.InternalGetNextChar(S: TStream; var Ch: UCS4): Boolean; +begin + Result := UTF8GetNextCharFromStream(S, Ch); +end; + +function TJclUTF8Stream.InternalSetNextChar(S: TStream; Ch: UCS4): Boolean; +begin + Result := UTF8SetNextCharToStream(S, Ch); +end; + //=== { TJclUTF16Stream } ===================================================== constructor TJclUTF16Stream.Create(AStream: TStream; AOwnsStream: Boolean); @@ -3205,13 +3244,21 @@ I: Integer; begin inherited Create(AStream, AOwnsStream); - FCharacterReader := {$IFNDEF CLR}@{$ENDIF ~CLR}UTF16GetNextCharFromStream; - FCharacterWriter := {$IFNDEF CLR}@{$ENDIF ~CLR}UTF16SetNextCharToStream; SetLength(FBOM, Length(BOM_UTF16_LSB)); for I := Low(BOM_UTF16_LSB) to High(BOM_UTF16_LSB) do FBOM[I - Low(BOM_UTF16_LSB)] := BOM_UTF16_LSB[I]; end; +function TJclUTF16Stream.InternalGetNextChar(S: TStream; var Ch: UCS4): Boolean; +begin + Result := UTF16GetNextCharFromStream(S, Ch); +end; + +function TJclUTF16Stream.InternalSetNextChar(S: TStream; Ch: UCS4): Boolean; +begin + Result := UTF16SetNextCharToStream(S, Ch); +end; + //=== { TJclAutoStream } ====================================================== constructor TJclAutoStream.Create(AStream: TStream; AOwnsStream: Boolean); @@ -3239,6 +3286,7 @@ // try UTF8 BOM if (FEncoding = seAuto) and (ReadLength >= Length(BOM_UTF8) * SizeOf(BOM_UTF8[0])) then begin + FCodePage := CP_UTF8; FEncoding := seUTF8; for I := Low(BOM_UTF8) to High(BOM_UTF8) do if BOM[I - Low(BOM_UTF8)] <> BOM_UTF8[I] then @@ -3251,6 +3299,7 @@ // try UTF16 BOM if (FEncoding = seAuto) and (ReadLength >= Length(BOM_UTF16_LSB) * SizeOf(BOM_UTF16_LSB[0])) then begin + FCodePage := CP_UTF16LE; FEncoding := seUTF16; for I := Low(BOM_UTF16_LSB) to High(BOM_UTF16_LSB) do if BOM[I - Low(BOM_UTF8)] <> BOM_UTF16_LSB[I] then @@ -3263,36 +3312,61 @@ case FEncoding of seUTF8: begin + FCodePage := CP_UTF8; SetLength(FBOM, Length(BOM_UTF8)); for I := Low(BOM_UTF8) to High(BOM_UTF8) do FBOM[I - Low(BOM_UTF8)] := BOM_UTF8[I]; - FCharacterReader := {$IFNDEF CLR}@{$ENDIF ~CLR}UTF8GetNextCharFromStream; - FCharacterWriter := {$IFNDEF CLR}@{$ENDIF ~CLR}UTF8SetNextCharToStream; FPosition := Pos + Length(BOM_UTF8) * SizeOf(BOM_UTF8[0]); end; seUTF16: begin + FCodePage := CP_UTF16LE; SetLength(FBOM, Length(BOM_UTF16_LSB)); for I := Low(BOM_UTF16_LSB) to High(BOM_UTF16_LSB) do FBOM[I - Low(BOM_UTF16_LSB)] := BOM_UTF16_LSB[I]; - FCharacterReader := {$IFNDEF CLR}@{$ENDIF ~CLR}UTF16GetNextCharFromStream; - FCharacterWriter := {$IFNDEF CLR}@{$ENDIF ~CLR}UTF16SetNextCharToStream; FPosition := Pos + Length(BOM_UTF16_LSB) * SizeOf(BOM_UTF16_LSB[0]); end; seAuto, seAnsi: begin // defaults to Ansi + FCodePage := CP_ACP; FEncoding := seAnsi; SetLength(FBOM, 0); - FCharacterReader := {$IFNDEF CLR}@{$ENDIF ~CLR}AnsiGetNextCharFromStream; - FCharacterWriter := {$IFNDEF CLR}@{$ENDIF ~CLR}AnsiSetNextCharToStream; FPosition := Pos; end; end; FPeekPosition := FPosition; end; +function TJclAutoStream.InternalGetNextChar(S: TStream; var Ch: UCS4): Boolean; +begin + case FCodePage of + CP_UTF8: + Result := UTF8GetNextCharFromStream(S, Ch); + CP_UTF16LE: + Result := UTF16GetNextCharFromStream(S, Ch); + CP_ACP: + Result := AnsiGetNextCharFromStream(S, Ch); + else + Result := AnsiGetNextCharFromStream(S, CodePage, Ch); + end; +end; + +function TJclAutoStream.InternalSetNextChar(S: TStream; Ch: UCS4): Boolean; +begin + case FCodePage of + CP_UTF8: + Result := UTF8SetNextCharToStream(S, Ch); + CP_UTF16LE: + Result := UTF16SetNextCharToStream(S, Ch); + CP_ACP: + Result := AnsiSetNextCharToStream(S, Ch); + else + Result := AnsiSetNextCharToStream(S, CodePage, Ch); + end; +end; + function TJclAutoStream.SkipBOM: LongInt; begin // already skipped to determine encoding Modified: trunk/jcl/source/common/JclStringConversions.pas =================================================================== --- trunk/jcl/source/common/JclStringConversions.pas 2009-06-11 22:06:52 UTC (rev 2806) +++ trunk/jcl/source/common/JclStringConversions.pas 2009-06-11 22:08:24 UTC (rev 2807) @@ -145,9 +145,13 @@ // AnsiGetNextChar = read next character at StrPos // StrPos will be incremented by the number of chars that were read (1) -function AnsiGetNextChar(const S: AnsiString; var StrPos: Integer): UCS4; -function AnsiGetNextCharFromStream(S: TStream; var Ch: UCS4): Boolean; +function AnsiGetNextChar(const S: AnsiString; var StrPos: Integer): UCS4; overload; +function AnsiGetNextCharFromStream(S: TStream; var Ch: UCS4): Boolean; overload; +// same as AnsiGetNextChar* with custom codepage +function AnsiGetNextChar(const S: AnsiString; CodePage: Word; var StrPos: Integer): UCS4; overload; +function AnsiGetNextCharFromStream(S: TStream; CodePage: Word; var Ch: UCS4): Boolean; overload; + // AnsiSkipChars = skip NbSeq characters starting from StrPos // returns False if String is too small // StrPos will be incremented by the number of chars that were skipped @@ -162,9 +166,13 @@ // - if UNICODE_SILENT_FAILURE is not defined, StrPos is set to -1 // - StrPos > -1 flags string being too small, callee did nothing and caller is responsible for allocating space // StrPos will be incremented by the number of chars that were written (1) -function AnsiSetNextChar(var S: AnsiString; var StrPos: Integer; Ch: UCS4): Boolean; -function AnsiSetNextCharToStream(S: TStream; Ch: UCS4): Boolean; +function AnsiSetNextChar(var S: AnsiString; var StrPos: Integer; Ch: UCS4): Boolean; overload; +function AnsiSetNextCharToStream(S: TStream; Ch: UCS4): Boolean; overload; +// same as AnsiSetNextChar* with custom codepage +function AnsiSetNextChar(var S: AnsiString; CodePage: Word; var StrPos: Integer; Ch: UCS4): Boolean; overload; +function AnsiSetNextCharToStream(S: TStream; CodePage: Word; Ch: UCS4): Boolean; overload; + // StringGetNextChar = read next character/sequence at StrPos // if UNICODE_SILENT_FAILURE is defined, invalid sequences will be replaced by ReplacementCharacter // otherwise StrPos is set to -1 on return to flag an error (invalid UTF16 sequence for WideString) @@ -263,8 +271,16 @@ implementation uses + {$IFDEF CLR} + System.Text, + {$ENDIF CLR} + {$IFDEF MSWINDOWS} + Windows, + {$ENDIF MSWINDOWS} JclResources; +const MB_ERR_INVALID_CHARS = 8; + constructor EJclUnexpectedEOSequenceError.Create; begin {$IFDEF CLR} @@ -1728,6 +1744,80 @@ Result := TmpPos <> -1; end; +// AnsiGetNextChar = read next character at StrPos +// StrPos will be incremented by the number of chars that were read (1) +function AnsiGetNextChar(const S: AnsiString; CodePage: Word; var StrPos: Integer): UCS4; +var + StrLen, TmpPos: Integer; + UTF16Buffer: TUTF16String; + {$IFDEF CLR} + AnsiBytes: array [0..0] of Byte; + AnsiEncoding: Encoding; + {$ENDIF CLR} +begin + StrLen := Length(S); + + if (StrPos <= StrLen) and (StrPos > 0) then + begin + {$IFDEF CLR} + AnsiEncoding := Encoding.Default; + AnsiBytes[0] := Ord(S[StrPos]); + UTF16Buffer := AnsiEncoding.GetChars(AnsiBytes); + {$ELSE ~CLR} + SetLength(UTF16Buffer, 2); + if MultiByteToWideChar(CodePage, MB_PRECOMPOSED or MB_ERR_INVALID_CHARS, @S[StrPos], 1, PWideChar(UTF16Buffer), 2) = 0 then + begin + Result := UCS4ReplacementCharacter; + FlagInvalidSequence(StrPos, 0, Result); + Exit; + end; + {$ENDIF ~CLR} + TmpPos := 1; + Result := UTF16GetNextChar(UTF16Buffer, TmpPos); + if TmpPos = -1 then + StrPos := -1 + else + Inc(StrPos); + end + else + begin + // StrPos > StrLength + Result := 0; + FlagInvalidSequence(StrPos, 0, Result); + end; +end; + +function AnsiGetNextCharFromStream(S: TStream; CodePage: Word; var Ch: UCS4): Boolean; +var + B: Byte; + TmpPos: Integer; + UTF16Buffer: TUTF16String; + {$IFDEF CLR} + AnsiBytes: array [0..0] of Byte; + AnsiEncoding: Encoding; + {$ENDIF CLR} +begin + Result := StreamReadByte(S, B); + if not Result then + Exit; + {$IFDEF CLR} + AnsiEncoding := Encoding.Default; + AnsiBytes[0] := Ord(B); + UTF16Buffer := AnsiEncoding.GetChars(AnsiBytes); + {$ELSE ~CLR} + SetLength(UTF16Buffer, 2); + if MultiByteToWideChar(CodePage, MB_PRECOMPOSED or MB_ERR_INVALID_CHARS, @B, 1, PWideChar(UTF16Buffer), 2) = 0 then + begin + Result := False; + Ch := UCS4ReplacementCharacter; + Exit; + end; + {$ENDIF ~CLR} + TmpPos := 1; + Ch := UTF16GetNextChar(UTF16Buffer, TmpPos); + Result := TmpPos <> -1; +end; + // AnsiSkipChars = skip NbSeq characters starting from StrPos // returns False if String is too small // StrPos will be incremented by the number of chars that were skipped @@ -1862,6 +1952,93 @@ end; end; +function AnsiSetNextChar(var S: AnsiString; CodePage: Word; var StrPos: Integer; Ch: UCS4): Boolean; +var + StrLen, TmpPos: Integer; + UTF16Buffer: TUTF16String; + {$IFDEF CLR} + AnsiEncoding: Encoding; + AnsiBytes: array of Byte; + {$ELSE ~CLR} + AnsiCharacter: AnsiChar; + {$ENDIF ~CLR} +begin + StrLen := Length(S); + Result := (StrPos > 0) and (StrPos <= StrLen); + if Result then + begin + SetLength(UTF16Buffer, 2); + TmpPos := 1; + Result := UTF16SetNextChar(UTF16Buffer, TmpPos, Ch); + {$IFDEF CLR} + AnsiEncoding := Encoding.Default; + SetLength(UTF16Buffer, TmpPos-1); + AnsiBytes := AnsiEncoding.GetBytes(UTF16Buffer); + Result := Result and (Length(AnsiBytes) = 1); + if Result then + begin + S[StrPos] := AnsiChar(Chr(AnsiBytes[0])); + Inc(StrPos); + end; + {$ELSE ~CLR} + Result := Result and (WideCharToMultiByte(CodePage, 0, PWideChar(UTF16Buffer), TmpPos-1, @AnsiCharacter, 1, nil, nil) > 0); + if Result then + begin + S[StrPos] := AnsiCharacter; + Inc(StrPos); + end; + {$ENDIF ~CLR} + if not Result then + begin + {$IFDEF UNICODE_SILENT_FAILURE} + // add ReplacementCharacter + S[StrPos] := AnsiReplacementCharacter; + Inc(StrPos); + {$ELSE ~UNICODE_SILENT_FAILURE} + Result := False; + StrPos := -1; + {$ENDIF ~UNICODE_SILENT_FAILURE} + end; + end; +end; + +function AnsiSetNextCharToStream(S: TStream; CodePage: Word; Ch: UCS4): Boolean; +var + TmpPos: Integer; + UTF16Buffer: TUTF16String; + {$IFDEF CLR} + AnsiEncoding: Encoding; + AnsiBytes: array of Byte; + {$ELSE ~CLR} + AnsiCharacter: AnsiChar; + {$ENDIF ~CLR} +begin + SetLength(UTF16Buffer, 2); + TmpPos := 1; + Result := UTF16SetNextChar(UTF16Buffer, TmpPos, Ch); + {$IFDEF CLR} + AnsiEncoding := Encoding.Default; + SetLength(UTF16Buffer, TmpPos-1); + AnsiBytes := AnsiEncoding.GetBytes(UTF16Buffer); + Result := Result and (Length(AnsiBytes) = 1); + if Result then + Result := StreamWriteByte(S, Ord(AnsiBytes[0])); + {$ELSE ~CLR} + Result := Result and (WideCharToMultiByte(CodePage, 0, PWideChar(UTF16Buffer), TmpPos-1, @AnsiCharacter, 1, nil, nil) > 0); + if Result then + Result := StreamWriteByte(S, Ord(AnsiCharacter)); + {$ENDIF ~CLR} + if not Result then + begin + {$IFDEF UNICODE_SILENT_FAILURE} + // add ReplacementCharacter + Result := StreamWriteByte(S, Ord(AnsiReplacementCharacter)); + {$ELSE ~UNICODE_SILENT_FAILURE} + Result := False; + {$ENDIF ~UNICODE_SILENT_FAILURE} + end; +end; + // StringGetNextChar = read next character/sequence at StrPos // if UNICODE_SILENT_FAILURE is defined, invalid sequences will be replaced by ReplacementCharacter // otherwise StrPos is set to -1 on return to flag an error (invalid UTF16 sequence for WideString) This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ou...@us...> - 2009-06-11 22:06:59
|
Revision: 2806 http://jcl.svn.sourceforge.net/jcl/?rev=2806&view=rev Author: outchy Date: 2009-06-11 22:06:52 +0000 (Thu, 11 Jun 2009) Log Message: ----------- New functions to query charset constant table. Modified Paths: -------------- trunk/jcl/source/common/JclCharsets.pas trunk/jcl/source/common/JclResources.pas Modified: trunk/jcl/source/common/JclCharsets.pas =================================================================== --- trunk/jcl/source/common/JclCharsets.pas 2009-06-11 20:27:46 UTC (rev 2805) +++ trunk/jcl/source/common/JclCharsets.pas 2009-06-11 22:06:52 UTC (rev 2806) @@ -36,12 +36,19 @@ interface -{$IFDEF UNITVERSIONING} uses - JclUnitVersioning; -{$ENDIF UNITVERSIONING} + {$IFDEF UNITVERSIONING} + JclUnitVersioning, + {$ENDIF UNITVERSIONING} + JclBase; type + EJclCharsetError = class(EJclError); + +const + CP_UTF16LE = 1200; + +type TJclCharsetInfo = record Name: string; CodePage: Word; @@ -471,6 +478,12 @@ (Name: 'us-ascii'; CodePage: 1252; FamilyCodePage: 1252), (Name: 'x-ansi'; CodePage: 1252; FamilyCodePage: 1252) ); +function FamilyCodePageFromCharsetName(const CharsetName: string): Word; +function FamilyCodePageFromCodePage(CodePage: Word): Word; +function CodePageFromCharsetName(const CharsetName: string): Word; +function CharsetInfoFromCharsetName(const CharsetName: string): TJclCharsetInfo; +function CharsetNameFromCodePage(CodePage: Word): string; + {$IFDEF UNITVERSIONING} const UnitVersioning: TUnitVersionInfo = ( @@ -483,6 +496,101 @@ implementation +uses + SysUtils, + JclResources; + +function FamilyCodePageFromCharsetName(const CharsetName: string): Word; +var + Index: Integer; + UpperCharsetName: string; +begin + UpperCharsetName := UpperCase(CharsetName); + for Index := Low(JclCharsetInfos) to High(JclCharsetInfos) do + if CompareStr(UpperCharsetName, UpperCase(JclCharsetInfos[Index].Name)) = 0 then + begin + Result := JclCharsetInfos[Index].FamilyCodePage; + Exit; + end; + {$IFDEF CLR} + raise EJclCharsetError.Create(RsENoCharset); + {$ELSE ~CLR} + raise EJclCharsetError.CreateRes(@RsENoCharset); + {$ENDIF ~CLR} +end; + +function CodePageFromCharsetName(const CharsetName: string): Word; +var + Index: Integer; + UpperCharsetName: string; +begin + UpperCharsetName := UpperCase(CharsetName); + for Index := Low(JclCharsetInfos) to High(JclCharsetInfos) do + if CompareStr(UpperCharsetName, UpperCase(JclCharsetInfos[Index].Name)) = 0 then + begin + Result := JclCharsetInfos[Index].CodePage; + Exit; + end; + {$IFDEF CLR} + raise EJclCharsetError.Create(RsENoCharset); + {$ELSE ~CLR} + raise EJclCharsetError.CreateRes(@RsENoCharset); + {$ENDIF ~CLR} +end; + +function CharsetInfoFromCharsetName(const CharsetName: string): TJclCharsetInfo; +var + Index: Integer; + UpperCharsetName: string; +begin + UpperCharsetName := UpperCase(CharsetName); + for Index := Low(JclCharsetInfos) to High(JclCharsetInfos) do + if CompareStr(UpperCharsetName, UpperCase(JclCharsetInfos[Index].Name)) = 0 then + begin + Result := JclCharsetInfos[Index]; + Exit; + end; + {$IFDEF CLR} + raise EJclCharsetError.Create(RsENoCharset); + {$ELSE ~CLR} + raise EJclCharsetError.CreateRes(@RsENoCharset); + {$ENDIF ~CLR} +end; + +function FamilyCodePageFromCodePage(CodePage: Word): Word; +var + Index: Integer; +begin + for Index := Low(JclCharsetInfos) to High(JclCharsetInfos) do + if JclCharsetInfos[Index].CodePage = CodePage then + begin + Result := JclCharsetInfos[Index].FamilyCodePage; + Exit; + end; + {$IFDEF CLR} + raise EJclCharsetError.Create(RsENoCharset); + {$ELSE ~CLR} + raise EJclCharsetError.CreateRes(@RsENoCharset); + {$ENDIF ~CLR} +end; + +function CharsetNameFromCodePage(CodePage: Word): string; +var + Index: Integer; +begin + for Index := Low(JclCharsetInfos) to High(JclCharsetInfos) do + if JclCharsetInfos[Index].CodePage = CodePage then + begin + Result := JclCharsetInfos[Index].Name; + Exit; + end; + {$IFDEF CLR} + raise EJclCharsetError.Create(RsENoCharset); + {$ELSE ~CLR} + raise EJclCharsetError.CreateRes(@RsENoCharset); + {$ENDIF ~CLR} +end; + {$IFDEF UNITVERSIONING} initialization RegisterUnitVersion(HInstance, UnitVersioning); Modified: trunk/jcl/source/common/JclResources.pas =================================================================== --- trunk/jcl/source/common/JclResources.pas 2009-06-11 20:27:46 UTC (rev 2805) +++ trunk/jcl/source/common/JclResources.pas 2009-06-11 22:06:52 UTC (rev 2806) @@ -163,6 +163,10 @@ RsENoOpenHelp = 'open help not present in Borland Developer Studio'; {$ENDIF MSWINDOWS} +//=== JclCharsets ============================================================ +resourcestring + RsENoCharset = 'No matching charset'; + //=== JclCIL ================================================================= resourcestring RsInstructionStreamInvalid = 'Invalid IL instruction stream'; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ou...@us...> - 2009-06-11 20:27:48
|
Revision: 2805 http://jcl.svn.sourceforge.net/jcl/?rev=2805&view=rev Author: outchy Date: 2009-06-11 20:27:46 +0000 (Thu, 11 Jun 2009) Log Message: ----------- Fix Delphi.net compilation. Modified Paths: -------------- trunk/jcl/source/common/JclAbstractContainers.pas trunk/jcl/source/common/JclAnsiStrings.pas trunk/jcl/source/common/JclContainerIntf.pas Modified: trunk/jcl/source/common/JclAbstractContainers.pas =================================================================== --- trunk/jcl/source/common/JclAbstractContainers.pas 2009-06-11 19:56:12 UTC (rev 2804) +++ trunk/jcl/source/common/JclAbstractContainers.pas 2009-06-11 20:27:46 UTC (rev 2805) @@ -47,7 +47,11 @@ Libc, {$ENDIF HAS_UNIT_LIBC} Classes, - JclBase, JclContainerIntf, JclSynch, JclSysUtils, JclAnsiStrings, JclWideStrings; + JclBase, JclContainerIntf, JclSynch, JclSysUtils, + {$IFNDEF CLR} + JclWideStrings, + {$ENDIF ~CLR} + JclAnsiStrings; type {$IFDEF KEEP_DEPRECATED} Modified: trunk/jcl/source/common/JclAnsiStrings.pas =================================================================== --- trunk/jcl/source/common/JclAnsiStrings.pas 2009-06-11 19:56:12 UTC (rev 2804) +++ trunk/jcl/source/common/JclAnsiStrings.pas 2009-06-11 20:27:46 UTC (rev 2805) @@ -71,8 +71,11 @@ System.IO, {$ENDIF CLR} {$IFDEF HAS_UNIT_ANSISTRINGS} - AnsiStrings, RTLConsts, + AnsiStrings, {$ENDIF HAS_UNIT_ANSISTRINGS} + {$IFDEF HAS_UNIT_RTLCONSTS} + RTLConsts, + {$ENDIF HAS_UNIT_RTLCONSTS} JclBase; // Ansi types @@ -1126,9 +1129,17 @@ procedure TJclAnsiStrings.SaveToStream(Stream: TStream); var S: AnsiString; + {$IFDEF CLR} + I: Integer; + {$ENDIF CLR} begin S := GetText; + {$IFDEF CLR} + for I := 1 to Length(S) do + Stream.Write(S[I]); + {$ELSE ~CLR} Stream.WriteBuffer(Pointer(S)^, Length(S)); + {$ENDIF ~CLR} end; function TJclAnsiStrings.ExtractName(const S: AnsiString): AnsiString; @@ -1217,7 +1228,7 @@ function TJclAnsiStringList.GetString(Index: Integer): AnsiString; begin if (Index < 0) or (Index >= FCount) then - Error(@SListIndexError, Index); + Error({$IFNDEF CLR}@{$ENDIF}SListIndexError, Index); Result := FStrings[Index].Str; end; @@ -1225,10 +1236,10 @@ procedure TJclAnsiStringList.SetString(Index: Integer; const Value: AnsiString); begin if Sorted then - Error(@SSortedListError, 0); + Error({$IFNDEF CLR}@{$ENDIF}SSortedListError, 0); if (Index < 0) or (Index >= FCount) then - Error(@SListIndexError, Index); + Error({$IFNDEF CLR}@{$ENDIF}SListIndexError, Index); FStrings[Index].Str := Value; end; @@ -1236,7 +1247,7 @@ function TJclAnsiStringList.GetObject(Index: Integer): TObject; begin if (Index < 0) or (Index >= FCount) then - Error(@SListIndexError, Index); + Error({$IFNDEF CLR}@{$ENDIF}SListIndexError, Index); Result := FStrings[Index].Obj; end; @@ -1244,7 +1255,7 @@ procedure TJclAnsiStringList.SetObject(Index: Integer; AObject: TObject); begin if (Index < 0) or (Index >= FCount) then - Error(@SListIndexError, Index); + Error({$IFNDEF CLR}@{$ENDIF}SListIndexError, Index); FStrings[Index].Obj := AObject; end; @@ -1257,7 +1268,7 @@ procedure TJclAnsiStringList.SetCapacity(const Value: Integer); begin if (Value < FCount) then - Error(@SListCapacityError, Value); + Error({$IFNDEF CLR}@{$ENDIF}SListCapacityError, Value); if Value <> Capacity then SetLength(FStrings, Value); @@ -1294,7 +1305,7 @@ if Find(S, Result) then case Duplicates of dupIgnore: Exit; - dupError: Error(@SDuplicateString, 0); + dupError: Error({$IFNDEF CLR}@{$ENDIF}SDuplicateString, 0); end; end; @@ -1306,7 +1317,7 @@ I: Integer; begin if (Index < 0) or (Index >= FCount) then - Error(@SListIndexError, Index); + Error({$IFNDEF CLR}@{$ENDIF}SListIndexError, Index); for I := Index to Count - 2 do FStrings[Index] := FStrings[Index + 1]; Modified: trunk/jcl/source/common/JclContainerIntf.pas =================================================================== --- trunk/jcl/source/common/JclContainerIntf.pas 2009-06-11 19:56:12 UTC (rev 2804) +++ trunk/jcl/source/common/JclContainerIntf.pas 2009-06-11 20:27:46 UTC (rev 2805) @@ -49,8 +49,10 @@ {$ENDIF UNITVERSIONING} Classes, JclBase, - JclAnsiStrings, - JclWideStrings; + {$IFNDEF CLR} + JclWideStrings, + {$ENDIF ~CLR} + JclAnsiStrings; {$IFDEF BCB6} {$DEFINE BUGGY_DEFAULT_INDEXED_PROP} @@ -62,7 +64,15 @@ {$DEFINE BUGGY_DEFAULT_INDEXED_PROP} {$ENDIF BCB11} +{$IFDEF CLR} +type + TJclWideStrings = TStrings; + TJclWideStringList = TStringList; const + WideLineBreak = #13#10; +{$ENDIF CLR} + +const DefaultContainerCapacity = 16; type This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ou...@us...> - 2009-06-11 19:56:20
|
Revision: 2804 http://jcl.svn.sourceforge.net/jcl/?rev=2804&view=rev Author: outchy Date: 2009-06-11 19:56:12 +0000 (Thu, 11 Jun 2009) Log Message: ----------- Fix compilation with Delphi.net. Modified Paths: -------------- trunk/jcl/source/common/JclAnsiStrings.pas Modified: trunk/jcl/source/common/JclAnsiStrings.pas =================================================================== --- trunk/jcl/source/common/JclAnsiStrings.pas 2009-06-09 19:24:53 UTC (rev 2803) +++ trunk/jcl/source/common/JclAnsiStrings.pas 2009-06-11 19:56:12 UTC (rev 2804) @@ -70,9 +70,9 @@ System.Text, System.IO, {$ENDIF CLR} - {$IFDEF SUPPORTS_UNICODE} + {$IFDEF HAS_UNIT_ANSISTRINGS} AnsiStrings, RTLConsts, - {$ENDIF SUPPORTS_UNICODE} + {$ENDIF HAS_UNIT_ANSISTRINGS} JclBase; // Ansi types @@ -104,7 +104,9 @@ procedure AssignTo(Dest: TPersistent); override; procedure Error(const Msg: string; Data: Integer); overload; + {$IFNDEF CLR} procedure Error(Msg: PResStringRec; Data: Integer); overload; + {$ENDIF ~CLR} function GetString(Index: Integer): AnsiString; virtual; abstract; procedure SetString(Index: Integer; const Value: AnsiString); virtual; abstract; @@ -921,10 +923,12 @@ raise EJclAnsiStringListError.CreateFmt(Msg, [Data]); end; +{$IFNDEF CLR} procedure TJclAnsiStrings.Error(Msg: PResStringRec; Data: Integer); begin Error(LoadResString(Msg), Data); end; +{$ENDIF ~CLR} function TJclAnsiStrings.CompareStrings(const S1, S2: AnsiString): Integer; begin @@ -1082,12 +1086,25 @@ var Size: Integer; S: AnsiString; + {$IFDEF CLR} + C: AnsiChar; + I: Integer; + {$ENDIF CLR} begin BeginUpdate; try Size := Stream.Size - Stream.Position; + {$IFDEF CLR} + S := ''; + for I := 1 to Size do + begin + Stream.Read(C); + S := S + C; + end; + {$ELSE ~CLR} System.SetString(S, nil, Size); Stream.Read(Pointer(S)^, Size); + {$ENDIF ~CLR} SetText(S); finally EndUpdate; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ou...@us...> - 2009-06-09 19:24:55
|
Revision: 2803 http://jcl.svn.sourceforge.net/jcl/?rev=2803&view=rev Author: outchy Date: 2009-06-09 19:24:53 +0000 (Tue, 09 Jun 2009) Log Message: ----------- ExpandANSIString is badly named; this just converts ASCII text to Unicode; renamed to ExpandASCIIString. Modified Paths: -------------- trunk/jcl/source/common/JclStringConversions.pas Modified: trunk/jcl/source/common/JclStringConversions.pas =================================================================== --- trunk/jcl/source/common/JclStringConversions.pas 2009-06-09 18:53:49 UTC (rev 2802) +++ trunk/jcl/source/common/JclStringConversions.pas 2009-06-09 19:24:53 UTC (rev 2803) @@ -64,7 +64,7 @@ {$IFNDEF CLR} // one shot conversion between PAnsiChar and PWideChar -procedure ExpandANSIString(const Source: PAnsiChar; Target: PWideChar; Count: Cardinal); +procedure ExpandASCIIString(const Source: PAnsiChar; Target: PWideChar; Count: Cardinal); {$ENDIF ~CLR} // tpye of stream related functions @@ -317,7 +317,7 @@ // EAX contains Source, EDX contains Target, ECX contains Count {$IFNDEF CLR} -procedure ExpandANSIString(const Source: PAnsiChar; Target: PWideChar; Count: Cardinal); +procedure ExpandASCIIString(const Source: PAnsiChar; Target: PWideChar; Count: Cardinal); // Source in EAX // Target in EDX // Count in ECX This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ou...@us...> - 2009-06-09 18:53:57
|
Revision: 2802 http://jcl.svn.sourceforge.net/jcl/?rev=2802&view=rev Author: outchy Date: 2009-06-09 18:53:49 +0000 (Tue, 09 Jun 2009) Log Message: ----------- Mantis 4771: crash: TJclDebugInfoSymbols and SymLoadModuleFunc (function TJclDebugInfoSymbols.InitializeSource should not success when neither SymGetModuleInfoWFunc nor SymGetModuleInfoAFunc are available) Modified Paths: -------------- trunk/jcl/source/windows/JclDebug.pas Modified: trunk/jcl/source/windows/JclDebug.pas =================================================================== --- trunk/jcl/source/windows/JclDebug.pas 2009-06-09 18:09:34 UTC (rev 2801) +++ trunk/jcl/source/windows/JclDebug.pas 2009-06-09 18:53:49 UTC (rev 2802) @@ -3278,7 +3278,7 @@ // in Windows 95, 98, ME, first argument is a process identifier ProcessHandle := GetCurrentProcessId; - if IsWinNT and Assigned(SymGetModuleInfoWFunc) then + if Assigned(SymGetModuleInfoWFunc) then begin ZeroMemory(@ModuleInfoW, SizeOf(ModuleInfoW)); ModuleInfoW.SizeOfStruct := SizeOf(ModuleInfoW); @@ -3316,7 +3316,9 @@ end; Result := Result and (ModuleInfoW.BaseOfImage <> 0) and not (ModuleInfoA.SymType in [SymNone, SymExport]); - end; + end + else + Result := False; end; end; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ou...@us...> - 2009-06-09 18:09:39
|
Revision: 2801 http://jcl.svn.sourceforge.net/jcl/?rev=2801&view=rev Author: outchy Date: 2009-06-09 18:09:34 +0000 (Tue, 09 Jun 2009) Log Message: ----------- Style cleaning. Modified Paths: -------------- trunk/jcl/source/windows/JclDebug.pas Modified: trunk/jcl/source/windows/JclDebug.pas =================================================================== --- trunk/jcl/source/windows/JclDebug.pas 2009-06-08 21:17:26 UTC (rev 2800) +++ trunk/jcl/source/windows/JclDebug.pas 2009-06-09 18:09:34 UTC (rev 2801) @@ -3100,15 +3100,12 @@ SymOptions: Cardinal; ProcessHandle: THandle; begin - if DebugSymbolsLoadFailed then - Result := False - else - if not DebugSymbolsInitialized then + Result := DebugSymbolsInitialized; + if not DebugSymbolsLoadFailed then begin - DebugSymbolsLoadFailed := not LoadDebugFunctions; + Result := LoadDebugFunctions; + DebugSymbolsLoadFailed := not Result; - Result := not DebugSymbolsLoadFailed; - if Result then begin if JclDebugInfoSymbolPaths <> '' then @@ -3157,9 +3154,7 @@ end else UnloadDebugFunctions; - end - else - Result := DebugSymbolsInitialized; + end; end; class function TJclDebugInfoSymbols.CleanupDebugSymbols: Boolean; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ou...@us...> - 2009-06-08 21:18:28
|
Revision: 2800 http://jcl.svn.sourceforge.net/jcl/?rev=2800&view=rev Author: outchy Date: 2009-06-08 21:17:26 +0000 (Mon, 08 Jun 2009) Log Message: ----------- Mantis 4747 (preparation): new unit JclCharsets.pas that contains bindings of charset names to charset identifiers. Modified Paths: -------------- trunk/jcl/packages/c5/JclC50.bpk trunk/jcl/packages/c5/JclC50.cpp trunk/jcl/packages/c5/JclC50.dpk trunk/jcl/packages/c6/Jcl.bpk trunk/jcl/packages/c6/Jcl.dpk trunk/jcl/packages/cs1/Jcl.dpk trunk/jcl/packages/d10/Jcl.dpk trunk/jcl/packages/d10.net/Jedi.Jcl.bdsproj trunk/jcl/packages/d10.net/Jedi.Jcl.dpk trunk/jcl/packages/d11/Jcl.dpk trunk/jcl/packages/d11/Jcl.dproj trunk/jcl/packages/d11.net/Jedi.Jcl.dpk trunk/jcl/packages/d11.net/Jedi.Jcl.dproj trunk/jcl/packages/d12/Jcl.dpk trunk/jcl/packages/d12/Jcl.dproj trunk/jcl/packages/d5/JclD50.dpk trunk/jcl/packages/d6/Jcl.dpk trunk/jcl/packages/d7/Jcl.dpk trunk/jcl/packages/d8/Jcl.dpk trunk/jcl/packages/d9/Jcl.dpk trunk/jcl/packages/d9.net/Jedi.Jcl.bdsproj trunk/jcl/packages/d9.net/Jedi.Jcl.dpk trunk/jcl/packages/k3/Jcl.bpk trunk/jcl/packages/k3/Jcl.dpk trunk/jcl/packages/xml/Jcl-R.xml Added Paths: ----------- trunk/jcl/source/common/JclCharsets.pas Modified: trunk/jcl/packages/c5/JclC50.bpk =================================================================== --- trunk/jcl/packages/c5/JclC50.bpk 2009-06-08 19:24:27 UTC (rev 2799) +++ trunk/jcl/packages/c5/JclC50.bpk 2009-06-08 21:17:26 UTC (rev 2800) @@ -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: 14-03-2009 14:40:19 UTC + Last generated: 08-06-2009 21:07:36 UTC ***************************************************************************** --> <PROJECT> @@ -19,6 +19,7 @@ ..\..\lib\c5\JclAnsiStrings.obj ..\..\lib\c5\JclBase.obj ..\..\lib\c5\JclBorlandTools.obj + ..\..\lib\c5\JclCharsets.obj ..\..\lib\c5\JclComplex.obj ..\..\lib\c5\JclCompression.obj ..\..\lib\c5\JclCounter.obj Modified: trunk/jcl/packages/c5/JclC50.cpp =================================================================== --- trunk/jcl/packages/c5/JclC50.cpp 2009-06-08 19:24:27 UTC (rev 2799) +++ trunk/jcl/packages/c5/JclC50.cpp 2009-06-08 21:17:26 UTC (rev 2800) @@ -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: 14-03-2009 14:40:19 UTC + Last generated: 08-06-2009 21:07:37 UTC ----------------------------------------------------------------------------- */ @@ -16,6 +16,7 @@ USEUNIT("..\..\source\common\JclAnsiStrings.pas"); USEUNIT("..\..\source\common\JclBase.pas"); USEUNIT("..\..\source\common\JclBorlandTools.pas"); +USEUNIT("..\..\source\common\JclCharsets.pas"); USEUNIT("..\..\source\common\JclComplex.pas"); USEUNIT("..\..\source\common\JclCompression.pas"); USEUNIT("..\..\source\common\JclCounter.pas"); Modified: trunk/jcl/packages/c5/JclC50.dpk =================================================================== --- trunk/jcl/packages/c5/JclC50.dpk 2009-06-08 19:24:27 UTC (rev 2799) +++ trunk/jcl/packages/c5/JclC50.dpk 2009-06-08 21:17:26 UTC (rev 2800) @@ -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: 14-03-2009 14:40:19 UTC + Last generated: 08-06-2009 21:07:37 UTC ----------------------------------------------------------------------------- } @@ -47,6 +47,7 @@ JclAnsiStrings in '..\..\source\common\JclAnsiStrings.pas' , JclBase in '..\..\source\common\JclBase.pas' , JclBorlandTools in '..\..\source\common\JclBorlandTools.pas' , + JclCharsets in '..\..\source\common\JclCharsets.pas' , JclComplex in '..\..\source\common\JclComplex.pas' , JclCompression in '..\..\source\common\JclCompression.pas' , JclCounter in '..\..\source\common\JclCounter.pas' , Modified: trunk/jcl/packages/c6/Jcl.bpk =================================================================== --- trunk/jcl/packages/c6/Jcl.bpk 2009-06-08 19:24:27 UTC (rev 2799) +++ trunk/jcl/packages/c6/Jcl.bpk 2009-06-08 21:17:26 UTC (rev 2800) @@ -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: 14-03-2009 14:40:19 UTC + Last generated: 08-06-2009 21:07:38 UTC ***************************************************************************** --> <PROJECT> @@ -19,6 +19,7 @@ ..\..\lib\c6\JclAnsiStrings.obj ..\..\lib\c6\JclBase.obj ..\..\lib\c6\JclBorlandTools.obj + ..\..\lib\c6\JclCharsets.obj ..\..\lib\c6\JclComplex.obj ..\..\lib\c6\JclCompression.obj ..\..\lib\c6\JclCounter.obj @@ -147,6 +148,7 @@ <FILE FILENAME="..\..\source\common\JclAnsiStrings.pas" FORMNAME="" UNITNAME="JclAnsiStrings" CONTAINERID="PascalCompiler" DESIGNCLASS="" LOCALCOMMAND=""/> <FILE FILENAME="..\..\source\common\JclBase.pas" FORMNAME="" UNITNAME="JclBase" CONTAINERID="PascalCompiler" DESIGNCLASS="" LOCALCOMMAND=""/> <FILE FILENAME="..\..\source\common\JclBorlandTools.pas" FORMNAME="" UNITNAME="JclBorlandTools" CONTAINERID="PascalCompiler" DESIGNCLASS="" LOCALCOMMAND=""/> + <FILE FILENAME="..\..\source\common\JclCharsets.pas" FORMNAME="" UNITNAME="JclCharsets" CONTAINERID="PascalCompiler" DESIGNCLASS="" LOCALCOMMAND=""/> <FILE FILENAME="..\..\source\common\JclComplex.pas" FORMNAME="" UNITNAME="JclComplex" CONTAINERID="PascalCompiler" DESIGNCLASS="" LOCALCOMMAND=""/> <FILE FILENAME="..\..\source\common\JclCompression.pas" FORMNAME="" UNITNAME="JclCompression" CONTAINERID="PascalCompiler" DESIGNCLASS="" LOCALCOMMAND=""/> <FILE FILENAME="..\..\source\common\JclCounter.pas" FORMNAME="" UNITNAME="JclCounter" CONTAINERID="PascalCompiler" DESIGNCLASS="" LOCALCOMMAND=""/> Modified: trunk/jcl/packages/c6/Jcl.dpk =================================================================== --- trunk/jcl/packages/c6/Jcl.dpk 2009-06-08 19:24:27 UTC (rev 2799) +++ trunk/jcl/packages/c6/Jcl.dpk 2009-06-08 21:17:26 UTC (rev 2800) @@ -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: 14-03-2009 14:40:19 UTC + Last generated: 08-06-2009 21:07:38 UTC ----------------------------------------------------------------------------- } @@ -47,6 +47,7 @@ JclAnsiStrings in '..\..\source\common\JclAnsiStrings.pas' , JclBase in '..\..\source\common\JclBase.pas' , JclBorlandTools in '..\..\source\common\JclBorlandTools.pas' , + JclCharsets in '..\..\source\common\JclCharsets.pas' , JclComplex in '..\..\source\common\JclComplex.pas' , JclCompression in '..\..\source\common\JclCompression.pas' , JclCounter in '..\..\source\common\JclCounter.pas' , Modified: trunk/jcl/packages/cs1/Jcl.dpk =================================================================== --- trunk/jcl/packages/cs1/Jcl.dpk 2009-06-08 19:24:27 UTC (rev 2799) +++ trunk/jcl/packages/cs1/Jcl.dpk 2009-06-08 21:17:26 UTC (rev 2800) @@ -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: 14-03-2009 14:40:19 UTC + Last generated: 08-06-2009 21:07:42 UTC ----------------------------------------------------------------------------- } @@ -47,6 +47,7 @@ JclAnsiStrings in '..\..\source\common\JclAnsiStrings.pas' , JclBase in '..\..\source\common\JclBase.pas' , JclBorlandTools in '..\..\source\common\JclBorlandTools.pas' , + JclCharsets in '..\..\source\common\JclCharsets.pas' , JclComplex in '..\..\source\common\JclComplex.pas' , JclCompression in '..\..\source\common\JclCompression.pas' , JclCounter in '..\..\source\common\JclCounter.pas' , Modified: trunk/jcl/packages/d10/Jcl.dpk =================================================================== --- trunk/jcl/packages/d10/Jcl.dpk 2009-06-08 19:24:27 UTC (rev 2799) +++ trunk/jcl/packages/d10/Jcl.dpk 2009-06-08 21:17:26 UTC (rev 2800) @@ -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: 14-03-2009 14:40:19 UTC + Last generated: 08-06-2009 21:07:44 UTC ----------------------------------------------------------------------------- } @@ -48,6 +48,7 @@ JclAnsiStrings in '..\..\source\common\JclAnsiStrings.pas' , JclBase in '..\..\source\common\JclBase.pas' , JclBorlandTools in '..\..\source\common\JclBorlandTools.pas' , + JclCharsets in '..\..\source\common\JclCharsets.pas' , JclComplex in '..\..\source\common\JclComplex.pas' , JclCompression in '..\..\source\common\JclCompression.pas' , JclCounter in '..\..\source\common\JclCounter.pas' , Modified: trunk/jcl/packages/d10.net/Jedi.Jcl.bdsproj =================================================================== --- trunk/jcl/packages/d10.net/Jedi.Jcl.bdsproj 2009-06-08 19:24:27 UTC (rev 2799) +++ trunk/jcl/packages/d10.net/Jedi.Jcl.bdsproj 2009-06-08 21:17:26 UTC (rev 2800) @@ -181,6 +181,7 @@ <File FileName="" ContainerId="" ModuleName="Borland.VclRtl"/> <File FileName="..\..\source\common\JclAnsiStrings.pas" ContainerId="" ModuleName="JclAnsiStrings"/> <File FileName="..\..\source\common\JclBase.pas" ContainerId="" ModuleName="JclBase"/> + <File FileName="..\..\source\common\JclCharsets.pas" ContainerId="" ModuleName="JclCharsets"/> <File FileName="..\..\source\common\JclComplex.pas" ContainerId="" ModuleName="JclComplex"/> <File FileName="..\..\source\common\JclCounter.pas" ContainerId="" ModuleName="JclCounter"/> <File FileName="..\..\source\common\JclDateTime.pas" ContainerId="" ModuleName="JclDateTime"/> Modified: trunk/jcl/packages/d10.net/Jedi.Jcl.dpk =================================================================== --- trunk/jcl/packages/d10.net/Jedi.Jcl.dpk 2009-06-08 19:24:27 UTC (rev 2799) +++ trunk/jcl/packages/d10.net/Jedi.Jcl.dpk 2009-06-08 21:17:26 UTC (rev 2800) @@ -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: 14-03-2009 14:40:19 UTC + Last generated: 08-06-2009 21:07:45 UTC ----------------------------------------------------------------------------- } @@ -44,6 +44,7 @@ contains JclAnsiStrings in '..\..\source\common\JclAnsiStrings.pas' , JclBase in '..\..\source\common\JclBase.pas' , + JclCharsets in '..\..\source\common\JclCharsets.pas' , JclComplex in '..\..\source\common\JclComplex.pas' , JclCounter in '..\..\source\common\JclCounter.pas' , JclDateTime in '..\..\source\common\JclDateTime.pas' , Modified: trunk/jcl/packages/d11/Jcl.dpk =================================================================== --- trunk/jcl/packages/d11/Jcl.dpk 2009-06-08 19:24:27 UTC (rev 2799) +++ trunk/jcl/packages/d11/Jcl.dpk 2009-06-08 21:17:26 UTC (rev 2800) @@ -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: 14-03-2009 14:40:20 UTC + Last generated: 08-06-2009 21:07:45 UTC ----------------------------------------------------------------------------- } @@ -48,6 +48,7 @@ JclAnsiStrings in '..\..\source\common\JclAnsiStrings.pas' , JclBase in '..\..\source\common\JclBase.pas' , JclBorlandTools in '..\..\source\common\JclBorlandTools.pas' , + JclCharsets in '..\..\source\common\JclCharsets.pas' , JclComplex in '..\..\source\common\JclComplex.pas' , JclCompression in '..\..\source\common\JclCompression.pas' , JclCounter in '..\..\source\common\JclCounter.pas' , Modified: trunk/jcl/packages/d11/Jcl.dproj =================================================================== --- trunk/jcl/packages/d11/Jcl.dproj 2009-06-08 19:24:27 UTC (rev 2799) +++ trunk/jcl/packages/d11/Jcl.dproj 2009-06-08 21:17:26 UTC (rev 2800) @@ -91,6 +91,7 @@ <DCCReference Include="..\..\source\common\JclAnsiStrings.pas" /> <DCCReference Include="..\..\source\common\JclBase.pas" /> <DCCReference Include="..\..\source\common\JclBorlandTools.pas" /> + <DCCReference Include="..\..\source\common\JclCharsets.pas" /> <DCCReference Include="..\..\source\common\JclComplex.pas" /> <DCCReference Include="..\..\source\common\JclCompression.pas" /> <DCCReference Include="..\..\source\common\JclCounter.pas" /> Modified: trunk/jcl/packages/d11.net/Jedi.Jcl.dpk =================================================================== --- trunk/jcl/packages/d11.net/Jedi.Jcl.dpk 2009-06-08 19:24:27 UTC (rev 2799) +++ trunk/jcl/packages/d11.net/Jedi.Jcl.dpk 2009-06-08 21:17:26 UTC (rev 2800) @@ -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: 14-03-2009 14:40:20 UTC + Last generated: 08-06-2009 21:07:46 UTC ----------------------------------------------------------------------------- } @@ -43,6 +43,7 @@ contains JclAnsiStrings in '..\..\source\common\JclAnsiStrings.pas' , JclBase in '..\..\source\common\JclBase.pas' , + JclCharsets in '..\..\source\common\JclCharsets.pas' , JclComplex in '..\..\source\common\JclComplex.pas' , JclCounter in '..\..\source\common\JclCounter.pas' , JclDateTime in '..\..\source\common\JclDateTime.pas' , Modified: trunk/jcl/packages/d11.net/Jedi.Jcl.dproj =================================================================== --- trunk/jcl/packages/d11.net/Jedi.Jcl.dproj 2009-06-08 19:24:27 UTC (rev 2799) +++ trunk/jcl/packages/d11.net/Jedi.Jcl.dproj 2009-06-08 21:17:26 UTC (rev 2800) @@ -114,6 +114,7 @@ </DelphiCompile> <DCCReference Include="..\..\source\common\JclAnsiStrings.pas"/> <DCCReference Include="..\..\source\common\JclBase.pas"/> + <DCCReference Include="..\..\source\common\JclCharsets.pas"/> <DCCReference Include="..\..\source\common\JclComplex.pas"/> <DCCReference Include="..\..\source\common\JclCounter.pas"/> <DCCReference Include="..\..\source\common\JclDateTime.pas"/> Modified: trunk/jcl/packages/d12/Jcl.dpk =================================================================== --- trunk/jcl/packages/d12/Jcl.dpk 2009-06-08 19:24:27 UTC (rev 2799) +++ trunk/jcl/packages/d12/Jcl.dpk 2009-06-08 21:17:26 UTC (rev 2800) @@ -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: 14-03-2009 14:40:20 UTC + Last generated: 08-06-2009 21:07:47 UTC ----------------------------------------------------------------------------- } @@ -48,6 +48,7 @@ JclAnsiStrings in '..\..\source\common\JclAnsiStrings.pas' , JclBase in '..\..\source\common\JclBase.pas' , JclBorlandTools in '..\..\source\common\JclBorlandTools.pas' , + JclCharsets in '..\..\source\common\JclCharsets.pas' , JclComplex in '..\..\source\common\JclComplex.pas' , JclCompression in '..\..\source\common\JclCompression.pas' , JclCounter in '..\..\source\common\JclCounter.pas' , Modified: trunk/jcl/packages/d12/Jcl.dproj =================================================================== --- trunk/jcl/packages/d12/Jcl.dproj 2009-06-08 19:24:27 UTC (rev 2799) +++ trunk/jcl/packages/d12/Jcl.dproj 2009-06-08 21:17:26 UTC (rev 2800) @@ -67,6 +67,7 @@ <DCCReference Include="..\..\source\common\JclAnsiStrings.pas" /> <DCCReference Include="..\..\source\common\JclBase.pas" /> <DCCReference Include="..\..\source\common\JclBorlandTools.pas" /> + <DCCReference Include="..\..\source\common\JclCharsets.pas" /> <DCCReference Include="..\..\source\common\JclComplex.pas" /> <DCCReference Include="..\..\source\common\JclCompression.pas" /> <DCCReference Include="..\..\source\common\JclCounter.pas" /> Modified: trunk/jcl/packages/d5/JclD50.dpk =================================================================== --- trunk/jcl/packages/d5/JclD50.dpk 2009-06-08 19:24:27 UTC (rev 2799) +++ trunk/jcl/packages/d5/JclD50.dpk 2009-06-08 21:17:26 UTC (rev 2800) @@ -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: 14-03-2009 14:40:19 UTC + Last generated: 08-06-2009 21:07:39 UTC ----------------------------------------------------------------------------- } @@ -46,6 +46,7 @@ JclAnsiStrings in '..\..\source\common\JclAnsiStrings.pas' , JclBase in '..\..\source\common\JclBase.pas' , JclBorlandTools in '..\..\source\common\JclBorlandTools.pas' , + JclCharsets in '..\..\source\common\JclCharsets.pas' , JclComplex in '..\..\source\common\JclComplex.pas' , JclCompression in '..\..\source\common\JclCompression.pas' , JclCounter in '..\..\source\common\JclCounter.pas' , Modified: trunk/jcl/packages/d6/Jcl.dpk =================================================================== --- trunk/jcl/packages/d6/Jcl.dpk 2009-06-08 19:24:27 UTC (rev 2799) +++ trunk/jcl/packages/d6/Jcl.dpk 2009-06-08 21:17:26 UTC (rev 2800) @@ -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: 14-03-2009 14:40:19 UTC + Last generated: 08-06-2009 21:07:40 UTC ----------------------------------------------------------------------------- } @@ -47,6 +47,7 @@ JclAnsiStrings in '..\..\source\common\JclAnsiStrings.pas' , JclBase in '..\..\source\common\JclBase.pas' , JclBorlandTools in '..\..\source\common\JclBorlandTools.pas' , + JclCharsets in '..\..\source\common\JclCharsets.pas' , JclComplex in '..\..\source\common\JclComplex.pas' , JclCompression in '..\..\source\common\JclCompression.pas' , JclCounter in '..\..\source\common\JclCounter.pas' , Modified: trunk/jcl/packages/d7/Jcl.dpk =================================================================== --- trunk/jcl/packages/d7/Jcl.dpk 2009-06-08 19:24:27 UTC (rev 2799) +++ trunk/jcl/packages/d7/Jcl.dpk 2009-06-08 21:17:26 UTC (rev 2800) @@ -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: 14-03-2009 14:40:19 UTC + Last generated: 08-06-2009 21:07:41 UTC ----------------------------------------------------------------------------- } @@ -47,6 +47,7 @@ JclAnsiStrings in '..\..\source\common\JclAnsiStrings.pas' , JclBase in '..\..\source\common\JclBase.pas' , JclBorlandTools in '..\..\source\common\JclBorlandTools.pas' , + JclCharsets in '..\..\source\common\JclCharsets.pas' , JclComplex in '..\..\source\common\JclComplex.pas' , JclCompression in '..\..\source\common\JclCompression.pas' , JclCounter in '..\..\source\common\JclCounter.pas' , Modified: trunk/jcl/packages/d8/Jcl.dpk =================================================================== --- trunk/jcl/packages/d8/Jcl.dpk 2009-06-08 19:24:27 UTC (rev 2799) +++ trunk/jcl/packages/d8/Jcl.dpk 2009-06-08 21:17:26 UTC (rev 2800) @@ -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: 14-03-2009 14:40:19 UTC + Last generated: 08-06-2009 21:07:42 UTC ----------------------------------------------------------------------------- } @@ -47,6 +47,7 @@ JclAnsiStrings in '..\..\source\common\JclAnsiStrings.pas' , JclBase in '..\..\source\common\JclBase.pas' , JclBorlandTools in '..\..\source\common\JclBorlandTools.pas' , + JclCharsets in '..\..\source\common\JclCharsets.pas' , JclComplex in '..\..\source\common\JclComplex.pas' , JclCompression in '..\..\source\common\JclCompression.pas' , JclCounter in '..\..\source\common\JclCounter.pas' , Modified: trunk/jcl/packages/d9/Jcl.dpk =================================================================== --- trunk/jcl/packages/d9/Jcl.dpk 2009-06-08 19:24:27 UTC (rev 2799) +++ trunk/jcl/packages/d9/Jcl.dpk 2009-06-08 21:17:26 UTC (rev 2800) @@ -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: 14-03-2009 14:40:19 UTC + Last generated: 08-06-2009 21:07:43 UTC ----------------------------------------------------------------------------- } @@ -47,6 +47,7 @@ JclAnsiStrings in '..\..\source\common\JclAnsiStrings.pas' , JclBase in '..\..\source\common\JclBase.pas' , JclBorlandTools in '..\..\source\common\JclBorlandTools.pas' , + JclCharsets in '..\..\source\common\JclCharsets.pas' , JclComplex in '..\..\source\common\JclComplex.pas' , JclCompression in '..\..\source\common\JclCompression.pas' , JclCounter in '..\..\source\common\JclCounter.pas' , Modified: trunk/jcl/packages/d9.net/Jedi.Jcl.bdsproj =================================================================== --- trunk/jcl/packages/d9.net/Jedi.Jcl.bdsproj 2009-06-08 19:24:27 UTC (rev 2799) +++ trunk/jcl/packages/d9.net/Jedi.Jcl.bdsproj 2009-06-08 21:17:26 UTC (rev 2800) @@ -181,6 +181,7 @@ <File FileName="" ContainerId="" ModuleName="Borland.VclRtl"/> <File FileName="..\..\source\common\JclAnsiStrings.pas" ContainerId="" ModuleName="JclAnsiStrings"/> <File FileName="..\..\source\common\JclBase.pas" ContainerId="" ModuleName="JclBase"/> + <File FileName="..\..\source\common\JclCharsets.pas" ContainerId="" ModuleName="JclCharsets"/> <File FileName="..\..\source\common\JclComplex.pas" ContainerId="" ModuleName="JclComplex"/> <File FileName="..\..\source\common\JclCounter.pas" ContainerId="" ModuleName="JclCounter"/> <File FileName="..\..\source\common\JclDateTime.pas" ContainerId="" ModuleName="JclDateTime"/> Modified: trunk/jcl/packages/d9.net/Jedi.Jcl.dpk =================================================================== --- trunk/jcl/packages/d9.net/Jedi.Jcl.dpk 2009-06-08 19:24:27 UTC (rev 2799) +++ trunk/jcl/packages/d9.net/Jedi.Jcl.dpk 2009-06-08 21:17:26 UTC (rev 2800) @@ -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: 14-03-2009 14:40:19 UTC + Last generated: 08-06-2009 21:07:45 UTC ----------------------------------------------------------------------------- } @@ -44,6 +44,7 @@ contains JclAnsiStrings in '..\..\source\common\JclAnsiStrings.pas' , JclBase in '..\..\source\common\JclBase.pas' , + JclCharsets in '..\..\source\common\JclCharsets.pas' , JclComplex in '..\..\source\common\JclComplex.pas' , JclCounter in '..\..\source\common\JclCounter.pas' , JclDateTime in '..\..\source\common\JclDateTime.pas' , Modified: trunk/jcl/packages/k3/Jcl.bpk =================================================================== --- trunk/jcl/packages/k3/Jcl.bpk 2009-06-08 19:24:27 UTC (rev 2799) +++ trunk/jcl/packages/k3/Jcl.bpk 2009-06-08 21:17:26 UTC (rev 2800) @@ -10,6 +10,7 @@ ..\..\lib\k3\JclAnsiStrings.obj ..\..\lib\k3\JclBase.obj ..\..\lib\k3\JclBorlandTools.obj + ..\..\lib\k3\JclCharsets.obj ..\..\lib\k3\JclComplex.obj ..\..\lib\k3\JclCompression.obj ..\..\lib\k3\JclCounter.obj @@ -102,6 +103,7 @@ <FILE FILENAME="../../source/common/JclAnsiStrings.pas" FORMNAME="" UNITNAME="JclAnsiStrings" CONTAINERID="PascalCompiler" DESIGNCLASS="" LOCALCOMMAND=""/> <FILE FILENAME="../../source/common/JclBase.pas" FORMNAME="" UNITNAME="JclBase" CONTAINERID="PascalCompiler" DESIGNCLASS="" LOCALCOMMAND=""/> <FILE FILENAME="../../source/common/JclBorlandTools.pas" FORMNAME="" UNITNAME="JclBorlandTools" CONTAINERID="PascalCompiler" DESIGNCLASS="" LOCALCOMMAND=""/> + <FILE FILENAME="../../source/common/JclCharsets.pas" FORMNAME="" UNITNAME="JclCharsets" CONTAINERID="PascalCompiler" DESIGNCLASS="" LOCALCOMMAND=""/> <FILE FILENAME="../../source/common/JclComplex.pas" FORMNAME="" UNITNAME="JclComplex" CONTAINERID="PascalCompiler" DESIGNCLASS="" LOCALCOMMAND=""/> <FILE FILENAME="../../source/common/JclCompression.pas" FORMNAME="" UNITNAME="JclCompression" CONTAINERID="PascalCompiler" DESIGNCLASS="" LOCALCOMMAND=""/> <FILE FILENAME="../../source/common/JclCounter.pas" FORMNAME="" UNITNAME="JclCounter" CONTAINERID="PascalCompiler" DESIGNCLASS="" LOCALCOMMAND=""/> Modified: trunk/jcl/packages/k3/Jcl.dpk =================================================================== --- trunk/jcl/packages/k3/Jcl.dpk 2009-06-08 19:24:27 UTC (rev 2799) +++ trunk/jcl/packages/k3/Jcl.dpk 2009-06-08 21:17:26 UTC (rev 2800) @@ -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: 14-03-2009 14:40:19 UTC + Last generated: 08-06-2009 21:07:44 UTC ----------------------------------------------------------------------------- } @@ -49,6 +49,7 @@ JclAnsiStrings in '../../source/common/JclAnsiStrings.pas' , JclBase in '../../source/common/JclBase.pas' , JclBorlandTools in '../../source/common/JclBorlandTools.pas' , + JclCharsets in '../../source/common/JclCharsets.pas' , JclComplex in '../../source/common/JclComplex.pas' , JclCompression in '../../source/common/JclCompression.pas' , JclCounter in '../../source/common/JclCounter.pas' , Modified: trunk/jcl/packages/xml/Jcl-R.xml =================================================================== --- trunk/jcl/packages/xml/Jcl-R.xml 2009-06-08 19:24:27 UTC (rev 2799) +++ trunk/jcl/packages/xml/Jcl-R.xml 2009-06-08 21:17:26 UTC (rev 2800) @@ -20,6 +20,7 @@ <File Name="..\..\source\common\JclAnsiStrings.pas" Targets="JclDev,JclDotNet" Formname="" Condition=""/> <File Name="..\..\source\common\JclBase.pas" Targets="JclDev,JclDotNet" Formname="" Condition=""/> <File Name="..\..\source\common\JclBorlandTools.pas" Targets="JclDev" Formname="" Condition=""/> + <File Name="..\..\source\common\JclCharsets.pas" Targets="JclDev,JclDotNet" Formname="" Condition=""/> <File Name="..\..\source\common\JclComplex.pas" Targets="JclDev,JclDotNet" Formname="" Condition=""/> <File Name="..\..\source\common\JclCompression.pas" Targets="JclDev" Formname="" Condition=""/> <File Name="..\..\source\common\JclCounter.pas" Targets="JclDev,JclDotNet" Formname="" Condition=""/> Added: trunk/jcl/source/common/JclCharsets.pas =================================================================== --- trunk/jcl/source/common/JclCharsets.pas (rev 0) +++ trunk/jcl/source/common/JclCharsets.pas 2009-06-08 21:17:26 UTC (rev 2800) @@ -0,0 +1,495 @@ +{**************************************************************************************************} +{ } +{ Project JEDI Code Library (JCL) } +{ } +{ The contents of this file are subject to the Mozilla Public License Version 1.1 (the "License"); } +{ you may not use this file except in compliance with the License. You may obtain a copy of the } +{ License at http://www.mozilla.org/MPL/ } +{ } +{ Software distributed under the License is distributed on an "AS IS" basis, WITHOUT WARRANTY OF } +{ ANY KIND, either express or implied. See the License for the specific language governing rights } +{ and limitations under the License. } +{ } +{ The Original Code is JclCharsets.pas. } +{ } +{ The Initial Developer of the Original Code is Florent Ouchet. } +{ Portions created by Florent Ouchet are Copyright Florent Ouchet. All rights reserved. } +{ } +{ Contributors: } +{ } +{**************************************************************************************************} +{ } +{ Windows codepage bindings are taken from IE5 ones: } +{ http://msdn.microsoft.com/en-us/library/aa752010(VS.85).aspx } +{ } +{**************************************************************************************************} +{ } +{ Last modified: $Date:: $ } +{ Revision: $Rev:: $ } +{ Author: $Author:: $ } +{ } +{**************************************************************************************************} + +unit JclCharsets; + +{$I jcl.inc} + +interface + +{$IFDEF UNITVERSIONING} +uses + JclUnitVersioning; +{$ENDIF UNITVERSIONING} + +type + TJclCharsetInfo = record + Name: string; + CodePage: Word; + FamilyCodePage: Word; + end; + +const JclCharsetInfos: array [0..301] of TJclCharsetInfo = +(* Arabic (ASMO 708) ASMO-708 708 1256 *) + ((Name: 'ASMO-708'; CodePage: 708; FamilyCodePage: 1256), +(* Arabic (DOS) DOS-720 720 1256 *) + (Name: 'DOS-720'; CodePage: 720; FamilyCodePage: 1256), +(* Arabic (ISO) iso-8859-6 arabic, csISOLatinArabic, ECMA-114, ISO_8859-6, ISO_8859-6:1987, iso-ir-127 28596 1256 *) + (Name: 'iso-8859-6'; CodePage: 28596; FamilyCodePage: 1256), + (Name: 'arabic'; CodePage: 28596; FamilyCodePage: 1256), + (Name: 'csISOLatinArabic'; CodePage: 28596; FamilyCodePage: 1256), + (Name: 'ECMA-114'; CodePage: 28596; FamilyCodePage: 1256), + (Name: 'ISO_8859-6'; CodePage: 28596; FamilyCodePage: 1256), + (Name: 'ISO_8859-6:1987'; CodePage: 28596; FamilyCodePage: 1256), + (Name: 'iso-ir-127'; CodePage: 28596; FamilyCodePage: 1256), +(* Arabic (Mac) x-mac-arabic 10004 1256 *) + (Name: 'x-mac-arabic'; CodePage: 10004; FamilyCodePage: 1256), +(* Arabic (Windows) windows-1256 cp1256 1256 1256 *) + (Name: 'windows-1256'; CodePage: 1256; FamilyCodePage: 1256), + (Name: 'cp1256'; CodePage: 1256; FamilyCodePage: 1256), +(* Baltic (DOS) ibm775 CP500 775 1257 *) + (Name: 'ibm775'; CodePage: 775; FamilyCodePage: 1257), + (Name: 'CP500'; CodePage: 775; FamilyCodePage: 1257), +(* Baltic (ISO) iso-8859-4 csISOLatin4, ISO_8859-4, ISO_8859-4:1988, iso-ir-110, l4, latin4 28594 1257 *) + (Name: 'iso-8859-4'; CodePage: 28594; FamilyCodePage: 1257), + (Name: 'csISOLatin4'; CodePage: 28594; FamilyCodePage: 1257), + (Name: 'ISO_8859-4'; CodePage: 28594; FamilyCodePage: 1257), + (Name: 'ISO_8859-4:1988'; CodePage: 28594; FamilyCodePage: 1257), + (Name: 'iso-ir-110'; CodePage: 28594; FamilyCodePage: 1257), + (Name: 'l4'; CodePage: 28594; FamilyCodePage: 1257), + (Name: 'latin4'; CodePage: 28594; FamilyCodePage: 1257), +(* Baltic (Windows) windows-1257 1257 1257 *) + (Name: 'windows-1257'; CodePage: 1257; FamilyCodePage: 1257), +(* Central European (DOS) ibm852 cp852 852 1250 *) + (Name: 'ibm852'; CodePage: 852; FamilyCodePage: 1250), + (Name: 'cp852'; CodePage: 852; FamilyCodePage: 1250), +(* Central European (ISO) iso-8859-2 csISOLatin2, iso_8859-2, iso_8859-2:1987, iso8859-2, iso-ir-101, l2, latin2 28592 1250 *) + (Name: 'iso-8859-2'; CodePage: 28592; FamilyCodePage: 1250), + (Name: 'csISOLatin2'; CodePage: 28592; FamilyCodePage: 1250), + (Name: 'iso_8859-2'; CodePage: 28592; FamilyCodePage: 1250), + (Name: 'iso_8859-2:1987'; CodePage: 28592; FamilyCodePage: 1250), + (Name: 'iso8859-2'; CodePage: 28592; FamilyCodePage: 1250), + (Name: 'iso-ir-101'; CodePage: 28592; FamilyCodePage: 1250), + (Name: 'l2'; CodePage: 28592; FamilyCodePage: 1250), + (Name: 'latin2'; CodePage: 28592; FamilyCodePage: 1250), +(* Central European (Mac) x-mac-ce 10029 1250 *) + (Name: 'x-mac-ce'; CodePage: 10029; FamilyCodePage: 1250), +(* Central European (Windows) windows-1250 x-cp1250 1250 1250 *) + (Name: 'windows-1250'; CodePage: 1250; FamilyCodePage: 1250), + (Name: 'x-cp1250'; CodePage: 1250; FamilyCodePage: 1250), +(* Chinese Simplified (EUC) EUC-CN x-euc-cn 51936 936 *) + (Name: 'EUC-CN'; CodePage: 51936; FamilyCodePage: 936), + (Name: 'x-euc-cn'; CodePage: 51936; FamilyCodePage: 936), +(* Chinese Simplified (GB2312) gb2312 chinese, CN-GB, csGB2312, csGB231280, csISO58GB231280, GB_2312-80, GB231280, GB2312-80, GBK, iso-ir-58 936 936 *) + (Name: 'gb2312'; CodePage: 936; FamilyCodePage: 936), + (Name: 'chinese'; CodePage: 936; FamilyCodePage: 936), + (Name: 'CN-GB'; CodePage: 936; FamilyCodePage: 936), + (Name: 'csGB2312'; CodePage: 936; FamilyCodePage: 936), + (Name: 'csGB231280'; CodePage: 936; FamilyCodePage: 936), + (Name: 'csISO58GB231280'; CodePage: 936; FamilyCodePage: 936), + (Name: 'GB_2312-80'; CodePage: 936; FamilyCodePage: 936), + (Name: 'GB231280'; CodePage: 936; FamilyCodePage: 936), + (Name: 'GB2312-80'; CodePage: 936; FamilyCodePage: 936), + (Name: 'GBK'; CodePage: 936; FamilyCodePage: 936), + (Name: 'iso-ir-58'; CodePage: 936; FamilyCodePage: 936), +(* Chinese Simplified (HZ) hz-gb-2312 52936 936 *) + (Name: 'hz-gb-2312'; CodePage: 52936; FamilyCodePage: 936), +(* Chinese Simplified (Mac) x-mac-chinesesimp 10008 936 *) + (Name: 'x-mac-chinesesimp'; CodePage: 10008; FamilyCodePage: 936), +(* Chinese Traditional (Big5) big5 cn-big5, csbig5, x-x-big5 950 950 *) + (Name: 'big5'; CodePage: 950; FamilyCodePage: 950), + (Name: 'cn-big5'; CodePage: 950; FamilyCodePage: 950), + (Name: 'csbig5'; CodePage: 950; FamilyCodePage: 950), + (Name: 'x-x-big5'; CodePage: 950; FamilyCodePage: 950), +(* Chinese Traditional (CNS) x-Chinese-CNS 20000 950 *) + (Name: 'x-Chinese-CNS'; CodePage: 20000; FamilyCodePage: 950), +(* Chinese Traditional (Eten) x-Chinese-Eten 20002 950 *) + (Name: 'x-Chinese-Eten'; CodePage: 20002; FamilyCodePage: 950), +(* Chinese Traditional (Mac) x-mac-chinesetrad 10002 950 *) + (Name: 'x-mac-chinesetrad'; CodePage: 10002; FamilyCodePage: 950), +(* Cyrillic (DOS) cp866 ibm866 866 1251 *) + (Name: 'cp866'; CodePage: 866; FamilyCodePage: 1251), + (Name: 'ibm866'; CodePage: 866; FamilyCodePage: 1251), +(* Cyrillic (ISO) iso-8859-5 csISOLatin5, csISOLatinCyrillic, cyrillic, ISO_8859-5, ISO_8859-5:1988, iso-ir-144, l5 28595 1251 *) + (Name: 'iso-8859-5'; CodePage: 28595; FamilyCodePage: 1251), + (Name: 'csISOLatin5'; CodePage: 28595; FamilyCodePage: 1251), + (Name: 'csISOLatinCyrillic'; CodePage: 28595; FamilyCodePage: 1251), + (Name: 'cyrillic'; CodePage: 28595; FamilyCodePage: 1251), + (Name: 'ISO_8859-5'; CodePage: 28595; FamilyCodePage: 1251), + (Name: 'ISO_8859-5:1988'; CodePage: 28595; FamilyCodePage: 1251), + (Name: 'iso-ir-144'; CodePage: 28595; FamilyCodePage: 1251), + (Name: 'l5'; CodePage: 28595; FamilyCodePage: 1251), +(* Cyrillic (KOI8-R) koi8-r csKOI8R, koi, koi8, koi8r 20866 1251 *) + (Name: 'koi8-r'; CodePage: 20866; FamilyCodePage: 1251), + (Name: 'csKOI8R'; CodePage: 20866; FamilyCodePage: 1251), + (Name: 'koi'; CodePage: 20866; FamilyCodePage: 1251), + (Name: 'koi8'; CodePage: 20866; FamilyCodePage: 1251), + (Name: 'koi8r'; CodePage: 20866; FamilyCodePage: 1251), +(* Cyrillic (KOI8-U) koi8-u koi8-ru 21866 1251 *) + (Name: 'koi8-u'; CodePage: 21866; FamilyCodePage: 1251), + (Name: 'koi8-ru'; CodePage: 21866; FamilyCodePage: 1251), +(* Cyrillic (Mac) x-mac-cyrillic 10007 1251 *) + (Name: 'x-mac-cyrillic'; CodePage: 10007; FamilyCodePage: 1251), +(* Cyrillic (Windows) windows-1251 x-cp1251 1251 1251 *) + (Name: 'windows-1251'; CodePage: 1251; FamilyCodePage: 1251), + (Name: 'x-cp1251'; CodePage: 1251; FamilyCodePage: 1251), +(* Europa x-Europa 29001 1252 *) + (Name: 'x-Europa'; CodePage: 29001; FamilyCodePage: 1252), +(* German (IA5) x-IA5-German 20106 1252 *) + (Name: 'x-IA5-German'; CodePage: 20106; FamilyCodePage: 1252), +(* Greek (DOS) ibm737 737 1253 *) + (Name: 'ibm737'; CodePage: 737; FamilyCodePage: 1253), +(* Greek (ISO) iso-8859-7 csISOLatinGreek, ECMA-118, ELOT_928, greek, greek8, ISO_8859-7, ISO_8859-7:1987, iso-ir-126 28597 1253 *) + (Name: 'iso-8859-7'; CodePage: 28597; FamilyCodePage: 1253), + (Name: 'csISOLatinGreek'; CodePage: 28597; FamilyCodePage: 1253), + (Name: 'ECMA-118'; CodePage: 28597; FamilyCodePage: 1253), + (Name: 'ELOT_928'; CodePage: 28597; FamilyCodePage: 1253), + (Name: 'greek'; CodePage: 28597; FamilyCodePage: 1253), + (Name: 'greek8'; CodePage: 28597; FamilyCodePage: 1253), + (Name: 'ISO_8859-7'; CodePage: 28597; FamilyCodePage: 1253), + (Name: 'ISO_8859-7:1987'; CodePage: 28597; FamilyCodePage: 1253), + (Name: 'iso-ir-126'; CodePage: 28597; FamilyCodePage: 1253), +(* Greek (Mac) x-mac-greek 10006 1253 *) + (Name: 'x-mac-greek'; CodePage: 10006; FamilyCodePage: 1253), +(* Greek (Windows) windows-1253 1253 1253 *) + (Name: 'windows-1253'; CodePage: 1253; FamilyCodePage: 1253), +(* Greek, Modern (DOS) ibm869 869 1253 *) + (Name: 'ibm869'; CodePage: 869; FamilyCodePage: 1253), +(* Hebrew (DOS) DOS-862 862 1255 *) + (Name: 'DOS-862'; CodePage: 862; FamilyCodePage: 1255), +(* Hebrew (ISO-Logical) iso-8859-8-i logical 38598 1255 *) + (Name: 'iso-8859-8-i'; CodePage: 38598; FamilyCodePage: 1255), + (Name: 'logical'; CodePage: 38598; FamilyCodePage: 1255), +(* Hebrew (ISO-Visual) iso-8859-8 csISOLatinHebrew, hebrew, ISO_8859-8, ISO_8859-8:1988, ISO-8859-8, iso-ir-138, visual 28598 1255 *) + (Name: 'iso-8859-8'; CodePage: 28598; FamilyCodePage: 1255), + (Name: 'csISOLatinHebrew'; CodePage: 28598; FamilyCodePage: 1255), + (Name: 'hebrew'; CodePage: 28598; FamilyCodePage: 1255), + (Name: 'ISO_8859-8'; CodePage: 28598; FamilyCodePage: 1255), + (Name: 'ISO_8859-8:1988'; CodePage: 28598; FamilyCodePage: 1255), + (Name: 'ISO-8859-8'; CodePage: 28598; FamilyCodePage: 1255), + (Name: 'iso-ir-138'; CodePage: 28598; FamilyCodePage: 1255), + (Name: 'visual'; CodePage: 28598; FamilyCodePage: 1255), +(* Hebrew (Mac) x-mac-hebrew 10005 1255 *) + (Name: 'x-mac-hebrew'; CodePage: 10005; FamilyCodePage: 1255), +(* Hebrew (Windows) windows-1255 ISO_8859-8-I, ISO-8859-8, visual 1255 1255 *) + (Name: 'windows-1255'; CodePage: 1255; FamilyCodePage: 1255), + (Name: 'ISO_8859-8-I'; CodePage: 1255; FamilyCodePage: 1255), + (Name: 'ISO-8859-8'; CodePage: 1255; FamilyCodePage: 1255), + (Name: 'visual'; CodePage: 1255; FamilyCodePage: 1255), +(* IBM EBCDIC (Arabic) x-EBCDIC-Arabic 20420 1256 *) + (Name: 'x-EBCDIC-Arabic'; CodePage: 20420; FamilyCodePage: 1256), +(* IBM EBCDIC (Cyrillic Russian) x-EBCDIC-CyrillicRussian 20880 1251 *) + (Name: 'x-EBCDIC-CyrillicRussian'; CodePage: 20880; FamilyCodePage: 1251), +(* IBM EBCDIC (Cyrillic Serbian-Bulgarian) x-EBCDIC-CyrillicSerbianBulgarian 21025 1251 *) + (Name: 'x-EBCDIC-CyrillicSerbianBulgarian'; CodePage: 21025; FamilyCodePage: 1251), +(* IBM EBCDIC (Denmark-Norway) x-EBCDIC-DenmarkNorway 20277 1252 *) + (Name: 'x-EBCDIC-DenmarkNorway'; CodePage: 20277; FamilyCodePage: 1252), +(* IBM EBCDIC (Denmark-Norway-Euro) x-ebcdic-denmarknorway-euro 1142 1252 *) + (Name: 'x-ebcdic-denmarknorway-euro'; CodePage: 1142; FamilyCodePage: 1252), +(* IBM EBCDIC (Finland-Sweden) x-EBCDIC-FinlandSweden 20278 1252 *) + (Name: 'x-EBCDIC-FinlandSweden'; CodePage: 20278; FamilyCodePage: 1252), +(* IBM EBCDIC (Finland-Sweden-Euro) x-ebcdic-finlandsweden-euro 1143 1252 *) + (Name: 'x-ebcdic-finlandsweden-euro'; CodePage: 1143; FamilyCodePage: 1252), +(* IBM EBCDIC (Finland-Sweden-Euro) x-ebcdic-finlandsweden-euro X-EBCDIC-France 1143 1252 *) + (Name: 'x-ebcdic-finlandsweden-euro'; CodePage: 1143; FamilyCodePage: 1252), + (Name: 'X-EBCDIC-France'; CodePage: 1143; FamilyCodePage: 1252), +(* IBM EBCDIC (France-Euro) x-ebcdic-france-euro 1147 1252 *) + (Name: 'x-ebcdic-france-euro'; CodePage: 1147; FamilyCodePage: 1252), +(* IBM EBCDIC (Germany) x-EBCDIC-Germany 20273 1252 *) + (Name: 'x-EBCDIC-Germany'; CodePage: 20273; FamilyCodePage: 1252), +(* IBM EBCDIC (Germany-Euro) x-ebcdic-germany-euro 1141 1252 *) + (Name: 'x-ebcdic-germany-euro'; CodePage: 1141; FamilyCodePage: 1252), +(* IBM EBCDIC (Greek Modern) x-EBCDIC-GreekModern 875 1253 *) + (Name: 'x-EBCDIC-GreekModern'; CodePage: 875; FamilyCodePage: 1253), +(* IBM EBCDIC (Greek) x-EBCDIC-Greek 20423 1253 *) + (Name: 'x-EBCDIC-Greek'; CodePage: 20423; FamilyCodePage: 1253), +(* IBM EBCDIC (Hebrew) x-EBCDIC-Hebrew 20424 1255 *) + (Name: 'x-EBCDIC-Hebrew'; CodePage: 20424; FamilyCodePage: 1255), +(* IBM EBCDIC (Icelandic) x-EBCDIC-Icelandic 20871 1252 *) + (Name: 'x-EBCDIC-Icelandic'; CodePage: 20871; FamilyCodePage: 1252), +(* IBM EBCDIC (Icelandic-Euro) x-ebcdic-icelandic-euro 1149 1252 *) + (Name: 'x-ebcdic-icelandic-euro'; CodePage: 1149; FamilyCodePage: 1252), +(* IBM EBCDIC (International-Euro) x-ebcdic-international-euro 1148 1252 *) + (Name: 'x-ebcdic-international-euro'; CodePage: 1148; FamilyCodePage: 1252), +(* IBM EBCDIC (Italy) x-EBCDIC-Italy 20280 1252 *) + (Name: 'x-EBCDIC-Italy'; CodePage: 20280; FamilyCodePage: 1252), +(* IBM EBCDIC (Italy-Euro) x-ebcdic-italy-euro 1144 1252 *) + (Name: 'x-ebcdic-italy-euro'; CodePage: 1144; FamilyCodePage: 1252), +(* IBM EBCDIC (Japanese and Japanese Katakana) x-EBCDIC-JapaneseAndKana 50930 932 *) + (Name: 'x-EBCDIC-JapaneseAndKana'; CodePage: 50930; FamilyCodePage: 932), +(* IBM EBCDIC (Japanese and Japanese-Latin) x-EBCDIC-JapaneseAndJapaneseLatin 50939 932 *) + (Name: 'x-EBCDIC-JapaneseAndJapaneseLatin'; CodePage: 50939; FamilyCodePage: 932), +(* IBM EBCDIC (Japanese and US-Canada) x-EBCDIC-JapaneseAndUSCanada 50931 932 *) + (Name: 'x-EBCDIC-JapaneseAndUSCanada'; CodePage: 50931; FamilyCodePage: 932), +(* IBM EBCDIC (Japanese katakana) x-EBCDIC-JapaneseKatakana 20290 932 *) + (Name: 'x-EBCDIC-JapaneseKatakana'; CodePage: 20290; FamilyCodePage: 932), +(* IBM EBCDIC (Korean and Korean Extended) x-EBCDIC-KoreanAndKoreanExtended 50933 949 *) + (Name: 'x-EBCDIC-KoreanAndKoreanExtended'; CodePage: 50933; FamilyCodePage: 949), +(* IBM EBCDIC (Korean Extended) x-EBCDIC-KoreanExtended 20833 949 *) + (Name: 'x-EBCDIC-KoreanExtended'; CodePage: 20833; FamilyCodePage: 949), +(* IBM EBCDIC (Multilingual Latin-2) CP870 870 1250 *) + (Name: 'CP870'; CodePage: 870; FamilyCodePage: 1250), +(* IBM EBCDIC (Simplified Chinese) x-EBCDIC-SimplifiedChinese 50935 936 *) + (Name: 'x-EBCDIC-SimplifiedChinese'; CodePage: 50935; FamilyCodePage: 936), +(* IBM EBCDIC (Spain) X-EBCDIC-Spain 20284 1252 *) + (Name: 'X-EBCDIC-Spain'; CodePage: 20284; FamilyCodePage: 1252), +(* IBM EBCDIC (Spain-Euro) x-ebcdic-spain-euro 1145 1252 *) + (Name: 'x-ebcdic-spain-euro'; CodePage: 1145; FamilyCodePage: 1252), +(* IBM EBCDIC (Thai) x-EBCDIC-Thai 20838 874 *) + (Name: 'x-EBCDIC-Thai'; CodePage: 20838; FamilyCodePage: 874), +(* IBM EBCDIC (Traditional Chinese) x-EBCDIC-TraditionalChinese 50937 950 *) + (Name: 'x-EBCDIC-TraditionalChinese'; CodePage: 50937; FamilyCodePage: 950), +(* IBM EBCDIC (Turkish Latin-5) CP1026 1026 1254 *) + (Name: 'CP1026'; CodePage: 1026; FamilyCodePage: 1254), +(* IBM EBCDIC (Turkish) x-EBCDIC-Turkish 20905 1254 *) + (Name: 'x-EBCDIC-Turkish'; CodePage: 20905; FamilyCodePage: 1254), +(* IBM EBCDIC (UK) x-EBCDIC-UK 20285 1252 *) + (Name: 'x-EBCDIC-UK'; CodePage: 20285; FamilyCodePage: 1252), +(* IBM EBCDIC (UK-Euro) x-ebcdic-uk-euro 1146 1252 *) + (Name: 'x-ebcdic-uk-euro'; CodePage: 1146; FamilyCodePage: 1252), +(* IBM EBCDIC (US-Canada) ebcdic-cp-us 37 1252 *) + (Name: 'ebcdic-cp-us'; CodePage: 37; FamilyCodePage: 1252), +(* IBM EBCDIC (US-Canada-Euro) x-ebcdic-cp-us-euro 1140 1252 *) + (Name: 'x-ebcdic-cp-us-euro'; CodePage: 1140; FamilyCodePage: 1252), +(* Icelandic (DOS) ibm861 861 1252 *) + (Name: 'ibm861'; CodePage: 861; FamilyCodePage: 1252), +(* Icelandic (Mac) x-mac-icelandic 10079 1252 *) + (Name: 'x-mac-icelandic'; CodePage: 10079; FamilyCodePage: 1252), +(* ISCII Assamese x-iscii-as 57006 57006 *) + (Name: 'Assamese'; CodePage: 57006; FamilyCodePage: 57006), + (Name: 'x-iscii-as'; CodePage: 57006; FamilyCodePage: 57006), +(* ISCII Bengali x-iscii-be 57003 57003 *) + (Name: 'Bengali'; CodePage: 57003; FamilyCodePage: 57003), + (Name: 'x-iscii-be'; CodePage: 57003; FamilyCodePage: 57003), +(* ISCII Devanagari x-iscii-de 57002 57002 *) + (Name: 'Devanagari'; CodePage: 57002; FamilyCodePage: 57002), + (Name: 'x-iscii-de'; CodePage: 57002; FamilyCodePage: 57002), +(* ISCII Gujarathi x-iscii-gu 57010 57010 *) + (Name: 'Gujarathi'; CodePage: 57010; FamilyCodePage: 57010), + (Name: 'x-iscii-gu'; CodePage: 57010; FamilyCodePage: 57010), +(* ISCII Kannada x-iscii-ka 57008 57008 *) + (Name: 'Kannada'; CodePage: 57008; FamilyCodePage: 57008), + (Name: 'x-iscii-ka'; CodePage: 57008; FamilyCodePage: 57008), +(* ISCII Malayalam x-iscii-ma 57009 57009 *) + (Name: 'Malayalam'; CodePage: 57009; FamilyCodePage: 57009), + (Name: 'x-iscii-ma'; CodePage: 57009; FamilyCodePage: 57009), +(* ISCII Oriya x-iscii-or 57007 57007 *) + (Name: 'Oriya'; CodePage: 57007; FamilyCodePage: 57007), + (Name: 'x-iscii-or'; CodePage: 57007; FamilyCodePage: 57007), +(* ISCII Panjabi x-iscii-pa 57011 57011 *) + (Name: 'Panjabi'; CodePage: 57011; FamilyCodePage: 57011), + (Name: 'x-iscii-pa'; CodePage: 57011; FamilyCodePage: 57011), +(* ISCII Tamil x-iscii-ta 57004 57004 *) + (Name: 'Tamil'; CodePage: 57004; FamilyCodePage: 57004), + (Name: 'x-iscii-ta'; CodePage: 57004; FamilyCodePage: 57004), +(* ISCII Telugu x-iscii-te 57005 57005 *) + (Name: 'Telugu'; CodePage: 57005; FamilyCodePage: 57005), + (Name: 'x-iscii-te'; CodePage: 57005; FamilyCodePage: 57005), +(* Japanese (EUC) euc-jp csEUCPkdFmtJapanese, Extended_UNIX_Code_Packed_Format_for_Japanese, x-euc, x-euc-jp 51932 932 *) + (Name: 'euc-jp'; CodePage: 51932; FamilyCodePage: 932), + (Name: 'csEUCPkdFmtJapanese'; CodePage: 51932; FamilyCodePage: 932), + (Name: 'Extended_UNIX_Code_Packed_Format_for_Japanese'; CodePage: 51932; FamilyCodePage: 932), + (Name: 'x-euc'; CodePage: 51932; FamilyCodePage: 932), + (Name: 'x-euc-jp'; CodePage: 51932; FamilyCodePage: 932), +(* Japanese (JIS) iso-2022-jp 50220 932 *) + (Name: 'iso-2022-jp'; CodePage: 50220; FamilyCodePage: 932), +(* Japanese (JIS-Allow 1 byte Kana - SO/SI) iso-2022-jp _iso-2022-jp$SIO 50222 932 *) + (Name: 'iso-2022-jp'; CodePage: 50222; FamilyCodePage: 932), + (Name: '_iso-2022-jp$SIO'; CodePage: 50222; FamilyCodePage: 932), +(* Japanese (JIS-Allow 1 byte Kana) csISO2022JP _iso-2022-jp 50221 932 *) + (Name: 'csISO2022JP'; CodePage: 50221; FamilyCodePage: 932), + (Name: '_iso-2022-jp'; CodePage: 50221; FamilyCodePage: 932), +(* Japanese (Mac) x-mac-japanese 10001 932 *) + (Name: 'x-mac-japanese'; CodePage: 10001; FamilyCodePage: 932), +(* Japanese (Shift-JIS) shift_jis csShiftJIS, csWindows31J, ms_Kanji, shift-jis, x-ms-cp932, x-sjis 932 932 *) + (Name: 'shift_jis'; CodePage: 932; FamilyCodePage: 932), + (Name: 'csShiftJIS'; CodePage: 932; FamilyCodePage: 932), + (Name: 'csWindows31J'; CodePage: 932; FamilyCodePage: 932), + (Name: 'ms_Kanji'; CodePage: 932; FamilyCodePage: 932), + (Name: 'shift-jis'; CodePage: 932; FamilyCodePage: 932), + (Name: 'x-ms-cp932'; CodePage: 932; FamilyCodePage: 932), + (Name: 'x-sjis'; CodePage: 932; FamilyCodePage: 932), +(* Korean ks_c_5601-1987 csKSC56011987, euc-kr, iso-ir-149, korean, ks_c_5601, ks_c_5601_1987, ks_c_5601-1989, KSC_5601, KSC5601 949 949 *) + (Name: 'ks_c_5601-1987'; CodePage: 949; FamilyCodePage: 949), + (Name: 'csKSC56011987'; CodePage: 949; FamilyCodePage: 949), + (Name: 'euc-kr'; CodePage: 949; FamilyCodePage: 949), + (Name: 'iso-ir-149'; CodePage: 949; FamilyCodePage: 949), + (Name: 'korean'; CodePage: 949; FamilyCodePage: 949), + (Name: 'ks_c_5601'; CodePage: 949; FamilyCodePage: 949), + (Name: 'ks_c_5601_1987'; CodePage: 949; FamilyCodePage: 949), + (Name: 'ks_c_5601-1989'; CodePage: 949; FamilyCodePage: 949), + (Name: 'KSC_5601'; CodePage: 949; FamilyCodePage: 949), + (Name: 'KSC5601'; CodePage: 949; FamilyCodePage: 949), +(* Korean (EUC) euc-kr csEUCKR 51949 949 *) + (Name: 'euc-kr'; CodePage: 51949; FamilyCodePage: 949), + (Name: 'csEUCKR'; CodePage: 51949; FamilyCodePage: 949), +(* Korean (ISO) iso-2022-kr csISO2022KR 50225 949 *) + (Name: 'iso-2022-kr'; CodePage: 50225; FamilyCodePage: 949), + (Name: 'csISO2022KR'; CodePage: 50225; FamilyCodePage: 949), +(* Korean (Johab) Johab 1361 1361 *) + (Name: 'Johab'; CodePage: 1361; FamilyCodePage: 1361), +(* Korean (Mac) x-mac-korean 10003 949 *) + (Name: 'x-mac-korean'; CodePage: 10003; FamilyCodePage: 949), +(* Latin 3 (ISO) iso-8859-3 csISO, Latin3, ISO_8859-3, ISO_8859-3:1988, iso-ir-109, l3, latin3 28593 1254 *) + (Name: 'iso-8859-3'; CodePage: 28593; FamilyCodePage: 1254), + (Name: 'csISO'; CodePage: 28593; FamilyCodePage: 1254), + (Name: 'Latin3'; CodePage: 28593; FamilyCodePage: 1254), + (Name: 'ISO_8859-3'; CodePage: 28593; FamilyCodePage: 1254), + (Name: 'ISO_8859-3:1988'; CodePage: 28593; FamilyCodePage: 1254), + (Name: 'iso-ir-109'; CodePage: 28593; FamilyCodePage: 1254), + (Name: 'l3,'; CodePage: 28593; FamilyCodePage: 1254), + (Name: 'latin3'; CodePage: 28593; FamilyCodePage: 1254), +(* Latin 9 (ISO) iso-8859-15 csISO, Latin9, ISO_8859-15, l9, latin9 28605 1252 *) + (Name: 'iso-8859-15'; CodePage: 28605; FamilyCodePage: 1252), + (Name: 'csISO'; CodePage: 28605; FamilyCodePage: 1252), + (Name: 'Latin9'; CodePage: 28605; FamilyCodePage: 1252), + (Name: 'ISO_8859-15'; CodePage: 28605; FamilyCodePage: 1252), + (Name: 'l9'; CodePage: 28605; FamilyCodePage: 1252), + (Name: 'latin9'; CodePage: 28605; FamilyCodePage: 1252), +(* Norwegian (IA5) x-IA5-Norwegian 20108 1252 *) + (Name: 'x-IA5-Norwegian'; CodePage: 20108; FamilyCodePage: 1252), +(* OEM United States IBM437 437, cp437, csPC8, CodePage437 437 1252 *) + (Name: 'United'; CodePage: 437; FamilyCodePage: 1252), + (Name: 'States'; CodePage: 437; FamilyCodePage: 1252), + (Name: 'IBM437'; CodePage: 437; FamilyCodePage: 1252), + (Name: '437'; CodePage: 437; FamilyCodePage: 1252), + (Name: 'cp437'; CodePage: 437; FamilyCodePage: 1252), + (Name: 'csPC8'; CodePage: 437; FamilyCodePage: 1252), + (Name: 'CodePage437'; CodePage: 437; FamilyCodePage: 1252), +(* Swedish (IA5) x-IA5-Swedish 20107 1252 *) + (Name: 'x-IA5-Swedish'; CodePage: 20107; FamilyCodePage: 1252), +(* Thai (Windows) windows-874 DOS-874, iso-8859-11, TIS-620 874 874 *) + (Name: 'windows-874'; CodePage: 874; FamilyCodePage: 874), + (Name: 'DOS-874'; CodePage: 874; FamilyCodePage: 874), + (Name: 'iso-8859-11'; CodePage: 874; FamilyCodePage: 874), + (Name: 'TIS-620'; CodePage: 874; FamilyCodePage: 874), +(* Turkish (DOS) ibm857 857 1254 *) + (Name: 'ibm857'; CodePage: 857; FamilyCodePage: 1254), +(* Turkish (ISO) iso-8859-9 csISO, Latin5, ISO_8859-9, ISO_8859-9:1989, iso-ir-148, l5, latin5 28599 1254 *) + (Name: 'iso-8859-9'; CodePage: 28599; FamilyCodePage: 1254), + (Name: 'csISO'; CodePage: 28599; FamilyCodePage: 1254), + (Name: 'Latin5'; CodePage: 28599; FamilyCodePage: 1254), + (Name: 'ISO_8859-9'; CodePage: 28599; FamilyCodePage: 1254), + (Name: 'ISO_8859-9:1989'; CodePage: 28599; FamilyCodePage: 1254), + (Name: 'iso-ir-148'; CodePage: 28599; FamilyCodePage: 1254), + (Name: 'l5'; CodePage: 28599; FamilyCodePage: 1254), + (Name: 'latin5'; CodePage: 28599; FamilyCodePage: 1254), +(* Turkish (Mac) x-mac-turkish 10081 1254 *) + (Name: 'x-mac-turkish'; CodePage: 10081; FamilyCodePage: 1254), +(* Turkish (Windows) windows-1254 ISO_8859-9, ISO_8859-9:1989, iso-8859-9, iso-ir-148, latin5 1254 1254 *) + (Name: 'windows-1254'; CodePage: 1254; FamilyCodePage: 1254), + (Name: 'ISO_8859-9'; CodePage: 1254; FamilyCodePage: 1254), + (Name: 'ISO_8859-9:1989'; CodePage: 1254; FamilyCodePage: 1254), + (Name: 'iso-8859-9'; CodePage: 1254; FamilyCodePage: 1254), + (Name: 'iso-ir-148'; CodePage: 1254; FamilyCodePage: 1254), + (Name: 'latin5'; CodePage: 1254; FamilyCodePage: 1254), +(* Unicode unicode utf-16 1200 1200 *) + (Name: 'unicode'; CodePage: 1200; FamilyCodePage: 1200), + (Name: 'utf-16'; CodePage: 1200; FamilyCodePage: 1200), +(* Unicode (Big-Endian) unicodeFFFE 1201 1200 *) + (Name: 'unicodeFFFE'; CodePage: 1201; FamilyCodePage: 1200), +(* Unicode (UTF-7) utf-7 csUnicode11UTF7, unicode-1-1-utf-7, x-unicode-2-0-utf-7 65000 1200 *) + (Name: 'utf-7'; CodePage: 65000; FamilyCodePage: 1200), + (Name: 'csUnicode11UTF7'; CodePage: 65000; FamilyCodePage: 1200), + (Name: 'unicode-1-1-utf-7'; CodePage: 65000; FamilyCodePage: 1200), + (Name: 'x-unicode-2-0-utf-7'; CodePage: 65000; FamilyCodePage: 1200), +(* Unicode (UTF-8) utf-8 unicode-1-1-utf-8, unicode-2-0-utf-8, x-unicode-2-0-utf-8 65001 1200 *) + (Name: 'utf-8'; CodePage: 65001; FamilyCodePage: 1200), + (Name: 'unicode-1-1-utf-8'; CodePage: 65001; FamilyCodePage: 1200), + (Name: 'unicode-2-0-utf-8'; CodePage: 65001; FamilyCodePage: 1200), + (Name: 'x-unicode-2-0-utf-8'; CodePage: 65001; FamilyCodePage: 1200), +(* US-ASCII us-ascii ANSI_X3.4-1968, ANSI_X3.4-1986, ascii, cp367, csASCII, IBM367, ISO_646.irv:1991, ISO646-US, iso-ir-6us 20127 1252 *) + (Name: 'us-ascii'; CodePage: 20127; FamilyCodePage: 1252), + (Name: 'ANSI_X3.4-1968'; CodePage: 20127; FamilyCodePage: 1252), + (Name: 'ANSI_X3.4-1986'; CodePage: 20127; FamilyCodePage: 1252), + (Name: 'ascii'; CodePage: 20127; FamilyCodePage: 1252), + (Name: 'cp367'; CodePage: 20127; FamilyCodePage: 1252), + (Name: 'csASCII'; CodePage: 20127; FamilyCodePage: 1252), + (Name: 'IBM367'; CodePage: 20127; FamilyCodePage: 1252), + (Name: 'ISO_646.irv:1991'; CodePage: 20127; FamilyCodePage: 1252), + (Name: 'ISO646-US'; CodePage: 20127; FamilyCodePage: 1252), + (Name: 'iso-ir-6us'; CodePage: 20127; FamilyCodePage: 1252), +(* Vietnamese (Windows) windows-1258 1258 1258 *) + (Name: 'windows-1258'; CodePage: 1258; FamilyCodePage: 1258), +(* Western European (DOS) ibm850 850 1252 *) + (Name: 'ibm850'; CodePage: 850; FamilyCodePage: 1252), +(* Western European (IA5) x-IA5 20105 1252 *) + (Name: 'x-IA5'; CodePage: 20105; FamilyCodePage: 1252), +(* Western European (ISO) iso-8859-1 cp819, csISO, Latin1, ibm819, iso_8859-1, iso_8859-1:1987, iso8859-1, iso-ir-100, l1, latin1 28591 1252 *) + (Name: 'iso-8859-1'; CodePage: 28591; FamilyCodePage: 1252), + (Name: 'cp819'; CodePage: 28591; FamilyCodePage: 1252), + (Name: 'csISO'; CodePage: 28591; FamilyCodePage: 1252), + (Name: 'Latin1'; CodePage: 28591; FamilyCodePage: 1252), + (Name: 'ibm819'; CodePage: 28591; FamilyCodePage: 1252), + (Name: 'iso_8859-1'; CodePage: 28591; FamilyCodePage: 1252), + (Name: 'iso_8859-1:1987'; CodePage: 28591; FamilyCodePage: 1252), + (Name: 'iso8859-1'; CodePage: 28591; FamilyCodePage: 1252), + (Name: 'iso-ir-100'; CodePage: 28591; FamilyCodePage: 1252), + (Name: 'l1'; CodePage: 28591; FamilyCodePage: 1252), + (Name: 'latin1'; CodePage: 28591; FamilyCodePage: 1252), +(* Western European (Mac) macintosh 10000 1252 *) + (Name: 'macintosh'; CodePage: 10000; FamilyCodePage: 1252), +(* Western European (Windows) Windows-1252 ANSI_X3.4-1968, ANSI_X3.4-1986, ascii, cp367, cp819, csASCII, IBM367, ibm819, ISO_646.irv:1991, iso_8859-1, iso_8859-1:1987, ISO646-US, iso8859-1, iso-8859-1, iso-ir-100, iso-ir-6, latin1, us, us-ascii, x-ansi 1252 1252 *) + (Name: 'Windows-1252'; CodePage: 1252; FamilyCodePage: 1252), + (Name: 'ANSI_X3.4-1968'; CodePage: 1252; FamilyCodePage: 1252), + (Name: 'ANSI_X3.4-1986'; CodePage: 1252; FamilyCodePage: 1252), + (Name: 'ascii'; CodePage: 1252; FamilyCodePage: 1252), + (Name: 'cp367'; CodePage: 1252; FamilyCodePage: 1252), + (Name: 'cp819'; CodePage: 1252; FamilyCodePage: 1252), + (Name: 'csASCII'; CodePage: 1252; FamilyCodePage: 1252), + (Name: 'IBM367'; CodePage: 1252; FamilyCodePage: 1252), + (Name: 'ibm819'; CodePage: 1252; FamilyCodePage: 1252), + (Name: 'ISO_646.irv:1991'; CodePage: 1252; FamilyCodePage: 1252), + (Name: 'iso_8859-1'; CodePage: 1252; FamilyCodePage: 1252), + (Name: 'iso_8859-1:1987'; CodePage: 1252; FamilyCodePage: 1252), + (Name: 'ISO646-US'; CodePage: 1252; FamilyCodePage: 1252), + (Name: 'iso8859-1'; CodePage: 1252; FamilyCodePage: 1252), + (Name: 'iso-8859-1'; CodePage: 1252; FamilyCodePage: 1252), + (Name: 'iso-ir-100'; CodePage: 1252; FamilyCodePage: 1252), + (Name: 'iso-ir-6'; CodePage: 1252; FamilyCodePage: 1252), + (Name: 'latin1'; CodePage: 1252; FamilyCodePage: 1252), + (Name: 'us'; CodePage: 1252; FamilyCodePage: 1252), + (Name: 'us-ascii'; CodePage: 1252; FamilyCodePage: 1252), + (Name: 'x-ansi'; CodePage: 1252; FamilyCodePage: 1252) ); + +{$IFDEF UNITVERSIONING} +const + UnitVersioning: TUnitVersionInfo = ( + RCSfile: '$URL$'; + Revision: '$Revision$'; + Date: '$Date$'; + LogPath: 'JCL\source\common' + ); +{$ENDIF UNITVERSIONING} + +implementation + +{$IFDEF UNITVERSIONING} +initialization + RegisterUnitVersion(HInstance, UnitVersioning); + +finalization + UnregisterUnitVersion(HInstance); +{$ENDIF UNITVERSIONING} + +end. + Property changes on: trunk/jcl/source/common/JclCharsets.pas ___________________________________________________________________ Added: svn:keywords + URL HeadURL Author LastChangedBy Date LastChangedDate Rev Revision LastChangedRevision Id Added: svn:eol-style + native This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ah...@us...> - 2009-06-08 19:24:28
|
Revision: 2799 http://jcl.svn.sourceforge.net/jcl/?rev=2799&view=rev Author: ahuser Date: 2009-06-08 19:24:27 +0000 (Mon, 08 Jun 2009) Log Message: ----------- Fixed Warnings in Delphi 5 and 6 Modified Paths: -------------- trunk/jcl/source/common/JclSysUtils.pas trunk/jcl/source/windows/JclCIL.pas trunk/jcl/source/windows/JclCLR.pas Modified: trunk/jcl/source/common/JclSysUtils.pas =================================================================== --- trunk/jcl/source/common/JclSysUtils.pas 2009-06-08 18:50:12 UTC (rev 2798) +++ trunk/jcl/source/common/JclSysUtils.pas 2009-06-08 19:24:27 UTC (rev 2799) @@ -1003,7 +1003,7 @@ {$IFDEF RTL160_UP} // Delphi 7-2007 OldValue := Pointer(InterlockedCompareExchange(Longint(GlobalMMFHandleListCS), Longint(CS), 0)); {$ELSE} // Delphi 5, 6 - OldValue := InterlockedCompareExchange(Pointer(GlobalMMFHandleListCS), Pointer(CS), 0); + OldValue := InterlockedCompareExchange(Pointer(GlobalMMFHandleListCS), Pointer(CS), nil); {$ENDIF RTL180_UP} {$ENDIF RTL185_UP} if OldValue <> nil then Modified: trunk/jcl/source/windows/JclCIL.pas =================================================================== --- trunk/jcl/source/windows/JclCIL.pas 2009-06-08 18:50:12 UTC (rev 2798) +++ trunk/jcl/source/windows/JclCIL.pas 2009-06-08 19:24:27 UTC (rev 2799) @@ -581,10 +581,10 @@ Stream.Seek(0, soFromBeginning); while Stream.Position < Stream.Size do begin - OpCode := PByte(DWORD_PTR(Stream.Memory) + Stream.Position)^; + OpCode := PByte(PAnsiChar(Stream.Memory) + Stream.Position)^; if OpCode = STP1 then begin - OpCode := PByte(DWORD_PTR(Stream.Memory) + Stream.Position + 1)^; + OpCode := PByte(PAnsiChar(Stream.Memory) + Stream.Position + 1)^; Instruction := TJclInstruction.Create(Self, TJclOpCode(MaxByte + 1 + OpCode)); end else Modified: trunk/jcl/source/windows/JclCLR.pas =================================================================== --- trunk/jcl/source/windows/JclCLR.pas 2009-06-08 18:50:12 UTC (rev 2798) +++ trunk/jcl/source/windows/JclCLR.pas 2009-06-08 19:24:27 UTC (rev 2799) @@ -611,7 +611,7 @@ function TJclClrStream.GetData: Pointer; begin - Result := Pointer(DWORD_PTR(FMetadata.Header) + FHeader.Offset); + Result := Pointer(PAnsiChar(FMetadata.Header) + FHeader.Offset); end; //=== { TJclClrStringsStream } =============================================== @@ -631,7 +631,7 @@ if pch^ <> #0 then FStrings.AddObject(string(TUTF8String(pch)), TObject(off)); pch := pch + StrLen(pch) + 1; - off := DWORD_PTR(pch - Data); + off := pch - PAnsiChar(Data); end; end; @@ -755,13 +755,13 @@ end; if IsTail then - Result := HexStr + ')' + JclStrings.StrRepeat(' ', (BufSize-Size)*3) + ' // ' + AsciiStr + Result := HexStr + ')' + JclStrings.StrRepeat(' ', (BufSize-Size) * 3) + ' // ' + AsciiStr else - Result := HexStr + ' ' + JclStrings.StrRepeat(' ', (BufSize-Size)*3) + ' // ' + AsciiStr; + Result := HexStr + ' ' + JclStrings.StrRepeat(' ', (BufSize-Size) * 3) + ' // ' + AsciiStr; if IsHead then Result := Indent + '( ' + Result else - Result := JclStrings.StrRepeat(' ', Length(Indent)+2) + Result; + Result := JclStrings.StrRepeat(' ', Length(Indent) + 2) + Result; end; begin @@ -781,7 +781,7 @@ function TJclClrBlobRecord.GetData: PJclByteArray; begin - Result := PJclByteArray(DWORD_PTR(Memory) + Position); + Result := PJclByteArray(PAnsiChar(Memory) + Position); end; //=== { TJclClrBlobStream } ================================================== @@ -798,8 +798,8 @@ begin if ABlob.Size > 0 then FBlobs.Add(ABlob); - if (INT_PTR(ABlob.Memory) + ABlob.Size) < (INT_PTR(Self.Data) + Integer(Self.Size)) then - ABlob := TJclClrBlobRecord.Create(Self, Pointer(INT_PTR(ABlob.Memory) + ABlob.Size)) + if (PAnsiChar(ABlob.Memory) + ABlob.Size) < (PAnsiChar(Self.Data) + Integer(Self.Size)) then + ABlob := TJclClrBlobRecord.Create(Self, Pointer(PAnsiChar(ABlob.Memory) + ABlob.Size)) else ABlob := nil; end; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ou...@us...> - 2009-06-08 18:51:09
|
Revision: 2798 http://jcl.svn.sourceforge.net/jcl/?rev=2798&view=rev Author: outchy Date: 2009-06-08 18:50:12 +0000 (Mon, 08 Jun 2009) Log Message: ----------- Mantis 4771: crash: TJclDebugInfoSymbols and SymLoadModuleFunc (search path should not be empty) (rework the query of symbols when the module is not loaded) Modified Paths: -------------- trunk/jcl/source/windows/JclDebug.pas Modified: trunk/jcl/source/windows/JclDebug.pas =================================================================== --- trunk/jcl/source/windows/JclDebug.pas 2009-06-07 10:42:12 UTC (rev 2797) +++ trunk/jcl/source/windows/JclDebug.pas 2009-06-08 18:50:12 UTC (rev 2798) @@ -3111,7 +3111,6 @@ if Result then begin - SearchPath := ''; // use default paths if JclDebugInfoSymbolPaths <> '' then begin SearchPath := StrEnsureSuffix(DirSeparator, JclDebugInfoSymbolPaths); @@ -3122,18 +3121,22 @@ if GetEnvironmentVar(EnvironmentVarAlternateNtSymbolPath, EnvironmentVarValue) and (EnvironmentVarValue <> '') then SearchPath := StrEnsureNoSuffix(DirSeparator, StrEnsureSuffix(DirSeparator, EnvironmentVarValue) + SearchPath); - { DbgHelp.dll crashes when an empty path is specified. This also means - that the SearchPath must not end with a DirSeparator. } + // DbgHelp.dll crashes when an empty path is specified. + // This also means that the SearchPath must not end with a DirSeparator. } SearchPath := StrRemoveEmptyPaths(SearchPath); - end; + end + else + // Fix crash SymLoadModuleFunc on WinXP SP3 when SearchPath='' + SearchPath := GetCurrentFolder; if IsWinNT then // in Windows NT, first argument is a process handle ProcessHandle := GetCurrentProcess else - // in Windows 95, 98, ME, first argument is a process identifier + // in Windows 95, 98, ME first argument is a process identifier ProcessHandle := GetCurrentProcessId; + // Debug(WinXPSP3): SymInitializeWFunc==nil if Assigned(SymInitializeWFunc) then Result := SymInitializeWFunc(ProcessHandle, PWideChar(WideString(SearchPath)), False) else @@ -3271,58 +3274,53 @@ ProcessHandle: THandle; begin Result := InitializeDebugSymbols; - if Result then begin - if IsWinNT and (Win32MajorVersion >= 6) then - // ? in Windows NT, first argument is a process handle - // in Windows Vista (WinNT_6_Up), first argument is a process handle + if IsWinNT then + // in Windows NT, first argument is a process handle ProcessHandle := GetCurrentProcess else - // in Windows 95, 98, ME, ?WinNT_5_Down first argument is a process identifier + // in Windows 95, 98, ME, first argument is a process identifier ProcessHandle := GetCurrentProcessId; - if Assigned(SymGetModuleInfoWFunc) then + if IsWinNT and Assigned(SymGetModuleInfoWFunc) then begin ZeroMemory(@ModuleInfoW, SizeOf(ModuleInfoW)); ModuleInfoW.SizeOfStruct := SizeOf(ModuleInfoW); - - if ((not SymGetModuleInfoWFunc(ProcessHandle, Module, ModuleInfoW)) - or (ModuleInfoW.BaseOfImage = 0)) then + Result := SymGetModuleInfoWFunc(ProcessHandle, Module, ModuleInfoW); + if not Result then begin + // the symbols for this module are not loaded yet: load the module and query for the symbol again ModuleFileName := GetModulePath(Module); + ZeroMemory(@ModuleInfoW, SizeOf(ModuleInfoW)); + ModuleInfoW.SizeOfStruct := SizeOf(ModuleInfoW); + // warning: crash on WinXP SP3 when SymInitializeAFunc is called with empty SearchPath // OF: possible loss of data - Result := SymLoadModuleFunc(ProcessHandle, 0, PAnsiChar(AnsiString(ModuleFileName)), nil, 0, 0) <> 0; - if Result then - begin - ZeroMemory(@ModuleInfoW, SizeOf(ModuleInfoW)); - ModuleInfoW.SizeOfStruct := SizeOf(ModuleInfoW); - Result := SymGetModuleInfoWFunc(ProcessHandle, Module, ModuleInfoW); - Result := Result and not (ModuleInfoW.SymType in [SymNone, SymExport]); - end; + Result := (SymLoadModuleFunc(ProcessHandle, 0, PAnsiChar(AnsiString(ModuleFileName)), nil, 0, 0) <> 0) and + SymGetModuleInfoWFunc(ProcessHandle, Module, ModuleInfoW); end; + Result := Result and (ModuleInfoW.BaseOfImage <> 0) and + not (ModuleInfoW.SymType in [SymNone, SymExport]); end else if Assigned(SymGetModuleInfoAFunc) then begin ZeroMemory(@ModuleInfoA, SizeOf(ModuleInfoA)); ModuleInfoA.SizeOfStruct := SizeOf(ModuleInfoA); - - if ((not SymGetModuleInfoAFunc(ProcessHandle, Module, ModuleInfoA)) - or (ModuleInfoA.BaseOfImage = 0)) then + Result := SymGetModuleInfoAFunc(ProcessHandle, Module, ModuleInfoA); + if not Result then begin + // the symbols for this module are not loaded yet: load the module and query for the symbol again ModuleFileName := GetModulePath(Module); + ZeroMemory(@ModuleInfoA, SizeOf(ModuleInfoA)); + ModuleInfoA.SizeOfStruct := SizeOf(ModuleInfoA); + // warning: crash on WinXP SP3 when SymInitializeAFunc is called with empty SearchPath // OF: possible loss of data - Result := SymLoadModuleFunc(ProcessHandle, 0, PAnsiChar(AnsiString(ModuleFileName)), nil, 0, 0) <> 0; - - if Result then - begin - ZeroMemory(@ModuleInfoA, SizeOf(ModuleInfoA)); - ModuleInfoA.SizeOfStruct := SizeOf(ModuleInfoA); - Result := SymGetModuleInfoAFunc(ProcessHandle, Module, ModuleInfoA); - Result := Result and not (ModuleInfoA.SymType in [SymNone, SymExport]); - end; + Result := (SymLoadModuleFunc(ProcessHandle, 0, PAnsiChar(AnsiString(ModuleFileName)), nil, 0, 0) <> 0) and + SymGetModuleInfoAFunc(ProcessHandle, Module, ModuleInfoA); end; + Result := Result and (ModuleInfoW.BaseOfImage <> 0) and + not (ModuleInfoA.SymType in [SymNone, SymExport]); end; end; end; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ou...@us...> - 2009-06-07 10:42:21
|
Revision: 2797 http://jcl.svn.sourceforge.net/jcl/?rev=2797&view=rev Author: outchy Date: 2009-06-07 10:42:12 +0000 (Sun, 07 Jun 2009) Log Message: ----------- Intel processor specification update. Modified Paths: -------------- trunk/jcl/source/common/JclResources.pas trunk/jcl/source/common/JclSysInfo.pas Modified: trunk/jcl/source/common/JclResources.pas =================================================================== --- trunk/jcl/source/common/JclResources.pas 2009-06-07 09:50:12 UTC (rev 2796) +++ trunk/jcl/source/common/JclResources.pas 2009-06-07 10:42:12 UTC (rev 2797) @@ -1838,7 +1838,9 @@ RsIntelCacheDescr0A = '1st level data cache: 8 KBytes, 2-way set associative, 32 byte line size'; RsIntelCacheDescr0B = 'Instruction TLB: 4 MByte pages, 4-way set associative, 4 entries'; RsIntelCacheDescr0C = '1st level data cache: 16 KBytes, 4-way set associative, 32 byte line size'; - RsIntelCacheDescr0E = '1st level data cache: 24 KBytes, 6-way set associative, 64 byte line size'; + RsIntelCacheDescr0D = '1st level data cache: 16 KBytes, 4-way set associative, 64 byte line size'; + RsIntelCacheDescr0E = '1st level data cache: 24 KBytes, 6-way set associative, 64 byte line size'; + RsIntelCacheDescr21 = '2nd level cache: 256 KBytes, 8-way set associative, 64 byte line size'; RsIntelCacheDescr22 = '3rd level cache: 512 KBytes, 4-way set associative, 64 byte line size, 2 lines per sector'; RsIntelCacheDescr23 = '3rd level cache: 1 MBytes, 8-way set associative, 64 byte line size, 2 lines per sector'; RsIntelCacheDescr25 = '3rd level cache: 2 MBytes, 8-way set associative, 64 byte line size, 2 lines per sector'; @@ -1863,15 +1865,18 @@ RsIntelCacheDescr49 = '2nd-level cache: 4 MBytes, 16-way set associative, 64 byte line size'; RsIntelCacheDescr4A = '3rd-level cache: 6MByte, 12-way set associative, 64 byte line size'; RsIntelCacheDescr4B = '3rd-level cache: 8MByte, 16-way set associative, 64 byte line size'; + RsIntelCacheDescr4C = '3rd-level cache: 12MByte, 12-way set associative, 64 byte line size'; RsIntelCacheDescr4D = '3rd-level cache: 16MByte, 16-way set associative, 64 byte line size'; RsIntelCacheDescr4E = '2nd-level cache: 6MByte, 24-way set associative, 64 byte line size'; RsIntelCacheDescr4F = 'Instruction TLB: 4 KByte pages, 32 Entries'; RsIntelCacheDescr50 = 'Instruction TLB: 4 KByte and 2 MByte or 4 MByte pages, 64 Entries'; RsIntelCacheDescr51 = 'Instruction TLB: 4 KByte and 2 MByte or 4 MByte pages, 128 Entries'; RsIntelCacheDescr52 = 'Instruction TLB: 4 KByte and 2 MByte or 4 MByte pages, 256 Entries'; + RsIntelCacheDescr55 = 'Instruction TLB: 2-MByte or 4-MByte pages, fully associative, 7 entries'; RsIntelCacheDescr56 = 'Data TLB0: 4 MByte pages, 4-way set associative, 16 entries'; RsIntelCacheDescr57 = 'Data TLB0: 4 KByte pages, 4-way associative, 16 entries'; RsIntelCacheDescr59 = 'Data TLB0: 4 KByte pages, fully associative, 16 entries'; + RsIntelCacheDescr5A = 'Data TLB0: 2 MByte or 4 MByte pages, 4-way set associative, 32 entries'; RsIntelCacheDescr5B = 'Data TLB: 4 KByte and 4 MByte pages, 64 Entries'; RsIntelCacheDescr5C = 'Data TLB: 4 KByte and 4 MByte pages, 128 Entries'; RsIntelCacheDescr5D = 'Data TLB: 4 KByte and 4 MByte pages, 256 Entries'; @@ -1899,12 +1904,16 @@ RsIntelCacheDescr87 = '2nd-level cache: 1 MByte, 8-way set associative, 64 byte line size'; RsIntelCacheDescrB0 = 'Instruction TLB: 4 KByte pages, 4-way set associative, 128 entries'; RsIntelCacheDescrB1 = 'Instruction TLB: 2 MByte pages, 4-way, 8 entries or 4 MByte pages, 4-way, 4 entries'; + RsIntelCacheDescrB2 = 'Instruction TLB: 4 KByte pages, 4-way set associative, 64 entries'; RsIntelCacheDescrB3 = 'Data TLB: 4 KByte pages, 4-way set associative, 128 entries'; RsIntelCacheDescrB4 = 'Data TLB1: 4 KByte pages, 4-way set associative, 256 entries'; RsIntelCacheDescrBA = 'Data TLB1: 4 KByte pages, 4-way set associative, 64 entries'; RsIntelCacheDescrC0 = 'Data TLB: 4 KByte and 4 MByte pages, 4-way set associative, 8 entries'; + RsIntelCacheDescrCA = 'Shared 2nd-Level TLB: 4 KByte pages, 4-way associative, 512 entries'; + RsIntelCacheDescrE4 = '3rd-level cache: 8 MByte, 16-way set associative, 64 byte line size'; RsIntelCacheDescrF0 = '64-Byte Prefetching'; RsIntelCacheDescrF1 = '128-Byte Prefetching'; + RsIntelCacheDescrFF = 'CPUID leaf 2 does not report cache descriptor information, use CPUID leaf 4 to query cache parameters'; RsUnknownAMDModel = 'Unknown AMD (Model %d)'; Modified: trunk/jcl/source/common/JclSysInfo.pas =================================================================== --- trunk/jcl/source/common/JclSysInfo.pas 2009-06-07 09:50:12 UTC (rev 2796) +++ trunk/jcl/source/common/JclSysInfo.pas 2009-06-07 10:42:12 UTC (rev 2797) @@ -429,7 +429,7 @@ TCacheFamily = ( cfInstructionTLB, cfDataTLB, cfL1InstructionCache, cfL1DataCache, - cfL2Cache, cfL3Cache, cfTrace, cfOther); + cfL2Cache, cfL2TLB, cfL3Cache, cfTrace, cfOther); TCacheInfo = record D: Byte; @@ -626,38 +626,38 @@ INTEL_PBE = BIT_31; // Pending Break Enable { Extended Intel Feature Flags } - EINTEL_SSE3 = BIT_0; // Streaming SIMD Extensions 3 - EINTEL_BIT_1 = BIT_1; // Reserved, do not count on value - EINTEL_DTES64 = BIT_2; // write a history of the 64-bit branch to and from addresses into memory - EINTEL_MONITOR = BIT_3; // Monitor/MWAIT - EINTEL_DSCPL = BIT_4; // CPL Qualified debug Store - EINTEL_VMX = BIT_5; // Virtual Machine Technology - EINTEL_SMX = BIT_6; // Safer Mode Extensions - EINTEL_EST = BIT_7; // Enhanced Intel Speedstep technology - EINTEL_TM2 = BIT_8; // Thermal monitor 2 - EINTEL_SSSE3 = BIT_9; // SSSE 3 extensions - EINTEL_CNXTID = BIT_10; // L1 Context ID - EINTEL_BIT_11 = BIT_11; // Reserved, do not count on value - EINTEL_BIT_12 = BIT_12; // Reserved, do not count on value - EINTEL_CX16 = BIT_13; // CMPXCHG16B instruction - EINTEL_XTPR = BIT_14; // Send Task Priority messages - EINTEL_PDCM = BIT_15; // Perf/Debug Capability MSR - EINTEL_BIT_16 = BIT_16; // Reserved, do not count on value - EINTEL_BIT_17 = BIT_17; // Reserved, do not count on value - EINTEL_DCA = BIT_18; // Direct Cache Access - EINTEL_SSE4_1 = BIT_19; // Streaming SIMD Extensions 4.1 - EINTEL_SSE4_2 = BIT_20; // Streaming SIMD Extensions 4.2 - EINTEL_X2APIC = BIT_21; // x2APIC feature - EINTEL_MOVBE = BIT_22; // MOVBE instruction - EINTEL_POPCNT = BIT_23; // A value of 1 indicates the processor supports the POPCNT instruction. - EINTEL_BIT_24 = BIT_24; // Reserved, do not count on value - EINTEL_BIT_25 = BIT_25; // Reserved, do not count on value - EINTEL_XSAVE = BIT_26; // XSAVE/XRSTOR processor extended states feature, XSETBV/XGETBV instructions and XFEATURE_ENABLED_MASK (XCR0) register - EINTEL_OSXSAVE = BIT_27; // OS has enabled features present in EINTEL_XSAVE - EINTEL_BIT_28 = BIT_28; // Reserved, do not count on value - EINTEL_BIT_29 = BIT_29; // Reserved, do not count on value - EINTEL_BIT_30 = BIT_30; // Reserved, do not count on value - EINTEL_BIT_31 = BIT_31; // Reserved, do not count on value + EINTEL_SSE3 = BIT_0; // Streaming SIMD Extensions 3 + EINTEL_PCLMULQDQ = BIT_1; // the processor supports the PCLMULQDQ instruction + EINTEL_DTES64 = BIT_2; // the processor supports DS area using 64-bit layout + EINTEL_MONITOR = BIT_3; // Monitor/MWAIT + EINTEL_DSCPL = BIT_4; // CPL Qualified debug Store + EINTEL_VMX = BIT_5; // Virtual Machine Technology + EINTEL_SMX = BIT_6; // Safer Mode Extensions + EINTEL_EST = BIT_7; // Enhanced Intel Speedstep technology + EINTEL_TM2 = BIT_8; // Thermal monitor 2 + EINTEL_SSSE3 = BIT_9; // SSSE 3 extensions + EINTEL_CNXTID = BIT_10; // L1 Context ID + EINTEL_BIT_11 = BIT_11; // Reserved, do not count on value + EINTEL_BIT_12 = BIT_12; // Reserved, do not count on value + EINTEL_CX16 = BIT_13; // CMPXCHG16B instruction + EINTEL_XTPR = BIT_14; // Send Task Priority messages + EINTEL_PDCM = BIT_15; // Perf/Debug Capability MSR + EINTEL_BIT_16 = BIT_16; // Reserved, do not count on value + EINTEL_BIT_17 = BIT_17; // Reserved, do not count on value + EINTEL_DCA = BIT_18; // Direct Cache Access + EINTEL_SSE4_1 = BIT_19; // Streaming SIMD Extensions 4.1 + EINTEL_SSE4_2 = BIT_20; // Streaming SIMD Extensions 4.2 + EINTEL_X2APIC = BIT_21; // x2APIC feature + EINTEL_MOVBE = BIT_22; // MOVBE instruction + EINTEL_POPCNT = BIT_23; // A value of 1 indicates the processor supports the POPCNT instruction. + EINTEL_BIT_24 = BIT_24; // Reserved, do not count on value + EINTEL_AES = BIT_25; // the processor supports the AES instruction extensions + EINTEL_XSAVE = BIT_26; // XSAVE/XRSTOR processor extended states feature, XSETBV/XGETBV instructions and XFEATURE_ENABLED_MASK (XCR0) register + EINTEL_OSXSAVE = BIT_27; // OS has enabled features present in EINTEL_XSAVE + EINTEL_BIT_28 = BIT_28; // Reserved, do not count on value + EINTEL_BIT_29 = BIT_29; // Reserved, do not count on value + EINTEL_BIT_30 = BIT_30; // Reserved, do not count on value + EINTEL_BIT_31 = BIT_31; // Always return 0 { Extended Intel 64 Bits Feature Flags } EINTEL64_BIT_0 = BIT_0; // Reserved, do not count on value @@ -687,7 +687,7 @@ EINTEL64_BIT_24 = BIT_24; // Reserved, do not count on value EINTEL64_BIT_25 = BIT_25; // Reserved, do not count on value EINTEL64_BIT_26 = BIT_26; // Reserved, do not count on value - EINTEL64_BIT_27 = BIT_27; // Reserved, do not count on value + EINTEL64_RDTSCP = BIT_27; // RDTSCP and IA32_TSC_AUX are available EINTEL64_BIT_28 = BIT_28; // Reserved, do not count on value EINTEL64_EM64T = BIT_29; // Intel Extended Memory 64 Technology EINTEL64_BIT_30 = BIT_30; // Reserved, do not count on value @@ -1170,7 +1170,7 @@ MXCSR_FZ = BIT_15; // Flush to Zero const - IntelCacheDescription: array [0..77] of TCacheInfo = ( + IntelCacheDescription: array [0..86] of TCacheInfo = ( (D: $00; Family: cfOther; I: RsIntelCacheDescr00), (D: $01; Family: cfInstructionTLB; Size: 4; WaysOfAssoc: 4; Entries: 32; I: RsIntelCacheDescr01), (D: $02; Family: cfInstructionTLB; Size: 4096; WaysOfAssoc: 4; Entries: 2; I: RsIntelCacheDescr02), @@ -1182,7 +1182,9 @@ (D: $0A; Family: cfL1DataCache; Size: 8; WaysOfAssoc: 2; LineSize: 32; I: RsIntelCacheDescr0A), (D: $0B; Family: cfInstructionTLB; Size: 4; WaysOfAssoc: 4; Entries: 4; I: RsIntelCacheDescr0B), (D: $0C; Family: cfL1DataCache; Size: 16; WaysOfAssoc: 4; LineSize: 32; I: RsIntelCacheDescr0C), - (D: $0E; Family: cfL1DataCache; Size: 24; WaysOfAssoc: 4; LineSize: 32; I: RsIntelCacheDescr0E), + (D: $0D; Family: cfL1DataCache; Size: 16; WaysOfAssoc: 4; LineSize: 64; I: RsIntelCacheDescr0D), + (D: $0E; Family: cfL1DataCache; Size: 24; WaysOfAssoc: 4; LineSize: 64; I: RsIntelCacheDescr0E), + (D: $21; Family: cfL2Cache; Size: 256; WaysOfAssoc: 4; LineSize: 64; I: RsIntelCacheDescr21), (D: $22; Family: cfL3Cache; Size: 512; WaysOfAssoc: 4; LineSize: 64; LinePerSector: 2; I: RsIntelCacheDescr22), (D: $23; Family: cfL3Cache; Size: 1024; WaysOfAssoc: 8; LineSize: 64; LinePerSector: 2; I: RsIntelCacheDescr23), (D: $25; Family: cfL3Cache; Size: 2048; WaysOfAssoc: 8; LineSize: 64; LinePerSector: 2; I: RsIntelCacheDescr25), @@ -1207,15 +1209,18 @@ (D: $49; Family: cfL2Cache; Size: 4096; WaysOfAssoc: 16; LineSize: 64; I: RsIntelCacheDescr49), (D: $4A; Family: cfL3Cache; Size: 6144; WaysOfAssoc: 12; LineSize: 64; I: RsIntelCacheDescr4A), (D: $4B; Family: cfL3Cache; Size: 8192; WaysOfAssoc: 16; LineSize: 64; I: RsIntelCacheDescr4B), + (D: $4C; Family: cfL3Cache; Size: 12288; WaysOfAssoc: 12; LineSize: 64; I: RsIntelCacheDescr4C), (D: $4D; Family: cfL3Cache; Size: 16384; WaysOfAssoc: 16; LineSize: 64; I: RsIntelCacheDescr4D), (D: $4E; Family: cfL3Cache; Size: 6144; WaysOfAssoc: 24; LineSize: 64; I: RsIntelCacheDescr4E), (D: $4F; Family: cfInstructionTLB; Size: 4; Entries: 32; I: RsIntelCacheDescr4F), (D: $50; Family: cfInstructionTLB; Size: 4; Entries: 64; I: RsIntelCacheDescr50), (D: $51; Family: cfInstructionTLB; Size: 4; Entries: 128; I: RsIntelCacheDescr51), (D: $52; Family: cfInstructionTLB; Size: 4; Entries: 256; I: RsIntelCacheDescr52), + (D: $55; Family: cfInstructionTLB; Size: 2048; Entries: 7; I: RsIntelCacheDescr55), (D: $56; Family: cfDataTLB; Size: 4096; WaysOfAssoc: 4; Entries: 16; I: RsIntelCacheDescr56), (D: $57; Family: cfDataTLB; Size: 4; WaysOfAssoc: 4; Entries: 16; I: RsIntelCacheDescr57), (D: $59; Family: cfDataTLB; Size: 4; Entries: 16; I: RsIntelCacheDescr59), + (D: $5A; Family: cfDataTLB; Size: 4096; WaysOfAssoc: 4; Entries: 32; I: RsIntelCacheDescr5A), (D: $5B; Family: cfDataTLB; Size: 4096; Entries: 64; I: RsIntelCacheDescr5B), (D: $5C; Family: cfDataTLB; Size: 4096; Entries: 128; I: RsIntelCacheDescr5C), (D: $5D; Family: cfDataTLB; Size: 4096; Entries: 256; I: RsIntelCacheDescr5D), @@ -1243,12 +1248,16 @@ (D: $87; Family: cfL2Cache; Size: 1024; WaysOfAssoc: 8; LineSize: 64; I: RsIntelCacheDescr87), (D: $B0; Family: cfInstructionTLB; Size: 4; WaysOfAssoc: 4; Entries: 128; I: RsIntelCacheDescrB0), (D: $B1; Family: cfInstructionTLB; Size: 2048; WaysOfAssoc: 4; Entries: 8; I: RsIntelCacheDescrB1), + (D: $B2; Family: cfInstructionTLB; Size: 4; WaysOfAssoc: 4; Entries: 64; I: RsIntelCacheDescrB2), (D: $B3; Family: cfDataTLB; Size: 4; WaysOfAssoc: 4; Entries: 128; I: RsIntelCacheDescrB3), (D: $B4; Family: cfDataTLB; Size: 4; WaysOfAssoc: 4; Entries: 256; I: RsIntelCacheDescrB4), (D: $BA; Family: cfDataTLB; Size: 4; WaysOfAssoc: 4; Entries: 64; I: RsIntelCacheDescrBA), (D: $C0; Family: cfDataTLB; Size: 4; WaysOfAssoc: 4; Entries: 8; I: RsIntelCacheDescrC0), + (D: $CA; Family: cfL2TLB; Size: 4; WaysOfAssoc: 4; Entries: 512; I: RsIntelCacheDescrCA), + (D: $E4; Family: cfL3Cache; Size: 8192; WaysOfAssoc: 16; LineSize: 64; I: RsIntelCacheDescrE4), (D: $F0; Family: cfOther; I: RsIntelCacheDescrF0), - (D: $F1; Family: cfOther; I: RsIntelCacheDescrF1) + (D: $F1; Family: cfOther; I: RsIntelCacheDescrF1), + (D: $FF; Family: cfOther; I: RsIntelCacheDescrFF) ); procedure GetCpuInfo(var CpuInfo: TCpuInfo); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ou...@us...> - 2009-06-07 09:50:40
|
Revision: 2796 http://jcl.svn.sourceforge.net/jcl/?rev=2796&view=rev Author: outchy Date: 2009-06-07 09:50:12 +0000 (Sun, 07 Jun 2009) Log Message: ----------- Mantis 4771: crash: TJclDebugInfoSymbols and SymLoadModuleFunc (check the result of SymLoadModule before the call to SymGetModuleInfo) Modified Paths: -------------- trunk/jcl/source/windows/JclDebug.pas Modified: trunk/jcl/source/windows/JclDebug.pas =================================================================== --- trunk/jcl/source/windows/JclDebug.pas 2009-06-07 09:44:21 UTC (rev 2795) +++ trunk/jcl/source/windows/JclDebug.pas 2009-06-07 09:50:12 UTC (rev 2796) @@ -3293,11 +3293,13 @@ ModuleFileName := GetModulePath(Module); // OF: possible loss of data Result := SymLoadModuleFunc(ProcessHandle, 0, PAnsiChar(AnsiString(ModuleFileName)), nil, 0, 0) <> 0; - - ZeroMemory(@ModuleInfoW, SizeOf(ModuleInfoW)); - ModuleInfoW.SizeOfStruct := SizeOf(ModuleInfoW); - Result := Result and SymGetModuleInfoWFunc(ProcessHandle, Module, ModuleInfoW); - Result := Result and not (ModuleInfoW.SymType in [SymNone, SymExport]); + if Result then + begin + ZeroMemory(@ModuleInfoW, SizeOf(ModuleInfoW)); + ModuleInfoW.SizeOfStruct := SizeOf(ModuleInfoW); + Result := SymGetModuleInfoWFunc(ProcessHandle, Module, ModuleInfoW); + Result := Result and not (ModuleInfoW.SymType in [SymNone, SymExport]); + end; end; end else @@ -3313,10 +3315,13 @@ // OF: possible loss of data Result := SymLoadModuleFunc(ProcessHandle, 0, PAnsiChar(AnsiString(ModuleFileName)), nil, 0, 0) <> 0; - ZeroMemory(@ModuleInfoA, SizeOf(ModuleInfoA)); - ModuleInfoA.SizeOfStruct := SizeOf(ModuleInfoA); - Result := Result and SymGetModuleInfoAFunc(ProcessHandle, Module, ModuleInfoA); - Result := Result and not (ModuleInfoA.SymType in [SymNone, SymExport]); + if Result then + begin + ZeroMemory(@ModuleInfoA, SizeOf(ModuleInfoA)); + ModuleInfoA.SizeOfStruct := SizeOf(ModuleInfoA); + Result := SymGetModuleInfoAFunc(ProcessHandle, Module, ModuleInfoA); + Result := Result and not (ModuleInfoA.SymType in [SymNone, SymExport]); + end; end; end; end; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ou...@us...> - 2009-06-07 09:44:22
|
Revision: 2795 http://jcl.svn.sourceforge.net/jcl/?rev=2795&view=rev Author: outchy Date: 2009-06-07 09:44:21 +0000 (Sun, 07 Jun 2009) Log Message: ----------- Mantis 4771: crash: TJclDebugInfoSymbols and SymLoadModuleFunc (final fix to be verified) Modified Paths: -------------- trunk/jcl/source/windows/JclDebug.pas Modified: trunk/jcl/source/windows/JclDebug.pas =================================================================== --- trunk/jcl/source/windows/JclDebug.pas 2009-06-06 16:27:16 UTC (rev 2794) +++ trunk/jcl/source/windows/JclDebug.pas 2009-06-07 09:44:21 UTC (rev 2795) @@ -3098,6 +3098,7 @@ var EnvironmentVarValue, SearchPath: string; SymOptions: Cardinal; + ProcessHandle: THandle; begin if DebugSymbolsLoadFailed then Result := False @@ -3126,16 +3127,21 @@ SearchPath := StrRemoveEmptyPaths(SearchPath); end; - // in Windows NT, first argument is a process handle - if IsWinNT and Assigned(SymInitializeWFunc) then - Result := SymInitializeWFunc(GetCurrentProcess, PWideChar(WideString(SearchPath)), False) + if IsWinNT then + // in Windows NT, first argument is a process handle + ProcessHandle := GetCurrentProcess else - if IsWinNT and Assigned(SymInitializeAFunc) then - Result := SymInitializeAFunc(GetCurrentProcess, PAnsiChar(AnsiString(SearchPath)), False) + // in Windows 95, 98, ME, first argument is a process identifier + ProcessHandle := GetCurrentProcessId; + + if Assigned(SymInitializeWFunc) then + Result := SymInitializeWFunc(ProcessHandle, PWideChar(WideString(SearchPath)), False) else - // in Windows 95, 98, ME, first argument is a process identifier if Assigned(SymInitializeAFunc) then - Result := SymInitializeAFunc(GetCurrentProcessId, PAnsiChar(AnsiString(SearchPath)), False); + Result := SymInitializeAFunc(ProcessHandle, PAnsiChar(AnsiString(SearchPath)), False) + else + Result := False; + if Result then begin SymOptions := SymGetOptionsFunc or SYMOPT_DEFERRED_LOADS @@ -3268,7 +3274,13 @@ if Result then begin - ProcessHandle := GetCurrentProcess; + if IsWinNT and (Win32MajorVersion >= 6) then + // ? in Windows NT, first argument is a process handle + // in Windows Vista (WinNT_6_Up), first argument is a process handle + ProcessHandle := GetCurrentProcess + else + // in Windows 95, 98, ME, ?WinNT_5_Down first argument is a process identifier + ProcessHandle := GetCurrentProcessId; if Assigned(SymGetModuleInfoWFunc) then begin This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ah...@us...> - 2009-06-06 16:27:17
|
Revision: 2794 http://jcl.svn.sourceforge.net/jcl/?rev=2794&view=rev Author: ahuser Date: 2009-06-06 16:27:16 +0000 (Sat, 06 Jun 2009) Log Message: ----------- Fixed Delphi 6 support Modified Paths: -------------- trunk/jcl/source/common/JclSysUtils.pas Modified: trunk/jcl/source/common/JclSysUtils.pas =================================================================== --- trunk/jcl/source/common/JclSysUtils.pas 2009-06-06 16:15:05 UTC (rev 2793) +++ trunk/jcl/source/common/JclSysUtils.pas 2009-06-06 16:27:16 UTC (rev 2794) @@ -997,10 +997,14 @@ if not Assigned(GlobalMMFHandleListCS) and not MMFFinalized then begin CS := TJclIntfCriticalSection.Create; - {$IFDEF RTL185_UP} + {$IFDEF RTL200_UP} // Delphi 2009+ OldValue := InterlockedCompareExchangePointer(Pointer(GlobalMMFHandleListCS), Pointer(CS), nil); {$ELSE} - OldValue := Pointer(InterlockedCompareExchange(Integer(GlobalMMFHandleListCS), Integer(CS), 0)); + {$IFDEF RTL160_UP} // Delphi 7-2007 + OldValue := Pointer(InterlockedCompareExchange(Longint(GlobalMMFHandleListCS), Longint(CS), 0)); + {$ELSE} // Delphi 5, 6 + OldValue := InterlockedCompareExchange(Pointer(GlobalMMFHandleListCS), Pointer(CS), 0); + {$ENDIF RTL180_UP} {$ENDIF RTL185_UP} if OldValue <> nil then CS.Free; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ah...@us...> - 2009-06-06 16:15:06
|
Revision: 2793 http://jcl.svn.sourceforge.net/jcl/?rev=2793&view=rev Author: ahuser Date: 2009-06-06 16:15:05 +0000 (Sat, 06 Jun 2009) Log Message: ----------- Fixed UnitVersioning crash on program termination caused by JclSysUtils.finalization Modified Paths: -------------- trunk/jcl/source/common/JclSysUtils.pas Modified: trunk/jcl/source/common/JclSysUtils.pas =================================================================== --- trunk/jcl/source/common/JclSysUtils.pas 2009-06-06 10:04:54 UTC (rev 2792) +++ trunk/jcl/source/common/JclSysUtils.pas 2009-06-06 16:15:05 UTC (rev 2793) @@ -143,7 +143,7 @@ { SharedGetMem return ERROR_ALREADY_EXISTS if the shared memory is already allocated, otherwise it returns 0. Throws ESharedMemError if the Name is invalid. } -function SharedGetMem(var p{: Pointer}; const Name: string; Size: Cardinal; +function SharedGetMem(var P{: Pointer}; const Name: string; Size: Cardinal; DesiredAccess: Cardinal = FILE_MAP_ALL_ACCESS): Integer; { SharedAllocMem calls SharedGetMem and then fills the memory with zero if @@ -153,7 +153,7 @@ DesiredAccess: Cardinal = FILE_MAP_ALL_ACCESS): Pointer; { SharedFreeMem releases the shared memory if it was the last reference. } -function SharedFreeMem(var p{: Pointer}): Boolean; +function SharedFreeMem(var P{: Pointer}): Boolean; // Functions for the shared memory user @@ -161,7 +161,7 @@ SharedGetMem or SharedAllocMem. Otherwise it returns False. Throws ESharedMemError if the Name is invalid. } -function SharedOpenMem(var p{: Pointer}; const Name: string; +function SharedOpenMem(var P{: Pointer}; const Name: string; DesiredAccess: Cardinal = FILE_MAP_ALL_ACCESS): Boolean; overload; { SharedOpenMem return nil if the shared memory was not already allocated @@ -171,7 +171,7 @@ DesiredAccess: Cardinal = FILE_MAP_ALL_ACCESS): Pointer; overload; { SharedCloseMem releases the shared memory if it was the last reference. } -function SharedCloseMem(var p{: Pointer}): Boolean; +function SharedCloseMem(var P{: Pointer}): Boolean; {$ENDIF MSWINDOWS} @@ -983,22 +983,35 @@ var MMFHandleList: PMMFHandleList = nil; + MMFFinalized: Boolean = False; {$IFDEF THREADSAFE} GlobalMMFHandleListCS: TJclIntfCriticalSection = nil; {$ENDIF THREADSAGE} {$IFDEF THREADSAFE} function GetAccessToHandleList: IInterface; +var + OldValue: Pointer; + CS: TJclIntfCriticalSection; begin - if not Assigned(GlobalMMFHandleListCS) then - GlobalMMFHandleListCS := TJclIntfCriticalSection.Create; + if not Assigned(GlobalMMFHandleListCS) and not MMFFinalized then + begin + CS := TJclIntfCriticalSection.Create; + {$IFDEF RTL185_UP} + OldValue := InterlockedCompareExchangePointer(Pointer(GlobalMMFHandleListCS), Pointer(CS), nil); + {$ELSE} + OldValue := Pointer(InterlockedCompareExchange(Integer(GlobalMMFHandleListCS), Integer(CS), 0)); + {$ENDIF RTL185_UP} + if OldValue <> nil then + CS.Free; + end; Result := GlobalMMFHandleListCS; end; {$ENDIF THREADSAFE} {$IFDEF MSWINDOWS} -function SharedGetMem(var p{: Pointer}; const Name: string; Size: Cardinal; +function SharedGetMem(var P{: Pointer}; const Name: string; Size: Cardinal; DesiredAccess: Cardinal = FILE_MAP_ALL_ACCESS): Integer; var FileMappingHandle: THandle; @@ -1009,11 +1022,10 @@ {$ENDIF THREADSAFE} begin Result := 0; - Pointer(p) := nil; + Pointer(P) := nil; - if (GetWindowsVersion in [wvUnknown..wvWinNT4]) and - ((Name = '') or (Pos('\', Name) > 0)) then - raise ESharedMemError.CreateResFmt(@RsInvalidMMFName, [Name]); + if (GetWindowsVersion in [wvUnknown..wvWinNT4]) and ((Name = '') or (Pos('\', Name) > 0)) then + raise ESharedMemError.CreateResFmt(@RsInvalidMMFName, [Name]); {$IFDEF THREADSAFE} HandleListAccess := GetAccessToHandleList; @@ -1026,7 +1038,7 @@ if CompareText(Iterate^.Name, Name) = 0 then begin Inc(Iterate^.References); - Pointer(p) := Iterate^.Memory; + Pointer(P) := Iterate^.Memory; Result := ERROR_ALREADY_EXISTS; Exit; end; @@ -1041,8 +1053,7 @@ raise ESharedMemError.CreateResFmt(@RsInvalidMMFEmpty, [Name]); Protect := PAGE_READWRITE; - if (Win32Platform = VER_PLATFORM_WIN32_WINDOWS) and - (DesiredAccess = FILE_MAP_COPY) then + if (Win32Platform = VER_PLATFORM_WIN32_WINDOWS) and (DesiredAccess = FILE_MAP_COPY) then Protect := PAGE_WRITECOPY; FileMappingHandle := CreateFileMapping(INVALID_HANDLE_VALUE, nil, Protect, @@ -1051,10 +1062,10 @@ else Result := ERROR_ALREADY_EXISTS; - case GetLastError of - ERROR_ALREADY_EXISTS: - Result := ERROR_ALREADY_EXISTS; + if GetLastError = ERROR_ALREADY_EXISTS then + Result := ERROR_ALREADY_EXISTS else + begin if FileMappingHandle = 0 then {$IFDEF COMPILER6_UP} RaiseLastOSError; @@ -1064,8 +1075,8 @@ end; // map view - Pointer(p) := MapViewOfFile(FileMappingHandle, DesiredAccess, 0, 0, Size); - if Pointer(p) = nil then + Pointer(P) := MapViewOfFile(FileMappingHandle, DesiredAccess, 0, 0, Size); + if Pointer(P) = nil then begin try {$IFDEF COMPILER6_UP} @@ -1083,7 +1094,7 @@ New(NewListItem); NewListItem^.Name := Name; NewListItem^.Handle := FileMappingHandle; - NewListItem^.Memory := Pointer(p); + NewListItem^.Memory := Pointer(P); NewListItem^.References := 1; NewListItem^.Next := MMFHandleList; @@ -1099,29 +1110,29 @@ FillChar(Pointer(Result)^, Size, 0); end; -function SharedFreeMem(var p{: Pointer}): Boolean; +function SharedFreeMem(var P{: Pointer}): Boolean; var - n, Iterate: PMMFHandleListItem; + N, Iterate: PMMFHandleListItem; {$IFDEF THREADSAFE} HandleListAccess: IInterface; {$ENDIF THREADSAFE} begin - if Pointer(p) <> nil then + if Pointer(P) <> nil then begin Result := False; {$IFDEF THREADSAFE} HandleListAccess := GetAccessToHandleList; {$ENDIF THREADSAFE} Iterate := MMFHandleList; - n := nil; + N := nil; while Iterate <> nil do begin - if Iterate^.Memory = Pointer(p) then + if Iterate^.Memory = Pointer(P) then begin if Iterate^.References > 1 then begin Dec(Iterate^.References); - Pointer(p) := nil; + Pointer(P) := nil; Result := True; Exit; end; @@ -1129,17 +1140,17 @@ UnmapViewOfFile(Iterate^.Memory); CloseHandle(Iterate^.Handle); - if n = nil then + if N = nil then MMFHandleList := Iterate^.Next else - n^.Next := Iterate^.Next; + N^.Next := Iterate^.Next; Dispose(Iterate); - Pointer(p) := nil; + Pointer(P) := nil; Result := True; Break; end; - n := Iterate; + N := Iterate; Iterate := Iterate^.Next; end; end @@ -1147,10 +1158,10 @@ Result := True; end; -function SharedOpenMem(var p{: Pointer}; const Name: string; +function SharedOpenMem(var P{: Pointer}; const Name: string; DesiredAccess: Cardinal = FILE_MAP_ALL_ACCESS): Boolean; begin - Result := SharedGetMem(p, Name, 0, DesiredAccess) = ERROR_ALREADY_EXISTS; + Result := SharedGetMem(P, Name, 0, DesiredAccess) = ERROR_ALREADY_EXISTS; end; function SharedOpenMem(const Name: string; @@ -1159,33 +1170,11 @@ SharedGetMem(Result, Name, 0, DesiredAccess); end; -function SharedCloseMem(var p{: Pointer}): Boolean; +function SharedCloseMem(var P{: Pointer}): Boolean; begin - Result := SharedFreeMem(p); + Result := SharedFreeMem(P); end; -procedure FinalizeMMFHandleList; -var - NextItem, Iterate: PMMFHandleList; - {$IFDEF THREADSAFE} - HandleListAccess: IInterface; - {$ENDIF THREADSAFE} -begin - {$IFDEF THREADSAFE} - HandleListAccess := GetAccessToHandleList; - {$ENDIF THREADSAFE} - Iterate := MMFHandleList; - while Iterate <> nil do - begin - UnmapViewOfFile(Iterate^.Memory); - CloseHandle(Iterate^.Handle); - - NextItem := Iterate^.Next; - Dispose(Iterate); - Iterate := NextItem; - end; -end; - {$ENDIF MSWINDOWS} //=== Binary search ========================================================== @@ -3265,12 +3254,6 @@ initialization {$IFNDEF CLR} SimpleLog := nil; - {$IFDEF MSWINDOWS} - {$IFDEF THREADSAFE} - if not Assigned(GlobalMMFHandleListCS) then - GlobalMMFHandleListCS := TJclIntfCriticalSection.Create; - {$ENDIF THREADSAFE} - {$ENDIF MSWINDOWS} {$ENDIF ~CLR} {$IFDEF UNITVERSIONING} RegisterUnitVersion(HInstance, UnitVersioning); @@ -3282,8 +3265,11 @@ {$ENDIF UNITVERSIONING} {$IFNDEF CLR} {$IFDEF MSWINDOWS} - FinalizeMMFHandleList; {$IFDEF THREADSAFE} + // The user must release shared memory blocks himself. We don't clean up his + // memory leaks and make it impossible to release the shared memory in other + // unit's finalization blocks. + MMFFinalized := True; FreeAndNil(GlobalMMFHandleListCS); {$ENDIF THREADSAFE} {$ENDIF MSWINDOWS} This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |