-
Content Count
3013 -
Joined
-
Last visited
-
Days Won
108
Everything posted by dummzeuch
-
Simplified Debug Visualizers for all my TNullableTypes
dummzeuch replied to dummzeuch's topic in Tips / Blogs / Tutorials / Videos
The same would work with explicitly adding the method call to the watch window and allowing side effects. But the point is to show the values in all debugger windows and hints not just in the watch window. You just gave me an additional idea though: The display value could be cached in a string field which gets updated when the record's value changes, and the visualizer would then just read the field. This would be much faster in the visualizer as no code in the debugged program needs to be executed. But it could significantly slow down the executable in debug mode, depending on how often the value changes. -
Closing the main form of an application terminates that application and thereby also frees that form and all other forms. The main form of an application is defined as the first form it creates and that cannot be changed easily. So, creating a login form as the first form, has the side effect of terminating the application as soon as it gets closed. which is usually not desirable. Therefore such a login form should never be the first form an application creates. (Unless something has been changed over the years and my experience is outdated (again).)
-
Delphi 12: Installing via GetIt Corrupts the DPK of AsyncPro, VirtualTree, and SynEdit
dummzeuch replied to twe's topic in Delphi IDE and APIs
I have seen that happen even without using GetIt. I think it is related to converting the files from LF to CR/LF style line ends. But I never actualy verified this, so I might be wrong. -
No, at least if I remember correctly that the generated format was compatible to jcldebug. But thanks for the link anyway. I have wanted to look into synopse logging since I read about it in that blog post ... OMG: 2011? > 10 years ago!
-
You should get the line number of the original function if you pass 1 as the parameter to LineByLevel instead of the default 0.
-
Just keep in mind that calling GetLocationInfo is rather costly. It's not meant to be called all over the place. If I remember correctly somebody claimed to have improved the jcldebug file format to make it much smaller and lookups faster. Unfortunately I don't remember who it was and where I read about it. It's quite possible that he donated the code to the jcl in the mean time
-
It does indeed. It should also be possible to write a function that reads its own return address from the stack and then returns this value as the result. This then could be passed to GetLocationInfo. I'm not sure how to implement this, but it shouldn't be rocket science. Edit: There is System.ReturnAddress, introduced with Delphi XE2, which gives you just that, so function GetCurrentLineNumber: Integer; var ModInfo: TJclLocationInfo; begin ModInfo := GetLocationInfo(ReturnAddress); Result := ModInfo.LineNumber; end; Should do the trick (untested) Edit: Just tried it. It works, at least in Delphi 10.2. Edit: JclDebug already contains such a function called LineByLevel.
-
No idea. I currently don't find the time to do anything on it.
-
I know that GExperts can cause this. Unfortunately I so far was unable to find the actual problem. It seems to be connected with using the formatter very frequently.
-
dxgettext can translate ressource strings. It does so by hooking several RTL functions, one of them being LoadResString. Last time I looked it only worked for 32 bit Delphi, unless somebody has ported it to 64 bit by now.
-
challenge Offical launch of the 1 Billion Row Challenge in Object Pascal
dummzeuch replied to Gustavo 'Gus' Carreno's topic in Tips / Blogs / Tutorials / Videos
I can't be bothered, sorry. I was only "thinking aloud". Maybe I shouldn't have written it as a comment, though.- 69 replies
-
- object-pascal
- free-pascal
-
(and 1 more)
Tagged with:
-
challenge Offical launch of the 1 Billion Row Challenge in Object Pascal
dummzeuch replied to Gustavo 'Gus' Carreno's topic in Tips / Blogs / Tutorials / Videos
I wonder how much of the time depends on where the file is read from: RAM Disk, SSD, HDD and for the latter whether it's already in the cache or not. 2 (American billion) = 2.000.000.000 lines of about 15 characters makes it about 30.000.000.000 bytes, that's 30 Gig of data to read, split into lines, then split into name and value and then aggregate by name. 32 bit Delphi won't be able to handle that with Stringlist because it won't fit into memroy, I wonder whether there are any bugs in the RTL that would prevent that with a 64 bit Delphi program. But anyway: Using a StringList is probably not the most efficient way of reading the data. Plain old ReadLn would likely do the trick faster. Some kind of buffering might speed it up and maybe parsing based on a PChar pointer rather than strings. Then selecting a suitable datastructure, probably some hash based dictionary. The rest is not much of a challenge.- 69 replies
-
- object-pascal
- free-pascal
-
(and 1 more)
Tagged with:
-
There is also Delphi Custom Containers Pack. For some types of components I prefer that over frames.
-
I was just about to ask the same as @Der schöne Günther: Why did you put those two dots in front of AsString? That might confuse the watch window.
-
Delphi and "Use only memory safe languages"
dummzeuch replied to Die Holländer's topic in General Help
We already had that: It was called Delphi for dotNET. AFAIK the last Version was Delphi for dotNET 2007. Somehow it didn't catch on. -
Delphi and "Use only memory safe languages"
dummzeuch replied to Die Holländer's topic in General Help
Some parts of the Linux kernel are being converted to Rust. Also, many parts of the Linux distributions are written in Python oder even shell scripts. Some Perl can still be found there too. -
How to rearrange projects in projects group file?
dummzeuch replied to Robert Gilland's topic in Delphi IDE and APIs
Or, if you prefer using the mouse: There are Build Sooner / Build Later entries in the popup menu. -
On my computer it works exactly that way. 1200 pixels: 960 pixels: Maybe there is some configuration setting that causes this. I don't remember changing anything though.
-
It depends on how wide your browser window is. Yours is too narrow, so you get the condensed view. I get that too if I move the browser window to half of a HD monitor -> 960 pixels wide. If I make it a bit wider, I get the full path. That's called "responsive design" I think, and I usually hate it. Be we digress.
-
Please file a bug report on sourceforge.
-
That has been the case since forever when using TMemIniFile rather than TIniFile (the latter uses the ancient/deprecated WinAPI Get/SetPrivateProfileString). So if that has changed from 11.3 to 12p1, this probably means that somewhere somebody has switched from using TIniFile to TMemIniFile.
-
Hm, OK, I could have sworn it said "Update 1" in the about dialog but you are right, it says "Patch 1". So, I stand corrected.
-
I my opinion Delphi 12 + Update 1 is a little bit more stable than Delphi 11 + Update 3. But I am not using either very much due to the (IDE) annoyances when mixing HighDPI monitors and non-HighDPI monitors, so I'm not an authorative source for such a comparison.
-
TColor debug visualizer for Delphi 10.2 and 12
dummzeuch posted a topic in Tips / Blogs / Tutorials / Videos
I just extended my dzDebugVisualizer package to include a TColor debug visualizer for Delphi 10.2 and Delphi 12. With little change these will probably work for every Delphi Version that supports the neccessary ToolsApi functions, meaning >= Delphi 2010. This is completely different code than I used before, but it still shows the color name(s) and the RGB value rather than the integer value. read on in the blog post -
TColor debug visualizer for Delphi 10.2 and 12
dummzeuch replied to dummzeuch's topic in Tips / Blogs / Tutorials / Videos
I have now also added a debug visualizer for (multi-line) strings. See the blog post for details.