Jump to content

Leaderboard


Popular Content

Showing content with the highest reputation on 10/25/22 in all areas

  1. Hi All I recently did a presentation to the Australian Delphi User Group (ADUG) over zoom - the presentation was recorded and uploaded to youtube - thought it might be worth sharing here 😉 I talked a bit about devops in general, then Continuous Integration and Automated Builds, before showing Continua CI using MSBuild (and a bit of FinalBuilder), running a build, running unit tests etc.
  2. https://docwiki.embarcadero.com/RADStudio/Alexandria/en/Using_SQLite_with_FireDAC#SQLite_Data_Types
  3. Remy Lebeau

    Access Violation using TVariantManager.VarToInt64

    You are instantiating a TVariantManager instance without populating it, so it has unassigned function pointers at the time you are calling VarToInt64(). You would need to call GetVariantManager() first to initialize the record before you can use it, eg: var v : Variant; N : Int64; VMGR : TVariantManager; begin v := 1234567890; if IsVariantManagerSet then begin GetVariantManager(VMGR); N := VMGR.VarToInt64(v); end; end; However, TVariantManager has been deprecated for a very long time (since sometime between D7..D2006, so approx 20 years!), so wherever did you get the idea that you need to use it in the first place? Since at least D2006 (maybe earlier), GetVariantManager() just fills the record with nil pointers, and IsVariantManagerSet() always returns False. In modern coding, simply assign the Variant directly to the Int64 variable and let the compiler handle the conversion for you, eg: var v : Variant; N : Int64; begin v := 1234567890; N := v; // compiler generates: N := System.Variants._VarToInt64(v); end;
  4. Stefan Glienke

    generics

    As a reaction to one of his answers during Q&A I wrote a blog post. Having said that and personally loving generics for various use cases (as shown in the blog post) there are also things that are solved sub optimal - which I also wrote about. Also if you have used generics in C# then you will likely miss co- and contravariance - oh, look, I also wrote about that. If you are going really fancy with generics and code that uses RTTI you have to be aware about some percularities - guess what: wrote about it. Now because in generics you basically have the lowest common denominator and we are lacking quite some ways to specify some traits of the supported types via constraints there are several things that you cannot do or have to fall back to indirections: most common example is using comparer interfaces for generic sorting algorithm or hashtables. That is mostly where a naively implemented generic algorithm might be slower than some handcrafted code for the specific type unless you heavily optimize for various cases (as I have done in Spring).
  5. Lajos Juhász

    The Delphi 11.2 release thread

    Do not worry everything is going to work perfectly in the new 64 bit IDE.
  6. haley

    Form 'appears' before it should

    Personally, I'd rather not create the form until it's needed because apparently that makes it load faster, but I'm not an expert, LOL.
  7. As far as I know everything in that blog post still applies. But beware: This is for Win32 programs. I have no idea whether Win64 or other platforms are supported and whether any changes are necessary there.
  8. The first step would be to get more detailed 'crash' information. We use madExcept in all our software to do this (there are others too) which provides a solid stack trace when an exception occurs. Without such info you don't know what to look for....
  9. Uwe Raabe

    The Delphi 11.2 release thread

    Under Tools - Configure Tools add a new entry named Kill LSP with the following settings: Code: Program: taskkill Parameters: /IM DelphiLSP.exe /F
×