2010-09-17 52 views
2

对于Unicode版本专家:使用D2009进行ansi转换的OEM +

是否可以定义反映当前OEM编码的ansistring类型?

(假设AnsiString类型没有代码页标识符反映ANSI代码页)

这是一个笑话的问题一半,半认真:

这将简化我的CRT单元的端口为Unicode大大(使它不错,键入)

回答

7

看起来您应该可以使用CP_OEMCP,正如您可以使用CP_ACP来获取Ansi代码页一样。

type 
    OemString = type AnsiString(CP_OEMCP); 

如果这样不起作用,那么声明你的变量为RawByteString。用它所需的数据填充它,一旦找出当前的OEM代码页是什么(使用GetOEMCP),请使用SetCodePage将该代码页分配给字符串(尽管如此,尽管它不再是RawByteString,但尽管如此其声明的类型)。

+0

我想声明某些程序只接受OEM。并在必要时进行自动转换。第一个解决方案适合这个并且被接受,第二个解决方案没有多大意义(因为手动转换步骤我可能会简单地称为oemtoansi并返回) – 2010-09-17 14:50:20

+0

(注意我只检查了逻辑,我没有真正测试它,或者多种ansistrings是可以重载的TYPE x = y型并不总是适用于此) – 2010-09-17 14:56:24

+0

额外的'type'关键字是否必要?如果你可以在AnsiString和Utf8String之间重载,那么你也应该能够基于OemString重载。 – 2010-09-17 16:11:20