Jump to content

Attila Kovacs

Members
  • Content Count

    2067
  • Joined

  • Last visited

  • Days Won

    27

Everything posted by Attila Kovacs

  1. Attila Kovacs

    TThread always raises OS Errror

    I understand his curiosity. It's only matters if there was an error which was not handled but it should have been. In 10.1 and 10.2 (the last release I have) the above example does not yield any error, GetLastError returns 0. You have to step through the app and look where it happens if you wan't to know. "Is this a known issue?" As others has also mentioned, it's not necessarily an issue, but a state.
  2. Attila Kovacs

    TStringGrid Sorting

    I don't know FMX, but normally a StringGrid is just a display and you sort the underlying data. But I don't know FMX.
  3. Attila Kovacs

    Slow IDE

    turn off you disk cache and check it again
  4. @Kas Ob. Everything fine with your test. Reverted back to 'a'+c+'xxx..' and the results are same as yours. However, changing 'xxx..' to something longer changes the game. It performs better on larger memory chunks, but therefore also uses a lot more RAM. Btw, now I understand why was it slower on the first couple of runs, it did not reach the barrier. FMM5 performs more homogeneous, seamless transition between the block sizes.
  5. @Kas Ob. Okay, I don't know how interesting is it. I've downloaded the SMM2 sources, changed the 'xxx..' stuff in the test dpr for some lorem ipsum cantus and my CPU is i7-3930K The two fastest runs: // Parallel For used : 8857900 ticks 32-bit // Parallel For used : 7113633 ticks 64-bit Edit: Under Berlin U2.
  6. for me SMM2 is faster on x64 as on x86, also SMM2 uses much more RAM as FMM5, so it's possible that FMM5 could be tuned to use more RAM and even less CPU (?).
  7. copy paste this post as a comment into your frame
  8. Attila Kovacs

    Prevent WM_VSCROLL on TScrollBox to be executed twice in a row

    I see. Then you could also check how Align "alCustom" works. It could save you some repainting/flickering.
  9. Attila Kovacs

    Prevent WM_VSCROLL on TScrollBox to be executed twice in a row

    No I didn't miss it, and if it works for you then fine. Just fyi, if you drag the thumb, there will be messages coming (more than 2) and if you release the mouse button SB_ENDSCROLL fires. So depending on what you need, "OnScrolling" (Message.ScrollCode <> SB_ENDSCROLL) or "OnScroll" (Message.ScrollCode = SB_ENDSCROLL) you can call your event if assigned. May I ask what do you have in those events?
  10. Attila Kovacs

    Prevent WM_VSCROLL on TScrollBox to be executed twice in a row

    If you were looking for "How to implement OnScroll events" you can trigger it on SB_ENDSCROLL and not on NOT SB_ENDSCROLL. But in this case your question was misleading and wasting our time.
  11. Attila Kovacs

    Prevent WM_VSCROLL on TScrollBox to be executed twice in a row

    That was never my intention to suppress standard windows messages. I answered the question: "I'm looking at this simple example to scroll 2 Scroll boxes at the same time." Does it scroll 2 scrollboxes the same time? (Vertically, I did not implement the horizontal scroll message)
  12. Attila Kovacs

    Prevent WM_VSCROLL on TScrollBox to be executed twice in a row

    There is a reason for the two calls. See msg.ScrollCode and https://docs.microsoft.com/en-us/windows/win32/controls/wm-vscroll Try this. TScrollBox = class(Vcl.Forms.TScrollBox) procedure WMVScroll(var msg: TWMVScroll); message WM_VSCROLL; end; procedure TForm1.ScrollBoxMouseWheel(Sender: TObject; Shift: TShiftState; WheelDelta: Integer; MousePos: TPoint; var Handled: Boolean); procedure SetPos(ScrollBox: TScrollBox); var NewPos: Integer; begin NewPos := ScrollBox.VertScrollBar.Position - WheelDelta div 5; // sensitivity NewPos := Max(NewPos, 0); NewPos := Min(NewPos, ScrollBox.VertScrollBar.Range); ScrollBox.VertScrollBar.Position := NewPos; end; begin SetPos(ScrollBox1); SetPos(ScrollBox2); Handled := True; end; var InScroll: Boolean; procedure TScrollBox.WMVScroll(var msg: TWMVScroll); begin inherited; if not InScroll then begin InScroll := True; try if Self = Form1.ScrollBox1 then Form1.ScrollBox2.Dispatch(msg) else Form1.ScrollBox1.Dispatch(msg); finally InScroll := False; end; end; end;
  13. Attila Kovacs

    Making method with default encoding

    for TEncoding you can set it nil as default and use your favorite one (as default) if the param is nil
  14. Attila Kovacs

    Object Inspector text color

    right click on the object inspector and properties, not sure for themed skin
  15. Attila Kovacs

    Profiler for Delphi

    @Fr0sT.Brutal I was starting like that but I wanted a human readable output. But yes, basically you are right.
  16. Attila Kovacs

    Profiler for Delphi

    As I could not find anything measuring the InitUnits, and it has its reasons, I come up with this poor mans profiler: Two breakpoints is System.pas, one on TProc(P)(); in "procedure InitUnits;" and the other on the very next asm line: Then right-clink on the red bullets, "Breakpoint properties" -> "Advanced" On the first one: (actually you don't need the "Log result" here) On the second: (I have attached the InitHelper.pas to this post.) And just run the app. It will take a time to finish, then you can save the Events and process/investigate the output. Of course, the measured times are higher because of the debugger, but it gives a very good orientation for finding bottlenecks. To check the unit, place a conditional breakpoint on "I" somewhere. InitHelper.pas
  17. Attila Kovacs

    License key system

    @David Heffernan Actually I do. Actually I was the first who did. No clue why are you chanting the same.
  18. Attila Kovacs

    License key system

    @David Heffernan I'm telling the same. The phrase you quoted was referring to the action "wiping a disk", if a "bug" could cause that, that bug doesn't have to be on purpose.
  19. Attila Kovacs

    License key system

    Well, it's a bit overdramatized, this would also mean that any bug could wipe a disk, or eject the DVD with a speed which cuts off the customers head. Doesn't matter if on purpose or not. But you are right, it's a very bad solution. I would rather afraid that if any result caused by a bug on purpose results in any health/material/monetary loss, one could be held accountable for the damages. Irrespective of the fact if a software was licensed or not.
  20. Attila Kovacs

    Why this code fail?

    @aehimself Ah, I see. You are right, it should be ok. I have also used a helper like this for centuries, it was error prone and annoying initializing the querys to nil. Which is obviously the problem what OP has, unitialized parameter. Then I switched to ORM, since then I can't stand such code anymore 😉
  21. Attila Kovacs

    Why this code fail?

    @aehimself If it's not marked as "var" the parameter is just a preinitialized local var which won't be freed, as this was a factory logic originally. Or am I missing something?
  22. Attila Kovacs

    Why this code fail?

    @aehimself "var" also enforces passing a variable to the method, in this case it would be bad if you could call it with nil. Anyway, this kind of lazy initialization will fail on local variables as they are not automatically set to nil, I would forget it forever.
  23. Attila Kovacs

    Where did I come from

    Same goes for checkbox too... Did you check TDBRadioGroup? Can't you use that instead?
  24. Attila Kovacs

    TEmbeddedWB in a 64 Bit application

    TWebBrowser is in SHDocVw.pas which has FSetExceptMask(femALLEXCEPT); in the initialization section. I don't know ~WB.
×