2009/12/7 Alemão <forumdel...@gmail.com>: > Alguem da lista consegue me explicar a diferença entre string no delphi 2006 > e string no delphi 2009? O PCHAR também.
String é um array de Char. PChar é um ponteiro para Char. Char é um atalho. Até o Delphi2006, Char era um atalho para AnsiChar, e do 2007 em diante é um atalho para WideChar. Qual a diferença? AnsiChar é uma estrutura de um byte, que guarda um caracter iso e semelhantes. WideChar é uma estrutura de dois bytes que guarda um caracter UTF-16. O problema todo gira em torno de supor que um Char tem sempre um byte, o que não é verdade. Um Char tem o tamanho de SizeOf(Char). Quando é necessário que a string seja formada por caracteres que ocupam apenas um byte, então é necessário trabalhar com AnsiString, que é um array de AnsiChar, cujo ponteiro é PAnsiChar. Joao Morais