Yunqa • The Delphi Inspiration

Delphi Components and Applications

User Tools

Site Tools


PasDoc: Version History

DIPasDoc generates HTML documentation from comments in Pascal source code files. It outputs browsable help as standard HTML files or customizable MS HTML Help projects.

DIPasDoc 0.8.11 - released 3. July 2017

  • Change the code so that Create_Help.bat, Create_HtmlHelp.bat, etc. no longer fail because of missing include files.

DIPasDoc 0.8.10 - released 6. July 2006

  • This is a compatibility update with DIContainers only.

DIPasDoc 0.8.9 - released 9. March 2006

New Features

  • Added Simple Chinese (CP 936 / GB2312) translation received from Kots <>.

Bugs Fixed

  • Some HtmlHelp TOC items were not translated.

DIPasDoc 0.8.8 - released 1. March 2006

  • compatibility update.

DIPasDoc 0.8.7 - released 14. January 2004

New Features

  • Added full documentation of Enumeration Types, including their individual enumeration items, which can have their own documentation comment and can be referenced via @link(MyEnumItem).
  • Added full declaration of Types to the documentation, including links to declaration identifiers.
  • Added full declaration of Constants to the documentation, including links to declaration identifiers.
  • Added a property TDIPasDoc.OutputCharSet which overwrites the language default output character set. Matthew Barucha <> suggested this feature to create documentation for languages which use another code page than the Pascal source file(s). Its command line parameter is -P<OUTPUT CHARACTER SET>.

Bugs Fixed

  • The “deprecated” and “platform” calling conventions introduced with Delphi 6 were not recognized for class members. Thanks to Adrian Meyer <ameyer (at)> for the hint.
  • Corrected the handling of “dispid” directives followed by integer constants. Bug reported by Chris Eyre <>.
  • Fixed parsing of calling conventions for variable function declarations.
  • Allowed parsing the rare case of function declarations which don't end with a semicolon but are followed by type instead. Surprisingly, Delphi compilers don't report an error on such constructs, so they appear in code and we consider them legal as well.
  • Gerard Visent <> corrected and completed the French, Spanish, and Catalan language translations.
  • For the Polish language, completed the translations and specified 'windows-1250' as the default character set (courtesy of Matthew Barucha <> and Czarek <>).
  • Some memory leaks fixed.

DIPasDoc 0.8.6 - released 31. March 2003

New Features

  • New property VisibleClassMembers controls the level of class member visibility which should be included in the documentation. The command line switch equivalent is -M<private|protected|public|published|automated><+|→. Example: -Mprivate+ includes private members, -Mprotected- excludes protected members from the documentation.
  • Added image Protected for automated visibility of class members.
  • Named internal HTML links according to the item's names whenever possible to ease linking from external HTML files to the auto-generated documentation.
  • Improved link resolution, including warnings issued for links that can not be resolved.
  • Added recognition for single letter Switch Directives, i.e. {$R+}, {$B-}, etc.
  • Slightly improved visibility resolution for members at the beginning of a class declaration which don’t have a specified visibility. These are now documented as published if the {$M+} Switch Directive is defined; otherwise such members are documented as public. Published visibility is not yet applied to those classes which are derived from classes which are compiled in the {$M+} state.
  • Henrique Meira <> contributed an example project which demonstrates the basics of how to use the TDIPasDoc component with GUI applications.
  • Javier Francisco <> contributed yet another, more sophisticated TDIPasDoc component GUI example.

Bugs Fixed

  • The “register” and “safecall” calling conventions were not recognized for procedures and functions.
  • Corrected the handling of “external” and “name” directives, especially when followed by string constants. Reported by Alexander Muylaert <>.
  • As Sergei Klochkov <> reported, multiple comma separated class fields were not documented at all except for the very first field.
  • Removed “on” from the list of Pascal reserved keywords to avoid DIPasDoc throwing an error on class properties with the same name as suggested by Chris Eyre <>.
  • No documentation text was assigned to comma separated variables except for the very first variable.
  • The end of (* … *) comments was sometimes overlooked.
  • Detailed description were not fully written.
  • Corrected some sorting issues.
  • Nonsense characters wrapped by conditional compilation directives caused fatal parsing errors. Example: {$IFDEF Undefined} !!! Compiler Test Error !!! {$ENDIF}.
  • When OutputFolder was not explicitly specified, TDIPasDoc complained by raising an exception. Changed this to using the current directory instead.
  • Non-link class ancestors were not properly documented. Thanks to Onno Broekmans <> for insiting on a fix, which actually turned out quite simple.
  • The HTML Help legend did not use the Legend translation, reported Juarez Rudsatz <>. Please check your language if it includes the correct translation for “Legend”. Thanks, Juarez, for also completing the Brazilian translation.
  • Kristijan Smiljanic <> updated the Bosnian Language translation.

Dropped Features

  • Removed the ExcludePrivate property and the -P command line switch in favor of the more powerful new VisibleClassMembers property (see above).

DIPasDoc 0.8.5 - released 18. December 2002

New Features

  • TDIPasDoc now descends from TComponent. This completely separates the documentation engine from the legacy console application and makes the engine available to third applications, console as well as GUI applications. Applications only needs to set the TDIPasDoc properties (which can also be done in the Object Inspector) and call the TDIPasDoc.Execute method.
  • DIContainers are now responsible for the underlying in memory storage of all parsed information. The new Class Hierarchy feature (see below) called for a flexible N-ary Tree implementation, which I found in my DIContainers library. Along the conversion way I also replaced all ShortStrings with AnsiStrings. Now, with DIContainers applied throughout, DIPasDoc uses 10 (yes, ten!) times less memory and executes 3 times faster compared to the previous release. The advantage is most pronounced with huge projects consisting of many files.
  • Class Hierarchy added for a much better overview of all classes, interfaces and objects contained in a help project. Plain HTML output benefits most from this new feature. For HtmlHelp projects there is a new HhcContents command @ClassHierarchy. Thanks to Chris Eyre <> for the suggestion and the initial implementation from which I expanded the code.
  • Chinese Big 5 translation thanks to Daniel Lin <>.
  • Kristijan Smiljanic <> translated DIPasDoc to Bosnian Language.
  • Hendy Irawan“ <> added translations for Indonesian and Javanese languages. He also suggested translation tokens for the “Generated by” and the “Generated on” messages. Please check the DIPasDoc_Languages.pas if your language needs an update, too!
  • First steps taken to convert the souce from the old Turbo Pascal Objects to the new Delphi Classes.
  • Delphi 7 Support.

Bugs Fixed

  • Duplicate class names (in different units) could lead to an exception when writing the HtmlHelp project.
  • The {$IFNDEF} compiler directive could still confuse the build-in Pascal parser to skip code which it should not.
  • The ALT attribute of the protected visibility image erroneously produced a “Private” alternative text. Thanks to Guido Mies <> and Paul Urban <>, who both reported this copy & paste typo.
  • The “automated” class sections were not parsed correctly, as Chris Eyre <> reported.
  • Very large projects could crash DIPasDoc with an “214 Collection overflow error”. Thanks to Ralf Grenzing <> for the hint after running DIPasDoc on a very big heap of files. The error was due to an array overrun and should no longer happen with DIContainers in use.

Dropped Features

  • Temporarily dropped Kylix support. The goal is, however, to keep DIPasDoc Kylix compatible as soon as as I'v found the time and disk space to get Linux up and running. Contributions are welcome.

DIPasDoc 0.8.1 - released 10. June 2002

Bugs Fixed

  • On compilation, Delphi reported an error if the “Assignable typed constants” compiler directive ($J) was not checked in the project's Options / Compiler tab. Fixed this by changing all variables to use the var instead of const keyword. Thanks to Gasper Kozak <> for sharing his confusion about this.
  • Removed unused code from Objects.pas.

DIPasDoc 0.8.0 - released 7. June 2002

Starting from Version 0.8.0, rjPasDoc changed its name to DIPasDoc.

New Features

  • Kylix compatibility. DIPasDoc compiles with Kylix and runs under Linux. Thanks to Jan Holst Jensen <> for having mastered this challenge.
  • New DocComment: @inherited will cause DIPasDoc to search for an inherited method or property and insert its name with full link information into the documentation. This allows easy reference to inherited documentation like “See inherited @inherited” which will be replaced with “See inherited MyMethodPropertyName”.
  • Fields of Classes and Objects also display the same visibility indicators as Methods and Properties.
  • Improved readability to the Methods and Procedures summary. Also, parameters now show clickable links when available.
  • New DocComment: @nil inserts the word “nil” formatted as code: nil.
  • File names read from a source file (-S<FileName> switch) may contain wildcards (*?).
  • New internal design of language and translation handling: The Languages.pas unit contains all language and translation definitions and only this file needs to be modified to add new languages. Everything else is taken care of automatically, including the command line help. Also, if some language item is not included in the translation, the default (English) text will be used and no warning will be issued. If you speak one of DIPasDoc's languages, I would appreciate if you could check “your” language for typing errors and missing translations, using the English translation as a reference. Also, new translations are of course always welcome.
  • General support for character sets / codepages added if languages request so (as Russian does).
  • Russian translation(s) added with support for codepages 1251, 866 and KOI-8. Thanks to Vitaly Kovalenko <> for the initial CP 1251 translation and Alexander Lisnevsky <> for some fixes and CP 866 and KOI-8 implementation. Added new language switches -Lru1251, -Lru866, and -LruKOI8 for Russian output.
  • Danish translation courtesy of Martin Hansen <>. Added new language switch -Ldk for Danish output.
  • Italian translation submitted by Michele Bersini <>. The language switch is -Lit.
  • Slovak translation was kindly sent by Peter Šimkoviè <>. Added new language switch -Lsk for Slowak output.
  • Translation into Swedish by Peter Thörnqvist <>. Invoke it by language switch -Lse.

Bugs Fixed

  • An access violation occurred when the last items of the HtmlHelp index were duplicates. It also turned out that duplicate index names were sometimes suppressed. All this should now be fixed. Thanks to Danny Heijl <> for the initial report.
  • Relaxed the parsing of semicolons after directives which follow procedures and functions (i.e. overload, etc.) which caused a parsing error if a semicolon did not not separate and terminate the directives. Thanks to Alexander Lisnevsky <> showing me that the semicolons can be omitted.
  • Reworked the {$ELSE} bug which was unfortunately not properly fixed in version 0.6.22 and occurred again in a different scenario. The scanner did not properly skip nested {$DEFINE …} conditional defines in conjunction with {$ELSE}. Now everything should be fine. See comment in SkipUntilElseOrEndif (Scanning.pas) for details.
  • Documentation inside of @code( … ) was limited to the length of a ShortStiring (255 Chars at most). Replacing this by an AnsiString removed this restriction.
  • Adjusted compiler defines to properly compile with Delphi 6.
  • Multiple other bugs fixed including general stability issues.

rjPasDoc 0.7.0 - released 12. July 2001

New Features

  • Automatic generation of MS HtmlHelp projects, including Contents and Index files. With the new output switch -HtmlHelp, rjPasDoc generates all files needed by MS HtmlHelp Compiler to create full fledged HtmlHelp projects directly from your sources (idea and first implementation thanks to Wim van der Vegt <>). HtmlHelp output is adjusted to the needs of that format and slightly differs from standard HTML output. To create the HtmlHelp file, simply open the project (*.hhp) in HtmlHelp Workshop and compile. rjPasDoc will try to find the MS HtmlHelp compiler to compile the project. If this is not what you want, specify the -XHHC option. For plain HTML output (default), use the new -OHtml option.
  • Introduction of Cascading Style Sheets. The default style sheet is very basic. So you have all options to change it and extend it since rjPasDoc will not overwrite it once it is in the output path.
  • New -T<TITLE> comand line option allows to set the title for both plain HTML and Htmlhelp output.
  • New -N<Name> option for setting a help projects name. rjPasDoc will name *.css files and the HtmlHelp project according to this switch.
  • New -C<FILE> switch to allow customized HtmlHelp contents files. See Usage for details.

Gone Features

  • Removed Tex.pas unit. So there is no LaTeX output any more. I did not need it, did not maintain it, and nobody else said they would. All LaTeX related options are gone as well.
  • Completely removed the -k option (keep formatting). It did not show an effect anyway.

Bugs Fixed

  • DispInterface types are now properly parsed as CIO (Classes, Interfaces, Objects).
  • Compiler defines are now correctly recognized without trailing spaces in case there are any after the terminating }. Example: {$DEFINE MyDefine } (notice the space after MyDefine) is now treated like {$DEFINE MyDefine} (without the space).
  • Improved parsing of property overrides / redeclarations where only the property name is given (i.e. property Color;). Where a colon was wrongly inserted into the docs before, it is now a semicolon.
  • Corrected parsing of e-mail addresses with underscore (_) characters.
  • Eliminated compiler warnings by removing unused code from objects.pas (suggested by Wim van der Vegt <>).
  • Corrected a small typo in the English language strings (thanks to Wim van der Vegt <> for spotting this).
  • Added Protected image for published visibility, also included in rjPasDoc.exe and automatically copied to the output directory. Also added alt attributes for all images.

rjPasDoc 0.6.22 - released 30. June 2001

New Features

  • The default html-image files ( ) are now included in the rjPasDoc executable and will automatically be copied to the destination directory. Existing files will not be overwritten, so you may replace the default ones with your own images.
  • For better readability, the names of functions, procedures and methods now appear in bold font.
  • rjPasDoc now issues a warning in case two different unit files have the same unit name, i.e. unit MyUnitName in their unit's clause. Since duplicate unit names are not allowed, the source file parsed last will be discarded and will not appear in the documentation.

Bugs Fixed

  • Improved parser: Now rjPasDoc correctly recognizes forward class declarations (class MyClass=class;) and does no longer create empty documentation for those classes. Comments in front of the forward declaration are ignored, only those of the defining declaration are included into the documentation.
  • Scanning.pas: Fixed a bug which caused the scanner to loose track of {$ELSE} conditional defines.
  • Corrected expansion of @Created() and @LastMod().
  • Fixed a bug which caused @@ (literal @) to report a warning.

Version 0.6.21 - released 21. June 2001

We have fixed some bugs of the original version, corrected some of its functionality and added a few new features:

  • Delphi compatibility: Included objects.pas from FreePascal sources.
  • Improved link generation.
  • Proper recognition of “reintroduce”.
  • All overloaded functions are now all listed, not just the first one.
  • Duplicate class names no longer overwrite their corresponding HTML-files.
  • Improved sorting of overviews.
  • Class hierarchy.
  • Removed conversion of HTML markup characters '<', '>', '&' and '”'. This allows to include HTML markup into the descriptions. To display these characters, precede them by an @, i.e. @<, @>, @&, @“.
  • Reintegrated item exclusion (@exclude, without brackets).
  • -htmlheader FILE switch adds contents of file to all HTML output before the beginning of the page, just after the <BODY> tag.
  • -htmlfooter FILE switch adds contents of file to all HTML output after the end of the page, just before the </BODY> tag.
  • Image support to indicate method visibility ( ). Copy the images from the Img folder in the rjPasDoc archive to the folder where your HTML output is located. (This was changed in version 0.6.22.)
  • @Name inserts the name of the current item (no brackets required).
  • @ClassName inserts the name of the class of the current item, if there is one (no brackets required).
  • @code(Text) inserts the Text formatted as code.
  • @True and @False insert True / False formatted as code.
apps/pasdoc/history.txt · Last modified: 2017/07/03 18:13 by