Jump to content

dummzeuch

Members
  • Content Count

    2636
  • Joined

  • Last visited

  • Days Won

    91

Everything posted by dummzeuch

  1. dummzeuch

    Patch for Delphi 11 Alexandria available

    If I remember correctly there is a "do not show again" checkbox in the dialog.
  2. Yes, definitely. Otherwise strange things will happen sooner later. Usually later, when you have completely forgotten that you did this.
  3. dummzeuch

    Patch for Delphi 11 Alexandria available

    Actually that is a warning message and it can be turned off.
  4. dummzeuch

    A nice scaled false bug in Delphi 11 update 1

    Width and Height are not stored for a form, haven't been for a long time. ClientWidth and ClientHeight are.
  5. dummzeuch

    Patch for Delphi 11 Alexandria available

    Worked for me. (Which is an improvement because installations via Getit used to fail most of the time.)
  6. dummzeuch

    Hot Reload in Delphi?

    I use it often to repeat a call to a function where I missed something when stepping trough the first time. Works without a problem for this and saves the time to restart the processing. e.g.: SomeCodeHere; try SomeFunctionCall(SomeParameters); // <== Code raised an exception I need to investigate except on e: Exception do LogException(e); end; SomeMoreCodeHere; // <== so I place a breakpoint here // (after the debugger stopped on the exception) // and then set the execution point back to the function call Of course after that the call stack may be broken, but usually I stop the process anyway to fix the problem.
  7. Looks like you are using GExperts. If yes, turn off the "Goto Previous Modification" and "Goto Next Modification" experts and see whether that solves the problem.
  8. While I agree with you that that's the best use of limited resources, the promise of supporting older versions as part of the subscription still stands, and we paid for it. One could call that a breach of contract.
  9. There is now a GExperts project in the svn repository, that compiles with Delphi 11 (see .\projects\DelphiXx110Alexandria). If you don't know already, there is a page on my blog telling you how to compile your own DLL. It mostly seems to work too, but there are quite a lot of caveats, most related to the new High DPI awareness of the IDE. The simple workaround, if you value GExperts functionality more than the High DPI awareness: Start Delphi with the "Delphi 11 (DPI unaware)" start menu entry. This also fixes quite a few display quirks I have already found in the new Delphi version. If you do that, you should probably also disable all the experts that you don't need, because I haven't tested many of them on Delphi 11 yet at all and they might have undesired side effects even if not actively used. Unfortunately the trick Uwe Raabe blogged about, for using High DPI unaware forms in High DPI aware applications doesn't seem to work. I tried to change the code for opening the GExperts configuration dialog like this: procedure ShowGXConfigurationForm; var previousDpiContext: DPI_AWARENESS_CONTEXT; frm: TfmConfiguration; begin previousDpiContext := SetThreadDpiAwarenessContext(DPI_AWARENESS_CONTEXT_UNAWARE_GDISCALED); try frm := TfmConfiguration.Create(nil); finally SetThreadDpiAwarenessContext(previousDpiContext); end; try frm.ShowModal; finally frm.Free; end; end; But it changed nothing. The Dialog is still displayed too small to comfortably use on a 4K monitor with scaling set to 150. I'll try to get this sorted. Any help will be appreciated.
  10. dummzeuch

    The state of GExperts Support for Delphi 11

    One or multiple monitors? Which resolution and DPI?
  11. dummzeuch

    The state of GExperts Support for Delphi 11

    There is a now an installer for version 1.3.19 Alpha of GExperts for Delphi 11.
  12. dummzeuch

    The state of GExperts Support for Delphi 11

    I'm making progress with the dockable forms. The custom drawn listboxes in both, the Editor Bookmarks and the Grep Results form should now be drawn correctly on high DPI and low DPI monitors. Other dockable forms will probably be broken now while they looked OK before. This also fixed some issues for non DPI aware versions of GExperts. Also I think the drawing errors for comboboxes should now be fixed. One major headache that's left are the icons on toolbars. They get lost when moving a form between two monitors with different DPI. No idea yet, how to fix this.
  13. The following method is supposed to find the first entry that has a FReader.Data.Time <> 0 and return this Time and the associated MeasurementTime. If it doesn't find an entry, it raises an EMyException. FReader is an object to access records like in an array or a file of record, Seek(Idx) selects the record at the Idx'th position. Which implementation do you think is easier to understand? procedure TBla.SearchValidEntry(out _UtcValid, _TimeByUtc: TMeasurementTime); var i: Integer; Utc: TMeasurementTime; IsValid: Boolean; begin IsValid := False; for i := 0 to FReader.Count - 1 do begin FReader.Seek(i); Utc := FReader.Data.Time; if Utc.IsZero then begin Continue; end else begin _UtcValid := Utc; _TimeByUtc := FReader.MeasurementTime(i); IsValid := True; Break; end; end; if not IsValid then begin raise EMyException.CreateFmt(_('%s has no valid times'), [FReader.DataFilename]); end; end; vs. procedure TBla.SearchValidEntry(out _UtcValid, _TimeByUtc: TMeasurementTime); var i: Integer; Utc: TMeasurementTime; begin for i := 0 to FReader.Count - 1 do begin FReader.Seek(i); Utc := FReader.Data.Time; if not Utc.IsZero then begin _UtcValid := Utc; _TimeByUtc := FReader.MeasurementTime(i); Exit; end; end; raise EMyException.CreateFmt(_('%s has no valid entry'), [FReader.DataFilename]); end; I realize that both use "Anty-Patterns", the first Break and Continue in the for loop, the second an Exit in the for loop. Could the implementation be improved?
  14. Not sure I understand what you mean here. Which pointer are you talking about? And why do you think it's being reset? Depending on how the reader is implemented Seek would read a record from a file (already with a buffered stream) or from an internal data structure. In this particular case it just accesses data already read into an array. It is serious in this case. The data in that file (and those associated with it) would be unusable and processing it should be stopped.
  15. That name is based on the Seek function for a file of record. Usually the reader (we have many of these for various file types) is a thin wrapper around a file of record. Depending on the file type that "thinness" varies though.
  16. dummzeuch

    D11 - A bridge too far.. :-(

    Why should they? There apparently are enough people who pay the full price for the privilege of becoming beta testers. And I have to include myself in that. (OK, it's not my own money. I wouldn't pay for this.)
  17. I think "shouting" would be a better word for what you mean. But I agree. My Comment usually looks like this: if bla then Exit; //==> Not quite as "loud" but at least a bit more visible than a simple "Exit"; Of course, given structural highlighting this is not quite as important nowadays as it was on the olden days.
  18. I for one prefer "Egyptian begin/end". And I like the name. 😉
  19. dummzeuch

    D11 - A bridge too far.. :-(

    Who says that they weren't? You left out the important second part of my sentence: "... and should have been fixed before the release "
  20. dummzeuch

    D11 - A bridge too far.. :-(

    Many of the still existing problems should have been found during the beta tests and should have been fixed before the release. The current state of D11 should be considered public beta, not ready for production, but they charge for it (quite a lot). It's a hen and egg problem really: E.g. The VCL designer is not usable in the current state (IMHO), so why should one use it? But if nobody uses it, the bugs will not be found, reported and fixed.
  21. In general, you are right. In that case I would have called the function TryGetFirstValidEntry or something similar. In this particular case it is an error if there is no valid entry. This method was only added because the first entry did not have a valid time which caused an error elsewhere. We added a search for the first valid entry because of that. If there is none, some manual action is required. Thinking about this: The method should probably be called GetFirstValidEntry rather than SearchValidEntry. Break and Continue are considered special cases of Goto by some (and I tend to agree because they usually decrease readability).
  22. Good Point. In that case I'd would have two methods: a function TryXxxx which returns a boolean a proceuder Xxxx which calls TryXxxx and raises an exception if that returns false
  23. OK, how much are you going to pay for such a filter then? 😉
  24. dummzeuch

    Reinstalling Delphi 10.4 after PC Crashed

    I'd go with CloneZilla for image backups. There is no GUI but it's simple to use, once you understood how it works.
  25. dummzeuch

    Reinstalling Delphi 10.4 after PC Crashed

    It's a common misconception that all software development should and can be done in virtual machines.
×