Jump to content

Anders Melander

Members
  • Content Count

    2312
  • Joined

  • Last visited

  • Days Won

    119

Everything posted by Anders Melander

  1. Anders Melander

    How do I enumerate all properties of a Variant?

    Those are just the WMI methods and they are all documented. https://docs.microsoft.com/en-us/windows/win32/api/wbemcli/nn-wbemcli-iwbemclassobject If you want to talk to a COM server why are you then going through WMI? Are you sure it isn't a WMI Provider you are talking about? If you install the Windows SDK (just the tools parts) there's a utility in it called OleView that you can use to examine type libraries and COM servers. The type library of your server is probably embedded in the EXE file. Edit: If it's a WMI provider then it's probably a DLL and it's probably early bound and without a type library. It depends on what kind of provider it is.
  2. Anders Melander

    How do I enumerate all properties of a Variant?

    Maybe if you learned the difference between OLE and COM you wouldn't be so scared... Hardly anyone uses OLE anymore.
  3. Storing a 31-bit value in a 64-bit intermediary doesn't magically produce more distinct values. You'll still have at most 2^31 distinct values.
  4. Anders Melander

    DelphiVCL: Fantastic! But there are some issues

    Hey Reinier! I think it must be over 20 years since I last heard from you. AFAIR you were the original maintainer of The Delphi Bug List. Ah, yes: https://web.archive.org/web/20001025065121/http://www.dataweb.nl/~r.p.sterkenburg/indexpag.htm Good to see you're still around.
  5. Most of them. You're scaling a 31-bit integer value in the approximate range 0..X-1 to the range 0..2^64-1 A lot of things wasn't mentioned. For example here's my solution which satisfies all the criteria that was mentioned: The result is 64-bit unsigned. It's cross platform. It compiles with FPC. It's random (for a large enough sample size). and as a bonus It's super fast. function SuperRandom: UInt64; begin Result := 1; end; (sorry - it's Friday)
  6. Anders Melander

    CrystalNet - .Net Runtime Library for Delphi

    You can ask @CrystalNet
  7. Anders Melander

    CrystalNet - .Net Runtime Library for Delphi

    Nope. I just use COM callable .NET wrappers. I would rather have the .NET code live in an external .NET assemble than introduce a dependency on a 3rd party library and have a dependency on .NET.
  8. I like it for internal documentation. For external use I think it sucks as you can't style it properly. If we were to replace it I would probably just use WordPress. Oh... wow. I just read their announcement. For Jira, Confluence and Bitbucket this won't affect us much. Our Jira and Confluence are already on cloud. But for Bamboo this definitely means that we'll have to find alternatives and Bitbucket pipelines isn't a viable alternative. I just took their migration quiz. Bamboo isn't listed at all... and for Bitbucket it recommended that I migrate to Bitbucket Data Center - which is also being EOL'd.. Classic Atlassian.
  9. Yeah, well Bamboo being an Atlassian product relies on paid 3rd party add-ins for even the simplest things It does have support for XMPP but that isn't supported by Teams.
  10. Nice. I've been using the following to post the status of our Bamboo build jobs (it's a PowerShell script) but I've been thinking about adding Teams notification to some of our automated test tools and your example will come in handy there. $uri = 'https://outlook.office.com/webhook/yadayadayada/IncomingWebhook/yadayadayada/yadayadayada-yada-yada-yada-yadayadayada' if("${bamboo_buildFailed}" -eq "true"){ $status = 'Failure' }else { $status = 'Success' } $body = ConvertTo-Json -Depth 4 @{ title = 'FooBar Build Notification' text = "Build of FooBar version ${bamboo.fileVersion} completed with status $status" sections = @( @{ activityTitle = 'FooBar Build' activitySubtitle = '${bamboo.buildKey}' activityText = 'The build of ${bamboo.planRepository.branchName} ${bamboo.planRepository.revision} completed.' activityImage = 'https://pbs.twimg.com/profile_images/1128664840233525248/T3YNFtIt_400x400.png' }, @{ title = 'Details' facts = @( @{ name = 'Branch' value = '${bamboo.planRepository.branchName}' }, @{ name = 'Revision' value = '${bamboo.planRepository.revision}' } ) } ) potentialAction = @(@{ '@context' = 'http://schema.org' '@type' = 'ViewAction' name = 'Click here for details' target = @('${bamboo.buildResultsUrl}') }) } Invoke-RestMethod -uri $uri -Method Post -body $body -ContentType 'application/json'
  11. Anders Melander

    Listview control with filtering like File Explorer

    It's so easy to throw a statement like that out there. Have you thought about the consequences of having the VCL maintained by a bunch of amat^H^H^H^H enthusiasts that are stuck on Delphi 7? Look at the JVCL if you're in doubt of what that would look like. If you want open source there's plenty to choose from already.
  12. Anders Melander

    Alpha Controls support for LMD Tools??

    Excellent question... for the AlphaControls forum: https://www.alphaskins.com/forum/
  13. Anders Melander

    "Debug process not initialized."

    Did you work in IT support before you became a developer? Every time I contact our IT department because there's something wrong with one of the servers, the first thing they ask me is to "restart windows". I've given up on educating them so now I just pretend. My current uptime is 118 days. Try disabling the MadExcept "IDE exception catching". Just to eliminate MadExcept as the cause.
  14. Anders Melander

    Compiler: Endless loop

    Try building with MSBuild (Project Options, Building, Delphi Compiler, Use MSBuild externally to compile). My current client have several projects that fail during compile with internal errors unless we use MSBuild. Wouldn't that be a linker issue then. This looks like a compiler issue.
  15. Anders Melander

    how to classify and match error message patterns?

    It sounds more like you're rubber ducking.
  16. Anders Melander

    Large address space awareness. How to test properly?

    Dudes. I'm not stupid. I'm not saying that it's good practice only that it's safe to cast between pointer and integer. The OP said that this was for 32-bit only so bringing 64-bit into the equation is also irrelevant. Thanks for playing.
  17. Anders Melander

    Large address space awareness. How to test properly?

    As long as it doesn't do "pointer math" on the integer value then there shouldn't be problems casting between integer and pointer.
  18. Anders Melander

    A bit confused about SVG

    You don't need to but you can. It's not really a SVG imagelist. It's an imagelist that also supports SVG meaning it can contain SVG, PNG, BMP, etc. This also mean that you can have one imagelist for low-res containing a mix of SVG and PNG and another for hi-res. I find that PNGs are often better for small (e.g. 16x16) low-res images.
  19. Anders Melander

    A bit confused about SVG

    You can only assign one imagelist at a time but if you've named your imagelist according to their instructions then they will switch between the different ones automatically. If you're using SVG then you only need one imagelist.
  20. Anders Melander

    GUI automation tool for Firemonkey apps ?

    Amen to that. I've been involved in attempts to implement GUI testing using TestComplete three times in three different companies. Each time the project (the GUI test part) was abandoned after using massive amounts of resources writing and maintaining the test scripts (and by massive I mean several man years). How are one ever going to keep up if it takes a test engineer hours to update the tests for every small UI, workflow or timing change a developer makes. It's much more feasible to write test instructions and have the QA department do the tests manually. They can use TestComplete and the like for simple keyboard/mouse record/playback but the result verification is done manually. I remember a place where we outsourced the testing to an Indian company. I was quite impressed by the amount of bugs they initially found with no domain knowledge whatsoever and very little knowledge about how the application was supposed to work. From what I could see from the bug reports they had simply tried pressing every possible key combination or just smashed their hand into the keyboard in every single dialog. They found "features" we didn't even know we had. It made me think of the infinite monkey theorem. I have yet to see automated GUI test implemented successfully anywhere.
  21. Anders Melander

    How to detect when control is scrolled into view

    Something like this? (untested, just a guess) interface type TMyFrame = class(TFrame) private FHasLoaded: boolean; protected procedure PaintWindow(DC: HDC); override; procedure DoLoadFrame; end; implementation procedure TMyFrame.PaintWindow(DC: HDC); begin if (not FHasLoaded) then DoLoadFrame; inherited; end; procedure TMyFrame.DoLoadFrame; begin FHasLoaded := True; // Do load stuff here... end; Of course the frames has to be created before they can be scrolled into view but you can defer loading the frame content. I would probably solve the problem in a different way but I think the above does what you asked for.
  22. Anders Melander

    DEC (Delphi Encryption Compendium) has a new home

    The first point of entry is the readme. If the readme doesn't convince a potential user then I'm pretty sure they won't bother with the source. We're all busy. Why should you care? Because more users means more people that are likely to contribute.
  23. Anders Melander

    ANN: Better Translation Manager released

    Select the language in the Target combobox. If you click the small button below the combobox you'll get a dialog where you can enable an options that filters the list of available languages: Note that, even though your project can contain translations for multiple languages, you can only edit one language at a time.
×