出于我的目的,我实际上是真正使用ASCII字符数据(用于将ASCII文本文件提交到状态),所以只使用unicodestring将无助于最终结果(我仍然需要转换某些内容)。哪一个需要最大的命中:AnsiString到String或String到AnsiString?
我可以选择将Delphi 2009中的StrComp函数转换为将一个AnsiString和一个PAnsiChar比较为一个UnicodeString和一个PAnsiChar。
Val : PAnsiChar
Mask : TEditMask;
....
,这是我的原代码,这不是好
StrComp(PAnsiChar(Mask.EditText), Val);
....
的话,我可以把它改成这样:
StrComp(PAnsiChar(AnsiString(MAskEdit.EditText), Val);
或者,我可以将其更改为(额外的co为“清晰”)nversions:
StrComp(PChar(MAskEdit.EditText), PChar(String(AnsiString(Val))));
我记得马可坎说,不要做这些中的一个在一个循环中,我不记得哪一个为什么。
就像VCL AnsiStrings单元一样,您可以从kernel32调用CompareStringA(从Windows.pas获取它)。然后你必须从Unicode转换到Ansi。这真的是一个瓶颈吗? –
什么似乎是最大的问题是,当你不断追求不断增长的字符串。 Ala'UnicodeStr:= ANSIStr + UnicodeStr'。我只是不知道这是否比“ANSISTr:= UnicodeStr + AnsiStr”更容易。没关系是一个完全可以接受的答案。 –
为此使用StringBuilder。这个问题是关于堆分配的。尽量减少转换次数。因此,建立没有转换的字符串,然后在最后阶段进行转换。 –