Brian Evans
-
Content Count
295 -
Joined
-
Last visited
-
Days Won
4
Posts posted by Brian Evans
-
-
More than just not ideal. Logging should have minimal impact which means introducing lock contention is counterproductive. The locks will change the runtime behaviour of the processes introducing coupling, uncertainly and variance. Performance issues will have admins turn off logging in production then when issues need to be investigated turning it back on means the processes behave differently frustrating attempts to reproduce those issues.
Most go with one of:
1) One log file per process + read them into a combined view as needed.
2) A logging process of some sort that other processes send log message to.
-
1 hour ago, Steve Maughan said:@Cristian Peța you found it!! When I disable the ASLR in Delphi 11.3 it also runs fine in 64 bit mode. That makes sense. MANY THANKS!
Now the question is, how do I make it work with ASLR enabled.
— Steve
It will crash if the top thirty-two bits of any pointer handled by the buggy code are not all zeroes. That just happens more often if ASLR is enabled or all the time if ASLR + the high entropy allocator is enabled.
- 1
-
The History tab the IDE editor shows them and lets you compare between the different versions. At the bottom right there are Code Design and History tabs. When the History tab is active there are Contents, Information and Differences tabs on the bottom left.
There is also an Autoreover feature that will periodically save changes to modified files (default every 10 minutes) to a _recovery directory in case the IDE crashes. IDE -> Saving and Recovering.
-
-
Editor options [X] Create backup files and File backup limit.
-
The bug is in your code - not all binary data can cleanly be put in a string directly.
The output of the hash function is in TBytes and the encode function can take TBytes as input. That string() cast you inserted between them is causing issues depending on the binary hash value.
- 3
-
With a few exceptions for debugging purposes lower integrity processes cannot mess with higher integrity processes. That includes sending input or paste operations.
The quick example for why this is not allowed would be a command window with Administrator privileges - not a good thing security wise if all other apps could paste whatever they wanted into it.
-
The Delphi ecosystem contracted over the years and a lot of third-party component developers had to increase prices or fold / exit the market. One that is still around is Developer Express (as somebody already mentioned) whose VCL components have good support and include a VCL Spreadsheet control: VCL Spreadsheet Inspired by Excel - Delphi, C++Builder (devexpress.com). The also have a VCL Layout & UI Design Control which you could add controls to for auto-layout: VCL Form Layout Control for Delphi and C++Builder Developers (devexpress.com).
They have both 30-day trials and a demo program that does an excellent job of showing what that the various controls do and how they behave.
Main page: VCL UI Components for Delphi & C++Builder | DevExpress scroll down for smaller packages with a subset of the components.
-
Which LKS-92 coordinates? There are LKS-92 XYZ (spatial rectangular co-ordinates), LKS-92 BLh (geospatial co-ordinates on rotational ellipsoid) and LKS-92 TM (Transverse Mercator projections in plane co-ordinates). One (BLh) is already in long and latitude.
Quote8.2. as geospatial co-ordinates on rotational ellipsoid, designated with LKS-92 BLh, where:
8.2.1. northern latitude is designated with B; 8.2.2. eastern longitude is designated with L;
8.2.3. geodetic (ellipsoid) height is designated with h;
8.2.4. northern latitude and eastern longitude is expressed in degrees (°), minutes (’) and seconds (");
8.2.5. height is expressed in metres
Ref: Republic of Latvia Cabinet Regulation No. 879 Adopted 15 November 2011 Regulations Regarding the Geodetic Reference System and the Topographic Map System
found at: Ministru kabineta (fao.org) (from Food and Agriculture Organization of the United Nations (FAO) website)
Note: some latter revisions but they do not appear to have been translated (This document has not been officially translated by the State Language Centre.). Main ref site:
Ģeodēziskās atskaites sistēmas un topogrāfisko karšu sistēmas noteikumi (likumi.lv)
-
Unclear what you are asking. You can't do anything "during" sleep modes as the system is asleep.
If you just want dates and times for those events read the Windows Event Log where the Kernel-Power source logs events for all of those.
-
In Windows command line Find searches for text in files.
In BASH it does look more like your find command, it would need to be run with WSL.EXE not CMD.EXE if you are using Windows Subsystem for Linux. The path probably needs to be put in double quotes in case it contains spaces and be fixed up to be what it would be looking for the Linux side.
-
Looking at the source code and the error it looks like it tries to use text mode which then fails since that mode supports a limited set of characters. It uses some internal functions to test what mode it should use based on the input string but gets it wrong with your strings.
The component does support an extended syntax where the bytes can be represented directly in the string using escape codes \ddd so you could convert the whole string to a UTF8string then build a string to input by escaping each byte value in the UTF8 string into the input string. Not as easy as it sounds due how Delphi tries to help with strings. No luck trying to get this to work either- Delphi really fights too hard and the docs do not help any.
Copied St2DBarC.pas to the project directory and modified the GoodForNumericCompaction and GoodForTextCompaction by commenting out everything but the first line's Result := False; This forces binary mode. Still making sure the correct bytes are encoded seems iffy as the barcode looks too wide after passing in just \196\140.
-
"Leak" is a bit vague - usually there would be some indication of what leaked which can help narrow down what to look at.
-
The replacement (SendInput function (winuser.h) - Win32 apps | Microsoft Learn) specifically mentions applications are permitted to inject input only into applications that are at an equal or lesser integrity level. Likely the same applies to the older API. This blocking just silently does nothing - no keys arrive.
- 2
-
It is not unheard of for others to confirm they also encounter, make comments on, and find a way to reproduce a bug. An example would be: https://quality.embarcadero.com/browse/RSP-34111 which followed this pattern and a bug that was around for several Delphi releases was fixed. For those without QC access: it was about a dangling scroll bar sometimes seen in the IDE, fixed in Delphi 11.
As for this one - looks like something is overdrawing just the color name on top of the color box + name that should be there.
-
The source of the docs quoted by Uwe: File Extensions of Files Generated by RAD Studio - RAD Studio (embarcadero.com). This topic comes up in a search of the Athens online help for dsv but not in the help for previous versions.
- 1
-
I stayed on Delphi XE Professional or a long time - until buying a license for Delphi 10.2 Enterprise about 9 years later. I had no issues getting a bump when needed and being able to re-install the aging versions of Delphi, Developer Express VCL and NexusDB Standard Edition as needed over those nine years contributed to my decision to upgrade and have active subscriptions for all three today. Not sure that would be the case if I encountered friction in installing any of them during the close to a decade I did little paid Delphi development.
-
You can also re-arrange fields to minimize the gaps added for alignment. A re-arranged second version of the record is also 8 bytes.
TBloodyTColor2 = record aColor: TColor; aVar: smallint; aVar2: smallint; end;
So why is it 12 bytes in your second version?
1. aVar takes 2 bytes.
2. Padding of 2 bytes to a 4-byte boundary since next member is 4 bytes wide
3. aColor takes 4 bytes
4. aVar2 takes 2 bytes.
5. padding of 2 bytes to make total record size a multiple of 4 (the largest member size).
As described in the documentation: Internal Data Formats - Record Types (Delphi) - RAD Studio (embarcadero.com)
-
Could be a difference in the number of rows in the result set with a larger result set not getting all fetched on open. Various options to fetch them all before processing. The default is usually 50 records at a time.
For the FireDac Monitor it looks like not everything has been setup/initialized before it is needed.
-
FireDac does have tracing and monitoring, it is very verbose by default, but you can reduce which events it outputs. This could help you see what query is still open.
Tracing and Monitoring (FireDAC) - RAD Studio (embarcadero.com)
-
5 hours ago, Lars Fosdal said:You can move to FireDAC while still using DBase. I know, not your goal - but at least you would have made the first step.
https://blogs.embarcadero.com/firedac-odbc-for-paradox-and-dbase-tables/
The Microsoft ODBC support for Paradox and dBase always seemed to be more for data extraction than full database use. Useful to pull data for reports or when migrating to a different database but not to replace the BDE for a production application. Data dictionary changes and database maintenance are two weak areas.
During a migration of a single user application from Visual dBase (16 bit, used the BDE) to Delphi + Flash Filer we used a third-party library to access the DBF files for migration purposes instead of the Microsoft ODBC solution. Fewer dependencies on what a user had installed locally meant fewer support issues. (was SoftSci's : TOPAZ (softsci.com))
- 1
-
Some still get by with a simple multiuser shared file database like Paradox through the BDE. The popularity of SQLite shows simple databases are still popular and BDE/Paradox fits that niche as well with more data types and multiuser support.
-
You need to add a series per record.
-
Looks like Evaluate/Modify does not like that dynamic array syntax in the expression. Quick test moving it outside and the expression IndexText ('3',Nums) evaluates at the breakpoint without problems.
const Nums : array of string = ['1','2','3']; idx := IndexText('3',Nums);
Delphi 12 VCL painting differs through RDP
in VCL
Posted
Likely interacts with the WS_EX_LAYERED style in some way as that style does do some extra work (composes and repaints layered windows and the windows of underlying applications).
Window Features - Layered Windows - Win32 apps | Microsoft Learn
Extended Window Styles (Winuser.h) - Win32 apps | Microsoft Learn