All Projects → jackdp → DfmExtractor

jackdp / DfmExtractor

Licence: other
Small command line utility which allows you to extract DFM, LFM and FRM forms from executable files compiled by Delphi, Lazarus and CodeTyphon.

Programming Languages

pascal
1382 projects
Batchfile
5799 projects

Projects that are alternatives of or similar to DfmExtractor

setup-lazarus
Set up your GitHub Actions workflow with a specific version of Lazarus
Stars: ✭ 29 (+31.82%)
Mutual labels:  lazarus, freepascal, free-pascal
TLightFileStream
Implements a lightweight, high-performance, non-allocating advanced-record-based wrapper around the SysUtils file handling routines as an alternative to Classes.TFileStream.
Stars: ✭ 21 (-4.55%)
Mutual labels:  lazarus, freepascal, free-pascal
WebView4Delphi
WebView4Delphi is an open source project created by Salvador Díaz Fau to embed Chromium-based browsers in applications made with Delphi or Lazarus/FPC for Windows.
Stars: ✭ 157 (+613.64%)
Mutual labels:  lazarus, freepascal
bcrypt
BCrypt is a password hashing function
Stars: ✭ 138 (+527.27%)
Mutual labels:  lazarus, freepascal
Axes-Armour-Ale
A fantasy, ASCII dungeon crawler for Windows, Linux & OSX
Stars: ✭ 22 (+0%)
Mutual labels:  lazarus, freepascal
torokernel
This repository contains the source code of the unikernel toro
Stars: ✭ 107 (+386.36%)
Mutual labels:  lazarus, freepascal
fano
Pascal web application framework
Stars: ✭ 90 (+309.09%)
Mutual labels:  freepascal, free-pascal
ShellRemoteBot
Shell remote control from telegram (SSH/terminal emulator)
Stars: ✭ 28 (+27.27%)
Mutual labels:  lazarus, freepascal
fp-telegram
Wrapper classes library for telegram bots API (FreePascal)
Stars: ✭ 59 (+168.18%)
Mutual labels:  lazarus, freepascal
QQWry
Delphi interface for QQWry IP database
Stars: ✭ 14 (-36.36%)
Mutual labels:  lazarus, freepascal
deskew
Deskew is a command line tool for deskewing scanned text documents. It uses Hough transform to detect "text lines" in the image. As an output, you get an image rotated so that the lines are horizontal.
Stars: ✭ 127 (+477.27%)
Mutual labels:  lazarus, free-pascal
VALIS
Vote ALlocating Immune System, an immune-inspired classification algorithm
Stars: ✭ 21 (-4.55%)
Mutual labels:  lazarus, freepascal
brookframework
Microframework which helps to develop web Pascal applications.
Stars: ✭ 161 (+631.82%)
Mutual labels:  lazarus, freepascal
sizectrl
TSizeCtrl v8.2
Stars: ✭ 16 (-27.27%)
Mutual labels:  lazarus, freepascal
AutoScreenshot
Automatic screenshot maker for Windows
Stars: ✭ 49 (+122.73%)
Mutual labels:  lazarus, free-pascal
Bauglir-WebSocket-2
Copy of https://code.google.com/archive/p/bauglir-websocket/
Stars: ✭ 15 (-31.82%)
Mutual labels:  lazarus, freepascal
Ascension
A metaheuristic optimization framework
Stars: ✭ 24 (+9.09%)
Mutual labels:  lazarus, freepascal
PospoliteView
Pospolite View aims to be a simple HTML viewer engine fully made in Free Pascal.
Stars: ✭ 29 (+31.82%)
Mutual labels:  lazarus, freepascal
Blackeye-for-Windows
This is a Phishing tool. Phishing is a type of hacking also called credential harvesting. It creates fake websites for victims to login which saves their login info which includes IP, User-Agent, Username and Password to a file in the computer running Blackeye. This tool has been there for Linux and even Android via Termux. I converted it to Win…
Stars: ✭ 38 (+72.73%)
Mutual labels:  commandline, command-line-app
brook-telegram
Telegram plugin for brookframework
Stars: ✭ 23 (+4.55%)
Mutual labels:  lazarus, freepascal

DfmExtractor

Overview

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.

Download

Source: https://github.com/jackdp/DfmExtractor

Binary (Windows 32-bit): http://www.pazera-software.com/products/dfm-extractor/

Usage

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

-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

-h, --help
Show 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

Compilation

Tested on CodeTyphon 6.40 with FPC 3.1.1 and Laraus 1.9.0 (trunk version) with FPC 3.1.1

To compile, you need:

  1. CodeTyphon or Lazarus.
  2. JPL.CmdLineParser unit.
  3. A several Pascal units from my library JPLib.
  4. JclPeImage unit and it's dependencies from the JEDI Code Library. (All necessary JCL unit are in the jcl.7z archive in the src/jcl directory.)

How to build:

  1. Open src\DfmExtractor.ctpr file with CodeTyphon or src\DfmExtractor.lpi with Lazarus.
  2. Set build mode.
    Select menu Project -> Project Options... A new window will appear. In the tree view (on the left), select Compiler Options. At the top of this window you can select the build mode from the dropdown list. Choose: Release Win32 or Debug Win32.
  3. Build project (menu Run->Build).

Changelog / Releases

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.

Note

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.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].