FAQ - Frequently asked questions


Here you can find answers to common questions. For full information about ordering, licenses, support plans and conditions for usage, please refer to our orders page.

 Common for all products

A1. How can Pascal Analyzer/Pascal Expert and Pascal Browser make my developer life easier?
A2. Is there a Youtube video to watch?
A3. What is the difference between Pascal Analyzer and Pascal Expert?
A4. Which Delphi versions are supported?
A5. Is it necessary to change my source code?
A6. When my code parses, it stops with an error! What can I do?
A7. I’ve found an error, or at least I think so!
A8. I'm a registered user, where can I find updated versions?
A9. How do I install?
A10. How do I install updates?
A11. I've got comments and suggestions!

 Pascal Analyzer (PAL)

B1. How do I use Pascal Analyzer? Give me a simple example.
B2. How can I jump from an error location in a Pascal Analyzer report to my source code?
B3. How can I exclude results from code in certain folders?
B4. Where can I find the cyclomatic complexity metrics for my code?
B5. How can I detect assigned value parameters?
B6. Can Pascal Analyzer tell me if I have declared an identifier with the same name as a built-in identifier?
B7. When adding a virtual abstract method to a base class, can PAL help me find all places where I need to override this method?
B8. Results are often presented as lists of identifiers, sorted by name. Can I change this so that the lists are displayed sorted by module name, and secondly by identifier name?
B9. Is it possible to generate a list of global variables?
B10. For a given function or procedure, is it possible to see a list of all called other functions or procedures?
B11. How can I create a template for new projects, so I do not have to enter the same settings again and again?
B12. Can I integrate Pascal Analyzer with our build process?
B13. Pascal Analyzer hangs during the analysis? What can I do?
B14. For migration from 32-bits to 64-bits Delphi code, which reports are most valuable?
B15. How can I find code that is copied and exists in several places?
B16. How to remove unwanted warnings?

 Pascal Expert (PEX)

C1. How do I use Pascal Expert? Give me a simple example.
C2. How can I jump from an error location in Pascal Expert to my source code?
C3. For migration from 32-bits to 64-bits Delphi code, which reports are most valuable?
C4. How to remove unwanted warnings?

 Pascal Browser (PAB)

D1. How do I use Pascal Browser? Give me a simple example.
D2. How can I create a CHM file?
D3. How can I customize the produced HTML files?
D4. How can I make my Chinese comments show up correctly in the HTML pages when using charset "Big5"?

Common for all products


A1. How can Pascal Analyzer/Pascal Expert and Pascal Browser make my developer life easier?

Pascal Analyzer (PAL) is a powerful and efficient static code analysis tool. It will help you find all sorts of bugs, errors, and anomalies. It is a standalone Windows program available in both 32 and 64-bits versions. Pascal Analyzer supports your development process by:

  • finding errors in the source code, and help you avoid creating new ones
  • assist you in understanding your source code, both if you have written it yourself or inherited it from another developer
  • help you structure your code so it will become easier to maintain and enhance

Pascal Expert (PEX) is a subset of Pascal Analyzer. It is a plugin in RAD Studio and provides information already while developing. It contains the most important reports from Pascal Analyzer.

Pascal Browser (PAB) is a powerful and efficient source code documentation tool. Just as its sibling product Pascal Analyzer, Pascal Browser will parse the source code it finds and gather all sorts of information. This information is used to create the document collection that describes the source code. The most common use of Pascal Browser will probably be to create hyperlinked HTML documents.


A2. Is there a Youtube video to watch?

Yes, we have a Youtube video from January 2025 that explains static code analysis, and presents our products. For Pascal Analyzer there are a few code examples and a short demo. The video is 18 minutes long and free from ads.


A3. What is the difference between Pascal Analyzer and Pascal Expert?

Pascal Analyzer is the original product introduced n 2001. It is a standalone Windows program, and also comes in a command-line version. It creates reports that give warnings and hints about your source code.

There are also reports that provide extensive reference information, like lists of identifiers, call trees, and cross-reference lists.

Pascal Expert, introduced in 2015 is a RAD Studio plugin. It lives inside the Delphi development environment, and gives feedback while you are writing code. Feature-wise it is a subset of Pascal Analyzer, containing the reports that give warnings and hints, but not the reference reports. The two products complement each other, and there is a discount when buying both of them.


A4. Which Delphi versions are supported?

Pascal Analyzer and Pascal Browser support code written for all major Delphi versions (all compiler targets, Win32, Win64, OSX, iOS, Linux, Android). Pascal Expert, which is a RAD Studio plugin, supports Delphi 12 downto and including Delphi 2007.


  • Delphi 12 (latest is Delphi 12.3, released in March 2025)
  • Delphi 11
  • Delphi 10.4
  • Delphi 10.3
  • Delphi 10.2
  • Delphi 10.1
  • Delphi 10
  • Delphi XE8
  • Delphi XE7
  • Delphi XE6
  • Delphi XE5
  • Delphi XE4
  • Delphi XE3
  • Delphi XE2
  • Delphi XE
  • Delphi 2010
  • Delphi 2009
  • Delphi 2007
  • Delphi 2006
  • Delphi 2005
  • Delphi 8
  • Delphi 7
  • Delphi 6
  • Delphi 5
  • Delphi 4
  • Delphi 3
  • Delphi 2
  • Delphi 1
  • Borland Pascal 7 (or earlier)


A5. Is it necessary to change my source code?

No, not at all. Just make sure that you select a suitable compiler target, like for example "Delphi 12 Win64".


A6. When my code parses, it stops with an error! What can I do?

In the rather rare event that you encounter an error during parsing: You normally receive an error message which says something about a "Syntax error".

Send as a screen dump of the message plus, if possible, the source code for the unit where the error occurs. Also, for Pascal Analyzer or Pascal Browser, send us the project file, *.pap for Pascal Browser or *.pbr for Pascal Browser.

If you for copyright or security reasons cannot send us the source code, try to send us a shortened version of it. This means code that shows both the declaration and the implementation of the function where the error occurs. We handle all code that is sent to us very carefully, never sharing it with another part, and remove it when the problem is solved.


A7. I’ve found an error, or at least I think so!

If you’ve found something that you believe is an error: Please send us a code sample that illustrates the problem. Of course, we would like to have a minimal reproducible example (MRE), but any code is better than nothing.

Please also for Pascal Analyzer or Pascal Browser include the corresponding project file and the Status Report.

For Pascal Analyzer, there is a special debug version, pal.debug.exe that is possible to use. When you report to us, we may ask you to run this debug version with settings that we propose. It will create a log file with debug information.


A8. I'm a registered user, where can I find updated versions?

Check your registration email. It contains an URL to the current version. The URL is the same for all updates, and always points to the latest released version.

If you cannot find it, send a mail to support@peganza.com and we will help you.


A9. How do I install?

Download the new ZIP archive (for URL see your registration email) and unpack the setup program. Just run it and it will install in the selected folder. When starting the first time, you will be prompted for your license key.


A10. How do I install updates?

Download the ZIP archive (for URL see your registration email) and unpack the setup program. Just run it and it will replace the previous version. You do not have to uninstall the previous version.

If you for any reason want to keep the previous version, make sure to rename the program folder, like "Pascal Analyzer 9" to "Pascal Analyzer 9.14.0". For Pascal Analyzer, (correspondingly for Pascal Expert and Pascal Browser) the installation program will always install to "C:\Program Files\Peganza\Pascal Analyzer 9".


A11. I've got comments and suggestions!

Great! Just send them to us at support@peganza.com! We are very interested in getting feedback. Many suggestions from our users have been implemented, some quickly and some not so quickly! But you are very welcome, and we will investigate every suggestion.


Pascal Analyzer (PAL)


B1. How do I use Pascal Analyzer? Give me a simple example.

It is very easy to use Pascal Analyzer. To create a new project, just select “File” and “New Project”. In the properties dialog, select the main file for the analysis. This is normally a DPROJ-file or a DPR/DPK-file. It does not matter if you select DPROJ or DPR as long as the corresponding file exists.

On the Parser tab page, select the target, for example “Delphi 12 Win64”. There are also lots of other settings to set, but the default ones are enough to start with. Then close the dialog and hit “Analysis” and “Run”.

After a while, your reports will be available for browsing. Double-click on an item in a report and get transferred to the Delphi IDE, or open the source code in the built-in editor.


B2. How can I jump from an error location in a Pascal Analyzer report to my source code?

There are two ways:

1. "Options|Preferences", select the "Source code" tab page and select "Source file is opened and focused in the built-in editor". When double-clicking on a line in a report, a editor pane is opened and the corresponding line will be focused.

This option will allow you to edit the source code. It is opened in read-only mode, but by right-clicking you can make it writeable.

2. Under "Options|Preferences", select the "Source code" tab page and select "Source file is opened and focused in the Delphi IDE". Also select which Delphi IDEs you want to interact with, and press the "Update registry" button. Also, you will have to restart the Delphi IDE.

When double-clicking on a line in a report, the corresponding source code file is opened in the Delphi IDE and the line is focused. This of course requires that you have Delphi running. In this way you can make modifications to the source code.


B3. How can I exclude results from code in certain folders?

Use the "Exclude identifiers from these folders in reports" option in the "Properties" dialog box. It is desirable to let Pascal Analyzer find and parse all code, so it can get a better understanding. But in this way, you can exclude results from these folders.


B4. Where can I find the cyclomatic complexity metrics for my code?

Cyclomatic complexity is a measure of software complexity first introduced by McCabe. It measures the number of linearly-independent paths through a program module. PAL does not directly display cyclomatic complexity metrics. However, the Complexity Report displays decision points (DP). Cyclomatic complexity is often defined as the number of DPs plus one, so there is a direct relation between these two metrics.

B5. How can I detect assigned value parameters?

For example, code like this:

procedure MyProc(I : integer);
begin
  ...
  I := 555; // I is not passed as reference
  ...
end;
      

In the Warnings Report, this is reported in the section WARN11-"Value parameters that are set".


B6. Can Pascal Analyzer tell me if I have declared an identifier with the same name as a built-in identifier?

Yes, the Convention Report reports this in the section CONV12-"Identifiers that have unsuitable names". It lists identifiers that share the same name as keywords, directives, or identifiers from the System unit. Example: Absolute, Round, IntToStr


B7. When adding a virtual abstract method to a base class, can PAL help me find all places where I need to override this method?

Yes, the Warnings Report reports this in the section WARN39-"Classes without override of abstract methods". It is important to override these methods, otherwise you could get an exception at runtime.


B8. Results are often presented as lists of identifiers, sorted by name. Can I change this so that the lists are displayed sorted by module name, and secondly by identifier name?

Sure, you find this in the Project Options dialog box, in the lower part of the General tab page.


B9. Is it possible to generate a list of global variables?

The Identifiers Report has a section called IDEN2-"Global Variables", which provides exactly this.


B10. For a given function or procedure, is it possible to see a list of all called other functions or procedures?

Use the Call Index Report for this.


B11. How can I create a template for new projects, so I do not have to enter the same settings again and again?

Set options for a new project, that you want to keep as a template. Then select "Options|Set as Template" from the menu and the options will be used for the new projects that you create.


B12. Can I integrate Pascal Analyzer with our build process?

Yes, you can. Take a look at the command-line program PALCMD.EXE. It has a whole set of options that will let you run a PAL analysis automatically.


B13. Pascal Analyzer hangs during the analysis? What can I do?

Please send us a screen dump that shows how the main program window looks when this happens. Especially the bottom status line often gives us a clue to what causes the problem.

Also check if you find any log files under “C:\Users\\Roaming\Peganza\Pascal Analyzer”. If so, please send them to us at support@peganza.com.


B14. For migration from 32-bits to 64-bits Delphi code, which reports are most valuable?

STWA5-“Possible bad pointer usage”
STWA6-“Possible bad typecast”
WARN52-“Possible bad assignment”
WARN63-“Mismatch parameter value (32/64.bits)”.


B15. How can I find code that is copied and exists in several places?

Try the Clone Report. It will suggest which functions/procedures that are similar. Those are candidates for merging to a common function, simplifying maintenance and further development.


B16. How to remove unwanted warnings?

If there are warnings reported by Pascal Analyzer that you want to suppress: Add a comment:
//PALOFF
.. on a source code line, means that PAL will not report any issues encountered on that line. If you place the comment on a line where an identifier is declared, that identifier will not be reported. This is the most effective way to get rid of all issues for an identifier.

It is also possible to remove warnings just for specific report sections. See the help for more details.


Pascal Expert (PEX)


C1. How do I use Pascal Expert? Give me a simple example.

It is very easy to use Pascal Expert. Pascal Expert is a RAD Studio plugin, so available when you work with code. Just activate the project you want to analyze. This is normally done by double-clicking on the report in the Project Manager. Also select the build configuration that should be used.

Then just hit the red arrow in the toolbar or select “Tools”, “Pascal Expert” and “Analyze project..”.

Results from the analysis is displayed in the Messages window. Double-click on a line to go to the corresponding code line. To select options for the analysis, select “Tools”, “Pascal Expert” and “Options” or press the tool button.


C2. How can I jump from an error location in Pascal Expert to my source code?

Output from Pascal Expert is displayed as lines in the Message window inside RAD Studio. Just double-click on a line to get transferred to the corresponding source code line.


C3. For migration from 32-bits to 64-bits Delphi code, which reports are most valuable?

STWA5-“Possible bad pointer usage”
STWA6-“Possible bad typecast”
WARN52-“Possible bad assignment”
WARN63-“Mismatch parameter value (32/64.bits)”


C4. How to remove unwanted warnings?

If there are warnings reported by Pascal Expert that you want to suppress: Add a comment:
//PALOFF
.. on a source code line, means that PEX will not report any issues encountered on that line. If you place the comment on a line where an identifier is declared, that identifier will not be reported. This is the most effective way to get rid of all issues for an identifier.

It is also possible to remove warnings just for specific report sections. See the help for more details.


Pascal Browser (PAB)


D1. How do I use Pascal Browser? Give me a simple example.

It is very easy to use Pascal Browser. To create a new project, just select “File” and “New Project”. In the properties dialog, select the main file. This is normally a DPROJ-file or a DPR/DPK-file. It does not matter if you select DPROJ or DPR as long as the corresponding file exists.

On the Parser tab page, select the target, for example “Delphi 12 Win64”. There are also lots of other settings to set, but the default ones are enough to start with. Then close the dialog and hit “Analysis” and “Run”. After a while, your documentation will be available for browsing.


D2. How can I create a CHM file?

CHM files are super quick indexed local help files. To make it work, you must first download and install HTML Help Workshop version 1.3 from Microsoft.

Then in the Preferences dialog, set the path to the help compiler (hhc.exe). For a project where you want to generate CHM files, select the "Create CHM project files" and "Compile CHM project" on the General tab page.


D3. How can I customize the produced HTML files?

Although the default produced HTML pages are good enough for most users, it is possible to customize how the resulting documentation is generated.

There are different levels of customization possible, ranging from very easy to advanced. It helps if you have some knowledge in HTLM, CSS, XML, XSLT. The help system contains more information about how to do this.


D4. How can I make my Chinese comments show up correctly in the HTML pages when using charset "Big5"?

When Unicode comments are used in the source code, the default templates will not generate the correct output. The output in source code listings will display Unicode characters, but not in the other parts of the document that show comments.

The comments are written by PAB to the intermediate XML file, and the charset used is "iso-8859-1", and the XSLT transformation inserts a <META> tag in the resulting HTML pages that specifies "charset=iso-8859-1". The solution is to add an additional <META> tag that specifies for example the charset "Big5" (a charset for Chinese characters) in the templates, like this for Module.xsl:  

<?xml version="1.0" encoding="iso-8859-1"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" >
<xsl:variable name="template">{#Template}</xsl:variable>

<xsl:include href="FooterInc.xsl"/>
<xsl:include href="HeaderInc.xsl"/>
<xsl:include href="ToolsInc.xsl"/>
<xsl:include href="TodoInc.xsl"/>
<xsl:include href="ImageInc.xsl"/>

<xsl:output method="html" version="1.0" encoding="iso-8859-1" indent="yes"/>

<xsl:template match="/">
<xsl:variable name="Me" select="//Items/Item[@id='{#selfID}']"/>
<xsl:variable name="ItemsInMe" select="//Items/Item[@modid='{#selfID}']"/>
<HTML>
<META http-equiv="Content-Type" content="text/html; charset=Big5"/>
<xsl:call-template name="header"/>
<BODY>
...

This <META> tag will take precedence, so the resulting output is displayed with the "Big5" charset.