2009-08-26 43 views

回答

5

删除是一个“编译器魔术”功能。编译器使用其基本数据类型的知识来正确处理操作。对于大多数阵列,它可以简单地将您在代码中写入的信息转换为实际偏移量和需要删除的字节数,然后将其转换为_Delete汇编程序。对于WideStrings,就像Alexander指出的那样,它有一个特殊的_WStrDelete例程。底线:如果您可以将数组或字符串传递给Delete并编译,它应该运行得很好。

+0

哈哈,我只是喜欢这个答案 - 特别是德尔福从字符串到WideString的隐式转换,只要没有重载版本的功能... –

5

像删除,插入,长度等内部RTL函数对Ansi和Wide字符串都起作用。

例如,将WideString上的Delete调用转换为WStrDelete调用(请参阅System.pas)。

+0

你确定吗?在德尔福2006年它只是一个汇编函数... –

+1

是的,我很确定它 - 现在在D2006中检查它。删除字符串(AnsiString)被转换为LStrDelete调用,并且用于WideString的Delete被转换为WStrDelete调用(请参阅CPU视图)。 – Alex

+0

是的,好的,我注意到在此期间,但无论如何感谢。 –