Leaderboard
Popular Content
Showing content with the highest reputation since 03/18/24 in Posts
-
We're excited to announce the release of DelphiLint v1.0.0, a free and open-source static analyzer and linter for the Delphi IDE! DelphiLint is powered by SonarDelphi, our Delphi analyzer for the SonarQube code quality platform that scans entire codebases with more than 120 different rules. With DelphiLint, the feedback loop is shortened - it allows you to analyze individual files within your editor and correct problems before they're even checked in. GitHub: https://github.com/integrated-application-development/delphilint Release: https://github.com/integrated-application-development/delphilint/releases/tag/v1.0.0 Features Analyze one or more files on demand View detected issues, descriptions, and rationale inline in the Delphi IDE Two analysis modes: Standalone - run analyses entirely locally with a default set of active rules Connected - connect to a SonarQube instance, allowing for Fetching of active rules and configuration from the server's configured quality profiles Suppression of issues that have been resolved in past analyses Usage of the server's version of SonarDelphi Uses the same rules and configuration files as SonarDelphi, making configuration easy for projects that already use SonarDelphi for code quality DelphiLint supports RAD Studio for Delphi 11+. Feedback and contributions are welcome!
-
A better way to share global data structures than as global variables?
Dave Nottage replied to DavidJr.'s topic in Algorithms, Data Structures and Class Design
Straight Outta ChatGPT -
My workmachine is not quite JRE free, due to IBM ACE. But in general, I don't install Java apps if I can avoid it.
-
A gem from the past (Goto)
Lars Fosdal replied to Mike Torrettinni's topic in Algorithms, Data Structures and Class Design
Fun observations on the GoTo topic: https://jerf.org/iri/post/2024/goto/ -
Hi fellows, I wanted to inform you that I have made an improvement to my AI-integration plug-in called ChatGPTWizard. Now it supports Ollama, the offline AI chatbot server. You can download the latest version (v3.0) to try it out here: https://github.com/AliDehbansiahkarbon/ChatGPTWizard To set up your offline GPT-like server read this section: https://github.com/AliDehbansiahkarbon/ChatGPTWizard#:~:text=How to use it in Offline mode I am eagerly looking forward to receiving your valuable feedback. Thank you in advance.
-
In case anyone is not already aware of this https://quality.embarcadero.com is now in a permanent read-only mode. A new system is being implemented, but has not been opened to the public yet. So, if you do have a legit bug/feature to report, feel free to post it in a public forum, or write to Embarcadero directly, and someone who has internal access to the new system can open tickets for you until the new system is ready for public use.
-
A better way to share global data structures than as global variables?
Bill Meyer replied to DavidJr.'s topic in Algorithms, Data Structures and Class Design
Before anyone gets too upset, my perspective is based on dealing with legacy code you have come into. There are numerous advantages to encapsulating global variables. Not only do you establish a measure of access control, but if you expose them as properties with getters and setters, you can easily set breakpoints to discover points of interaction. Equally, you could introduce logging. But even without those benefits, you will be altering the calling code to reference MyGlobals.SomeState, rather than simply SomeState. Once you have accomplished that tedious task, it is also a simple matter to search for all such references by searching on MyGlobals. Other benefits will become apparent as you work through things. -
Same thing happened to me re Ios Island 🙂 Following the live activities link leads to: https://developer.apple.com/documentation/ActivityKit/displaying-live-data-with-live-activities Which talks about using Widget Extensions, which are yet to be possible in Delphi, however there's a slim chance that the extension can "talk" to Delphi code: https://blog.grijjy.com/2018/11/15/ios-and-macos-app-extensions-with-delphi/ I have very little optimism about the possibility
-
As mentioned in my previous post on dzDebugVisualizer I was thinking about writing a generalized debug visualizer which can be user-configured to register itself for any data type. Well, that debug visualizer now exists. It’s part of dzDebugVisualizer and called “Universal Visualizer for Delphi”. Read on in the blog post.
-
Do you need an ARM64 compiler for Windows?
David Heffernan replied to Lars Fosdal's topic in Cross-platform
I mean, how hard could it be???? -
challenge Offical launch of the 1 Billion Row Challenge in Object Pascal
Arnaud Bouchez replied to Gustavo 'Gus' Carreno's topic in Tips / Blogs / Tutorials / Videos
Easy, and wrong. You are reading the station weathers reference data with one row per station. And making a min/max/average of a single data per station. The challenge is to read a 1 billion (1,000,000,000) rows of CSV data for all those 41343 stations, and compute it. There is a generator of a 16GB CSV file to inject and process. So 0.33s for 41343 rows would make around 8000 seconds, i.e. 5.5 days.- 57 replies
-
- object-pascal
- free-pascal
-
(and 1 more)
Tagged with:
-
How can I extract a row's data from a TMyQuery object ?
Uwe Raabe replied to dormky's topic in Databases
I'm not sure if that is what you are after: Dataset Enumerator Reloaded. The current location for the unit described in that article is now on GitHub as part of my CmonLib library: https://github.com/UweRaabe/CmonLib/blob/main/source/Cmon.DataSetHelper.pas The code allows to retrieve the current record of a dataset either as a record or a class. The record example shown in the article requires the declaration of a record type [DBFields(mapAuto)] TEmployee = record EmpNo: Integer; LastName: string; FirstName: string; PhoneExt: string; HireDate: TDateTime; Salary: Double; end; With that you can retrieve the data of the current dataset record like this: var Employee: TEmployee; begin { Show the employee's name and the hire date. } Employee := QuEmployee.GetCurrentRec<TEmployee>; ShowMessage(Format('%s %s was hired on %s', [Employee.FirstName, Employee.LastName, FormatDateTime('dddddd', Employee.HireDate)])); end; The article also has another example using a class instead of a record. -
However, it might not be permitted to do so in corporate environments.
-
Delphi 12: Installing via GetIt Corrupts the DPK of AsyncPro, VirtualTree, and SynEdit
twe replied to twe's topic in Delphi IDE and APIs
This is definitely because the .dpk has LF line endings. Steps to reproduce manually: 1. Open SynEditDR.dpk in Notepad++. Make sure "rrequires", "ocontains", and "d." are all fixed and correct. 2. Turn on View -> Show Symbol -> Show End of Line so you can see the end of line characters. 3. Convert SynEditDR.dpk to Unix line endings in Notepad++ with Edit -> EOL Conversion -> Unix (LF) and save 4. Open SynEditDR.dpk in Delphi 12 5. In the project manager, right click on SynEditDR290.bpl and select Options... 6. In the Project Options window make no changes and click the Save button 7. Click Save All on the toolbar or use File -> Save All.. 8. Now go back to Notepad++. It will have detected that the .dpk has changed. Reload the file and you'll see that it's now corrupted with a mix of LF and CRLF line endings, and the usual "rrequires", "ocontains", and "d." problem. If you do exactly the same thing but start by making sure the .dpk has CRLF line endings then there is no corruption of the file. -
Is it still not possible to create self-contained executables with Java? If so it would be nice because that would remove the requirement for the JRE.
-
https://docwiki.embarcadero.com/Libraries/Athens/en/System.SysUtils.TStringHelper.TrimLeft
-
Anonymous methods as interfaces
Stefan Glienke replied to EugeneK's topic in RTL and Delphi Object Pascal
Yes you can, the first post in this thread contains the code doing exactly that. In fact, until some version a few years ago it was possible to call Invoke. Still, if the method reference type has {$M+} enabled you can get RTTI for its Invoke method and dynamically invoke it. And there are more than one (Spring) libraries that do that. Also please let's get the terminology right - this is something that hugely annoys the heck out of me - because when talking about this subject everything is being called anonymous method but is incorrect. TProc = refererence to procedure; This is a method reference type - yes, even the official documentation is a mishmash. There is nothing anonymous about this type - it has a name: TProc. procedure Foo; begin end; var p: TProc; begin p := Foo; end. Again there is no anonymous method in this code - the variable p of the method reference type TProc is being assigned. The variable has a name and thus also is not anonymous. var p: TProc; begin p := procedure begin end; end. Now we have an anonymous method - the code block assigned to p has no name. This is an anonymous method that is assigned to the method reference variable p. Also see: https://en.wikipedia.org/wiki/Closure_(computer_programming)#Anonymous_functions https://en.wikipedia.org/wiki/Anonymous_function -
Yes, you can safely ignore them ( until Google decides to enforce this probably in the future ). I considered that too, but I'm afraid these warning will be hard to remove, because they require certain Android tools, like ProGuard. Not sure if this will be ever included in the Delphi process. One idea, at least for the first warning, was to add a neutral or empty "manifest.txt" file. This might work technically, but on the other hand, the Google Review might see this as an attempt to circumvent or infringe their PlayStore policies, which might put you in bigger troubles. My hope is, that Embarcadero put this onto their roadmap.
-
The article describes how to work with ImageCollection and VirtualImageList components programmatically. Examples of different approaches are given and their internal architecture is analyzed. It also gives an example of developing your own component using ImageCollection and VirtualImageList. https://www.softacom.com/blog/imagecollection-and-virtualimagelist/
-
Looking for a couple of good "starter" Delphi books
Nigel Thomas replied to t2000kw's topic in General Help
Don't get hooked up on just books. There is a lot of useful visual material on the Net that is targeted at Delphi beginners. Embarcadero's Helpful Resources for New Users has some good links to both books and visual resources. -
A gem from the past (Goto)
Pat Foley replied to Mike Torrettinni's topic in Algorithms, Data Structures and Class Design
Here is a dangerous example of Goto causing endless loop you never finish this gamebook's first edition. In the gamebook You Can Be The Stainless Steel Rat by Harrison. There's an example of a typo goto 290 should be goto 190. https://stainlesssteelrat.fandom.com/wiki/You_Can_Be_The_Stainless_Steel_Rat -
DLL usage difference between Delphi 11.3 and Delphi 10.4
David Heffernan replied to Ron Howard's topic in RTL and Delphi Object Pascal
There is no such incompatibility. It's just 64 to 32 bit value truncation caused by defective code. -
ANN: New version of StyleControls VCL with Skia interaction for Lottie Animations just released!
Almediadev Support replied to Almediadev Support's topic in Delphi Third-Party
Another Fluent UI demo... -
As we have learned from other highly qualified individuals, VCL has not been abandoned; rather, it was completed a long time ago.
-
Request for advice: FireMonkey and Frames
Dalija Prasnikar replied to Lars Fosdal's topic in Cross-platform
Creating at run-time is pretty straightforward. You need Owner and Parent, and sometimes setting Align property. You can use any FMX control as those - or at least I have been able to use them without a problem. FFrame := TMyFrameClass.Create(AParent); FFrame.Parent := AParent; FFrame.Align := ... And that is it.