Jump to content

Leaderboard


Popular Content

Showing content with the highest reputation on 04/20/21 in all areas

  1. Anders Melander

    MAP2PDB - Profiling with VTune

    It turned out that the culprit was the version of msdia140.dll that came bundled with the version of VTune I'm using. There's a bug in it that causes exponential slowdown on large pdb's. Replacing the dll with a new version fixed the problem. The symbol resolve time of my test project fell from hours/days to ~10 minutes. The old msdia140.dll was version 14.10.25017.0, the new is 14.28.29913.0. Any version from VS2019 or later should do AFAIK. A side effect of trying to solve this performance problem was that I added segment/section filters. You can now specify what segments to include/exclude from the pdb. For example since almost all code is in segment 0001 you can exclude all modules and symbols that reside in other segments. This can cause a significant reduction in the size of the pdb. Try this: map2pdb -v -include:0001 foobar.map or try with the -debug switch to get all the details. I'm considering just adding this 0001 filter as a default. I've uploaded a new version (2.6) with all the latest changes (there aren't that many): https://bitbucket.org/anders_melander/map2pdb/downloads/ Also the repository finally has a readme.md
  2. Dalija Prasnikar

    Delphi 10.4.2 Professional

    As long as we have power, all is good
  3. Anders Melander

    Delphi 10.4.2 Professional

    How does a transparent case and fans with LED lighting help with that?
  4. Bill Meyer

    Delphi 10.4.2 Professional

    https://www.clickykeyboards.com Has new and restored IBM keyboards from 25-30 years ago.
  5. Anders Melander

    Delphi 10.4.2 Professional

    @Dany Marmur My own desktop system is built around a 9 year old Asus mainboard in a 16 years old Lian Li PC-V2100B Plus II case. AFAIR I upgraded the CPU 5 years ago. It was built from parts, so fairly cheap, and it works fine. I've never had much success (performance) with the prebuilt systems my various employers have forced on me. No matter how much money they used on it. My laptop though is a Lenovo Thinkpad X1 Extreme but I seldom use it. I need a mans keyboard 🙂 Wow. Looking at the picture I just noticed the gunk between the keys 🤮. I usually don't look at the keyboard.
  6. Tom Chamberlain

    Transforming Data (Pivot ?)

    Create/load a TClientDataSet (or TFDMemTable) on the fly every time the user picks a different DataSet by reading the distinct Settings values within the DataSet and creating columns for each Setting (replace spaces with underscores or something) and if you know the data type of the Setting even better. Then load the data by reading the DataSet and dropping the data into the correct column by the Setting name, when the Instance changes start a new record in the TClientDataSet, repeat. Then you can display the data any way you would like. You could do the same thing with a couple of dynamic arrays, one to hold the columns and another to hold the data if you don't need to know the data type in each column.
  7. Hello, Recently we had to switch to using Project Groups because the delphi compiler ran out of memory, particularly on 64 bit. We created one project that is a console project, that is basically used to create dcus. The a second project that uses those dcus, and compiles other dcus as well. This second project makes the actual EXE. Even though the first project is essentially a "dcu generator" and it is an empty console application (the dpr has a whole bunch of units in the Uses clause, and the following main code) begin try { TODO -oUser -cConsole Main : Insert code here } except on E: Exception do Writeln(E.ClassName, ': ', E.Message); end; end. It still generates an EXE in excess of 100MB. In addition, the time it takes to link and create the EXE is about 2/3 of the time to generate the dcus. However, we dont even need the EXE from the first project. Is there a way to just generate the DCUs but not create an actual EXE?
  8. angusj

    Resource Hacker

    Resource Hacker A resource editor for 32bit and 64bit Windows applications. It's both a resource compiler and a decompiler - enabling viewing and editing of resources in executables (*.exe; *.dll; *.scr; etc) and compiled resource libraries (*.res, *.mui). Resource Hacker also provides many options for compiling and decompiling resources from the command-line. http://www.angusj.com/resourcehacker/ Download: http://www.angusj.com/resourcehacker/reshacker_setup.exe
  9. Anders Melander

    Delphi 10.4.2 Professional

    Not really. Many of them are cheaper than a quality Cherry MX keyboard. And in case of zombie apocalypse you are well prepared. https://i.imgur.com/g2Yo3.gif (no inline GIFs...? 😕)
  10. Anders Melander

    Delphi 10.4.2 Professional

    AFAIK Unicomp bought the rights to the key design but unfortunately they missed the fact that it's just as much the quality that made this keyboard the legend it is. From what I've read the money are better spent on a used original IBM (or Lexmark) model M. Nice!
  11. malobo

    Delphi 10.4.2 Professional

    Great!!!! That was exactly !!! Thank you!!!
  12. Dalija Prasnikar

    Delphi 10.4.2 Professional

    You can also try disabling package cache, it helped in my case. You need to edit registry key HKEY_CURRENT_USER\SOFTWARE\Embarcadero\BDS\21.0\Package Cache and then set the DisableAll value to 1. If it does not exist add new DWORD value with that name. But 10-12 seconds is really long time. Maybe something else is in play. If disabling Live Bindings and package cache does not help I would recommend filing bug report at https://quality.embarcadero.com/
  13. Anders Melander

    Delphi 10.4.2 Professional

    Have you disabled LiveBindings?
  14. Clément

    Transforming Data (Pivot ?)

    DxPivotGrid should give you the expected results. It's a matter of setting accordingly the rows , columns and values. The trick is to transform the "Operational data" to "Pivotable data". Having "true" in pivot table is not meaningfull.. but display 75% Oil Ok will indicate something is wrong and your user will figure out what's ( or where it's) wrong by drilling down.
  15. mvanrijnen

    RegEx performance

    We check the email address just with delphi code, implemented the rules needed. Also check the TLD against a TLD table, and we check if the email address is really accepted. (lookup mx, and simulate sending a mail, with most servers you can check if the email address is known to the server. (catch all addressess are always ok, thats a thing),. With this method we known which customers we need to contact to get a new valid email address. (our company does not have a customer portal, so we need to check everything ourselves)
  16. Anders Melander

    MAP2PDB - Profiling with VTune

    Works for me so there was probably something wrong with the pdb at that time. I've tried both with a small and a very large application. On the positive side uProf resolved a lot faster than VTune but I'm a bit surprised about how basic the uProf feature set is and I can't really imagine what I would use it for. Also, it has pie charts... WTF?
  17. Anders Melander

    Delphi 5 Printing

    TPrinter/TCanvas is GDI printing. It's likely that there are bugs in TPrinter in Delphi 5 that has since been fixed. I seem to recall that there were quite a lot of them. Buffer overflows and whatnot. What has happened is probably that your application has been using GDI in a way that was invalid but was worked around by Windows and now they've stopped working around it.
  18. David Heffernan

    Delphi 5 Printing

    Well, how are you printing at the moment, if not using GDI? And GDI printing must be like 30 years old now.
  19. DiGi

    RegEx performance

    I hope you will use https://emailregex.com/ - because invalid "email validations" are common and annoying.
  20. Remy Lebeau

    Issues with Sleep(1) called in a loop

    And also: https://stackoverflow.com/questions/9518106/winapi-sleep-function-call-sleeps-for-longer-than-expected
  21. Stefan Glienke

    Forum for Spring4D

    But what if I would not answer there 😉 Seriously - I understand people getting their area here if they don't have their own place already - Spring4D already has its own place.
  22. David Heffernan

    Issues with Sleep(1) called in a loop

    Answer can be found in the documentation of Sleep. Sleep can only wait for multiples of system ticks. And your system appears to tick at a frequency of 15ms. Which is typical, that being the default tick frequency. There are many many discussions of this online. Here's one: https://stackoverflow.com/questions/3744032/why-are-net-timers-limited-to-15-ms-resolution
  23. ConstantGardener

    MAP2PDB - Profiling with VTune

    ....and "Better Translationmanager"!!!
  24. dummzeuch

    Decrease Your Build Time

    Why should programmers care about building times? https://xkcd.com/303/
×