Sign Up

Sign Up to our social questions and Answers Engine to ask questions, answer people’s questions, and connect with other people.

Have an account? Sign In

Have an account? Sign In Now

Sign In

Login to our social questions & Answers Engine to ask questions answer people’s questions & connect with other people.

Sign Up Here

Forgot Password?

Don't have account, Sign Up Here

Forgot Password

Lost your password? Please enter your email address. You will receive a link and will create a new password via email.

Have an account? Sign In Now

You must login to ask a question.

Forgot Password?

Need An Account, Sign Up Here

Please briefly explain why you feel this question should be reported.

Please briefly explain why you feel this answer should be reported.

Please briefly explain why you feel this user should be reported.

Sign InSign Up

The Archive Base

The Archive Base Logo The Archive Base Logo

The Archive Base Navigation

  • SEARCH
  • Home
  • About Us
  • Blog
  • Contact Us
Search
Ask A Question

Mobile menu

Close
Ask a Question
  • Home
  • Add group
  • Groups page
  • Feed
  • User Profile
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Buy Points
  • Users
  • Help
  • Buy Theme
  • SEARCH
Home/ Questions/Q 411993
In Process

The Archive Base Latest Questions

Editorial Team
  • 0
Editorial Team
Asked: May 12, 20262026-05-12T18:02:29+00:00 2026-05-12T18:02:29+00:00

Is it possible to unmangle names like these in Delphi? If so, where do

  • 0

Is it possible to unmangle names like these in Delphi?
If so, where do I get more information?

Example of an error message where it cannot find a certain entry in the dbrtl100.bpl
I want to know which exact function it cannot find (unit, class, name, parameters, etc).

---------------------------
myApp.exe - Entry Point Not Found
---------------------------
The procedure entry point @Dbcommon@GetTableNameFromSQLEx$qqrx17System@WideString25Dbcommon@IDENTIFIEROption could not be located in the dynamic link library dbrtl100.bpl. 
---------------------------
OK   
---------------------------

I know it is the method GetTableNameFromSQLEx in the Dbcommon unit (I have Delphi with the RTL/VCL sources), but sometimes I bump into apps where not all code is available for (yes, clients should always buy all the source code for 3rd party stuff, but sometimes they don’t).

But say this is an example for which I do not have the code, or only the interface files (BDE.INT anyone?)
What parameters does it have (i.e. which potential overload)?
What return type does it have?

Is this mangling the same for any Delphi version?

–jeroen

Edit 1:

Thanks to Rob Kennedy: tdump -e dbrtl100.bpl does the trick. No need for -um at all:

C:\WINDOWS\system32>tdump -e dbrtl100.bpl | grep GetTableNameFromSQLEx
File STDIN:
00026050 1385 04AC __fastcall Dbcommon::GetTableNameFromSQLEx(const System::WideString, Dbcommon::IDENTIFIEROption)

Edit 2:

Thanks to TOndrej who found this German EDN article (English Google Translation).
That article describes the format pretty accurately, and it should be possible to create some Delphi code to unmangle this.

Pitty that the website the author mentions (and the email) are now dead, but good to know this info.

–jeroen

  • 1 1 Answer
  • 0 Views
  • 0 Followers
  • 0
Share
  • Facebook
  • Report

Leave an answer
Cancel reply

You must login to add an answer.

Forgot Password?

Need An Account, Sign Up Here

1 Answer

  • Voted
  • Oldest
  • Recent
  • Random
  1. Editorial Team
    Editorial Team
    2026-05-12T18:02:30+00:00Added an answer on May 12, 2026 at 6:02 pm

    There is no function provided with Delphi that will unmangle function names, and I’m not aware of it being documented anywhere. Delphi in a Nutshell mentions that the “tdump” utility has a -um switch to make it unmangle symbols it finds. I’ve never tried it.

    tdump -um -e dbrtl100.bpl
    

    If that doesn’t work, then it doesn’t look like a very complicated scheme to unmangle yourself. Evidently, the name starts with “@” and is followed by the unit name and function name, separated by another “@” sign. That function name is followed by “$qqrx” and then the parameter types.

    The parameter types are encoded using the character count of the type name followed by the same “@”-delimited format from before.

    The “$” is necessary to mark the end of the function name and the start of the parameter types. The remaining mystery is the “qqrx” part. That’s revealed by the article Tondrej found. The “qqr” indicates the calling convention, which in this case is register, a.k.a. fastcall. The “x” applies to the parameter and means that it’s constant.

    The return type doesn’t need to be encoded in the mangled function name because overloading doesn’t consider return types anyway.

    • 0
    • Reply
    • Share
      Share
      • Share on Facebook
      • Share on Twitter
      • Share on LinkedIn
      • Share on WhatsApp
      • Report

Sidebar

Related Questions

Possible Duplicate: C++ templates that accept only certain types For example, if we want
Possible Duplicate: PHP get all arguments as array? Within a javascript function arguments always
Possible Duplicate: regex for URL including query string I have a text or message.
Possible Duplicate: What are the stages of compilation of a C++ program? I find
Possible Duplicate: C# driver development? I would like to know if I can do
Possible Duplicate: Unable to get a list of installed Python modules How do I
Possible Duplicate: Can you use reflection to find the name of the currently executing
Possible Duplicate: Any one know of an OpenGL ES example of an interactive globe/earth
Possible Duplicate: Why do I get a null pointer exception from TabWidget? I have
Possible Duplicate: Find out the instance id from within an ec2 machine I am

Explore

  • Home
  • Add group
  • Groups page
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Users
  • Help
  • SEARCH

Footer

© 2021 The Archive Base. All Rights Reserved
With Love by The Archive Base

Insert/edit link

Enter the destination URL

Or link to existing content

    No search term specified. Showing recent items. Search or use up and down arrow keys to select an item.