Software

Bugtracker | Bugreports & featurerequests via mail

Units and classes for Free Pascal/Lazarus/LCL

The units and classes you find here are free in the meaning of the four freedoms of free software.
Free Pascal/Lazarus/LCL units and classes are in active development (whenever I add new functions or do some bugfixing, it'll be published here). I'll try to add new functions platform independent, but I'll not test on Windows nor care for it. My focus lays on Lazarus@Linux.

TIniClass

Description: Inherits TMemIniFile and adds a pathfunction (save location for the inifile) and also encapsulates the write&read-functions into an overload-concept.
Example for using in Apptemplate.
Lazarus/LCL
IDE/Compiler Lazarus 2.2.4, fpc 3.2.2
Language Free Pascal
OS platform independent (tested on Linux)
Version 3.0.3.38
Download Lazarus Version (7z-Format, 2.8KiByte)

TLanguage

Description: Class for multi-language-support in applications (requires VerInfo).
Code-example additional to the documentation in "TLanguage_Class.pas" also in Apptemplate
IDE/Compiler Lazarus 2.2.4, fpc 3.2.2
Language Free Pascal
OS platform independent (tested on Linux)
Version 1.8.0.40
Download Lazarus Version (7z-Format, 2.8KiByte)

VerInfo

Documentation: in header
Description: Class, to extract version-informations from the program-file:
  • ProductVersion
  • FileVersion
  • ProductName
  • Comments
  • CompanyName
  • FileDescription
  • InternalName
  • LegalCopyright
  • LegalTrademarks
  • OriginalFilename
The class VersionInfo_Class was implemented with friendly approval and the additions I made with my VerInfo-Unit was published also there.
IDE/Compiler Lazarus 2.2.4, fpc 3.2.2
Language Free Pascal
OS platform independent (tested on Linux)
Version 0.9.0.18
Download Lazarus Version (7z-Format, 3.7KiByte)

Apptemplate

Bild der Apptemplate-GUI

Description

Template I personally use for programs. Includes basic implementation of programmoptions (TOptions), the implementation of TIniClass, TLanguage, SWF and VerInfo. This serves as an example for the listed classes and functions.

Features

  • Multi-language-support
  • Open source
  • You save alot of time reading the featurelist
  • Ready to ship as early-access-game for 9 year olds

Source

LanguageFree Pascal
FrameworkLCL
Widgetsetlike Lazarus
IDE/CompilerLazarus 2.2.4, fpc 3.2.2

Download

BranchVersionDownloads
Release/stable0.5.11.27 Source (163KiByte)

Buuugs!

Main-window with bugs, featurerequests and used units of Buuugs! Bug-window with bug's details of Buuugs! More screenshots

Description

Standalone, portable Bugtracker for Linux and Windows able to manage featurerequests and versions. Runs without lokal webserver (or something like that).

Features

  • Languagefilesupport
  • Open source
  • Manages bugs, units, classes, GUIs, versions and featurerequests
  • Basic RTF-support for bugdescriptions and bugsolutions

Source

LanguageFree Pascal
FrameworkLCL
WidgetsetGTK2
IDE/CompilerLazarus 2.2.4, fpc 3.2.2

Download

BranchVersionDownloadsStatus
Release/stable1.6.0.191 Source (270KiByte)
Binary (Linux) (2.2MiByte)
Binary (Windows) (1.4MiByte)
Nightly/development2.0.0.242 Source (315KiByte)
Binary (Linux) (2.2MiByte)
Binary (Windows) (1.4MiByte)
Tasks done: 15 testing: 14 pending: 9
Stadium: alpha
overall done: 87.7 %

Changelog:

1.6.0:
  • Added: Performance (Fill() & HideFeatures() 5 times faster, GetGroupNode() 2 times)
  • Added: Ability to use individual versions (occured/fixed) of bugs which are linked to multiple programs
  • Added: Favorite programs (they'll get their own button next to Programs_ComboBox for faster selecting)
  • Added: Autoclear of Versionfield in Autochangelogform on ComboBoxChange
  • Added: Commandlineparameters: -help and -progid
  • Added: Option: Do not load unnecessary bugs and featurerequests
  • Added: Pseudomainform (prevents childform-minimizing on Mainform-minimizing)
  • Added: Copy featurerequests
  • Migrated: To Lazarus 2.2
  • Added: Last-update-date for bugs
  • Removed: sqlite3.dll (you'll need to get an up-to-date precompiled file yourself now)
  • Updated: Specialfunctions 0.2.22.46
  • Updated: Versionfunctions_unit 0.7.4.12
  • Updated: Versioninfo_class 0.1.1.2
  • Updated: TLanguage_Class 1.7.6.35
  • Updated: TLanguage_BaseUnit 0.10.0.31
  • Updated: TXWindowList_class 0.3.1.4
  • Updated: fpc 3.2.2.0
  • Updated: LCL 2.2.0.0
  • Updated: TIntegerList_class 0.1.1.2
  • Fixed: ALL_LIN_106 Zombies!
  • Fixed: B_108 Last (to a unit linked) bug doesn't appear in linked programs
  • Fixed: B_109 Featuresort not working, if hidden features are ontop
  • Fixed: B_110 TRichMemo and the disapperaring of Curly Braces
  • Fixed: B_117 SIGSEGV on DeleteLink_Button + no selection
  • Fixed: B_130 Don't expand no target featurerequests option gets ignored sometimes
  • Fixed: TIL_134 Range check error/access violation in TIntegerList.GetItem()
  • Fixed: B_136 Moved feature causes access violation [only if build with DEBUG_TIMECOUNTER]
  • Fixed: B_137 Moved/unlinked features and unitclass still visible (also: unfinished B_86-fix)
  • Fixed: B_139 TFeature.DateImplemented-autodate fires to often
  • Time spent: 64.26h

Linproman - Linux Process Manager

Linproman's main window showing processes in a treeview Linproman's shiny systeminfos showing a summary of cpu, ram and I/O-use More screenshots

Description

A process manager for Linux desktop environments (GTK2).

Features

  • Languagefilesupport
  • Open source
  • Shows running processes and details (Memory usage, number of threads, state and more)
  • Easy kill, pause, resume, select CPU-affinity and change nice (also I/O priority) of processes
  • Shows usage of CPU, memory, HDD, and networking plus details of battery and GPU with graphs and numbers
  • Usage of CPU, RAM and SWAP, plus IO-activity as trayicon
  • Eventsystem to run scripts on different, combineable process- and systemevents (startup, running, dying, CPU/RAM/SWAP/network/input-output-utilization)
Documentation about Linproman's taskfile-format / eventsystem to run scripts

Supported Kernels

In theory (see tindexcache_class.pas for details) Linproman is compatible to a wide spectrum of Kernelversions, but due limit resources I will only test the ones installed on my computers (usally the latest LTS-versions).
Main sequencePast main sequenceDefinely not
Program is developed on these. Program was working on these in the past, but who knows if it still does? Several battlestations were destroyed during testing, so save your time and don't try again.
6.0
5.15 (LTS)
5.4 (LTS), 5.6, 5.10 (LTS), 5.19
4.19 (LTS), 4.14 (LTS), 4.9 (LTS), 4.8, 4.4 (LTS), 4.2
3.19, 3.16
4.13
3.13
2.6

Source

LanguageFree Pascal
FrameworkLCL
WidgetsetGTK2
IDE/CompilerLazarus 2.2.4, fpc 3.2.2

Download

BranchVersionDownloadsStatus
Release/stable1.3.3.418 Source (243KiByte)
Binary GTK2 (1.8MiByte)
Binary QT5 ([an error occurred while processing this directive]iByte)
Nightly/development1.4.0.441 Source (250KiByte)
Binary GTK2 (1.8MiByte)
Binary QT5 (1.8MiByte)
Tasks done: 6 testing: 7 pending: 0
Stadium: beta
overall done: 96.5 %

Changelog:

1.3.3
  • Migrated: To Lazarus 2.2.4
  • Fixed: L_181 Treeview freaks on xth mouse button
  • Fixed: L_183 Invalid display of used GPU-mem in Shiny's progressbars (also: Range check error: GPUS2GUI)
  • Fixed: L_184 Status "Not charging" gets interpreted as "discharging"
  • Fixed: L_185 EIntOverflow if SWAP=0
  • Fixed: L_188 /sys/class/drm/card[id]/device/product_name can be empty
  • Fixed: L_189 TSystem.UpdateGPUs() does unnecessary stuff
  • Fixed: L_190 /sys/class/drm/card[id]/device/pp_dpm_mclk can be upside down
  • Fixed: L_191 Windows showing on wrong positions
  • Time spent: 8.03h
1.3.2
  • Rewrote: TIntegerlist_Class
  • Updated: TLanguageBase_class 0.14.0.36
  • Updated: TLanguage_Class 1.8.0.40
  • Updated: Versionfunctions_unit 0.9.0.18
  • Updated: TIntegerList_class 1.0.0.4
  • Fixed: TIL_145 Add(List) is totally disfunctional
  • Fixed: TIL_134a GetItem() returns unset result on invalid index
  • Fixed: TLanguageBase_class_178 TLanguage throws exception on non-existing language-file, leading to application-crash
  • Time spent: 5.19h
1.3.1
  • Migrated: To Lazarus 2.2.2
  • Updated: iniClass 3.0.3.38
  • Updated: TLanguageBase_class 0.13.0.35
  • Updated: TLanguage_Class 1.7.10.39
  • Updated: Versionfunctions_unit 0.8.0.17
  • Updated: Specialfunctions 0.3.0.149
  • Updated: StringGridFunctions_Unit 0.2.0.3
  • Updated: LCL 2.2.2.0
  • Fixed: L_149 Sometimes the copy PID function is broken
  • Fixed: iniClass_160 $XDG_CONFIG_HOME should be used
  • Fixed: L_162 $XDG_CONFIG_HOME should be used for userdata
  • Fixed: LAZ_222_170 Cutoff of TSpeedButton-captions due ampersand
  • Fixed: L_173 Can't open tasksform_gui with Lazarus >= 2.2 due TVirtualStringTree » TLazVirtualStringTree renaming
  • Fixed: L_175 Illogical increase of "minor" in diskstats can bypass L_78-fix
  • Time spent: 7.23h
1.3
  • Added: Select NIC and Drive for Shiny»I/O
  • Added: Update only active tab for Shiny Systeminfos
  • Migrated: To Lazarus 2.2
  • Reworked: Trayicon-popupmenu (for newer AppIndicator-libs that can do less)
  • Added: Disk & nic details tab for Shiny
  • Added: Readout of amdgpu.gpu_busy_percent
  • Added: Hints for GPU»Memory graphs
  • Updated: TLanguage_BaseUnit 0.10.0.31
  • Updated: TLanguage_Class 1.7.6.35
  • Updated: Versionfunctions_unit 0.7.4.12
  • Updated: Specialfunctions 0.2.23.47
  • Updated: TXWindowList_class 0.3.1.4
  • Updated: TIntegerList_class 0.1.2.3
  • Updated: LCL 2.2.0.0
  • Fixed: L_103 Access violation in LinkConditions2Processes
  • Fixed: L_119 TBattery is mistakenly using const CONST_MODEL_NAME
  • Fixed: L_124 Shiny systeminfos»I/O»Total send bytes label partially unreadable
  • Fixed: L_125 Mainform starts outside screen and also with no width
  • Fixed: L_127 Range check error in TSystemform.ResizeCPUCharts();
  • Fixed: L_128 TMainform.FreeAndNilSystemforms_List(); fails if more than 1 Shiny Systemforms are open
  • Fixed: Specialfunctions_129 Graphs size should decrease on window-shrink
  • Fixed: L_131 TSystemform and Processform are kind of empty until first update
  • Fixed: L_132 UpdateInterval won't be set on startup
  • Fixed: L_133 Crash on nvgpu-lib-update
  • Fixed: TIL_134 Range check error/access violation in TIntegerList.GetItem()
  • Fixed: L_135 Battery-status "unkown" gets interpreted as "discharging"
  • Fixed: Specialfunctions_142 StringListLoadFromFileLBL(): Possible free of non-existing object
  • Fixed: L_143 Treeview never does EndUpdate() on exception
  • Fixed: L_144 TBaseClass.Read() causes "List index (-1) out of bounds" exception
  • Fixed: TIL_145 RangeCheckError in Add()
  • Time spent: 60.96h

QEZZ (Lines of code counter)

Description

Commandlinetool for counting lines of code, comments and mixed lines of all files in a directory.

Features

  • Open source
  • Just pass a directory and get the lines of code (and stuff) of all the files found (summary and for each file individually)
  • Already supports C/C++/C#, Java, Delphi/Pascal and VB/VBA/VB .net
  • Add more languages by simply editing a textfile
  • Collect+count of kernel-5.19's *.c+*.h files took: 32 seconds on an old Ryzen 1 (55.334 files 30.393.126 lines total)

Source

LanguageFree Pascal
IDE/CompilerLazarus 2.2.4, fpc 3.2.2

Download

BranchVersionDownloadsStatus
Release/stable0.1.0.1 Source ( 22KiByte)
Binary (Linux) (106KiByte)
Binary (Windows) (314KiByte)
Nightly/development0.1.0.1 Source ( 22KiByte)
Binary (Linux) (106KiByte)
Tasks done: 2 testing: 0 pending: 0
Stadium: stable/RC
overall done: 100 %

Changelog:

0.1
  • Added: basic implementation
  • Updated: Versionfunctions_unit 0.8.0.17
  • Time spent: 6.37h