The Wiert Corner – irregular stream of stuff

Jeroen W. Pluimers on .NET, C#, Delphi, databases, and personal interests

  • My badges

  • Twitter Updates

  • My Flickr Stream

  • Pages

  • All categories

  • Enter your email address to subscribe to this blog and receive notifications of new posts by email.

    Join 1,862 other subscribers

Archive for the ‘Delphi’ Category

Rewritten version (free for non-commercial; small price for commercial use) GitHub – pleriche/FastMM5: FastMM is a fast replacement memory manager for Embarcadero Delphi applications that scales well across multiple threads and CPU cores, is not prone to memory fragmentation, and supports shared memory without the use of external .DLL files.

Posted by jpluimers on 2020/05/05

It has been mentioned a few times already, but for my link archive: [WayBack] GitHub – pleriche/FastMM5: FastMM is a fast replacement memory manager for Embarcadero Delphi applications that scales well across multiple threads and CPU cores, is not prone to memory fragmentation, and supports shared memory without the use of external .DLL files.

From the [WayBack] README.md:

Version 5 is a complete rewrite of FastMM. It is designed from the ground up to simultaneously keep the strengths and address the shortcomings of version 4.992:

  • Multithreaded scaling across multiple CPU cores is massively improved, without memory usage blowout. It can be configured to scale close to linearly for any number of CPU cores.
  • In the Fastcode memory manager benchmark tool FastMM 5 scores 15% higher than FastMM 4.992 on the single threaded benchmarks, and 30% higher on the multithreaded benchmarks. (I7-8700K CPU, EnableMMX and AssumeMultithreaded options enabled.)
  • It is fully configurable runtime. There is no need to change conditional defines and recompile to change options. (It is however backward compatible with many of the version 4 conditional defines.)
  • Debug mode uses the same debug support library as version 4 (FastMM_FullDebugMode.dll) by default, but custom stack trace routines are also supported. Call FastMM_EnterDebugMode to switch to debug mode (“FullDebugMode”) and call FastMM_ExitDebugMode to return to performance mode. Calls may be nested, in which case debug mode will be exited after the last FastMM_ExitDebugMode call.
  • Supports 8, 16, 32 or 64 byte alignment of all blocks. Call FastMM_EnterMinimumAddressAlignment to request a minimum block alignment, and FastMM_ExitMinimumAddressAlignment to rescind a prior request. Calls may be nested, in which case the coarsest alignment request will be in effect.
  • All event notifications (errors, memory leak messages, etc.) may be routed to the debugger (via OutputDebugString), a log file, the screen or any combination of the three. Messages are built using templates containing mail-merge tokens. Templates may be changed runtime to facilitate different layouts and/or translation into any language. Templates fully support Unicode, and the log file may be configured to be written in UTF-8 or UTF-16 format, with or without a BOM.
  • It may be configured runtime to favour speed, memory usage efficiency or a blend of the two via the FastMM_SetOptimizationStrategy call.

Read the rest of this entry »

Posted in Delphi, Development, FastMM, Software Development | 6 Comments »

GitHub – pyscripter/pyscripter: Pyscripter is a feature-rich but lightweight Python IDE

Posted by jpluimers on 2020/04/28

Just in case I ever need to develop Python scripts on Windows (nowadays it’s mostly on Linux/BSD based systems):[WayBack] GitHub – pyscripter/pyscripter: Pyscripter is a feature-rich but lightweight Python IDE.

If you like that, you can (also) help with this project: [WayBack] PyScripter localization Translate PyScripter into your own language.

Via: [WayBack] The PyScripter IDE, which is written in Delphi is looking for translators. We have set up a translation project on transifex.com and would be happy if s… – Lübbe Onken – Google+

–jeroen

Posted in Delphi, Development, Python, Scripting, Software Development | Leave a Comment »

Bipartite matching algorithm in Delphi… John Kouraklis – Google+

Posted by jpluimers on 2020/04/23

In the thread is an actual implementation: [WayBack] I am looking for an implementation of Bipartite matching algorithm in Delphi or Pascal. Does anyone have a suggestion? Thanks – John Kouraklis – Google+

As I probably need it one day (:

–jeroen

Posted in Algorithms, Delphi, Development, Software Development | Leave a Comment »

Is there no shortcut in the IDE for Quick Edit?

Posted by jpluimers on 2020/04/21

I hope this feature gets added: [WayBack] Is there no shortcut in the IDE for Quick Edit? – Reinier Sterkenburg – Google+.

The thread evolved into a few posts about failing keyboard handling (including Shift-F10) which has been failing for a long time and known to the development team for almost that time.

Hopefully things like that get fixed one day as well.

–jeroen

Posted in Delphi, Development, Software Development | Leave a Comment »

GitHub – JensBorrisholt/GoogleSpeak: This repository demonstrates how to Use Google for implementing Text to Speech. You’ll find both a Delphi version and a C# version

Posted by jpluimers on 2020/04/15

For my link archive, as I will likely need this one day: [WayBackGitHub – JensBorrisholt/GoogleSpeak: This repository demonstrates how to Use Google for implementing Text to Speech. You’ll find both a Delphi version and a C# version

–jeroen

Posted in .NET, C#, Delphi, Development, Software Development | Leave a Comment »

Bug Finder, A Real Win32 Extensible Passive Debugger – CodeProject

Posted by jpluimers on 2020/04/09

On my research list is [WayBack] GitHub – DareDevil73/bug-finder: Windows passive debugger.  with an article at [WayBack] Bug Finder, A Real Win32 Extensible Passive Debugger – CodeProject:

The Bug Finder is a real Win32 debugger, entirely written in Borland Delphi, which analyzes your application execution flow, so you can:

  1. Catch exceptions on the main executable, external DLLs, primary and working threads.
  2. Produce a detailed stack trace about each exception.
  3. Place a symbolic breakpoint to get, in place of a program debug break, a full stack trace log message (dynamic tracing).
  4. Produce detailed and rotative log files for a batch application behaviour inspection.
  5. Capture output of OutputDebugString API to log file (to provide extra debugging information by yourself directly into your code).
  6. Trace Process, Threads and DLLs activities.

I found documentation at [WayBackDareDevil73 … docs, but the binary dependencies and installer are on SourceForge (where the project was originally located) and CodeProject which cannot be archived so I will look into that when it pops to the top of my research list.

–jeroen

via: [WayBack] Bug Finder by Antonio Petricca (in 2013?) Have any of you tried it? – Lars Fosdal – Google+

Posted in Delphi, Development, Software Development, Windows Development | Leave a Comment »

Delphi: OldCreateOrder in inherited TDataModule might suddenly become True

Posted by jpluimers on 2020/04/08

Interesting observation that might have been in Delphi for more than a decade: [WayBack] Found something strange in Delphi again which I’ve been trying to fix for days until I discovered it’s probably a Delphi issue… – Stefaan Lesage – Google+.

I think the summary is that if you have inherited TDataModule instances, then the descendant will always have OldCreateOrder set to True.

It is reported as RAD StudioRSP-20016 TDatamodule.OldCreateOrder always resets to true on descendants, but it is present in at least Delphi 7, so likely is in the old QC database:

Uwe Raabe:
I can track this error down to Delphi 7 (really)! Cannot check Delphi 6, but Delphi 5 just doesn’t have that property.
The reason lies in TDataModule.ReadState where

FOldCreateOrder := not ModuleIsCPP;
is set.

These might be related:

–jeroen

Posted in Delphi, Development, Software Development | Leave a Comment »

Debugging Delphi applications inside a Windows Docker container – yeiei.net

Posted by jpluimers on 2020/04/07

A docker container that pulls the PA server for Windows and steps how to attach to it and a video showing how to do this: [WayBackDebugging Delphi applications inside a Windows Docker container – yeiei.net

Cool if you do Delphi server side stuff.

Via: [WayBack] Hi delphi friends! If you are planning to use Windows Docker Containers and Delphi, you’ll need to read this: https://yeiei.net/en/debugging-delphi-appl… – Juan Antonio Ruzafa – Google+

–jeroen

Read the rest of this entry »

Posted in Delphi, Development, Software Development | Leave a Comment »

In SQL Server use `SET NOCOUNT ON` so tools taking the last modified record count won’t be confused by your trigger.

Posted by jpluimers on 2020/04/07

Interesting read: Time eating bug of the day… – Fabian S. Biehn – Google+.

TL;DR: in SQL Server use SET NOCOUNT ON so tools taking the last modified record count won’t be confused by your trigger.

Source: [WayBackTime eating bug of the day: I used a TADOQuery.ExecSQL (on Berlin) for an Up…

Related: [WayBack] sql server – ADODB affected rows return trigger’s affected rows – Stack Overflow

–jeroen

Posted in Database Development, Delphi, Development, Office VBA, Scripting, Software Development, SQL, SQL Server | Leave a Comment »

Cool Delphi IDE idea: when moving a project, not just adjust absolute file paths but also search paths

Posted by jpluimers on 2020/04/02

The IDE already owns and modifies your .dproj and .dpr files (of which many users complain, but I think it is a good thing), so this is a great suggestion: [WayBack] Possibly slightly obvious but nonetheless a minor little tip to bear in mind when moving a project (.dproj/.dpr) by saving it to a new location (which I… – Walter Prins – Google+

Possibly slightly obvious but nonetheless a minor little tip to bear in mind when moving a project (.dproj/.dpr) by saving it to a new location (which I encountered this morning):

While the IDE will automatically adjust form/pas file paths for files included in the project in the .dpr for you, what it will not however do is also adjust the project “Search path” in a similar fashion, even though moving the project is guaranteed to break the project if it has project relative search paths and hence they would require adjusting.

That is to say, if you have project relative search folders specified in the “Search path” (and indeed the output folders), you will need to manually go and edit these paths in the project by hand when you change the project’s location.

(I’d argue that the IDE ought to update relative paths in the project options automatically given that it does so already for the .dpr; it would be the intuitive and graceful thing to do.)

–jeroen

Posted in Delphi, Development, Software Development | Leave a Comment »