Jump to content

Leaderboard


Popular Content

Showing content with the highest reputation on 09/12/25 in Posts

  1. dummzeuch

    Gexperts for Delphi 13

    And here we go: An installer for the Beta version of GExperts for Delphi 13: See the blog post.
  2. Dave Millington (personal)

    A smart case statement in Delphi?

    My apologies for seeming sarcastic. I understand why. I also know it's not intended as sarcasm. Text is hard and it's hard to balance the line of making points. I think it is wonderful when Delphi adds features, quite genuinely, and the post said so. I edited to try to help that understanding, but the original said "congratulations", and that is sincere, and I retained that comment. It's hard reading that kind of reply, Daniel, and I don't know what to make of it. I think the best thing is to apologise because it's clear you are offended: and I am sorry for that. Let me pontificate a bit: I worry about language compatibility. There are multiple Pascals out there: Free Pascal, DWScript, etc etc. Yet Pascal is a small language. If Delphi ever added any other feature Oxygene or Free Pascal or anyone else already has, and chose to do so with different, incompatible syntax, that would be a significant statement. I use Python a lot, it gives me the same "feeling" as Delphi when I use it, I have talked about Python a lot to people with quite some enthusiasm, it has a ternary if, and that ternary if is inverted -- that structure is legit, and Delphi could have used it, and then imagine if we had two versions in Pascal! Far better to copy, when it's already been done -- with code existing for years, it's key to keep the same syntax compatible. Equally, there's so much the language could do. When it moves forward, I hope it does so in ways that copy the path that has been led by others. Perhaps that is the message in the blog post: keep going; there's more, follow. I would certainly prefer it's read that way. Please read again, I hope it's gentler. For this forum... that was not the message. I had intended to directly answer a thread about a language feature with a blog post showing a snippet of the language feature the OP asked for. Message: it is possible, look! I fully respect you don't want other implementations mentioned, and will respect that.
  3. Lars Fosdal

    RAD Studio 13 is available

    If you are have a current subscription license, you can now download RAD Studio 13 from MyEmbarcadero. https://my.embarcadero.com/#downloadsPage You can also see What's New on the doc wiki: https://docwiki.embarcadero.com/RADStudio/Florence/en/What's_New
  4. dummzeuch

    Gexperts for Delphi 13

    I'm away at the moment and can't build an installer, but the current source code compiles with Delphi 13 and works with the 32 bit IDE.
  5. PeterPanettone

    RAD Studio 13 is available

    We have now created this feature request: https://embt.atlassian.net/servicedesk/customer/portal/1/RSS-4079
  6. Oboba

    RAD Studio 13 is available

    Does anyone know if madExcept is going to be updated to support this new Delphi version? Latest news on the madshi website is from 2023 and their forums are dead 😞
  7. PeterPanettone

    RAD Studio 13 is available

    Hi Patrick PREMARTIN, SMARTSEARCH (a key concept in Data Science) should also be used in the PALETTE search box: "combo DB" should find TDBComboBox and TDBLookupComboBox!
  8. Attila Kovacs

    New Delphi features in Delphi 13

    So no code formatting and no refactoring? Heavy.
  9. Chris Pim

    TTimeEdit picker time format

    I've just put your code into practice and it seems to work very well. Thanks again Dave. The only oddity I noticed, is that if the phone (Android) is set to 24 hour format, and I use the above to show my picker in 12 hour format, the AM/PM toggle doesn't appear in the picker dialog, even though the dialog is in 12 hours format. If the phone is set to 12 hour before showing the dialog, then it does show the AM/PM toggle correctly. Weird! I suspect this is a bug in Android as there aren't any APIs to directly impact the AM/PM option so just noting here in case anyone else needs this functionality. Thanks again Dave
  10. Attila Kovacs

    New Delphi features in Delphi 13

    As with all advancing technology, some things get better and some things must get left behind. Starting with Delphi 12, the modeling features were moved to an optional add-on installation, and in Delphi 13, they're being removed entirely due to technical constraints. https://corneliusconcepts.tech/code-formatting-delphi-13 ROTFL One step forward, ten steps back.
  11. Steve Maughan

    New Delphi features in Delphi 13

    I assume Delphi 13 can be installed alongside 12.3. Can someone confirm? If I install and it doesn't work alongside it would be a disaster for me. — Steve
  12. Attila Kovacs

    New Delphi features in Delphi 13

    it only took 10 years
  13. As per title. The MultiInstaller in the Install subdirectory has also been updated and now installs P4D in both the 32-bit and 64-bit IDEs. It is the fastest way to install P4D. Just clone the repo and run MultiInstaller. It only takes a few seconds to install in both IDEs and configure the search paths. The provided setup.ini expects the folder to be called P4D. If not, you need to edit the setup.ini file accordingly. The only catch is that in the dialog box you should specify the parent folder of "P4D" (i.e. the folder containing the directory to which you have copied/cloned P4D) and not the P4D folder itself.
  14. Dalija Prasnikar

    A smart case statement in Delphi?

    Oxygene has plenty of features that would be great to have in Delphi. I wanted to have a case statement with strings for years now. I think it was even reported in the old, old Quality Central. If may look like a simple thing but it makes code more readable. Now when we got if expressions, maybe we wil eventually get case with strings, too.
  15. Dave Millington (personal)

    A smart case statement in Delphi?

    It is of help actually -- I was feeling quite bad. Your post cheered me up. Would you expand "when" to pattern matching?
  16. Rollo62

    Should we create forum(s) for AI?

    There are a stunning 5.4% not using AI at all, hooray, brave men and ladies
  17. David Heffernan

    New Delphi features in Delphi 13

    I was interested in the new AI chatbot that Emba are offering, which was announced in the webinar yesterday. It's at: https://www.embarcadero.com/radaicompanion The concept is that it is an AI bot that has been tweaked to target Emba products, Delphi, C++Builder etc. Anyway, after a recent question on SO I asked: Does the VCL have a TagObject property? The answer was a little disappointing: Yes, the VCL does have a TagObject property. It is available in the FMX.Types.TFmxObject class, which is part of the FireMonkey (FMX) framework, not the VCL. The TagObject property allows you to store any TObject value. I mean it gets there in the second sentence, but starting with Yes is poor. Classic AI people pleaser stuff! I then gave it some more recent SO questions and I have to say it did a good job. I'm quite interested in this concept though, and we've been working on something similar for our product because it's too niche for standard bots to know how to answer tricky questions.
  18. IIRC, Ian Barker is on for something like that. Not sure about the content and how much is covered. I will talk to him about that next week when meeting in person.
  19. There's also a fairly rich documentation available online.
  20. Vincent Parrett

    New Delphi features in Delphi 13

    Is that a problem? If so, why? Yes - applications should not be installing root certificates into windows - the only scenario where I can see this being needed is when using self signed code signing certificates - which is happening more an more in enterprises for internal applications/scripts - especially ones where internet access is limited.
  21. Stefan Glienke

    New Delphi features in Delphi 13

    I haven't found a critical regression in the past 24 hours.
  22. Lars Fosdal

    New Delphi features in Delphi 13

    What you really need, really depends on each person. You obviously can't satisfy everone every time.
  23. I have some issues with your implementation: IPv6 networks are not supported. The client request is needlessly wordy. The client broadcasts to 255.255.255.255 instead of to the subnet's actual broadcast IP. Some routers block traffic to 255.255.255.255 by default. In case the client is run on a machine with multiple networks installed (VPN, etc), there is no option to let the user decide which network to broadcast to. The client is using separate UDP sockets to send the request and read replies. You are forcing the client to receive on a specific listening port. The server is not sending its reply back to the real port that actually sent the request. Most routers will block this traffic if port forwarding is used. On the server side, always reply to the sending port. On the client side, either 1) let TIdUDPClient read replies on its sending port, or 2) let TIdUDPServer send the request on its listening binding. Use one or the other, not both. Doesn't use Indy's TIdStack.GetLocalAddressList() method to discover local networks (at least on Windows, as it may have issues on Android). Since your goal is to allow a TCP client to discover a server, I would opt to get rid of the TIdUDPServer on the client side, and just use TIdUDPClient by itself. Send a request, read a response, done. You don't need to make that process asynchronous with TIdUDPServer in most use cases. Using TIdUDPServer on the client side makes more sense if you want to discover multiple servers and then let the user choose between them, or to leave it open so servers can just broadcast their presence over time.
  24. Uwe Raabe

    A smart case statement in Delphi?

    You don't even have to provide that function as long as the strings matches the enum identifiers: s := 'three'; case TRttiEnumerationType<TMyStrings>.GetValue(s) of zero: writeln('zero'); one: writeln('one'); two: writeln('two'); three: writeln('three'); four: writeln('four'); end; Or if you prefer a more readable approach: type TMyStrings = (zero, one, two, three, four); TMyStringsHelper = record helper for TMyStrings public class function FromString(const AString: string): TMyStrings; static; end; class function TMyStringsHelper.FromString(const AString: string): TMyStrings; begin Result := TRttiEnumerationType.GetValue<TMyStrings>(AString); end; ... var s := 'three'; case TMyStrings.FromString(s) of zero: writeln('zero'); one: writeln('one'); two: writeln('two'); three: writeln('three'); four: writeln('four'); else Writeln('What?'); end;
×