-
Content Count
655 -
Joined
-
Last visited
-
Days Won
12
Bill Meyer last won the day on October 26 2022
Bill Meyer had the most liked content!
Community Reputation
337 ExcellentTechnical Information
-
Delphi-Version
Delphi 12 Athens
Recent Profile Visitors
The recent visitors block is disabled and is not being shown to other users.
-
This morning, a colleague offered this: https://devblogs.microsoft.com/oldnewthing/20100203-00/?p=15083 It is likely to be the best explanation to be found.
-
I would have thought that it should be easy to find documentation on the maximum Windows PATH length. I have found many articles, none of them comprehensive. The only specification which seems to be straightforward is the MAX_PATH = 260 limit on the file path. What I am looking for, however, is whether the full PATH variable has a specified limit.
-
What are the performance profilers for Delphi 12?
Bill Meyer replied to dmitrybv's topic in General Help
The word from SmartBear is that AQTime is a legacy product. I would not anticipate new releases. -
A gem from the past (Goto)
Bill Meyer replied to Mike Torrettinni's topic in Algorithms, Data Structures and Class Design
There is a classic, if dusty, article from Donald Knuth: https://pic.plover.com/knuth-GOTO.pdf -
Does anyone have good routines for parsing ISO8601 date(time) strings
Bill Meyer replied to Tommi Prami's topic in RTL and Delphi Object Pascal
Disappointing, as other Tryxxx routines avoid raising exceptions. -
Issue #26 reported. Issue #27 for documentation.
-
Download the packaged zip for your Delphi version from the latest release, or build from source. Unzip the folder and run the included install.bat script. Done! Well, no. Then I run Delphi 11.3, and get a dialog wanting me to set up external resources. I did start by installing the JRE. The dialog says that, by default, JAVA_HOME is used. But Select override is focused, and wants me to point where? I do not find a JAVA_HOME environment variable, and one might hope that the startup code would solve that for me. I am guessing this wants the location of javaw.exe? Or java.exe? I find no enlightenment on this in the readme on github, either. I am not a Java user, and could wish for a more useful explanation in the dialog. Since my guess proved not to solve the problem, I emphasize the wish for better guidance.
-
Depending on the corporate view of dev tools as investment.
-
A better way to share global data structures than as global variables?
Bill Meyer replied to DavidJr.'s topic in Algorithms, Data Structures and Class Design
Before anyone gets too upset, my perspective is based on dealing with legacy code you have come into. There are numerous advantages to encapsulating global variables. Not only do you establish a measure of access control, but if you expose them as properties with getters and setters, you can easily set breakpoints to discover points of interaction. Equally, you could introduce logging. But even without those benefits, you will be altering the calling code to reference MyGlobals.SomeState, rather than simply SomeState. Once you have accomplished that tedious task, it is also a simple matter to search for all such references by searching on MyGlobals. Other benefits will become apparent as you work through things. -
Components may be a barrier to doing the complete transition in one step. In particular, there is no release version of DevExpress which supports both D2007 and the latest compilers. If DevExpress is an issue, then it may be best to update to the last version which supports D2007 and do the conversion of grids and other components which were removed later. The recent versions do not offer dxGrid, for example, but require changing to the cxGrid, which may be a good deal of work, depending mainly on event handlers used, as the architecture changed between dxGrid and cxGrid.
-
I am curious. How many source files in the project?
-
Feature req: Compiler unit dependency graph / log with warnings about circularity
Bill Meyer replied to Lars Fosdal's topic in Delphi IDE and APIs
In tackling large legacy projects, I have seen many cycle chains which exceed 100 units. The graphs are pretty, but when the magnitude of the problems is so great, the graphical interface seems to me to be less than effective. I have dealt with cycle reduction painfully, sometimes getting lucky, and other times finding obvious failures to separate concerns. But in many cases, I have been defeated by the challenge of finding a starting point. And nice as it is to clean up some modules, when the result doesn't alter the cycle count, it becomes hard to maintain your enthusiasm. -
Feature req: Compiler unit dependency graph / log with warnings about circularity
Bill Meyer replied to Lars Fosdal's topic in Delphi IDE and APIs
Absolutely! But as you point out, it is also a serious task to refactor such things. -
Feature req: Compiler unit dependency graph / log with warnings about circularity
Bill Meyer replied to Lars Fosdal's topic in Delphi IDE and APIs
Let me make a rash assertion. If you have a large project in which some modules are large (>15K lines) and contain many (>200) uses references, then you are referencing some of them simply to gain access to relatively simple types. Move those to other modules with no code. Modules of types and consts can be global with no negative impact. But when those declarations are no longer found in massive units, you will begin to see your uses clauses shrink. -
Feature req: Compiler unit dependency graph / log with warnings about circularity
Bill Meyer replied to Lars Fosdal's topic in Delphi IDE and APIs
One of the issues is that in a large project with many circular references, that log will show modules appearing again and again. In one large project, I found over 20,000 such references, and a cold build was up to eight minutes. Reducing the circular references by about 25% brought the build time down to about a minute. And the time was stable over several builds in a session, where with 20K+ it had been increasing on successive builds. MMX does produce a report of circularity chains. It is large, and not friendly to humans, but it is easy to parse, and I built a simple tool which delivers in a grid the counts for each of the modules with circular references, and which can compare two reports, which is useful as you continue to work on the project.