Jump to content

Tommi Prami

  • Content Count

  • Joined

  • Last visited

  • Days Won


Tommi Prami last won the day on August 23

Tommi Prami had the most liked content!

Community Reputation

63 Excellent

Technical Information

  • Delphi-Version
    Delphi 10.2 Tokyo

Recent Profile Visitors

The recent visitors block is disabled and is not being shown to other users.

  1. Tommi Prami

    Handlin the message and returning value to the caller

    Thanks man! Some Windows messages in Delphi guru should write detailed blog post. There was examples but could not find any that would explain all the plumbing and returning values. 😄
  2. Tommi Prami

    Handlin the message and returning value to the caller

    We acquire HWND of window first then we try to poll window couple of seconds, when status is set, we close from . This is GUI testing AutoIT script which should poll that particular form.
  3. I would really love that crlt+click would behave same as on inherited keyword. so I could also jump to the palace it is overridden from in interface section as from in implementation (if inherited call is there), this would help even more if the implementation doesn't have inherited call. https://quality.embarcadero.com/browse/RSP-34573 -Tee-
  4. I am bit lost on how I can handle user message and return value to the caller app, which is using SendMessage API. I've got following code UM_STATUS = WM_USER + 333; ... // On form procedure WmPrintPreviewStatus(var Msg: TMessage); message UM_PRINT_PREVIEW_STATUS; // and implementation procedure TMyForm.WmStatus(var Msg: TMessage); var LResult: NativeInt; begin LResult := 1; if Assigned(FStatusObject) then if FStatusObject.Status = statFinished then LResult := 2; Msg.Result := LResult; end; What I am now more than less confused that message structure in MSDN looks pretty different (below) and Will my code work, so that caller can use something like MyResult = SendMessage(HWND, UM_STATUS...) typedef struct tagMSG { HWND hwnd; UINT message; WPARAM wParam; LPARAM lParam; DWORD time; POINT pt; DWORD lPrivate; } MSG, *PMSG, *NPMSG, *LPMSG;
  5. We got hit by date/time string literals in the code. Someone was using different locale and app crashed and burned 🙂
  6. What is disadvantage and/or deal breaker not to use Attribute based library? Why it won't work for you? (Just genuinely curious) ?
  7. I'd do it some other way, ad begin end and comment in between or something that it is more clear. (Thee was better version by earlier, so skip this 🙂 )
  8. That seems to be correct, thousands separators are not accepted, so have to first handle them self.
  9. with MainForm, ButtonCancel do ... with MainForm do with ButtonCancel do ... Nested with clauses are pure evil to refactor out. If it is complex code and there are common properties (Like Caption in VCL on above) how to decode which is which. Made feature request of this one way way back. Hope they make refactorer that would cast the first stone, so can manually refactor rest. : https://quality.embarcadero.com/browse/RSP-18953
  10. StrToDate('2021/12/31'); Using StrToDate() etc with Date/Time literal in code, that most likely will fail in other locals than yours, Also the EncodeDate etc routines giving numbers is better IMHO.
  11. try .. except end; eating all exceptions without commenting why exactly, and why it isn't or can't be something more specific.
  12. IntToStr(LDataSet.AsInteger); Could use AsString directly.
  13. try ... finally end; Empty finally blocks, maybe .free call is missing or after refactoring it has become obsolete but left behind. Not sure can the compiler optimize that out, that seems to me unneeded code that should be removed or fixed other way.
  14. if A > B then; ... if A > B then A := B else; Semicolon right after the then or else is legal syntax, and can be used rightly, but I think those are possible point of errors and not easy to spot