Leaderboard
Popular Content
Showing content with the highest reputation on 10/21/24 in all areas
-
With 12.2 Patch 1 just dropping, we've all spent some time updating. I have a process for updating, but I'm always curious what everyone's process is. I'll share mine: Ideally I have a complete backup of my system Backup my activation/license files: "C:\ProgramData\Embarcadero" (I just zip files and folders including hidden) Your activation should still work after a recovery if your computer name doesn't change Backup settings with MigrationTool "C:\Program Files (x86)\Embarcadero\Studio\23.0\bin\migrationtool.exe" I used to always export the registry too, but haven't that in a while. Might still be useful. Computer\HKEY_CURRENT_USER\Software\Embarcadero\BDS\23.0 Manually backup GetIt Packages via GetItCmd (ran from the RAD Studio Command Prompt): getitcmd -l= -f=installed >getitpkgs.txt Uninstall all the GetIt packages (Parnassus seems to be the most likely to cause trouble, but FMXLinux has hit me too, so I just uninstall them all) Get the packages names from the manual backup getitcmd -u=FmxLinux-12-1.78;ParnassusCoreEditor-12-1.6.4.1;CodeSite-5.4.4;AWSSDKforDelphi-12 Start the installation Let it automatically uninstall, keeping the settings (the default) Before it starts the install I manually delete the CatalogRepository folders C:\Users\jim\Documents\Embarcadero\Studio\23.0\CatalogRepository C:\Users\Public\Documents\Embarcadero\Studio\23.0\CatalogRepository Manually reinstall the GetIt packages getitcmd -i=FmxLinux-12-1.78;ParnassusCoreEditor-12-1.6.4.1;CodeSite-5.4.4;AWSSDKforDelphi-12 The MigrationTool doesn't seem to like restoring to the same version it was backed up from, which is frustrating, but maybe I'm missing something. When I restore from a backup of 12.x then 12.x is missing from the dropdown list. I've never had to use it, but in theory I figure I could edit the backup file to make it work if worse comes to worse.
-
If you were using the RTL dictionary with its abysmal performance, that does not surprise me at all. Mostly because of its poor hash function, replacing that with a better one speeds it up significantly. However, string interning does not require a dictionary with key/value but just a hashtable for strings. DelphiAST has the option to use one for its parsing - we needed that when using it in the context of the IDE to avoid spikes in memory consumption.
-
That benchmark proves almost (*) nothing, the only point where it allocates is during the form creation where it builds the card deck and later when it prints the output into the TListBox. (*) the only thing affected here is the possible layout of the card objects in the heap as they are all read during the hand-processing code. The difference that you can observe here between Delphi buids using different memory managers is most likely caused by the amount of overhead the respective memory manager is using thus fitting more card objects within the same memory pages, thus more of them (most likely all on modern processors) fitting into L1 cache. As for this particular code - removing the name of the Cards from the object and only building it when it is needed for some UI would probably speed up code more than anything else because you get rid of 20 Byte for every object (Name is a string[19]) - on my CPU this makes the code go down from ~900ms to ~680ms - simply because it does not need to copy the strings in CopyCardFromDeck. Circumventing the getter and setter of TList (which contribute around 25% of the remaining time) brings it down to 460ms. And after that we are not done with string stuff - in every loop iteration, it calls Hand.SetHighValues which produces a name for the cards on the hand - removing that gets me down to ~400. Now because I have a run and SamplingProfiler open already I see that now one of the scorers is TcaaPokerHand.CopyCardFromDeck - the Items getter is not inlined which causes it to be called 10 times for the same 2 card objects. Changing that gets me down to 270ms. But how about avoiding repeated access to the same object in the 2 lists altogether? 230ms I could go on because I see a lot more room to optimize - but I think I made my point. Instead of fiddling with the memory manager one should first look if heap allocations are even the issue. And then identify unnecessary work and eliminate that. ... change TcaaEvaluationCard to be 8 Byte size - (that avoids that the compiler creates a movsd/movsb instruction but simply does an 8 byte mov) -> 160ms
-
Authorization to the firebase's https://iid.googleapis.com/iid/v1:batchImport
Vladsrb replied to Vanar's topic in FMX
Currently i also get Internal server Error for GetIt, so for FB SDK you can use the link provided by Dave Nottage. For reading FB token from IOS app using FB SDK: Manual Hint: When you add Project/Deployment - GoogleService-Info.plist (downloaded from Firebase for IOS) - check 'Remote path' column, must be: .\ -
I very much like the "Filter Explicit properties" expert. However, in recent versions of Delphi (not sure when it started), the IDE inserts annoying DesignSize properties that "pollute" the Dfm and the revision history. It would be really nice if the expert was renamed "Filter DFM properties" and included the option of removing these DesignSize properties.
- 11 replies
-
I sort of assumed that 16777619 in that code was a prime, but wanted to check... ChatGPT 4o mini said "No". So, I asked CoPilot in Norwegian - and it said "No" (Nei) On a whim, I then asked it in English LLMs - Lovely Lying Machines.
-
This is the unit @Stefan Glienke was referring to. 100 lines and it uses no other unit!
-
What is your Update Process?
Der schöne Günther replied to Jim McKeeth's topic in Delphi IDE and APIs
I spin up a new VM and start fresh. -
Authorization to the firebase's https://iid.googleapis.com/iid/v1:batchImport
Dave Nottage replied to Vanar's topic in FMX
Apparently it's because Indy does not have SSL bindings for encryption on iOS. See this issue. Perhaps @Remy Lebeau can comment. -
I usually don't prepare anything. I just run the update installer and expect it to simply work (which it mostly does). Having said that, I don't use GetIt to install anything apart from patches and I always compile components and - if possible - plugins from source, so the possibilities for the installer to mess up are limited. Also, I am not using the current Delphi version for production work (apart from the obvious maintenance for GExperts and a few other version specific tools), so if an update goes wrong, it won't be a catastrophe, unless it breaks an older Delphi version too.
-
Conversion of Older C++Builder Versions to C++Builder 12
hansw replied to shun's topic in General Help
I would definitely recommend to create a new project with C++Builder 12 and then add the used files to the project. The project file structure has changed a long time ago to support multiple build configurations (debug/release, win32/win64). You should also convert all DFM files to text (with C++Builder 5), so you any easily track modifications done by the upgrade. Regards, Hans -
I have since merged the sasl-oauth branch into the master code earlier today.
-
Usually I make a backup of FDConnectionDefs.ini and restore it after updating. After my updates in the last years there was always a default FDConnectionDefs.ini without the Connections I added before. Since this file is shared, even an existing D11 on the same machine does suffer from updating D12 in this case. In general I do not understand why the file is touched anyways - would be a great option in the update-options dialog to ask/inform customer about this overwriting of the file...
-
Authorization to the firebase's https://iid.googleapis.com/iid/v1:batchImport
Dave Nottage replied to Vanar's topic in FMX
Why do you need to send push messages from an iOS device? It's a very bad idea to have private key info in an iOS app. In a web server (where messages should be sent from), the executable (and private key) is (or at least should not be) accessible externally. From here: https://github.com/firebase/firebase-ios-sdk/releases/download/CocoaPods-6.28.0/Firebase.zip ..but the code example above which sends messages does not require the iOS SDK, which is used for receiving messages. -
Verifying Compatibility Between C++Builder 5 and the Latest Version
Roger Cigol replied to shun's topic in General Help
If you stay with "Classic" you are staying with an obsolete platform. It is likely to be around for years and years to come (because of so much legacy code out there) but it is no longer under any further development; each new version of RAD Studio or C++ Builder comes with exactly the same "Classic" compiler. Staying with "Classic" also ties you to 32 bit only application. It's not my job to explain all the advances in C++ syntax and the associated STL additions that have happened since the days of the "Classic" compiler - but there are many many many in the list. As soon as you start using Clang you don't want to go back to "Classic". If you are not so familiar with modern C++ start by reading the latest edition of Stroustup's "A Tour of C++" and see how many things in this (fairly brief) text are new to you. Scott Meyer's "Effective Modern C++" is another good book. There are hundreds out there.. There is one disadvantage of the Clang compiler: It's compile times are slower. Make sure you use the TwineCompile plug in (free of charge on Getit package manager). As an upgrade path I would suggest make the change to 12.2 staying with the "Classic" and once you have all your other issues solved then move to Clang. -
Verifying Compatibility Between C++Builder 5 and the Latest Version
Roger Cigol replied to shun's topic in General Help
Hi @shun Sorry for delay - busy week.... Up to date feature matrix is here: https://www.embarcadero.com/products/rad-studio/features/feature-matrix According to this site https://plaza.kpt.co.id/IT/en/107-2/Embarcadero-Delphi_8137_plaza-kpt.html Delphi / C++ Builder 5 dates from 1999 - so you are looking for a feature matrix 25 years old (if it ever existed). Fifteen minutes on google has not yielded a hit for this but you might do better..... -
A suitable version for MMX is available now.
-
KUSS - program for Windows to take screenshots (shots, screen photos) of the entire screen, a selected area, or an active window. KUSS program with open source code on Delphi. The original source that I came across was taken from the article "Creating a screenshotter on Delphi" from the site delphiexpert.ru: https://delphiexpert.ru/sozdanie-skrinshotera-na-delphi.html the author of which is Vladimir Lyubaev. Grigory Gorkun supplemented the program: saving to files of different formats + sound when photographing + working with the command line with parameters. Fixed a bug in the CaptureScreenRect function, which occurred in later versions of Delphi. KUSS site: https://kuzduk.ru/kuss KUSS on Github: https://github.com/kuzduk/KUSS 😘 KUSS.zip
-
Delphi developer needed in Denmark
Anders Melander replied to Kevin_Aspire's topic in Job Opportunities / Coder for Hire
You might get better exposure if you post your job listing on jobindex; Linkedin is a bit of a self-gloryfying BS echo-chamber so I doubt most developers follow what goes on there. -
ParnassusCoreEditor.dll AccessViolation
Lars Fosdal replied to bazzer747's topic in Delphi Third-Party
Check registry HKEY_CURRENT_USER\Software\Parnassus OU\Core Is the value of Path set to C:\Program Files (x86)\Common Files\ParnassusShared ? - if not, make it so. Copy the 20.0 DLLs there as per earlier posts. -
Bringing TGlobe from D5 to present day
programmerdelphi2k replied to RCrandall's topic in General Help
OBSERVATION: the "TGlobe5_D6.dpk" has some char-ghost/added in "Rrequires"/"Ocontains" session: open the DPK file with Notepad++, and just remove the "r"/"o" chars and all files appears on Project Manager tree in DPK remove the "requires VCL, IMGJPG" and save, the compile then ask to add "requires rtl, vcl, vclimg" when building/installing in various place (unit GSysUtils, and GE00Reader pas) you has "DecimalSeparator", just add FormatSettings.DecimalSeparator to compile on RAD 11.3 many "WARNINGS" are raised, then, you if want, you can updates it with "the new syntaxes" in moderns IDE! TGlobe_DPK_sanitizated_RAD113.7z GE00Reader_GSysUtils_sanitized_to_RAD11.3.7z