2009-11-26 1 views

답변

15

D2009 이상 : 있음. PChar은 유니 코드 문자 인 Char (WideChar)에 대한 포인터입니다. PAnsiCharAnsiChar에 대한 포인터이며 이름에서 알 수 있듯이 ANSI 문자입니다.

편집 : 델파이 PCharPAnsiChar 사전 2009 버전은 정확히 동일합니다. 둘 다 (안시) 문자를 가리 킵니다.

+0

질문은 구체적으로 "Delphi 2007"을 의미합니다. 이는 "Delphi 2007 and earlier"을 의미합니다. 이 대답은 그 맥락에서 간단하게 잘못된 것입니다. PChar == 델파이 2007 및 이전 버전의 PANSIChar. – Deltics

+6

글쎄, 내가 대답했을 때 그 질문에 언급하지 않았다.당신이 downvoting하기 전에 편집 역사를 보았다면 ( – jpfollenius

+0

글쎄, 지금이 상황에서이 대답을 정정하면이 질문에 오는 다른 누구에게도 도움이 될 것입니다. 편집 이력을 직접 확인하지 않고 머리에 잘못 대답했습니다. – Deltics

0

PAnsiChar은 유니 코드가 아닌 char (이전 문자열 유형)에 대한 포인터이며, PChar는 새로운 스타일 인 유니 코드 char을 가리 킵니다.

+0

당신은 44 초 더 빨랐습니다. :) – jpfollenius

+0

하지만 더 공식화 된 대답을했습니다. :) – Mihaela

0

Delphi 2009 Char 유형은 Char, AnsiChar 및 WideChar이며, Char는 기본값으로 WideChar입니다. 이전 버전의 Delphi에서 Char은 AnsiChar와 같습니다. P는 주어진 타입에 대한 포인터를 나타냅니다.

1

PChar는 "char"에 대한 포인터입니다. D2009 이상에서 Char은 UnicodeChar를 의미합니다. 그 전에 Char는 AnsiChar였습니다.

차이점은 D2007을 사용하고 이후 버전으로 마이그레이션하면 PAhnSchar의 정의가 변경되지만 PAnsiChar의 정의는 변경되지 않는다는 것입니다.

2

나는 에서 델파이 2007 이전 를 PChar의 I는 "델파이 2007 및 이전 버전에서는"을 의미하기 위해 취할 귀하의 질문에, 그래서 ....

"델파이 이전 2007 년"

의 통지를 받아PANSIChar은 동의어입니다. 그들은 동일한 것을 의미합니다 - ANSIChar 값에 대한 포인터. 문자은 해당 버전에서 ANSIChar과 동의어입니다.

그러나 델파이 2009 이상 숯불 그렇게 를 PCharPWideChar로과 동의어가된다, WideChar가과 동의어가된다.

WideChar는 가 아니고 유니 코드 문자입니다. 유니 코드는 그다지 간단하지 않습니다. 어느 누구도 WideChar 값은 BMP (Basic Multilingual Plane)의 코드 포인트이거나 대리 쌍 중 하나 일 수 있습니다. 또한 분음 기호 일 수도 있습니다. 예를 들어 WideString에서 바로 앞의 코드 포인트에 "악센트"를 적용 할 수 있습니다.

유니 코드의 "문자"개념은 모든 유형의 단일 값으로 쉽게 매핑되지 않습니다.

+1

소위 'ANSIChar'는 반드시 앤시 (Ansi) 문자 일 필요는 없으며, MBCS 문자의 앞뒤 바이트 일 수도 있습니다. – mghie

+1

과거의 복잡한 실수는 앞으로 올바른 이해를 보장 할 수있는 방법이 아닙니다. – Deltics

+0

대부분의 사람들이 "캐릭터"라고 생각하는 것은 유니에서 Grapheme이라고 불립니다. 코드 말투. Graphemes은 완전한 기본 문자 + 모든 코드 포인트 + 모든 발음 구별 부호가 첨부됩니다. 불행히도 거의 아무도이 문제가 발생하지 않습니다. 그들은 실패한 16 비트 어레이 모델을 사용합니다. – Skrylar