Leaderboard
Popular Content
Showing content with the highest reputation on 03/03/23 in all areas
-
The What's New presentation made a point of the number of issues that were fixed for 11.x versions - nearly 3k of them. The amount of issues highlights the need for a change in their development process. The marketing driven release process needs to come to an end, and a quality driven release process to replace it. There are many good developers in the team, but there is not enough time/resource to ensure that quality is the primary goal. There also seems to be developers that write code that really is sub par, but no process that corrects it. Instead, it seems to be, "let's add this cool new feature for the sales guys and release it on this pre-determined date to make sure marketing can maximize their campaigns". That needs to change.
-
An OpenAPI Parser is a tool used for parsing and validating OpenAPI specifications. OpenAPI is a specification for building APIs that defines a standard language-agnostic interface for RESTful web services. Now you can use the sgcOpenAPI Parser to import any OpenAPI Specification and generate the required Delphi / Pascal interface methods to interactuate with the API. The sgcOpenAPI Parser supports the following specifications: - OpenAPI 3.* - Swagger 2.* (automatically converted from 2.0 to 3.0) - Swagger 1.* (automatically converted from 1.0 to 3.0) The sgcOpenAPI Parser has been used to generate the following pre-built SDKs - Amazon AWS SDK (+280 Services) - Google Cloud SDK (+250 Services) - Azure SDK (+650 Services) - Microsoft SDK (+15 Services) More Info: https://www.esegece.com/openapi https://www.esegece.com/community/blog https://youtu.be/yCpRTm_KZ7I Trial Version: https://www.esegece.com/openapi/parser Kind Regards, Sergio
-
It's entirely possible to have a compiler that is fast during development / debug builds, but takes more time to optimise for release builds. So much Stockholm Syndrome in Delphi-land!
-
That's what the Release method does. Much easier with Release.
-
Lars and CDL: Yes, the final release of XML Mapper 11.3 is just around the corner and for right now it will still be distributed via GetIt. In the mean time, as suggested by Lars, you can get the 11.3 Beta XML Mapper to explore the new features. The companion document highlights the bugs fixed and the limitations of the beta. I will let you know once the final release is available for you to install. PS: Yes !! If you find something please report it via Quality Central !!
-
I don't see why there should be compromise. I want great tools and efficient code output.
-
I did not need to recompile my third-party 11.2 packages (TMS Components, LMD Components, Intraweb), so I guess 11.3 is binary compatible to 11.2. I certainly wouldn't mind having a thorough 2-pass compiler producing fast and tight executables for release mode. But during development and debugging I prefer F9 to be fast.
-
Binary compatibility for packages isn't something that bothers me. I mean, you get a major new upgrade and that happens anyway. But better code gen wouldn't mean changes to binary compatibility for packages. Also is 11.3 even binary compatible with 11.2 packages? Why do I want a single pass compiler? I'm not the end user. I want to deliver a program that runs quickly. Am I going to tell my customers, I don't want to deliver a program that runs twice as fast because then I wouldn't have a single pass compiler. Why do my customers care about single pass compilers? Is that something that your users talk to you about?
-
ChildForm sest Action to caFree on OnClose event handler Owner calls FreeNotification(ChildForm) after creating the childform. Owner overrides Notification() and when it receives notification, that childform is freed, then sets variable to nil (or whatever needs to be done). Owner calls RemoveFreeNotification(ChildForm) when it is going to manually free childform or when owner itself is going to be freed.
-
Installing patchs after the release before working on it should be a reflex. 😉 (in fact, I supposed it was installed, a thing to ask next time)
-
You have to use Release instead of Free or Destroy. Release will defer the actual Free until after all events handlers are done.
-
You can use WIndows messages via PostMessage to notify the owner. With that said, if a third component is controlling the lifecycle of said form it's better to review your program design. E.g. have a class which is showing / hiding forms, and create your forms with (nil) as owner.
-
Frustration at my dev tool lagging behind. The editor is the least of my worries. It's the poor and never changing performance of the code emitted by the compiler that frustrates me the most.
-
Which SQL Engine? One table scan for whatever you want. -- Assuming that Field type is TINYINT NOT NULL 1/0 SELECT SUM(T.Field1) AS SumField1, SUM(T.Field2) AS SumField2, .. FROM Table1 AS T; -- If you want special values. Or you can use IIF() SELECT SUM(CASE WHEN T.Field1 = 'SomeTextValue' THEN 1 ELSE 0 END)) AS SumField1, SUM(CASE WHEN T.FieldMixed = 7 THEN 1 ELSE 0 END)) AS SumMixed7, SUM(CASE WHEN T.FieldMixed = 31 THEN 1 ELSE 0 END)) AS SumMixed31 .. FROM Table1 AS T; Optionally if you prefer rows instead of columns you can use UNPIVOT + SUM + GROUP BY (for MSSQL, I don't know with other SQL engines that much but probably there is similar feature too)
-
Project to create a language definition in BNF format started
Marco V replied to TurboMagic's topic in RTL and Delphi Object Pascal
The problem is that while that philosophy works well with reasonably clean languages that were designed top down using a grammar, it often doesn't work very well to retrofit to languages that weren't, or have seen decades worth of ad-hoc expansion with attempts at backwards compatibility. The delphi dialect is much more complicated then most people think. Note that if you get something working, you might want to try to push selected parts of the Free Pascal compiler test suite through it to iterate and harden the grammar against corner cases. But one of the problems of grammar driven solutions is that you need to duplicate many rules for each exception making the grammar unworkable at some point. Also, for something functional you often also need some form of semantic analysis, and Delphi has quite some implicit conversions (that then e.g. wreak havoc on e.g. overloading selection). -
Well, at least it told you what happened so you can fix or work around it 🤦♂️