-
Content Count
3674 -
Joined
-
Last visited
-
Days Won
181
Everything posted by David Heffernan
-
Need to Remove the PixelsPerInch and TextHeight fake properties
David Heffernan replied to Javier Tarí's topic in VCL
If you remove PixelsPerInch from the DFM then you'll find that your form layouts break different devs modify forms if their machines use different font scaling (i.e. DPI) settings. In my workplace we handle this by requiring all modifications of forms to be made using a common font scaling setting. -
In the OP you also write an implementation for each different type. So where is the saving?
-
It's not double the work.
-
I would absolutely not want syntax like that. If that's the way you want to go you can do it today with generics. In an ideal world I'd like to see the generality offered by C++ templates though. That would allow algorithmic programming that is just too painful with generics.
-
You mean with the code from OP?
-
This seems worse than method overloading to me. There you have compile time branching. Here you have to perform runtime type checking.
-
Rethinking Delphi’s management of floating point control registers
David Heffernan posted a topic in RTL and Delphi Object Pascal
Rethinking Delphi Floating Point Control Register Management.pdf -
Rethinking Delphi’s management of floating point control registers
David Heffernan replied to David Heffernan's topic in RTL and Delphi Object Pascal
I don't think so. You want to be able to define a default FPCR for new threads, so just making those vars threadvars doesn't achieve that. But in any case, why have threadvars for something that is already part of the thread context? That makes no sense to me. -
Rethinking Delphi’s management of floating point control registers
David Heffernan replied to David Heffernan's topic in RTL and Delphi Object Pascal
That's a different race though. At least when you call Set8087CW then you know what happens in your thread. But you can still end up modifying things in other threads I guess. -
Rethinking Delphi’s management of floating point control registers
David Heffernan replied to David Heffernan's topic in RTL and Delphi Object Pascal
No. That can result in a change to the floating point control state in a different thread, due to the data race on the global var. -
Rethinking Delphi’s management of floating point control registers
David Heffernan replied to David Heffernan's topic in RTL and Delphi Object Pascal
32 bit processes on Windows aren't going away anytime soon. It's actually not hard to change the runtime to address these issues, which can effectively be summarised as isolating threads from each other's execution contexts. I would imagine that Emba don't do it because they perceive that the benefit is too small in comparison with other candidate developments. And remember that I'm proposing a breaking change in behaviour which always raises the bar. Personally I feel that it's important to build on solid foundations. We've just had a huge breaking change by the killing of ARC. So breaking changes can happen. And by the token that a minority of users care about floating point, breaking changes in this area won't affect many people. And surely those that are affected would by and large appreciate the change. -
Rethinking Delphi’s management of floating point control registers
David Heffernan replied to David Heffernan's topic in RTL and Delphi Object Pascal
I don't think so. It's very important that code behaves the same way for both 32 and 64 bit compilers and indeed for the non Windows platforms too. -
I have noticed that the list of units that the plugin offers includes those that are loaded but not visible in the IDE. In my case this means units loaded because of visual form inheritance. So with a base form and a derived form, suppose that you load just the derived form. Well, both of the forms are offered by the plugin even though the base form isn't visible in the IDE. Is that intentional?
-
Varialbe set to nil
David Heffernan replied to Alberto Paganini's topic in RTL and Delphi Object Pascal
That happens when the variable is destroyed, which is when the destructor is executed. -
https://stackoverflow.com/questions/4618743/how-to-make-messagedlg-centered-on-owner-form
-
Rethinking Delphi’s management of floating point control registers
David Heffernan replied to David Heffernan's topic in RTL and Delphi Object Pascal
They both have seen the document already. -
Yeah, that's Quality Portal, the new place for reporting bugs. I submitted loads of reports at the old place, Quality Central, and then Emba killed it, along with all the bug reports. We were asked to resubmit the reports that we cared most about. Which was a load of work that I couldn't face.
-
QC107411 But QC is dead. Or did it come back to life?
-
For me it is not money. I have later versions than XE7. For me there is no benefit to updating. Nothing released since XE7 has any significant benefit for me. For sure there are some minor things but nothing that really makes it worth the effort. And it is an effort for me because I have a whole bunch of patches that I apply to the RTL to address design flaws primarily in its handling of floating point. That requires bespoke code for each version and I don't currently think it is worth it. Plus I'd have to spend some time working with multiple versions because I need to maintain recent releases of our software. Now, if Emba did something about the very poor performance of the compiler code that dcc64 emits, I would upgrade without hesitation.
-
In addition to constraining the window's size, you should consider giving the user visual feedback for their attempts to resize. Do this by handling the WM_NCHITTEST message: https://docs.microsoft.com/en-gb/windows/win32/inputdev/wm-nchittest type TForm1 = class(TForm) protected procedure WMNCHitTest(var Message: TWMNCHitTest); message WM_NCHITTEST; end; .... procedure TForm1.WMNCHitTest(var Message: TWMNCHitTest); begin inherited; case Message.Result of HTLEFT,HTRIGHT: Message.Result := HTCAPTION; HTTOPLEFT,HTTOPRIGHT: Message.Result := HTTOP; HTBOTTOMLEFT,HTBOTTOMRIGHT: Message.Result := HTBOTTOM; end; end;
-
This is really excellent. It works a treat in XE7. Thank you. I have one very minor suggestion. I wonder if it would be prudent to add a namespace to all your unit names to avoid potential clashes. For instance, one of your units is named Main and I bet there are other packages around that use that name. With a namespace prefix you sidestep any such pitfalls.
-
One more memory leak and FastMM4
David Heffernan replied to Alberto Paganini's topic in RTL and Delphi Object Pascal
I can't believe that spring's DI container requires all interfaces to have lifetime controlled by reference counting. I suspect that you've been given a dud steer with all this reference counting code that you've added to your data module. @Stefan Glienke would be in a better place to give guide you. He also might be able to compile this code where I can't because I guess I'm using a different version of spring from you. -
One more memory leak and FastMM4
David Heffernan replied to Alberto Paganini's topic in RTL and Delphi Object Pascal
Can't you make a minimal example? That's so important. I can't stress highly enough how important it is to make the example minimal. -
No. It's exactly what I said. You have to wait for the process to terminate. I was commenting that your explanation was wide of the mark.
-
Not really. If you want the exit code you need to wait for the process to terminate. The exit code is only available after the exit. A GUI app doesn't attach to the console at all so it's about the consoles that are involved.