Jump to content

David Heffernan

Members
  • Content Count

    3586
  • Joined

  • Last visited

  • Days Won

    176

Everything posted by David Heffernan

  1. David Heffernan

    function reference feature for Delphi source code

    grep is useless for this purpose. This functionality in VS works because the tooling is able to compile the code and understand all the references from the output of that compilation. A naive text match using grep will give nothing whatsoever of value.
  2. David Heffernan

    Common callback functions, or not?

    No. That makes no sense. Anonymous methods are just procedural types with variable capture.
  3. David Heffernan

    Using the New Edge browser control

    How would RAM be wasted?
  4. David Heffernan

    IPropertyStore

    You don't need to call Release in Delphi code. The compiler manages that for you.
  5. Absolutely not. Some UInt64 values can never be returned and the performance will be poor.
  6. What will it take for Delphi programmers to give up on the idea that strings and byte arrays are the same thing!
  7. Random returns 32 bits of randomness, why only use 16 of them? In other words, can't you do this with two calls to Random rather than four. Furthermore, Random is a pretty low grade PRNG. Depending on what you intend to use this for, you may want to use a better PRNG.
  8. These helpers are often just copied from .net, and .net strings are immutable. Here is the .net property: https://docs.microsoft.com/en-us/dotnet/api/system.string.chars?view=netcore-3.1
  9. David Heffernan

    Call a D7 dll from C#

    What calling convention is the function? If it is register then that is a problem. Make sure it is stdcall. A websearch for pinvoke will tell you how to call this function.
  10. David Heffernan

    Range checking in library code?

    Conceptually a list class is the same as an array. For sure it has extra convenience functionality, but it is still a random access array. So my philosophy is that consistency is achieved by having lists match arrays. I'd have the range checks conditional on RANGECHECKS. Indeed that is how I do it in my personal collection library.
  11. David Heffernan

    IFileOperation recursion happens when set not to

    You have to enumerate all the files and copy them. Put these files into a double null terminated list. COM should not be initialised here. It needs to be initialised by the owner of the thread.
  12. David Heffernan

    What is the best way to split off a new project?

    I have a unit with 53kloc (hangs head in shame)
  13. David Heffernan

    What is the best way to split off a new project?

    This is a branch or a fork in your SCM system. If you aren't using SCM then that's your problem right there. Solve that problem first.
  14. David Heffernan

    Organizing enums

    Don't think so https://en.cppreference.com/w/cpp/language/enum
  15. David Heffernan

    Organizing enums

    That's what scoped enums are meant for
  16. David Heffernan

    Organizing enums

    This is exactly the issue that scoped enums solves already.
  17. David Heffernan

    Organizing enums

    That's XE7. It seems to me to be folly to design your code based on an IDE tooling issue, and especially one which is soon to be resolved. Further, the issue at stake here, as always when coding, is far less about the experience when writing code, as the experience when reading code. It's not worth it to reduce the readability of your code to give a minor easing to your experience when entering the code.
  18. David Heffernan

    Organizing enums

    Following on from my comment about complexity, I'm wondering what's wrong with this: You don't need to remember anything. Why are you seeking complexity here? You seem to be trying to solve a problem that simply does not exist.
  19. David Heffernan

    Organizing enums

    Why is that harder than remembering something else, as you seem to want to do? Why is complexity so compelling?
  20. David Heffernan

    Organizing enums

    You'd be far better off using scoped enumeration. It forces you to fully qualify the enumeration. Instead of deciding what the solution is beforehand, you are better off understanding the options offered by the language and working with the language, not swimming against the tide.
  21. David Heffernan

    Initialization of returned managed types

    It all went downhill when Borland decided that function return values were actually var parameters. Which means that in the case of managed types they get initialized by the caller. A function return value really should have pass by value callee to caller semantics.
  22. David Heffernan

    Organizing enums

    What problem are you trying to solve? What's wrong with vHTMLReportType := htTemplate;
  23. David Heffernan

    Simple inlined function question

    You missed step 1. Step 1: identify the bottleneck. It's a common mistake.
  24. David Heffernan

    Simple inlined function question

    All this incredible noise, and all Mike needs is to simply time his own program...... It's really so simple.....
  25. David Heffernan

    Simple inlined function question

    I don't really buy what Kas is saying above. Just time your actual program is usage scenarios that you care about. After all, why would care about the performance of code that you never run? You only care about the code that you do run, or your users run.
×