Brian Evans
Members-
Content Count
360 -
Joined
-
Last visited
-
Days Won
4
Everything posted by Brian Evans
-
Starting with Delphi 12 they are disabled by default. What's New - RAD Studio - Disabling Floating-Point Exceptions on All Platforms
-
Putting Delphi Application inside web page
Brian Evans replied to Robert Gilland's topic in Delphi Third-Party
That has always annoyed me - step one of looking for products/solutions is to survey what is out there and compile a list with basic information. I usually just ignore/skip anything where the information is hard to come by as I have been burned too many times. Far too many companies' think their product is good for X when feature wise that would be true, but price or licensing terms make it not. I want to know that from the start not after wasting hours evaluating a product and dealing with sales calls. Most of the time 'contact sales' means the product has runtime fees, weird tiered pricing or terms making it unsuitable for a lot of scenarios. -
Implementing "desktops" using MDI, "broken" in D12
Brian Evans replied to Dave Nottage's topic in VCL
Could free the forms instead of hiding. Has other issues like losing state but they can be overcome. Adding saving/loading form state is useful between program runs as well so work can be resumed quicker. MDIIssue2.zip -
General question for "Edit.Text's": Why is WordWrap not active bydefault?
Brian Evans replied to Rollo62's topic in Delphi IDE and APIs
After re-reading the post a couple of times: The poster is talking about the text on buttons in FMX. -
How can I prevent TMyQuery from opening a new connection ?
Brian Evans replied to dormky's topic in Databases
MySQL can only have one running/open query per connection. What you are seeing is normal for MySQL. -
Do you need an ARM64 compiler for Windows?
Brian Evans replied to Lars Fosdal's topic in Cross-platform
There is not one executable format but two: ARM64 and ARM64EC (ARM64X PE files) on Windows 11 ARM64. The latter makes moving to ARM incrementally easier but does complicate things for third party compiler makers like Embarcadero. Bit a shit show from Microsoft over the last decade - first Windows on ARM had a new API only, then Win32 / x86 emulation and now finally a way to mix x86 and specially built ARM binaries. I think ARM will fall behind as a platform because it is fragmented and siloed. Remember how M68000 got beat by x86 - thanks to DOS and then Windows becoming a widely used platform x86 got an order of magnitude more $$$ invested into the platform. ARM just doesn't have the $$$ getting invested into platform improvements that x86 does and some of the improvements don't go to all users - like x86 emulation help on Apple M1 CPUs not available elsewhere. Contrast that to AMD's Ryzen/EPYC all using the same CPU tiles - the improvements from investment hit everything from Valve Steam Deck handhelds, Threadripper PRO workstations and the FRONTIER supercomputer. -
Results/matches are produced linearly so ForEach() has nothing to work on. You could use tasks to do the work on each match. (4. Low-level multi-threading (omnithreadlibrary.com))
-
Consider when code using unmasked exceptions calls code in a DLL that uses masked exceptions. The floating-point control register (FPCR) needs to be set to mask exceptions just before the call then unmask them on return. The functions provided by Delphi to update the FPCR are not thread safe so they can botch it. For the non-FMX Windows platform Delphi code ran with unmasked floating-point exceptions on by default before the recent change. Most C/C++/C# code runs with them masked. This meant the above scenario happened when calling into most non-Delphi DLLs from Delphi.
-
I started with FlashFiler then migrated to NexusDB for both standalone and C/S versions of applications. The former was available years before SQLite came on the scene and the latter was the spiritual successor of the former. Never migrated to SQLite because using C/S tooling during development of even a standalone application makes things easier. Both a database development tool like Upscene Production's Database Workbench and the application itself can access the live database tables at the same time easing debugging and other tasks. Can then ship the application with the same database engine compiled into the EXE but hooked up directly instead of through C/S components. Originally used FlashFiler as the database engine for an application + database published monthly on a CDROM. With some modifications to the source to open read-only files as shared it worked well for years. Both FlashFiler and NexusDB are royalty free so no per user fees in either standalone or C/S configurations.
-
Possible StyledComponents/SKIA issue...
Brian Evans replied to Ian Branch's topic in Delphi Third-Party
Take a look at the Windows Sandbox, a feature available in Pro and higher of Windows 10 and 11. It provides a clean Windows environment and uses RDP behind the scenes. Useful for catching some RDP issues and missing dependencies/requirements etc. Ref: Windows Sandbo| Microsoft Learn -
Need to create a rest web server do I need IIS?
Brian Evans replied to JIMSMITH's topic in Network, Cloud and Web
From an organizational perspective a web server like IIS is easier to manage, especially in the long term, than individual web services running on random machines and ports. System administrators are familiar with the logging and configuration of a web server and can perform various tasks without involving the developers. For example, keeping https settings up to date by disabling weak protocols and cyphers. You don't need a web server, but it might be beneficial to consider using one. -
How to move a group of files and folders while minimizing the number of intermediate errors?
Brian Evans replied to dmitrybv's topic in Delphi IDE and APIs
With any substantial number and sizes of files that could waste a lot of time as the whole operation keeps being restarted after each problem is encountered and fixed. I would suggest doing the copy with a tool that synchronizes directories then once everything is copied successfully delete from the source. Can even use the same tool for both steps - like robocopy to copy everything followed by a /MOVE pass to pick up any last minute changes while clearing out the source. -
Which version is applicable to receive Delphi updates and upgrade versions?
Brian Evans replied to JohnLM's topic in Delphi IDE and APIs
Can also use the command line utility certutil. Supports calculating MD2 MD4 MD5 SHA1 SHA256 SHA384 and SHA512 hashes. certutil -hashfile <file> <algorithm> -
Delphi takes 9 seconds to start/shutdown an empty application
Brian Evans replied to FreeDelphiPascal's topic in General Help
Been a while but I remember disabling some packages to speed IDE startup. Certainly, a welcome page listing the latest updates for an IDE that hasn't gotten updates in years is a waste of time to load with the IDE. Often used the instructions at: Delphi packages I have disabled by prefixing their description with an underscore (and why) « The Wiert Corner – irregular stream of stuff -
Delphi takes 9 seconds to start/shutdown an empty application
Brian Evans replied to FreeDelphiPascal's topic in General Help
I found that annoying as well. For several years I would set the debug desktop to the regular desktop and turn off hide designers on run. Made compile/run/test cycles much faster. I usually did not need the debug panels as most testing was in the application being developed. No longer needed with very recent versions as IDE redrawing is better so switching desktops and hiding/unhiding designers is fast. -
Which version is applicable to receive Delphi updates and upgrade versions?
Brian Evans replied to JohnLM's topic in Delphi IDE and APIs
There are no new license/serials - you use the existing license. The My Registered Products at Registered Products Portal (embarcadero.com), the product+serial you did a support renewal for should have a new / extended Subscription End Date and a Subscription Status of Active. The matching download should be available under My Downloads. With an active subscription 12.2 should be available - it is for me and the product line in my registered products is Delphi 10.2 Tokyo Enterprise Named User. first registered in 2018. -
Sales is also supposed to be able to do the license bump for those without active support. At least that is what has been said when this has come up in recent years. Not sure why they don't make it smoother or more explicit - the uncertainty produces anxiety and negative feelings in users.
-
Need help with in-app purchases via Amazon
Brian Evans replied to Martin Binder's topic in Cross-platform
Best to read up on it - https://developer.amazon.com/docs/in-app-purchasing/iap-overview.html the basic choice is between an SDK and a compatibility SDK. Not sure how much effort it is to use the code that comes with Delphi with the compatibility SDK but it would be easier than using the SDK. -
The MVP needs to be usable by your early customers that are a subset of what you hope to eventually reach. Figure out who they are, their needs and how you can meet some of those needs with a small, limited feature set.
-
"Death to WITH" in your Delphi Code
Brian Evans replied to Darian Miller's topic in Tips / Blogs / Tutorials / Videos
Introducing new variables isn't the same as WITH which just adjusts how the compiler handles scoping for which reference a name refers to at compile time. If introducing a new variable isn't an issue may as well use inline variables with type inference for modern Delphi at least. procedure TMyForm.UpdateInventoryItem(const NewQty: Integer); begin var A := dmStoreInventoryData; var B := A.tblUpdateItemForStore; B.Edit; B.FieldByName('Qty').AsInteger := NewQty; B.Post; end; -
"Death to WITH" in your Delphi Code
Brian Evans replied to Darian Miller's topic in Tips / Blogs / Tutorials / Videos
In this example NewQty is a parameter of the procedure. -
"Death to WITH" in your Delphi Code
Brian Evans replied to Darian Miller's topic in Tips / Blogs / Tutorials / Videos
If they added the ability to provide an alias the ambiguity would be gone. Aliases in SQL are useful and perform a similar function. Shortening repeated references can make code easier to read, the problem is the current WITH creates ambiguity. A code snipped from the blog post redone with the ability to provide an alias as an example: procedure TMyForm.UpdateInventoryItem(const NewQty: Integer); begin with dmStoreInventoryData as A do begin with A.tblUpdateItemForStore as B do begin B.Edit; B.FieldByName('Qty').AsInteger := NewQty; B.Post; end; end; end; -
They are missing in the IDE based GetIt here as well. Other subscription only stuff like FMXLinux 1.78 that got an update around the same time (June 2024) show without issue.
-
Delphi 12, MSSQL Server, FireDAC on android application
Brian Evans replied to dlucic's topic in Cross-platform
FireDac requires client libraries of some form provided by Microsoft to access Microsoft SQL Server. These are not available for Android. Another set of data access components is SDAC from Devart which has an additional direct access mode that uses TCP/IP directly to access Microsoft SQL Server. Applications using this direct mode can run on platforms for which Microsoft has not provided client libraries. -
Android: Minimal app throws exception 10, when adding certain uses-features (CAMERA). (never used or linked in code yet)
Brian Evans replied to Rollo62's topic in Cross-platform
I think those (uses-feature) are just play store hints? The application won't be offered to devices without the uses features that are marked as required. They don't seem to be used by the android loader itself. Might be the OS is trying to be clever and attempting to pre-load/integrate something related to a uses-feature that then causes issues or a crash.