1

In Delphi, the entries in the STRINGTABLE resource in the .exe file are created automatically. The numbering (resource-id) of the entries is managed by Delphi itself, and this cannot be changed.

Is there a possibility to influence this numbering in Delphi, so that it is changed in the STRINGTABLE of the .exe? This could be e.g. a compiler setting.

The question has the following background:

  • we use Sisulizer for translating our Delphi applications, and this has worked fine for years.

  • Sisulizer accesses this STRINGTABLE in the translation process, and changes the value with the text of the corresponding language. As key, this number is used (simplified).

  • for reasons unknown to me, Delphi changed this numbering in the .exe, and now Sisulizer puts the wrong texts into the STRINGTABLE, and the translated application contains completely wrong texts and is therefore unusable.

We have changed neither the Delphi version nor the Sisulizer version, and this problem happened out of the blue.

Environment:

  • Delphi 10.3
  • Sisulizer 4.0 (Build 374)
  • Windows 10

I have been using older codestands and have always encountered the same problem with the numbering changing after compiling. The numbers in the .exe no longer match the numbers in the Sisulizer project.

Sisulizer project and STRINGTABLE of exe

The image shows the part in Sisulizer and the part of the STRINGTABLE that has different texts. The corresponding text in German is now at position 3870.61907.

Remy Lebeau
  • 555,201
  • 31
  • 458
  • 770
Bruno
  • 11
  • 1
  • 1
    Sounds like you need to refresh your Sisulizer project after a Delphi compilation. The resource-id numbers have never been guaranteed to remain consistent between compilations. They are just indexes into the STRINGTABLE resource (see [this answer](https://stackoverflow.com/a/34521748/65863)), and thus depend on the order in which the compiler puts the strings in the table during compiling. So something must have changed in your Delphi project to make it put the strings in the table in a different order than before. – Remy Lebeau Mar 15 '23 at 20:20

0 Answers0