Leaderboard
Popular Content
Showing content with the highest reputation since 08/02/25 in Posts
-
@Darian Miller unearthed the following https://www.embarcadero.com/resources/development-jobs/ which allows you to post your "looking for work" requests as well as "looking for developer" posts
-
Hi all, Just wanted to share a quick update on the DelphiMistralAI wrapper: it's now aligned with the latest capabilities released by MistralAI. 1. Conversational Agents & Agentic Tools Full support for the “agentic” approach: define custom agents with instructions and embedded tools (code execution, premium web search, access to libraries/documentation, etc.). Conversations and Agents endpoints enable multi-turn sessions with actions (function calling, callbacks, web_search_premium, code_interpreter, etc.). Usage example in the documentation: agent configuration, callback handling, and customization of triggerable tools. 2. Vision & Advanced OCR (Document AI) Image processing: text extraction, description, classification, and visual analysis via vision models (e.g., pixtral-12b-2409). Extended OCR: recognizes not just text but structural elements (boxes, tables, metadata), outputs structured JSON per user-defined schema, and handles figures, charts, signatures automatically. Native handling of PDFs and images with automatic annotation for industry use cases (finance, legal, HR, etc.). 3. Audio Multilingual transcription with automatic language detection, segmentation, and timestamps (voxtral models). Analysis of audio files (up to roughly 15–20 minutes) integrated directly into the multimodal chat session. Typical use cases: meeting summarization, indexing, context-aware voice assistants, and audio+NLP pipelines. 4. Batch & Moderation Asynchronous batch inference over large volumes, with background job tracking. Native integration of moderation APIs to filter incoming or generated content. Designed for high-throughput or sensitive applications (personal data, enterprise contexts, etc.). 5. Fine-tuning, Specialized Models & Libraries Fine-tuning support to adapt models to very specific domain requirements. Libraries endpoint for managing and sharing documentation resources; enables fine-grained, contextual access from OD agents. 6. Extensibility, Asynchronicity & Software Quality All endpoints exposed in both synchronous and asynchronous modes (promises, callbacks, progressive streaming, live cancellation). HTTP layer dependency injection to facilitate mocking, unit testing, and alignment with modern architecture patterns. Built-in unit tests: seamless DUnit integration via the MistralAI.DUnit.Tests unit to bootstrap validation suites quickly. 7. Tooling TutorialHub and ready-to-run sample projects. Explicit support for VCL and FMX architectures with functional scenarios.. 8. Getting Started Download one of the two ready-to-run sample projects (VCL or FMX) from the sample/ folder in the repository. Each .zip contains the full scaffold so you can start with minimal setup: unzip, open the project in Delphi, and provide your MistralAI API key (either in code or via the provided UI). Then follow the README as a step-by-step guide: obtain your API key, initialize the client in the form’s OnCreate, perform an initial “chat” call, and proceed to explore the included scenarios (vision, audio, agents, etc.). The samples are designed as a sandbox—feel free to tweak prompts, swap models, and iterate on workflows to validate and extend functionality. Feedback and Questions Feel free to post here or share your adaptations to help enrich the discussion and so, the project.
-
According to https://www.advdelphisys.com/help/ads_keys_u.html Ctrl+O+C starts column selection mode or with the mouse Click+Alt+mousemove (https://docwiki.embarcadero.com/RADStudio/Sydney/en/Default_Keyboard_Shortcuts)
-
TGridify, convert a flat table into a pivot-grid in one line of code
aehimself replied to david berneda's topic in Delphi Third-Party
You really should treat Julia better :D- 3 replies
-
- pivot-table
- datamining
-
(and 2 more)
Tagged with:
-
[Info & Feedback] DelphiGenAI v1.1.0 — Sharing Updates and an Educational Approach
Maxidonkey replied to Maxidonkey's topic in I made this
I have just updated the DelphiGenAI wrapper to support the OpenAI APIs. Below is the list of changes made compared to version 1.1.0. These enhancements are designed to fully leverage the capabilities of the GPT-5 model while ensuring optimal compatibility with previous models. You can find the complete repository here: https://github.com/MaxiDonkey/DelphiGenAI Version 1.2.0 JSON Normalization Before Deserialization New GenAI.API.Normalizer module (TJSONNormalizer, TWrapKind, TNormalizationRule) to unify polymorphic fields (e.g., string vs. object). Direct integration into the HTTP layer: new Get(..., Path) | Post(..., Path) overloads enabling targeted normalization of a JSON subtree before object mapping. Canceling Background Requests New Responses.AsyncAwaitCancel(response_id) method to cancel an asynchronous response (background = true), with full callback support (OnStart, OnSuccess, OnError). Streaming Enhancements Extended typed coverage for streaming events and outputs (MCP, Code Interpreter, Image Generation, etc.) via new Responses.OutputParams classes (TResponseOutput*, TResponseImageGenerationTool, TResponseCodeInterpreter, etc.). New Types and Parameters InputParams: full coverage for computer interactions, local shell, MCP, web search, code, image generation, reasoning, text/JSON formats, tool choice/hosted tool, and file search filters. OutputParams: states (Created, InProgress, etc.), events (Added, Delta), usage metrics, and statistics. New enums: TOutputIncluding, TReasoningGenerateSummary, TFidelityType, etc. API v1/chat/completions New parameters: prompt_cache_key (prompt caching) safety_identifier (stable ID for safety monitoring) verbosity (low / medium / high) API v1/responses New parameters: max_tool_calls prompt (template reference via TPromptParams) prompt_cache_key, safety_identifier stream_options, top_logprobs, verbosity Structured System and Developer Messages New overloads: TMessagePayload.Developer(const Content: TArray; const Name: string = '') TMessagePayload.System(const Content: TArray; const Name: string = '') Improves parity between plain text and structured content flows. -
Senior Delphi Developer – 26+ Years of Experience - Remote & Freelance
Darian Miller replied to Andry13's topic in Job Opportunities / Coder for Hire
Here's a new resource: https://www.embarcadero.com/resources/development-jobs/ -
What new features would you like to see in Delphi 13?
corneliusdavid replied to PeterPanettone's topic in Delphi IDE and APIs
You can create a CGI application as a VCL Program that listens for web requests as if it was running under IIS--makes it very easy to debug (see attached image). Maybe this will help: https://github.com/corneliusdavid/AutoGetIt -
If you are willing to consider another route then have a look at MadExcept. It can do screenshots and is an extremely useful tool.
-
How do I avoid the error message 'is not a valid date.' ?
Remy Lebeau replied to JohnLM's topic in Databases
Why are you reading the mDate field as a String and not as a TDateTime to begin with? And are you populating your UI controls manually instead of using data-aware controls? If using a data-aware UI, you can configure a data field to *display* in a particular format, without having to actually pull the data and format it yourself. You say you have a date/time field, but then you talk about a Memo field. Which one are you actually parsing? I'm still not clear where your error is. Your screenshots don't match the code snippet you provided. -
Can't complete Delphi 12.3 Community Edition Athens installation
Patrick PREMARTIN replied to PrimeMinister's topic in General Help
The Community Edition is a Delphi 12.1 Athens version. This said some GetIt servers have technical problems. Embarcadero teams know that and are working on it. -
Special Summer Discounts from Almediadev and DelphiStyles!
Almediadev Support posted a topic in Delphi Third-Party
Special Summer Offer from Almediadev and DelphiStyles! You can order our products with good discount now! https://www.almdev.com https://www.delphistyles.com Regards, Almediadev -
*facepalm*
-
PythonEngine.PyUnicode_FromString() issue
David Heffernan replied to Jacek Laskowski's topic in Python4Delphi
Why are you expecting ANSI encodings to be of use? Why aren't you using Unicode, either UTF8 or UTF16. I believe the function you call expects UTF8 which of course you are not passing. Then again I'm not sure why you picked on this function to make a string. -
Had time to test it and using 32-bit client binaries from a newer PostgreSQL 32-bit ODBC driver version still works. Tested in a Windows Sandbox with a Delphi test app + binaries from the psqlodbc_15_00_0000-x86 32-bit ODBC driver with postgresql-15.13-3-windows-x64 installed. Test app is just a button that opens a connection and pulls results into a grid. Note clients / client libraries are backwards compatible except for some really old versions. You can use the client binaries from the latest release ODBC driver. Tested this with client binaries from the REL-17_00_0006 32-bit ODBC client and connecting to the 15.13-3 server mentioned above.
-
Libreoffice integration struggles
Kas Ob. replied to Pierre le Riche's topic in RTL and Delphi Object Pascal
At last ! 😎 @Pierre le Riche found a solution, by using Pipe (com.sun.star.io.Pipe) instead of stream, one can get your needed result. https://api.libreoffice.org/docs/idl/ref/servicecom_1_1sun_1_1star_1_1io_1_1Pipe.html program LibreOfficeLoadingFromStream; {$APPTYPE CONSOLE} uses System.SysUtils, System.Win.ComObj, Winapi.ActiveX; procedure LoadWriterDocumentFromBytes(const ADocumentData: TBytes; const aFilterName: string = 'Text'; aFilterOptions: string = ''); var LServiceManager, LDesktop, LProperties: Variant; LPipe: Variant; LPropertyArray: TArray<Variant>; begin {Connect to LibreOffice} LServiceManager := CreateOleObject('com.sun.star.ServiceManager'); LDesktop := LServiceManager.createInstance('com.sun.star.frame.Desktop'); LPipe := LServiceManager.createInstance('com.sun.star.io.Pipe'); LPipe.writeBytes(Variant(ADocumentData)); LPipe.closeOutput; // Important: close output to signal end of data (adding and simulating EOF) SetLength(LPropertyArray, 2); LPropertyArray[0] := LServiceManager.Bridge_GetStruct('com.sun.star.beans.PropertyValue'); LPropertyArray[0].Name := 'InputStream'; LPropertyArray[0].Value := LPipe; LPropertyArray[1] := LServiceManager.Bridge_GetStruct('com.sun.star.beans.PropertyValue'); LPropertyArray[1].Name := 'FilterName'; LPropertyArray[1].Value := aFilterName; if aFilterOptions <> '' then begin SetLength(LPropertyArray, 3); LPropertyArray[2] := LServiceManager.Bridge_GetStruct('com.sun.star.beans.PropertyValue'); LPropertyArray[2].Name := 'FilterOptions'; LPropertyArray[2].Value := aFilterOptions; end; LProperties := LPropertyArray; LDesktop.loadComponentFromURL('private:stream', '_blank', 0, LProperties); end; const {(*} TXTData = 'Hi From Delphi !.'; HTMLData = '<!DOCTYPE html><html><body><h1>My First Heading</h1><p>My first paragraph.</p></body></html>'; // don't know how ! RTFData = ' {\rtf1\ansi{\fonttbl\f0\fswiss Helvetica;}\f0\pard This is some {\b bold} text.\par }'; // also still missing something CSVData = 'Name,Age,City,Country' + #13#10 + 'John Doe,30,New York,USA' + #13#10 + 'Jane Smith,25,London,UK' + #13#10 + 'Bob Johnson,35,Toronto,Canada' + #13#10 + 'Alice Brown,28,Sydney,Australia';{*)} CSVFilterOption = '44,34,76,1,1/5/2/1/3/5/4/5,0,true,true,true'; // for the above CSVData begin CoInitialize(nil); try LoadWriterDocumentFromBytes(BytesOf(TXTData)); //LoadWriterDocumentFromBytes(BytesOf(HTMLData),'HTML Document (Writer)'); // missing something may be //LoadWriterDocumentFromBytes(BytesOf(RTFData),'Rich Text'); // also LoadWriterDocumentFromBytes(BytesOf(CSVData), 'Text - txt - csv (StarCalc)', CSVFilterOption); // for some reason 'csv' is not enough except on E: Exception do Writeln(E.ClassName, ': ', E.Message); end; Writeln('Done.'); Readln; end. The result is smooth loading of two instances SWriter and SCalc Tried to load HML and RTF but didn't work, and i really got bored with this, and believe this is a solution for your obstacle for now. ps if you managed to make it load html or pdf, then please share ! extra info the opened instances has document named as "private:stream" but this is easy to rename the most complete supported filters is this https://help.libreoffice.org/25.2/en-US/text/shared/guide/convertfilters.html Good luck ! -
Can't complete Delphi 12.3 Community Edition Athens installation
DelphiUdIT replied to PrimeMinister's topic in General Help
The getit server is down (or is not working) since Saturday. -
A Conditional Ternary Operator for the Delphi
Remy Lebeau replied to EugeneK's topic in RTL and Delphi Object Pascal
Actually, a patch was already created for FreePascal to add this very same conditional operator (FPC already had an IfThen() intrinsic); https://forum.lazarus.freepascal.org/index.php/topic,71398.msg556926.html#msg556926 -
I've found it to be helpful as well in many situations. Just this morning, I was updating an old Delphi XE program that needed to get a list of available drives and forgot what the procedure was called. Sure, I could've looked it up but Claude reminded me of GetLogicalDriveStrings much quicker. Earlier this week, I wanted to try out Claude Code on my Windows machine. I learned it required Linux and didn't work on my currently installed WSL version 1. (The web-based) Claude helped me figure out which version of WSL I had, install WSL 2, then even though it was installed, WSL 1 was still the default so it helped me change that. Then, I had to go through a similar process with nodejs and npm. I learned several new "wsl" commands and got it up and running. It would've taken me many hours hunting down forums and blog posts to put all those pieces together--I probably would've given up. It's not great at writing whole programs or untangling a huge library of code but it can sure save time in many instances.
-
plugin DripGrepper: IDE plugin to parametrize ripgrep for fast search and replace
mattia72 posted a topic in I made this
Hello everyone, I'd like to introduce my first Delphi IDE extension: DripGrepper. DripGrepper uses ripgrep to enable extremely fast searching. Based on my experience, in a ~20 GB repository, it delivers results within 3 seconds—that’s 3 to 5 times faster than the standard Delphi IDE search! If you're interested in a comparison with other search tools, you'll find an overview here. The current release includes both a standalone version and DLLs for: Delphi 11 Delphi 12.1 CE Delphi 12.3 Athen DripGrepper is still in beta, so errors may occur. Nevertheless, it has already become an integral part of my workflow—and I can work productively with it. Last Updates: 14.07.2025 New version with Delphi 12.3 support: v4.9.0-beta 01.07.2025 New version: v4.8.0-beta Tip: Try out the "Open With..." feature via Delphi Tools → DripExtensions → Open With... to open the file you're currently editing: I look forward to your feedback! Screenshots: -
What new features would you like to see in Delphi 13?
corneliusdavid replied to PeterPanettone's topic in Delphi IDE and APIs
Delphi 12.3 has not yet been released. The AI integration in 12.2 was the first version and will certainly be improved as this new frontier is explored further and they receive feedback. I build plug-ins and integrations for an old 32-bit retail POS system. There's still a LOT of 32-bit apps out there--and they work just fine. Delphi turns 30 next month. VCL is (mostly) a wrap-around for Windows API functions. Someone with more in-depth knowledge than I may chime in but my understanding is that there are so many apps out there already that rely on the VCL the way it is that changing anything would break a lot of stuff. Instead, people can create new apps using FireMonkey or use any of the several third-party GUI component sets that take advantage of new capabilities. -
Create a new instance of a generic class
A.M. Hoornweg replied to A.M. Hoornweg's topic in RTL and Delphi Object Pascal
The reason I'm trying to achieve this is the following. I have made a generic tStreamableInterfaceList<T:iInterface> which is basically a managed Tlist<T> that implements iInterfacelist<T>. The elements are interfaces. This list object knows several special tricks such as saving its contents to XML and BSON. It can also load those elements back from such data files, which necessitates a virtual ClassFactory() method to create the correct objects "on the fly" based on the class names found in the data. So far, this all works very nicely. I wanted to enhance this list with a few LinQ-like methods such as: Function .Where(aCondition:tPredicate<T>):iInterfacelist<T>; Function .OrderBy(aCompare:tComparison<T>):iInterfacelist<T>; ... but in order to achieve that, the base class must be able to dynamically instantiate derived classes or else the resulting objects would have the base nonfunctional Classfactory() method. The "ugly" solution would be to put an abstract virtual Clone() method in the base class, but I'd very much like to avoid that. -
I've solved some of the issues with the font selector. The cursor now changes correctly. I'm quite happy with it now. The locking issue still happens but I discovered that this was not due to the number of fonts in the list but a particular font that is slow to render that I have installed (Surfing Capital). If I remove that font from the list then all is fine. I found that this font is also causing issues with the font selectors in other apps such as MS Paint, so it may not be worth doing anything about. FontSelector_v2.zip
-
[Android / Delphi 10.4] How to access the log.d messages without monitor.bat?
Rollo62 replied to Fabian1648's topic in FMX
Yes, serialgames is a nice tool, I used that before too, but I'm not sure how well that is maintained. There would be also a solution from DelphiWorlds: DeviceLens -
[Android / Delphi 10.4] How to access the log.d messages without monitor.bat?
Fabian1648 posted a topic in FMX
Hi, The Android SDK provided with Delphi 10.3 included a logging system of the Android device events (launched by monitor.bat). With Delphi 10.4, the tool still exists but crashes indicating that Eclipse files are missing. With Delphi 11, this tool does not even exist anymore! How can I access the log of the Android device (internal messages of the Android device and those originating from "log.d('My error message');" added to its Delphi code? Thanks for you help