使用codepage参数和teamcity进行Delphi 2007编译

时间:2016-08-09 12:38:02

标签: windows delphi teamcity

我正在尝试使用参数--codepage:1252编译在Delphi 2007中编写的项目。在一台装有Windows 10的机器上,一切正常,西班牙语字符串显示正确。当我在Windows 8参数的计算机上做同样的事情--codepage:1252什么都没有改变。 我需要这个,因为在没有工作的计算机上我有团队代理。 有没有类似的问题?或者可以在非unicode应用程序上正确显示西班牙语字符,而无需在需要重新启动系统的windows属性中更改它,这对teamcity服务器来说是个问题。

编辑:

在两台计算机上,我为非unicode应用程序设置了波兰语,并且:

  1. Windows 10 - 使用西班牙语字符编译,将exe文件复制到西班牙语PC并且没有西班牙语字符。
  2. Windows 10 - 使用西班牙语字符编译和--codepage:在dproj“1252”中设置1252参数,将exe文件复制到西班牙语PC并且西班牙语字符显示正确。
  3. Windows 10 - 使用dcc32.exe在命令行中编译西门子字符和--codepage:1252参数,将exe文件复制到西班牙语PC并且西班牙语字符没有西班牙语字符。
  4. Windows 8 - 使用西班牙语字符编译,将exe文件复制到西班牙语PC并且没有西班牙语字符。
  5. Windows 8 - 使用西班牙语字符和--codepage:1252参数编译,将exe文件复制到西班牙语PC并且没有西班牙语字符。
  6. Delphi编译和使用dcc32.exe之间有什么区别它应该是相同的输出,因为Delphi以相同的方式使用dcc32,我可以在输出中看到它。

    更新:

    经过更多测试我得出结论: 从Delphi IDE编译“--codepage:1252”,所有文件都有ANSI格式,它的工作原理。当我改为UTF-8时不会工作。 从命令行在任何情况下和组合中都不起作用。

2 个答案:

答案 0 :(得分:1)

Delphi 2007是Delphi的最后一个版本,仍然使用基于Ansi的RTL / VCL。本机GUI组件使用操作系统的默认Ansi代码页。因此,如果源代码以Latin1 / Spanish编码(这是--codepage:1252参数告诉编译器的话),如果 GUI 无法显示,则无关紧要西班牙语数据在非西班牙语机器上正确。

正如dummzeuch所提到的,您的源代码应该保存为UTF-8而不是Latin1 / Spanish。但是,如果要在运行时从基于Ansi的可执行文件显示Unicode数据,则必须将数据转换为Unicode并使用第三方Unicode GUI组件,例如TNT Unicode controls。另请参阅Handling a Unicode String in Delphi Versions <= 2007

否则,咬紧牙关并升级到Delphi 2009或更高版本,它们使用基于Unicode的本机RTL / VCL。自2008年以来,Delphi一直是完全的Unicode产品,现在是抛弃ANSI的时候了。

答案 1 :(得分:0)

您可以在正常工作的计算机上将文件格式更改为UTF-8并保存(我不确定是否可以自动为项目中的所有文件执行此操作。然后它应该可以在任何计算机上运行,​​无论其代码页如何。

要更改文件格式,请使用编辑器窗口的上下文菜单。