delphi2-delphi2010 全支持 dcu 装换 pas
--------------------------------------------------------------------------------
Project Dcu2Pas Version 1.3
Purpose Decompile a D2-D7, K1-K3's dcu(dpu) file to Delphi source as origin as
possible, without or with minimal modifications, then recompile to new
one under other Delphi versions
Author Nengwen Zhuo(卓能文)
Homes http://soarowl.uhome.net, http://www.websamba.com/soarowl,
http://soarowl.0catch.com
Emails soarowl@yeah.net, soarowl@sina.com.cn
Released 2003-02-10
Lastest home/dl/Dcu2Pas.rar(zip)
FOR RESTORE YOUR LOST SOURCES AND OPTIMIZE YOUR CODES ONLY!!!
--------------------------------------------------------------------------------
This project is in very early stage, no document yet. To see some features,
reference my test cases file -- test.pas and the output file test.int, please.
The output maybe more clear organised than source files!!!
For further development, any suggestions and ideas are welcome. I have no time
to update my homepages for a long time ;-)
--------------------------------------------------------------------------------
Usage
Run Dcu2pas, set properly options, select a desired dcu file double click to
decompile it
--------------------------------------------------------------------------------
Features
- Supports the following type declarations and their typed consts:
* Type redeclarations, for example:
type
MyTypeString = type String;
* All integer types(Byte, Cardinal, Int64, Integer, Longint, Longword,
Shortint, Smallint, Word)
* All char types(AnsiChar, Char, WideChar)
* All boolean types(Boolean, ByteBool, LongBool, WordBool)
* Enumerated type, subrange of enumerated type and set of enumerated type
For examples:
type
Size = (Small = 5, Medium = 10, Large = Small + Medium);
TMySize = Medium..Large;
type
TEnumSet = set of (Club, Diamond, Heart, Spade);
const
vcSet4: TEnumSet = [Club,Spade];
* All real types(Comp, Currency, Double, Extended, Real, Real48, Single)
* All string types(AnsiString, ShortString, String, String[XX], WideString)
* Array type(with/without packed keyword), dynamic array and
multidimensional dynamic array
* Set type
* Record type, with any variant parts in records. But if a record has any
variant parts in it, the typed const may can't correctly decompile
* Function/procedure type declaration
- Support threadvar
- Support resourcestring
- Support class type, interface inheritation
- Support object type
- Support interface
- Code decompiler to BASM, then a decpompiled file can recompile under other
Delphi versions...
- Code decompiler to Object-Pascal. I have some ideas, but I have no time,
maybe in near future, I will code for it!
--------------------------------------------------------------------------------
Update history
Legend:
- Bug fixed
* Algorithm enhanced
+ New featuer added
Ver2.0
Ver1.3
2003-02-10
* Code decompiler redesigned
* Partly support D7
Ver1.2
2002-07-28
+ Delete procedure, contructor, destructor frame
2002-07-18
+ Procedure variable const
+ Now can distinguish:
vc1: PChar ='test';
vc2: PChar = @vc1;
2002-05-28(Ver1.1)
+ Now correctly process interface properties and argument default values
+ Support resources, for example: {%R *.dfm}, {$R *.res}
2002-05-26
+ Support default arguments
+ Support interface
2002-05-25
+ Support object type
+ Support resourcestring
+ Support threadvar
+ Support function/procedure type
2002-05-24
+ Support file type
+ Support set of enumerated type const decompiler
+ Support enumerated type const decompiler
+ Support subrange of enumerated type
+ Support dynamic array type
- Array [enumerted type] of ...
- Bugs in [packed] array fixed
- Bugs in [packed] record fixed
- Bugs in enumerated type fixed
- Bugs in classify interface and implement declarations fixed