Jump to content


Popular Content

Showing content with the highest reputation since 12/03/23 in all areas

  1. Uwe Raabe

    How to break up an OnPaint event?

    If the drawing code is too time consuming for being called in OnPaint, you might consider drawing to a bitmap when something changed and draw that bitmap in OnPaint.
  2. Vandrovnik

    Delphi Version in profile

    I will never understand why such a bug is not repaired almost immediatelly - even if they just remove this optimisation. Now it looks that they are satisfied that D12 was released as planned and now f*ck you, users - we do not mind that this product is unusable, for us it was only important to release it. 😕
  3. Hi, my first post here. Sorry if this is not the right place, but i feel this is something that should be stated somewhere for others to find. I am running the small danish company Carsoft. We make a quit successful system, called Carsoft Planner for auto workshops, in Delphi. For years I have had the problem, that the main product was debugging fine, but smaller stuff would simply not debug in 64 bit mode! I have googled for hours and tried everything i found - setting firewall, changing all the different paths etc. etc. Now I am in the process of moving Delphi and all my sources to a brand new computer, and a brand new Windows 11. So I installed Delphi 12, moved the sources, and made a very small project "Hello world", just a button and a Showmessage. Put a breakpoint, Pressed F9 and no succes. Breakpoint not found! More googling etc. Finally i found a post somewhere mentioning use of non ascii characters in paths. In Denmark we have three extra letter "æøå" and i have used one of these in the folder name for my "small stuff". Changing my folder name solved the problem completely, everything now works as it should. This might be a well known fact around the world, but I have seen other having the same problem, with no solution, so my hope is this post can help. Best regards Lars
  4. David Heffernan

    Win 64 debugger not working

    That fabled focus on quality really paying dividends.
  5. Lars Fosdal

    Removing String

  6. Fritzew

    Delphi Version in profile

    The Bug with div [const] is a showstopper so Athens is not usable
  7. David Heffernan

    Delphi Version in profile

    Were just waiting for somebody to start using it I guess
  8. That is not even required. I have now found Inno Setup does it all for you. We are getting way out of Delphi topic here, but this is what I now have in Inno Setup, and it does it all: Tools>Configure Sign Tools: signtool="C:\Program Files (x86)\Windows Kits\10\bin\10.0.22621.0\x64\signtool" sign /a /fd SHA256 $f [Setup] SignTool=SignTool [Files] Source: "*.exe"; DestDir: "{userappdata}\SARTrack\exe"; Flags: recursesubdirs ignoreversion signonce Source: "*"; Excludes: "*.exe"; DestDir: "{userappdata}\SARTrack\exe"; Flags: recursesubdirs ignoreversion (where \SARTrack\exe is my destination dir) This signs *all* executables, then it signs itself.
  9. Lars Fosdal

    How to break up an OnPaint event?

    Something that is often overlooked is to limit the redraw frequency. If you redraw the display on every update and there are many updates per second, you may save a lot of time on triggering the invalidate at a capped rate, i.e. not do a full redraw every time, but update once every fixed time interval. Unless you are doing video processing - a redraw at maximum twice per second should be more than sufficient?
  10. FPiette

    How to break up an OnPaint event?

    Maybe you are doing computation in the OnPaint event. Decouple computation from presentation (the drawing). For the drawing itself, avoid drawing pixel by pixel on screen. Avoid having hundreds of components to draw. Avoid drawing invisible parts. Painting in a bitmap and then blasting the bitmap on screen could be faster than painting on screen directly.
  11. Ian Branch

    Uninstalled D11, now D12 won't start....

    Resolved. Deleted both Parnassus BookMarks & CoreEditor entries in the registry just to be safe, then used AutoGetit to reinstall it/them. All good now.
  12. Remy Lebeau

    Delphi 11, migrate or wait

    Better to use CompilerVersion (and RTLVersion) instead, then you don't need to update the defines every time a new version is released, only when you need to add a new define, eg: {$IF DEFINED(DCC) OR (CompilerVersion < 23)} {$DEFINE EC_DELPHI} {$IFEND} {$IF CompilerVersion >= 20} // Delphi 2009 {$DEFINE EC_UNICODE} {$IFEND} {$IF CompilerVersion >= 34} // Delphi 10.4 {$IF CompilerVersion < 35} {$DEFINE EC_VCL27} {$IFEND} {$DEFINE EC_VCL27_UP} {$IFEND} {$IF CompilerVersion >= 36} // Delphi 12 ... {$IFEND}
  13. Anders Melander

    How to break up an OnPaint event?

    Probably because of its size. Most Noto fonts are huuuge. Noto Color Emoji contains both COLR and SVG data. The COLR data is ~1Mb while the SVG data is ~18Mb... I'm not sure what you are saying here. Microsoft is the primary author of the COLR format and DirectWrite supports all the common color glyph formats: https://learn.microsoft.com/en-us/windows/win32/directwrite/color-fonts However, the client has to specify what format to use during Shaping and if the client asks for SVG glyphs then that is what it will use. https://learn.microsoft.com/en-us/windows/win32/api/dcommon/ne-dcommon-dwrite_glyph_image_formats You can try subsetting the font to exclude the SVG data and see if that makes a difference (apart from the 18 Mb data saved 🙂)
  14. Thanks, David. That was indeed what caused the exception. I noticed that pattern at least once in the docs I read and forgot. The pattern above was based on Objective-C code samples I studied. However, mine does not work as intended because the notification handler is not called back. I did not know about Kastri until now. I'll pursue the Kastri solution if tinkering with my own implementation remains fruitless. In any case, I just became a Kastri sponsor on GitHub. Thanks again.
  15. Remy Lebeau

    How to break up an OnPaint event?

    Then you are likely doing too much work in your drawing code. Or you are doing other things besides just drawing. Painting should be a quick task. Draw only what can be seen for the current state of your existing data, nothing more. Do not manage your data/UI in any way other than drawing. If you need to manipulate your data/UI, that has to be done outside of a paint cycle. That is not how UI painting works. You have to draw whatever your current state represents. After the painting is finished, if a state change occurs, then you can trigger a repaint to draw the updated state. No. Every paint cycle is a complete redraw from scratch. For each window/control that is being painted, you have to draw it entirely in a single cycle. And then again in the next cycle. And so on. You can Invalidate() an individual form/control to trigger a new paint cycle for it, but that requires you to redraw it entirely from scratch when that next cycle begins,
  16. David Heffernan

    Removing String

    Your specification in the original post is incomplete so it's not surprising that people don't know what you want. Your clarification is still unclear. Until you can define precisely what you want the code to do how could you expect anyone, even yourself, to be able to write it.
  17. You may either measure the time for both way of doing it, of look at the assembly code generated.
  18. PeterBelow

    FirebirdSQL NaN value for numeric field

    TField.IsNull is the way to check if a database field is NULL. Do not rely on this conditions beeing mapped to a specific value.
  19. [SOLVED] I've put on app boot a on the main form : TFDPhysSQLiteDriverLink, with the property : EngineLinkage -> sIFDEStatic Maybee an idea do do that from code ?
  20. It's likely because you have an incompatible JDK present on the machine. This is a potential fix: 1. Make sure JAVA_HOME environment variable is set to the Adoptium JDK: JAVA_HOME=C:\Program Files\Eclipse Adoptium\jdk- 2. Add missing build-tools by going to: C:\Users\Public\Documents\Embarcadero\Studio\23.0\CatalogRepository\AndroidSDK-2525-23.0.50491.5718\cmdline-tools\latest\bin In a command prompt and issue these commands: sdkmanager “build-tools;33.0.2” sdkmanager “platforms;android-33”
  21. Dave Novo

    Intel Simd-sort library

    We write software that does scientific data analysis. We regularly have to sort arrays of millions of elements of data. But I recognize we are in the minority of developers.
  22. You didn't mention the Delphi version, but since Delphi 11 you can use the appropriate Sort overload taking a comparer, start index and count. procedure Sort; overload; procedure Sort(const AComparer: IComparer<T>); overload; procedure Sort(const AComparer: IComparer<T>; Index, Count: Integer); overload;
  23. It's this rich api that makes Spring4D collections worthwhile. The perf hit is still worth it for this alone. In a real world application (FinalBuilder) I have not noticed any perf issues that could be attributed to the spring4d collections, but then I'm rarely enumerating huge collections - certainly in my profiling efforts there were plenty of areas to optimise, but spring4d wasn't showing up as an area of concern in the profiler (vtune). Now if only we could have non ref counted interfaces (ie no calls to add/release) and we could implement interfaces on records - best of both worlds 😉
  24. I fully agree with that. The fact that open source libraries are not easy to use with RAD Studio or C++Builder is one of the biggest limitations. Installing via GetIt is nice, but much more important from my point of view is a reasonable support of CMake. I think you get young programmers at school and in the universities - there you set yourself on a "favorite IDE". Without the ability to compile open source libraries, Embarcadero is out of the race when it comes to generating young talents who use RAD Studio. What a pity! I am using VTK with RAD Studio - the only reason for that is because I am bound to the IDE with old projects. It would be cool if we put together in this thread or wherever C++ libraries that can be "somehow" compiled with RAD Studio. In cooperation with Embarcadero we should bring the open source capability forward piece by piece. PS Okay, I'm dreaming 😉
  25. Markus Kinzler

    Developer Express gave up on FMX

    Cross platform isn't just mobile. The features could be usable on MacOS or Linux, too.