Различие между PAnsiChar и PChar

>>> import re
>>> re.findall(r'\d+|\D+', '2+24*48/32=10')

['2', '+', '24', '*', '48', '/', '32', '=', '10']

Соответствия последовательные цифры или последовательные нецифры.

Каждое соответствие возвращается как новый элемент в списке.

В зависимости от использования, Вы, возможно, должны изменить регулярное выражение. Такой, как будто необходимо соответствовать числам десятичной точке.

>>> re.findall(r'[0-9\.]+|[^0-9\.]+', '2+24*48/32=10.1')

['2', '+', '24', '*', '48', '/', '32', '=', '10.1']
6
задан pyle 26 November 2009 в 12:52
поделиться

5 ответов

В D2009 и позже: да, есть. PChar - это указатель на Char , который является символом Юникода ( WideChar ). А PAnsiChar - это указатель на AnsiChar , который, как следует из названия, является символом ANSI.

EDIT : для версий Delphi до 2009 г. PChar и PAnsiChar абсолютно одинаковы. Оба они указывают на персонажа (Анси).

17
ответ дан 8 December 2019 в 05:55
поделиться

Я обращаю внимание на «В Delphi предыдущий 2007 год» в вашем вопросе, который, как я понимаю, означает «В Delphi 2007 и ранее», поэтому ....

В Delphi 2007 и предыдущие PChar и PANSIChar являются синонимами. Они означают одно и то же - указатель на значение ANSIChar . Char является синонимом ANSIChar в этих версиях.

Однако в Delphi 2009 и позже Char становится синонимом ] WideChar , поэтому PChar становится синонимом PWideChar .

Обратите внимание, что WideChar НЕ символ Unicode - Unicode просто не такой просто. Любое значение WideChar может быть кодовой точкой в ​​BMP (базовой многоязычной плоскости) или может быть одним из суррогатных пар. Это также может быть диакритический знак - например, «диакритический знак», применяемый к непосредственно предшествующей кодовой точке в WideString.

Концепция «символа» в Юникоде нелегко сопоставить с одним значением любого типа.

4
ответ дан 8 December 2019 в 05:55
поделиться

PChar is a pointer to a "char", whatever that happens to be. In D2009 and later, Char means a UnicodeChar. Before that, Char was an AnsiChar.

The difference is that if you're using D2007 and migrate to a later version, the definition of PChar will change, while the definition of PAnsiChar will not.

1
ответ дан 8 December 2019 в 05:55
поделиться

Типы символов Delphi 2009 - это Char, AnsiChar и WideChar, где Char по умолчанию имеет значение WideChar. В предыдущих версиях Delphi Char был бы эквивалентен AnsiChar. Буква P указывает указатель на данный тип.

0
ответ дан 8 December 2019 в 05:55
поделиться

PAnsiChar - это указатель на символ, отличный от Unicode (старый строковый тип), а PChar указывает на новый стиль, unicode char.

0
ответ дан 8 December 2019 в 05:55
поделиться
Другие вопросы по тегам:

Похожие вопросы: