Leaderboard
Popular Content
Showing content with the highest reputation on 01/16/25 in Posts
-
Interesting read: Static search trees
Tommi Prami posted a topic in Algorithms, Data Structures and Class Design
https://curiouscoding.nl/posts/static-search-tree/ I have no clue does the claim of 40x speed hold up, but if it is 40% speed up, that would be very nice 🙂 -Tee- -
Project Magician has an option for that:
-
TMS Academic program update for Delphi and C++ developers
TMS Software Sales posted a topic in Delphi Third-Party
From today, TMS Academic products are available for Delphi & C++Builder 12 Community Edition, and they're 100% free and fully functional for students and teachers working on non-commercial projects. If you're passionate about programming and want to excel in your education, join the TMS Academic program and start building amazing software with powerful tools like TMS FNC UI Pack, TMS Aurelius, TMS WEB Core, and more. Read the full blog post: https://www.tmssoftware.com/site/blog.asp?post=1306 -
This also happens with me all the time. There is no method to this madness. When developing with Delphi, I usually spend 10 - 15 % of my time reverting unwanted changes or being extra careful to not commit them. If you are not using any kind of version control, this is clear sign that you should start getting familiar with it now
-
So you're not using version control?
-
Reading and changing capabilities of Android Camera2 API
Dave Nottage replied to TurboMagic's topic in Cross-platform
I came across this post whilst looking for something else, and... ..actually, there is a way of achieving this using Delphi code. The following will convert the JObject reference (Obj in your case) to an integer array: function JObjectToIntArray(const AObject: JObject): TArray<Integer>; var LJNIArray: JNIArray; LJNIEnv: PJNIEnv; begin LJNIArray := TJNIResolver.JavaInstanceToID(AObject); SetLength(Result, TJNIResolver.GetArrayLength(LJNIArray)); if Length(Result) > 0 then begin LJNIEnv := TJNIResolver.GetJNIEnv; LJNIEnv^.GetIntArrayRegion(LJNIEnv, LJNIArray, 0, Length(Result), PJNIInt(Result)); TJNIResolver.ExceptionCheck; end; end; For Range<Integer>: var LRange: JRange; LLower, LUpper: Integer; LRange := TJRange.Wrap(Obj); LLower := TJInteger.Wrap(LRange.getLower).intValue; LUpper := TJInteger.Wrap(LRange.getUpper).intValue; It's in Androidapi.JNI.Util. To convert the JObject reference, simply Wrap it: var LRational: JRational; LRational := TJRational.Wrap(Obj); -
@Der schöne Günther Please accept my apologies! @Remy Lebeau Many thanks for your wisdom here - I've learnt something new!
-
It is actually legal code and does compile: https://onlinegdb.com/AYf40CsUy This kind of reverse syntax is not commonly used, but it does have its uses, and the C++ standards allows it. For an array, arr[2] is the same as *(arr+2), and thus 2[arr] is the same as *(2+arr).
-
I don't know how much your time is worth but for an advanced grid component buying off-the-shelf is a no-brainer. And option 2 doesn't sound any less work than moving to a new component. We use TMS VCL UI Pack which includes their TAdvStringGrid component, the price is practically nothing compared to what you get in terms of functionality.
-
1) It's better organized 2) It's all in one place (code/issues/discussions) Now if you don't want to enable it at least put a note that there is a "Indy delphipraxis forum" on the github so people don't open issues for questions.
-
If I was you in SQLite I defined 'database_id' as AUTOINCREMENT. No duplicates anymore! CREATE TABLE databases ( database_id INTEGER PRIMARY KEY AUTOINCREMENT And if you want to know the last inserted id, call the following statement: select LAST_INSERT_ID() as seq
-
My personal opinion is that having too many discussion points on a single topic is counterproductive. Having n. Forums, githubs and maybe personal blogs could be dispersive for the information and discussions that you want to "carry forward". And in this particular case, the main actor that is Remy should disperse a lot of energy on a multitude of discussion "sites" (which in fact he already does). The idea is not "evil", but there are already several possible discussion points (for example one of these is this forum) with a dedicated section.
-
What new features would you like to see in Delphi 13?
Stefan Glienke replied to PeterPanettone's topic in Delphi IDE and APIs
Delphi developers.... one half still uses Delphi 7 and the other one does not even do 32-bit anymore -
Code signing certificates have become so expensive...
Angus Robertson replied to RaelB's topic in Delphi Third-Party
A few more comments about the Thales Safenet signing token with Sectigo certificates: Unlike the Centum token I used before, Safenet has an 'Enable single logon' tick box in Advanced Client Settings, which means it remembers the token password once entered, until Windows reboots, which in my case is usually once or twice a month. You need the latest version of signtool to work properly with new tokens, my 2016 version did not work with the /kc argument and gave a crypto API error. I'm now using the following command, where you need to replace certfile with the exported PEM, DER or CER certificate file name, token-password with the new password you set (leave {{}} alone), and update the Private Key Container Name that in my case is a time stamp of when the key was created, Sectigo_20250107102535 to your own version, to allow signtool to locate the private key: signtool sign /f "certfile" /csp "eToken Base Cryptographic Provider" /kc "[{{token-password}}]=Sectigo_20250107102535" /as /fd sha256 /tr http://timestamp.sectigo.com /td sha256 "filename' 'filename' 'filemask' If using the /kc argument to pass a password with single logon enabled, the password is saved as if entered manually. Beware when testing that five incorrect password attempts will lock the dongle, assuming the other syntax is correct. The /kc command may need another parameter if you have multiple tokens. Not noticed it before, but signtool allows you to sign multiple files with one command, add two or more filenames at the end, also mask characters are allowed so "c::\path\*.exe" will sign all exe files in the path specified. Multiple files also work for the verify command. It seems the Thales SafeNet Authentication Software also works with Yubico tokens, mine is recognised. Angus -
Handing over the baton to Thomas and Lars
Ian Branch replied to Daniel's topic in Community Management
Hear, Hear. -
"Death to WITH" in your Delphi Code
Brian Evans replied to Darian Miller's topic in Tips / Blogs / Tutorials / Videos
If they added the ability to provide an alias the ambiguity would be gone. Aliases in SQL are useful and perform a similar function. Shortening repeated references can make code easier to read, the problem is the current WITH creates ambiguity. A code snipped from the blog post redone with the ability to provide an alias as an example: procedure TMyForm.UpdateInventoryItem(const NewQty: Integer); begin with dmStoreInventoryData as A do begin with A.tblUpdateItemForStore as B do begin B.Edit; B.FieldByName('Qty').AsInteger := NewQty; B.Post; end; end; end; -
Is there a program for Converting from VCL to FMX?
Keesver replied to JohnLM's topic in Delphi IDE and APIs
Be careful with Mida. From my experience the software is not working. Although it can still be purchased, it won't run because at startup the software cannot contact their license server and then stops. I tried contacting the developer many times, never had a response.