Download V1.2.0

Download DelphiXPG from here. See below for a list of enhancements and fixes in this release.

Once downloaded unzip the contents and run DelphiXPGSetup1.2.0.exe to install.

File size: 3 Meg




Version History

V1.2.0

  • NEW: Support for Delphi 2009, 2010 and XE project files.
  • NEW: Parse status window now has a log of parse settings.



  • NEW: Within the source window CTRL-I jumps to items implementation, CTRL-D jumps to items declaration.
  • NEW: A switch has been added to project properties that allows insertion of include file source. The only caveat is that no source can be modified due to possible ambiguity when two or more modules include the source.



  • NEW: XRefs unit file name now shown below XRef entry.
  • NEW: Supplemental switch to "Insert Include File Source" added to allow main source line numbers to be added, allowing original location of line to be seen.
  • NEW: If VCL source is not to be parsed then these units are not displayed in the units list.
  • Treat classes based on TObject as CLASS items.
  • Anything past a units "end." is ignored.
  • Fix: Problem in preprocessor where white space after symbol was not removed but treated as part of the symbol e.g.
        {$IFNDEF MSWINDOWS }
    
    Symbol was being treated as "MSWINDOWS ".
  • Hex ranges
        THexRange = $00..$FF;
    
    now processed like decimal ranges.
  • Fix: Stop error being raised when class referenced before a forward declaration.
         TTestCaseClass  = class of TTestCase;
         TTestCase       = class;
    
         TTestCase       = class
         end;
    
  • Fix: Pointer to keyword FILE was being marked as an error,
        PFile = ^FILE;
    
  • Fix: Embedded bracketed expressions within enumerations caused an error,
        TEnum = (First=(0+1));
    
  • Fix: Missing semi colon after "as" caused error when followed by "end;"
            Result := Form_Main as TForm
        end;
    
  • Fix: Access Violation on reparse for unit with an error in it that has an associated DFM.
  • Fix: Problem where properties that implement multiple interfaces caused an error,
        property PropertyPageImpl: TPropertyPageImpl read FPropertyPageImpl
                 implements IPropertyPage, IPropertyPage2;
    
  • Fix: Problem where multi-line comment following a type caused an error,
     TRRecObj = CLASS (TObject)
       Public
        RR : Integer;
       end;
    
      ( *
    	 Comment
      * )
    
  • Fix: Problem where a set range caused an error,
        property ClipboardCommands: TJvClipboardCommands
                   read FClipboardCommands
                   write SetClipboardCommands default [caCopy..caUndo];
    
  • Fix: Include files specification can now include an absolute path as well as relative.
       {$I C:\projects\includes\conds.inc}
    
    If no absolute path is specified then the relative path is searched first from the modules directory then for each item in the search path. If no extension is specified then ".pas" is used. Conditional window now shows absolute path to include file.
  • Fix: Problem where array of anonomous record causes an error,
       NWVolumeRestrictions = packed Record
         numberOfEntries  :   nuint8 ;
         resInfo : Array[0..11] of packed Record
           objectID  :   nuint32 ;
           restriction  :   nuint32 ;
         end;
       end;
    			
  • Fix: Stop stack overflow caused when an alias references another alias of the same name e.g.
    Unit1
    
       type
          TBetterRegistry = TRegistry;
    
    Unit2
    
       type
          TBetterRegistry = Unit1.TBetterRegistry;
    
  • Fix: Conditional view window does not reflect changes in font.
  • Fix: Tree view items in Conditionals/Symbol TV should be read only.
  • Fix: Access violation whem clicking on the "VCL Source Root" browse button for Options dialog under Windows Vista.
  • Processes 'inline' directive for method.
  • Process Helpers for both classes and records.

V1.1.0

  • Support for Windows Vista operating system.
  • XRef list now shows method item is accessed from,
  • Added history of opened projects.
  • Parsed VCL units are cached speeding up subsequent parses.
  • When source is modified only effected units are reparsed.
  • Improved speed when navigating from one XRef item to another for large files.
  • Audible beep if Context or Data Type Context cannot be found.
  • Editor now synchronized, XRef window caret will reflect position in editor when it closes.
  • Searches for VCL source directories when first run after install.
  • User settings nolonger stored in registry, stored in non roaming Application Data area using Portable Objects persistence framework.
  • Fix: Method return value not being highlighted correctly (being offset by one char)
  • Fix: Stopped tree node 'Methods' appearing when there were no methods.
  • Fix: Error log not being cleared on reparse.
  • Fix: Access violation when opening file using .xpg file extension.
  • Fix: VCL source not always being picked up on XP, okay on W2K.
  • Fix: References from an array of class refs not being picked up.
    var
    	a : array [0..15] of TObject;
    	s : string;
    begin
    	a[0] := Application;
    
    	s := a[0].ClassName;	// ClassName not being picked up.
    end;
    
  • Fix: Record fields that were procedural type were not being parsed correctly.
    
      TVariantManager = record
        VarClear: procedure(var V : Variant);
        VarCopy: procedure(var Dest: Variant; const Source: Variant);
    

V1.0.9e

  • Fixed: Creating a "class of" class reference for an as yet undefined class would produce a "Unknown class" error e.g.
    
    type
    
    TPanningWindowClass = class of TCustomPanningWindow;
    TCustomPanningWindow = class
    private
      FBar: integer;
    end;
    
  • Fixed: Function declarations in constants were not being parsed correctly when there were more than two parameters e.g.
    
    function SetNamedSecurityInfoW(pObjectName: LPWSTR; ObjectType: SE_OBJECT_TYPE;
        SecurityInfo: SECURITY_INFORMATION; psidOwner, psidGroup: PSID;
        pDacl, pSacl: PACL): DWORD; stdcall;
    
    const
      RtdlSetNamedSecurityInfoW: function(pObjectName: LPWSTR; ObjectType: SE_OBJECT_TYPE;
        SecurityInfo: SECURITY_INFORMATION; psidOwner, psidGroup: PSID;
        pDacl, pSacl: PACL): DWORD stdcall = SetNamedSecurityInfoW;
    
  • Fixed: Compilation directive using $ELSEIF where not handled correctly resulting in an "Unexpected $Else" error e.g.
    
    {$DEFINE A}
    {$UNDEF B}
    {$UNDEF PIC}
    
    
    {$IF DEFINED(A)}
       {$message 'A defined start'}
            {$IFDEF PIC}
                   {$message 'PIC defined'}
            {$ELSE}
                   {$message 'PIC not defined'}
            {$ENDIF}
       {$message 'A defined end'}
    {$ELSEIF DEFINED(B)}
       {$message 'B defined'}
    {$ELSE}
       {$message 'Neither A nor B defined'}
    {$IFEND}
    
  • Fixed: System unit not parsed correctly because conditional define "CPU386" was not defined, this resulted an "Unknown class" error,
    
    Line:- 8389 (17) Unknown class.
    function TObject.ClassType: TClass;
    ________________^
    
    Define "CPU386" will automatically be added to VCL Version Information items with name containing "200" i.e. "2005", "2006", "2007",.. Otherwise add it manually.

V1.0.9d

  • Fixed: Parse error when property default was set to nil.
  • Fixed: Property default value not cross referenced when identifier used.

V1.0.9c

  • Fixed: Multiple label definition not catered for. e.g. label l1,l2,l3;
  • Fixed: Const section then "end." of unit not catered for.

V1.0.9b

  • Fixed: Parse error when implements keyword used in property.

V1.0.9a

  • Fixed: Default hex values not parsed for properties.
  • Fixed: Comment between return type and semi colon not parsed.
  • Fixed: Hash chars, #1034, not parsed in dfm's.

V1.0.9

  • Fixed: Function return value in method implementation not being picked up.
  • Fixed: Datatype in AS not being picked up.
  • Data tree items now show reference count.
  • Added CLR,CIL,MANAGEDCODE to defines for Delphi 2005 .NET
  • Added MSWINDOWS to defines for Delphi 2005 Win32

V1.0.8

  • Fixed: Function "result" variable XRef list not created.
  • Fixed: If there were no white space between an item and "THEN" e.g.
      if  TypeText='TEST'then
    
    and profiling code was added then the "THEN" would vanish.
  • Fixed: With statements (see ComCtrls TCustomRichEdit Print, hdc not picked up from Range) context of second item not being picked up.
  • Fixed: Not able to jump to a context or data type context from source window. This happens when you view an xref item in another unit then change the tree node to a container. XRef list is cleared and popup Find Context and Find Data Type Context do not work.
  • Fixed: Enumerations on array fields not being picked up e.g.
      FArray : array [alLow..alHigh] of string;
    
  • Fixed: Explicitly Assigned Ordinality for enumerations not picked up e.g.
    	TEdgeType = (etTop=1,etbottom=2,etLeft=etTop+etBottom,etRight);
    
  • Fixed: Hash chars in dfm strings caused parse error.
  • Fixed: Conditional symbols defined in include file not being processed. Also now handles multiple levels of include file.
  • NEW Functionality: List conditional symbols. When they are defined/undefined and tested.
  • Fixed: Data module only referenced in properties is not being picked up in refed unit/uses reports
  • Fixed: Sub referenced items not being picked up if DFMs e.g. DataSource1 in DataSource = DataModule3.DataSource1
  • Fixed: References to global consts not being picked up in local method const def e.g.
     implementation 
       const
        Smallest = 1;
        Biggest = 100;
    
     procedure test;
     const
      Sum = Smallest + Biggest;
     begin
    
     end;
    
  • Fixed: Compare color settings not being saved.

V1.0.7

  • Convert binary dfm's to text.
  • Add Context lookup and context data type lookup.
  • Next and Prev XRef tool buttons and menu items. Ctrl-N Ctrl-P
  • Search in main source window.
  • Implicit uses
  • Tool buttons in compare form.
  • Unknown contexts
  • Items in use context are qualified with class name if applicable.
Copyright © 2005-2010, Simon Cox