Views
392
02:36:08
27.04.2018 (Friday)

DfmExtractor 1.1

Extracts DFM, LFM and FRM forms from executable files compiled by Delphi, Lazarus and CodeTyphon

DfmExtractor is a small command line utility which allows you to extract DFM, LFM and FRM forms from executable files compiled by Delphi, Lazarus and CodeTyphon.
DfmExtractor
Release date:
28.02.2018
Language:
English
License:
Freeware, Open Source
System:
Windows
Downloads:
162
The application does NOT contain any malicious software. VirusTotal.com scan results:
Windows 32-bit portable

This program was made for my private use, but it may also be useful to someone.

When translating one program written in Delphi, I needed DFM forms to make it easier to work with the Poedit program, so I decided to write a small program to extract DFMs.

Screenshots

Usage

DfmExtractor version 1.1 [Win 32-bit] (2018.02.28)

Usage: DfmExtractor.exe -i=FILE [-n=NAME] [-idx=X] [-o=FILE] [-e=EXT] [-p=STR] [-a] [-d=DIR]
[-l] [-h] [-V] [--home]

Mandatory arguments to long options are mandatory for short options too.
Options are case-sensitive. Options in square brackets are optional.

Input/output options

SwitchDescription
-i, --input-file=FILE An executable file containing Delphi, Lazarus or CodeTyphon forms (DFM, LFM, FRM).
-n, --form-name=NAME Form name or form class name to extract.
-idx, --form-index=X The index of the form to extract. Non-negative integer.
-o, --output-file=FILE The output file with extracted form.
-e, --extension=EXT The default extension of the output file(s). If not specified, DFM will be used.
-p, --prefix=STR Output file(s) name prefix (for the -a option).
-a, --save-all Saves all forms from the specified executable file to the given (or current) directory.
-d, --output-dir=DIR Output directory (for the -a option).
-l, --list Displays a list of all forms in the given input file.

Information

SwitchDescription
-h, --help Show this help.
-V, --version Show application version.
--home Opens program homepage in the default browser.

Examples

  1. List all forms in the file AudioExtractor64.exe:
      DfmExtractor.exe -i AudioExtractor64.exe -l
    Result:
    Forms: 10
    Index |  Lines | Form name        | Form class
    -------------------------------------------------------
        0 |    451 | CustomizeFrm     | TCustomizeFrm
        1 |    343 | FormAbout        | TFormAbout
        2 |     49 | FormCmdLine      | TFormCmdLine
        3 |    345 | FormErrors       | TFormErrors
        4 |  1 621 | FormFileInfo     | TFormFileInfo
        5 |    474 | FormListFileEdit | TFormListFileEdit
        6 |  6 035 | FormMain         | TFormMain
        7 |    790 | FormOptions      | TFormOptions
        8 |    422 | FormProgress     | TFormProgress
        9 |    169 | FormToolsInfo    | TFormToolsInfo
    
  2. Save all forms from the AudioExtractor64.exe file to files with the LFM extension:
      DfmExtractor.exe -i AudioExtractor64.exe -a -e lfm
    Result:
    File saved: CustomizeFrm.lfm
    File saved: FormAbout.lfm
    File saved: FormCmdLine.lfm
    File saved: FormErrors.lfm
    File saved: FormFileInfo.lfm
    File saved: FormListFileEdit.lfm
    File saved: FormMain.lfm
    File saved: FormOptions.lfm
    File saved: FormProgress.lfm
    File saved: FormToolsInfo.lfm
    
  3. Save form FormMain from the AudioExtractor64.exe file to main form.dfm file:
      DfmExtractor.exe -i AudioExtractor64.exe -n FormMain -o "main form.dfm"
    Result:
    The form with name/class "FormMain" has been saved to file: main form.dfm
  4. Save form with index 4 from the AudioExtractor64.exe file to a DFM file:
      DfmExtractor.exe -i AudioExtractor64.exe -idx 4
    Result:
    The form with index 4 has been saved to file: FormFileInfo.dfm

Tech Info

If you want to compile the program yourself, here you will find source files and compilation instructions: https://github.com/jackdp/DfmExtractor.

Changelog

Version 1.1 (2018.02.28)
  • Project ported from Delphi to Lazarus/CodeTyphon.
  • The size of the executable file has been reduced twice.
  • Internal enhancements.
Version 1.0 (2018.01.11)
Initial release.