

chkaufmann
Members-
Content Count
164 -
Joined
-
Last visited
Community Reputation
18 GoodTechnical Information
-
Delphi-Version
Delphi 11 Alexandria
Recent Profile Visitors
8564 profile views
-
Yes PostgreSQL is powerfull, so from that point of view, it looks heavy. But there is a Windows installer, quite simple. I think it may even configured for "silent install". Firebird comes in two version, one is with an embedded server. This you can install by just copying some files. And another advantage is, that you have single file databases. The only disadvantage is, that the database file have to be on a local drive with the embedded server. We used Firebird in many projects, however, when a database becomes bigger (several million records), it became a bit tricky with performance when you do many updates / deletes. That's when I started to use PostgreSQL which is more tolerant here. And PostgreSQL supports native JSON and Gis features. Christian
-
PostgreSQL and UniDac. Christian
-
String Helper for NormalizeString
chkaufmann replied to chkaufmann's topic in RTL and Delphi Object Pascal
Thanks. I think the problem is solved. No errors anymore. Christian -
I created the following helper method to normalize Unicode strings with different representations of ä, ö, ü: function TBSStringHelper.Length: Integer; begin Result := TBSStringHelperCaller.Length(Self); end; function TBSStringHelper.NormalizeNFC: String; var bufLen : Integer; buffer : PWideChar; begin Result := Self; bufLen := NormalizeString(NormalizationC, PWideChar(Self), Length, nil, 0); if bufLen > 0 then begin GetMem(buffer, bufLen); try bufLen := NormalizeString(NormalizationC, PWideChar(Self), Length, buffer, bufLen); if bufLen > 0 then begin Result := buffer; SetLength(Result, bufLen); end; finally FreeMem(buffer); end; end; end; But when I use this function many times, I get a memory corruption error and at some point an access violation. What is wrong here? I'm on Delphi 11, Update 1. Christian
-
But when I look in WinApi.Windows.pas, then FindFirstFile maps to external symbol FindFirstFile (and not FindFirstFileW) for a parameter TWIN32FindData. It has to be TWIN32FindDataW, then FindFirstFileW is used. I'm still on Delphi 11, Update 1. So maybe this changed with the latest version? Christian
-
Blogged : Code Signing with Inno Setup and Signotaur
chkaufmann replied to Vincent Parrett's topic in Delphi Third-Party
Can I integrate Finalbuilder with this service? https://techcommunity.microsoft.com/blog/microsoft-security-blog/trusted-signing-is-in-public-preview/4103457 $ 10.- per month looks fair to me. Christian -
Since some years there is the unit IOUtils.pas. There are many duplicated functions: ExtractFileExt() - TPath.GetExtension() ExtractFileName() - TPath.GetFileName() FileAge() - TFile.GetLastWriteTime() My code uses SysUtils.pas in most places, and I'm not sure if I should change this to use the functions from the new unit IOUtils.pas because the others will be deprecated at some point? And is there a comparisation table anywhere? It looks like not all functions work exactly the same way especially when it comes to throw exceptions. Christian
-
I can't find this one anymore in the portal. Does it mean, it was fixed?
-
You mean get that exception? Maybe it's only when run the code with break points in the debugger. Anyway, it works fine now and get the details for my monitor functionality.
-
Thanks for the details. It seems, there are two connections when I send a GET request with postman. But in the first one I end method TIdIOHandler.RaiseConnClosedGracefully. When I test with the Chrome browser, there is only one context / connection. Christian
-
I try to use my own subclass for TIdServerContext to monitor the requests to my server. Now I sent a simple GET request with Postman to my server and noticed, that two context objects were created, but the OnCommandGet event is only called once. What is the reason for that? Then I plan to iterate all current requests like this: tmpList := IdHTTPServer1.Contexts.LockList; for i := 0 to tmpList.Count -1 do begin tmp := TMyContext(tmpList[i]); // read some info from tmp end; IdHTTPServer1.Contexts.UnLockList; Can I be sure, that all items will be alive. Or is it possible, that one of the context items was freed before I could read info from it? Christian
-
I have a question regarding memory usage for strings. When I load a big number of persons, there are many hundred with the same name. Is this handled automatically so that there will be only one copy of the string for a certain name or should I write my own code for this? Or does it depend how the strings are loaded and to what kind of variable these are assigned? I didn't find a good source to read about this topic. Any hints for that? Thanks Christian
-
What are the performance profilers for Delphi 12?
chkaufmann replied to dmitrybv's topic in General Help
Just a question regarding Nexus Quality Suite: I looked at it some years ago and I noticed, if you have a big project, the performance for Line Timer / Method Timer was not very good when configuring which methods to trace and which not. Was there an improvement in this regard? And by the way: AQTime was a perfect profiler, I really miss it. Then it was aquired by SmartBear and since then it's terrible because the only improvement of the product they made was adding more and more annoying registration code. Christian -
Unfortunately Indy TIdFTP Client does not support SFTP. The discussions about this I found are already some years old. Is there a chance this will be added? And if not, what is a good alternative? I need something that can be fully integrated in my application so that it works for users who can just enter a servername, username and password. Christian
-
Avoid parameter evaluation
chkaufmann replied to Maxime Janvier's topic in RTL and Delphi Object Pascal
Clipper and I think Smalltalk had anonymous methods as well. And this at the time when Java was not even born. Christian