Jump to content

Brian Evans

Members
  • Content Count

    417
  • Joined

  • Last visited

  • Days Won

    6

Brian Evans last won the day on June 10

Brian Evans had the most liked content!

Community Reputation

124 Excellent

Technical Information

  • Delphi-Version
    Delphi 12 Athens

Recent Profile Visitors

The recent visitors block is disabled and is not being shown to other users.

  1. Brian Evans

    Alternative for RDP solution

    Native applications can make use of the same REST calls as web apps. Saves creating another API from scratch. There are a few libraries available for Delphi to make this easier. Probably too many which makes choosing a bit of a pain point.
  2. Brian Evans

    What .PAS file does a form use?

    Something to try: Look at a report .pas file for anything that will tell it apart from other non-report .pas files - like use of an ACE Report object/component name. Then do a Find in Files ... for it and see if any results have a .pas file with a name that doesn't follow your usual pattern.
  3. Brian Evans

    Quick-Report - Pointer Error - Composite Report

    That looks like the wrong thing to be working on - an unrolled loop vs a loop just isn't a big deal. Likely separate units so each could be customized but that didn't end up being required. Or some actually are customized by having different properties set for the same base QuickReport layout or in some other way.
  4. When you buy the latest version of Delphi, you also get access to earlier versions of Delphi at no extra charge.: https://www.embarcadero.com/products/delphi/previous-versions Delphi 2010 is covered by this. A lot of third party component vendors do something similar for the same reason with older versions available in the registered users download areas. You may need to make a request or they might be there already.
  5. Brian Evans

    FireDAC encrypted SQLite DB with Delphi 12.3 x64

    What version of SQLite are you trying to use under 64-bit? SQLite dropped support for the method FireDAC was using to provide encryption. Read : https://docwiki.embarcadero.com/RADStudio/Athens/en/What's_New#FireDAC_SQLite_Version_Update
  6. Brian Evans

    Debugger keeps the execution line centered

    Some random questions: 1. Do you have multiple screens with one using a different DPI setting? 2, Anything non-default DPI wise? launch settings, overrides etc Thoughts: could be a bad calculation of if the line to be highlighted is visible and scrolling the editor when it doesn't need to.
  7. My understanding is for expressions with variants non-variants are converted to a variant and operations like + follow Windows OLE (varAdd) in how they are combined. Neither cares about the order of variants/types just about combinations. string + variant with BCD value becomes variant with string value + variant with BCD value. For adding variants string+number or number+string both add numbers. Ref: https://docwiki.embarcadero.com/RADStudio/Athens/en/Variant_Types_(Delphi)#Variants_in_Expressions Ref: https://learn.microsoft.com/en-us/windows/win32/api/oleauto/nf-oleauto-varadd#remarks
  8. Brian Evans

    Help with JWToken

    The integer part is seconds since the Unix Epoch so is a Unix timestamp. Some sources add fractional seconds so they can contain timestamps with more accuracy.
  9. Brian Evans

    Slow performance. HELP!

    Storage IO suddenly being slower will cause similar symptoms. All writes and any reads that need to get data from the disk instead of the cache bottleneck. Things that used to not interfere with each other now do. Years ago a battery on a RAID card in a SQL Server cluster failed making write performance 5% of normal. All sorts of odd issues until the anemic disk performance was noticed and bunch of disk heavy tasks were temporarily disabled to allow the main work to still get done.
  10. Brian Evans

    KSVC 8.0

    Removed 7 and installed 8 here. No 64-bit design time packages so not yet available in the 64-bit Initial Release of the Delphi 12 IDE. Looking at the contents of C:\Users\Public\Documents\Embarcadero\Studio\23.0\CatalogRepository\KonopkaControls-290-8.0_For12.3\Bin\Win64 there does seem to be 64-bit design time packages but they were not installed? Manually copied the two design time BPLs to C:\Users\Public\Documents\Embarcadero\Studio\23.0\Bpl\Win64, did Component -> Install Packages, Add, selected them both and installed them. Some basic tests and they seem to work.
  11. Brian Evans

    Delphi 12.3 Patch and McAfee

    Most Antivirus software also have a way to submit false positives for further analysis. If they agree they white list the file names and hashes that otherwise trigger their heuristics based scanning engine. Helps others and you don't have to maintain commercial applications in your own whitelist long term.
  12. Brian Evans

    identify whether a TMenuItem is a top-level menu bar item

    Still - where and why? - in a lot of cases you can already know when your code is called. For example OnDrawItem is set per item so you can just assign one procedure for main menu items and another for the rest.
  13. Brian Evans

    identify whether a TMenuItem is a top-level menu bar item

    One approach: The Items property has a find() method that searches for a match of a caption passed in. It ignores & to make matching easier. So if you have a reference to the main menu you can do mainmenuref.items.find() passing in the caption of the menu item you wish to test. function isMenuMenuItem(MainMenu : TMainMenu; MenuItem : TMenuItem) : boolean; begin If MainMenu.Items.Find(MenuItem.Caption) <> nil then result := true else result := false; end;
  14. Brian Evans

    identify whether a TMenuItem is a top-level menu bar item

    Note that is the wrong inner loop statement. It needs to go a level deeper. FixItem (aMenu.Items[I].items[k]);
  15. Brian Evans

    identify whether a TMenuItem is a top-level menu bar item

    Use two loops to start with so you iterate into sub menu items before calling FixItem(). Then FixItem() only gets submenu items and can be simplified. for I := 0 to aMenu.Items.Count - 1 do for k := 0 to aMenu.items[i].Count -1 do FixItem (aMenu.Items[I].items[k]);
×