Jump to content

Leaderboard


Popular Content

Showing content with the highest reputation on 05/19/23 in all areas

  1. shineworld

    Community license

    On the use of the community license, my advice is to be very careful about what you do. I bring them my case. At home, on my personal notebook I had installed the community version of Delphi, it was the Rio, to work on an open-source project, GLSCENE. Since I have little time at home to develop I, unhappily, thought of taking advantage of the hour and a half of free time for lunch break I have at the office, to continue development on my personal notebook BUT attached to the company WIFI network to access the sources, do push and everything else. Well after a month or so I got a tethered notification from Embarcadero, that according to their logs, Community sends logs of what files you compile, when you compile, what network and domain you are working on, my company was not using Community intebitually for application development while earning over 5000E. The email came directly to the company by going back to the company's internet domain data. There was no way to make it clear, even after sending the project report I worked on, that it was not of company interest but personal, about it being my personal laptop, etc. Moral of the story, they gave me a number of days to purchase the full Architect product (the most expensive formula) or legal action would start. The company covered the cost, thankfully. Be careful where you connect with terminals.... Since then never again a Community product and since I personally cannot buy Licensed products at those prices, I now participate in open-source projects with other environments and languages.
  2. Ali Dehban

    ChatGPT plug-in for RAD Studio.

    Hello, everybuddy. Recently I made a plug-in for Delphi to use ChatGPT inside the IDE. The main service is ChatGPT but it's actually multi-AI support, you can get responses from three different sources, compare and decide. I hope this can be helpful and accelerate your work. Repository: https://github.com/AliDehbansiahkarbon/ChatGPTWizard Key features: - Free text question form. - Dockable question form. - Inline questions(in the editor). - Context menu options to help you to find bugs, write tests, optimize code, add comments, etc... - Class view. - Predefined Questions for class view. - History to save your tokens on OpenAI ! - Fuzzy string match searches in the history. - Animated letters(Like the website). - Proxy server options. - Supports Writesonic AI (https://writesonic.com) - Support YouChat (https://you.com) Short Video 1: Short Video 2 - Inline Questions: Full Video (ver. 2.0):
  3. Ali Dehban

    ChatGPT plug-in for RAD Studio.

    A new short video that demonstrates all the features of the plug-in quickly.
  4. Attila Kovacs

    set of object instances

    https://stackoverflow.com/questions/19466038/finding-common-elements-in-two-arrays/19524788#19524788
  5. DelphiUdIT

    Community license

    😍PASCAL is the best programming language in the world 😍 but Delphi CE is not the right product if you want to distribute your projects freely. Behind Delphi there is a structure (now is Embarcadero / IDERA) which is not "non-profit" and which rightly must be rewarded for the work it does. Despite all the Delphi environment (overall) remains for me the best programming environment in Pascal and I use it as a job to be able to pay for it.
  6. Brandon Staggs

    set of object instances

    TDictionary<TObject, Boolean> Your objects are the keys, and the value can essentially be ignored. Use AddOrSetValue, and KeyExists. Might go the next step and just create some kind of hash table if I were doing this a lot. I doubt the overhead of having an un-needed value is worth it though.
  7. Remy Lebeau

    Community license

    Have you considered setting up a personal VPN on your home network, and then connect to it from your work office?
  8. programmerdelphi2k

    Community license

    I think that Embarcadero's proposal is very flawed and misleading, due to the fact that it defines the tool as "intended for beginners, students, and not commercial use, or with a maximum revenue of $5000/year". Let's see, the colleague above said that when connecting to the wifi network of the company he works for, he was caught and unequivocally accused of using the application developed with the CE edition, commercially, because the company where he works, is known and, supposedly, has an income greater than $5000/year. Ok, so, here we have a clear privacy violation, the Embarcado tool, developed the application and, inadvertently, "embedded" a code outside the application, which, in a surreptitious way, sends data to its servers, however, only the data of use, but also personal information enabling the collection of private information, such as the IP identification, as well as the possible wifi network in use, which among many other information that goes beyond the minimum necessary to diagnose information about the software, can identify which company (in this case) is using an application that was developed by the CE edition. I think it would be much clearer to explicitly ask the would-be user of your tool to complete a registration, with personal data, explicitly informing the purpose of use, and thus informing them of their respective responsibilities in court. Anyway, Embarcadero sells an idea that in practice brings more misfortunes than benefits. She could simply put a "clear and explicit code of "NON-COMMERCIALIZABLE DEMO AND FOR A DETERMINED TIME OF USE" when the application was executed, making it very clear that the generated software will be only, and only, for the use of the developer. And, in the case of NGOs, there would be another type of exclusive use license for this purpose. Complicated, but necessary so that there are no margins for another understanding! As always, cheap is expensive! And, we must look into the teeth even of the horses given to us!
  9. Remy Lebeau

    TProcessList issue.

    Use the Length() function. Use this instead: for var i := 0 to Length(Instances)-1 do Memo1.Lines.Add(Instances[i]); Alternatively, you can use the Low()/High() functions to get the first and last indexes of the array: for var i := Low(Instances) to High(Instances) do Memo1.Lines.Add(Instances[i]); Alternatively, you can use a for..in loop instead, no indexes needed: for var elem in Instances do Memo1.Lines.Add(elem); However, in your particular example, the TMemo.Lines property has an overloaded method that accepts a TArray<string> as input, so you don't even need a loop at all: Memo1.Lines.AddStrings(Instances); You don't need that. Dynamic arrays know their own length.
  10. aehimself

    Delphi Professional Database Connectivity

    As far as I know FireDac is present in Professional but you only get the sources in Enterprise. Having the sources can help you to debug issues or easily create your own descendants of it's components in case you need to extend functionality. If you need the sources but can not / don't want to upgrade to Enterprise you always can install a 3rd party library like Zeos.
  11. Deviating slightly from the original topic: I wonder when green computing will become a part of education and business, i.e. writing code / designing libs that are less expensive in the context of power consumption.
  12. There's been very little need for pointers in Delphi after they made it so objects are implicitly passed by reference. People still use them with Record types. As an aside, I've been working with TMS WEB Core a lot lately. It transpiles the Dephi code to javascript, and js doesn't support pointers. So it won't compile Delphi code that uses pointers. Aside from the fact that TTreeNode's have a Data property that's typed as Pointer, I've not had any problem at all. I urge you to learn what's in the RTL and how Generic collections work rather than reinventing the wheel. There are far more interesting problems you can explore besides data structures invented at a time when CPU cycles and memory were very expensive compared to the cost of programmer time. The most commonly used class in Dephi is the TStringlist. It's like the "Swiss Army Knife" of most Delphi programming. Spend time playing with every property it has and get to know it inside and out; I promise you it will be time far better spent than messing with basic data structures. BTW, something not a lot of Dephi programmers know is that a TStringlist can be used to manipulate CSV files directly. You can make them multi-dimensional by hanging them off of the Objects property in a base object. You can also make a wrapper class that defines properties to make it much simpler to access things stuffed into those Objects 'arrays'. When I was learning C++, there was a book, "C++ Idioms" that I referred to a lot to learn different types of common coding idioms and patterns. A lot of them are really OOP patterns that apply in many languages, although many are specific to C++. Spend time learning Delphi programming idioms, especially the different ways of declaring properties and when it's good to access local fields directly rather than setting every property up to use getter and setter methods. And avoid getting into the habit of putting business logic inside of event handlers! Make a separate method that's called if you need to interact with other UI objects as a result of an event being triggered.
×