

baoquan.zuo
-
Content Count
31 -
Joined
-
Last visited
-
Days Won
2
Posts posted by baoquan.zuo
-
-
10 hours ago, ringli said:Is there a new version of JetPascal or any news in the meantime?
We're going to announce JetPascal extension for VSCode. Further updates to the Delphi extension is scheduled. Please stay tuned.
-
1
-
-
Yes. It was a bit surprised that, when CnPack published the Chinese Translation, advwang mentioned he had reported the issue (RSP-20624) back in 2018. The issue was closed as 'Work as Designed', with a suggestion to add a warning in cases of potential data loss. He also said Eurekalog 7.0 used this approach in their shellcode but fixed with byte array later.
btw. I added this paragraph to the introduction:
QuoteNote: Generally, the correct approach is to use a byte array to represent binary data, since strings are intended for textual content. You may also skip the analysis and jump directly to the Conclusion section.
and improve the Conclusion section:
QuoteWhy does data loss occur? In short, it is caused by converting an invalid AnsiString to a UnicodeString. Invalid byte sequences are replaced with the
?
character. But how does this happen exactly? What's the underlying reason?Revisiting the Original Program section:
QuoteThe first string literal is interpreted as a UnicodeString without any data loss. However, since the three subsequent string literals contain invalid byte sequences in CP936, they are treated as AnsiStrings. When the compiler encounters a UnicodeString + AnsiString operation, it converts the AnsiString into a UnicodeString. During this conversion, any invalid byte sequences (whether a single invalid byte or a byte pair with a valid lead byte followed by an invalid or missing trail byte) are replaced with the ? character.
-
2
-
-
I forgot to mention that, in the original case, the proper solution is to use a byte array —I’d assumed this was common knowledge, but I should have spelled it out.
As I wrote at the beginning:
QuoteI was curious about the data-loss issue, so I decided to investigate it.
I simply documented the journey, shared it, and hope it helps someone. At the very least, the exercise deepened my understanding of character encoding and how dcc handles string literals.
In the end, it’s just an article. If you skimmed it, read the conclusion, and found nothing useful -- no worries, and thanks for taking a look.
-
2
-
-
13 minutes ago, David Heffernan said:I don't see this as helpful to anyone. Use bytes to represent bytes. Use strings to represent text. Don't use ANSI strings.
Thanks for sharing your view.
-
2 minutes ago, David Heffernan said:What is wrong with the world of Delphi programmers that in 2025 there are still people who can't understand the difference between text and bytes?
The article you link to goes on and on about text but your data is bytes. Why not just use the correct data type?
Yes — it’s clear we should use the proper data type to represent raw bytes.
What the article (and my curiosity) really digs into is why the data loss occurs and how DCC handles string literals (as there is no formal Delphi language specification). That matters to me because I’m also writing some Delphi compiler-frontend code in my products.
In any case, these insights should help when migrating legacy ANSI-based Delphi projects.
-
Hi,
I'd like to share a post. It addressed a byte loss issue captured from a discussion.
// Compile with code page 936 program Problem; const strPublicKey: RawByteString = #$30#$3C#$30#$0D#$06#$09#$2A#$86#$48#$86#$F7#$0D#$01#$01#$01#$05 + #$00#$03#$2B#$00#$30#$28#$02#$21#$00#$A4#$65#$B8#$CD#$B4#$29#$A9 + #$64#$1A#$C5#$80#$55#$22#$1B#$BB#$C5#$98#$36#$B9#$23#$0C#$CA#$D4 + #$A8#$B8#$7C#$E6#$32#$E3#$89#$3D#$77#$02#$03#$01#$00#$01; begin Writeln(Length(strPublicKey)); // expected 62 got 58 - why? Readln; end.
https://devjetsoftware.com/delphi/byte-loss-in-string-literal-concatenation/
-
4
-
-
JetPascal is a new code assistant for Delphi developers. Our goal is to be a fast, reliable, and intelligent code assistant for Delphi developers, supporting both RAD Studio and Visual Studio Code.
The product is still in early stages. The current Insiders version includes these navigation and search features (inspired by Visual Studio Code) for Delphi XE7-12.3.
- Go to File
- Go to Project
- Go to Line
-
Go to Symbol in Editor
- Delphi Source File
- VCL/FMX Form
- Go to Symbol in Workspace
- Go to Definition
- Go to Type Definition
- Go to Base Symbols
- Go to Derived Symbols
- Go to Implementation
- Go to Containing Declaration
- Peek Definition
A few demos:- Go to Symbol in Source Editor
- Go to Symbol in Form Editor
(Go to component, property, and event in form designer.)
- Go to Implementation
To see the more demos, the status, and the roadmap of the product, please visit JetPascal page. You can also try it by download the Insiders version.
Early Bird Program
We are offering special Early Bird Price—significantly below the upcoming standard rate—while we finalize key features. This offer applies to both Commercial and Personal subscriptions and is open to new users now.
Note: Legacy CodeInsightPlus customers can request our standard renewal price throughout 2025.
-
4
-
If you use Parallel Desktop VM, it snapshots feature will help:
Notes:
- The "Uninstalled delphi 12.2" snapshot allow me to install new Delphi 12.3 beta without uninstalling previous beta (just discard it).
- The "Delphi 12.2 Stable" snapshot allow me to work with delphi 12.2 during beta testing of delphi 12.3 and test compatibility when Delphi 12.3 has been RTMed
-
2
-
-
It appears that Embarcadero did not include this issue in the known issues listed in the release notes, so I decided to share this workaround.
Some users may encounter a stack overflow error when just create a empty VCL application the Delphi 12.3 64-bit IDE on ARM platforms. One of the Embarcadero team members provided a workaround: change the emulation settings to force single-core operation. Although this will slow down the IDE, it should function properly. Let's hope a hotfix is released soon.
-
2
-
-
There is one approach without using many conditional defines:
- Just use fully qualified/scoped unit names in use clauses
- Create a shared .optset to be used by all XE-specific projects
- Use unit aliases to map System.SysUtils to SysUtils, System.Actions to System (Ignore it), etc. in the optset.
I did try this way and I am OK with it, but I am not sure what is the limit of the unit aliases/performance boost, an you have to use conditional defines when reference full-qualified type/members of RTL (should be limited).
-
In honor of Delphi's 30th birthday on February 14th, we're offering a special 30% discount on new registrations for DocInsight, the ultimate API documentation tool for Delphi developers.
Don't miss out!
This limited-time offer is available only on February 14th. Celebrate Delphi's legacy and streamline your API documentation process with DocInsight today.Use Code:
DELPHI30Check Out:
-
Save 25% on new registrations with coupon code BF2024!
The latest version, DocInsight 2025 Insiders (Version 6.0.0.19), was released on November 24, 2025.
DocInsight 2025 Release Notes (Draft)-
1
-
1
-
-
Hi, We have a new update for DocInsight and a special offer limited for today.
Highlights
Introducing DocInsight Insiders edition
- Allow side-by-side installations (different installation directories)
- Use separate settings and extension identifiers
- Share the same license
- Enable switching between Stable and Insiders editions for Delphi extensions in the future
Add the Microsoft HTML Help Workshop component to the installer
The Microsoft HTML Help Workshop is a currently mandatory component for compiling CHM documentation. Installing it requires separate administrative privileges. Our installer will:
- Download the signed Microsoft HTML Help Workshop installer
- Verify the SHA256 checksum to ensure the integrity of the downloaded file
- Launch the installer to guide you through the installation process
Changelog
New
- Introducing Insiders edition
- Add the Microsoft HTML Help Workshop component to the installer
- Normalize text encoding of source files
- Clear shortcuts using the Backspace key in the Options
- Move docinsight.exe and DocInsightWizard.exe to bin folder
- Extend the trial period of the previous version
Fixes
- Fix: DocInspector/DocExplorer editor may be empty in Delphi 12 (DPI Unaware)
- Fix: Go to Definition navigate to incorrect location when xmldoc changed
- Fix: Code editor may not scroll to the expected location when Go to Definition
- Fix: Whitespaces adjacent to inline tags are trimmed
- Fix: docinsight.exe panicked with ANSI encoded file
- Fix: docinsight.exe panicked when xml doc comment contains invalid UTF-8 sequenece
- Fix: docinsight.exe panicked with “Fail to convert uri to file path”
Special Offer:
Use coupon code INSIDERS to get 25% off today. (For new registration)
P.S. We will announce regular updates in our community forum in future. Thank you!
-
Hi, I’m reaching out to seek your valuable opinions and experiences regarding the release strategy for the upcoming major version of DocInsight.
There are 2 options:
1. Stable and Insiders with Side-by-Side Installations- Users can simultaneously use both versions.- Clear separation of stable and experimental features.- User may have to choose different IDE instances to avoid conflict of menus, dockable forms, shortcuts, etc.
2. Stable, Beta, and Dev Channels with a Single Installation- Simplified installation and maintenance.- Unified settings and extensions, reducing conflicts.- Easier for users to switch channels within the same IDE instance.How do you think? What's your preferred approach? Thanks! -
Hi Anders,
This feature is in our list. You might want to monitor this issue: https://github.com/devjetsoftware/docinsight-support/issues/21
We are planning to introduce some significant features, and I need to consider how to integrate them effectively.
-
1
-
-
DocInsight 2025 Public Beta is now available! See the announcement.
For a limited time only, use coupon code HALLOWEEN to get 35% off the regular price.
-
1
-
-
We are excited to announce the public beta release of DocInsight 2025 and the upcoming migration to our new licensing model.
DocInsight, also known as Documentation Insight, is a powerful tool for browsing and documenting Delphi source code.
Highlights of DocInsight 2025
- Expanded Delphi Support: Compatible with Delphi XE7 through Delphi 12.
- Enhanced CLI: A faster and more reliable DocInsight Command-Line Interface.
- Improved Browsing: View local HTML output without the need for a local web server.
- Resolved Issues & New Features: Addresses many long-standing issues and introduces valuable enhancements.
For more details, please refer to the Release Notes. Download
Licensing and Pricing
With the release of DocInsight 2025, we are introducing a revamped licensing model:
- Commercial License: Designed for companies and business organizations.
- Personal License: Tailored for individual developers.
For more information, please review our EULA.
Pricing details are available on our Purchase Page.
New FastSpring Store
We are migrating to the new FastSpring Store for processing payments. The new store offers a user-friendly portal to browse and manage your subscriptions. You can also view your license keys on the order page.
Key Features:
- Manual Renewal: By default, subscriptions are set to manual renewal, ensuring you have full control over your license renewals without automatic charges.
Customer Benefits
We apologize for the inconvenience caused by the lack of updates to DocInsight over the past few years. To demonstrate our commitment to providing better service and continuous product improvements, we are offering the following compensation to our valued customers:
-
Customers with Active Subscriptions from October 1, 2022, to Present:
- 6-Month Free Extension: Receive a complimentary 6-month extension to your current subscription.
- Additional 6-Month Extension: An extra 6-month extension will be granted upon renewing your license.
-
Existing Customers:
- Standard Renewal Pricing: Eligible for standard renewal pricing until February 1, 2025.
We are dedicated to delivering regular updates and ensuring that DocInsight meets your needs. Thank you for your continued trust and support.
As we improve our product, we will work closely with customers to complete the migration process smoothly. If you have any questions or specific requirements, please contact us at support@devjetsoftware.com.
-
3
-
The Project Options in the Delphi 12.2 IDE does not even support such option, does it? (I want to disable the warning in dproj files)
-
35 minutes ago, Uwe Raabe said:Probably related: https://quality.embarcadero.com/browse/RSP-43125
Thanks for the reference! I wish it was resolved so that I can use the split editor more comfortable in my laptop.
-
-
2 hours ago, Anders Melander said:No support for external XML documentation files.
This is a complete showstopper; 1) I'm not mangling our source with doc comments, 2) Some of our source is generated. The comments would be overwritten.Thanks for your feedback. I will probably consider the external XML documentation files in upcoming minor update as it is required for auto-generated/unmanaged source code, as well as other things (like project-level documentation may not be suited to be put in dpr/dpk).
2 hours ago, Anders Melander said: The layout is still hard coded to emulate the VS2012 help.
Please see this feature request. The new theme is in the roadmap of the 2024 version. Basically it must support:
- Responsive
- Theme (Light/Dark)
- Customization and Rebranding
It is recommended that you create an issue in the DocInsight Support portal. I will make polls in the community forums to know what features really matters to our customers.
Best Regards
-
1
-
DocInsight, also known as Documentation Insight, is an API documentation tool for Delphi developers. The upcoming release of DocInsight 2024 represents a major update. It includes:
Highlights
- Support for Delphi XE7 - Delphi 12
- Redesigned DocInsight CLI
- Bug fixes and valuable improvements
It's recommend to visit What's New in DocInsight 2024 (Draft) to get more details.
New Licensing Model
With the release of DocInsight 2024, we are pleased to introduce a revamped licensing model:
- Commercial License
Licenses are purchased by the company and can be assigned to any single developer within the organization.
- Personal License
Tailored for individual use, this license is intended for those who purchase it with their own funds and should not be financed by companies in any form.
For more details, please refer to our separate announcement.
Beta Invitation
If you are interested in early access of the DocInsight 2024 Beta, please join our Community Forum and drop us an email at support@devjetsoftware.com to request access to DocInsight Beta.
Thanks!
-
2
-
-
DXBuild is a **free** command-line tool. It makes it easier to build multi-version Delphi projects (Delphi 2007 or newer, dproj/groupproj).
Example
dxbuild Packages\DelphiXE2\Spring.Base.dproj -d DelphiXE2 -p Win32 Win64 -c Debug Release
Benefits
- Compile faster with fastdcc (Delphi 2009 - 10.3)
https://www.idefixpack.de/blog/ide-tools/ide-fix-pack/
NOTE:
For Delphi XE3 or higher, you just need to download and extract fastdcc*.exe to `$(BDS)\bin`. dxbuild will use fastdcc when possible. Use `--no-fastdcc` to disable it.
Download: https://devjetsoftware.com/download/2009/
Report Issues: https://github.com/devjetsoftware/dxbuild-public
-
1
-
-
Thanks for the kind words!
I must admit, the current status of the product is far away from my expectation and I'm really sorry that the new version has not come out in such a long time.
However, there is much in-progress working on the product. I hope good things will happen in the upcoming 2022.
-
3
-
ANN: JetPascal Sneak Preview and Early Bird Program
in Delphi Third-Party
Posted
Thanks for the feedback. The VSCode extension will introduce more features and the Delphi extension will follow up.