7
votes

Différence entre Pansicichard et Pchare

Y a-t-il une différence et quel type de Pansichar et Pchare? (à Delphi Précédent 2007)

Merci, à l'avance!


0 commentaires

5 Réponses :


1
votes

PANSICHAR est le pointeur du type non unicode (ancien type de chaîne), tandis que Pchak pointe vers un nouveau style, Unicode Char.


2 commentaires

Vous avez été 44 secondes plus vite :)


Mais vous avez donné une meilleure réponse formulée :)



19
votes

en D2009 et plus tard: oui, il y a. PCHAR est un pointeur sur un char qui est un caractère unicode (A widecharar ). Et PANSICHAR est un pointeur sur un ansichar , qui est - comme le nom l'implique - un caractère ANSI.

edit : pour les versions pré-2009 de Delphi pCHAR et PANSICHAR sont exactement les mêmes. Ils pointent tous les deux à un caractère (ANSI).


4 commentaires

La question spécifiquement déclare "Delphi Précédent 2007", ce qui signifie sûrement "Delphi 2007 et plus tôt". Cette réponse est simplement fausse dans ce contexte. PCHAR == PANSICHAR à Delphi 2007 et plus tôt.


Eh bien, la question n'a pas indiqué que lorsque je lui ai répondu. Vous auriez vu que si vous avez regardé l'historique de modification avant de descendre :(


Eh bien, cela fait maintenant, alors corrigeant cette réponse dans ce contexte aidera quelqu'un d'autre qui vient à cette question, voir votre réponse et disparaît avec complètement la mauvaise réponse dans leur tête sans réfléchir à vérifier les histoires d'édition eux-mêmes.


Je l'ai déjà corrigé, alors je ne comprends pas votre problème. Je pense que vous êtes un peu rude ici. En outre: la réponse n'est en aucun cas «complètement faux», car je souligne clairement que cela est lié à Delphi 2009 et plus tard.



0
votes

Les types de caractères DELPHI 2009 sont CHAR, ANSICHAR et WIDECHAR, où caractères caractères caractères de WIDECHAR. Dans les versions précédentes de Delphes, un caractère serait équivalent à Ansichar. Le P est d'indiquer un pointeur sur le type donné.


0 commentaires

1
votes

PCHAR est un pointeur à un "char", peu importe ce qui se passe. En D2009 et plus tard, le caractère signifie un Unicodechar. Avant cela, Char était Ansichar.

La différence est que si vous utilisez D2007 et migrez vers une version ultérieure, la définition de PCHAR changera, tandis que la définition de PANSICHAR ne sera pas.


0 commentaires

4
votes

Je prends notification de la "in delphi précédant 2007" dans votre question, que je prends pour signifier "à Delphi 2007 et plus tôt", alors ...

dans delphi 2007 et précédent pchar et Pansichar est synonyme. Ils signifient la même chose - un pointeur à une valeur ansichar . Char est synonyme de ansichar dans ces versions.

Cependant, dans Delphi 2009 et ultérieurement, Char devient synonyme de widecharar , donc pchagr devient synonyme de pwidechar .

Remarque, qu'un widecharar est pas un caractère unicode - Unicode n'est tout simplement pas aussi simple. Toute valeur WIDECHARN peut être un point de code dans le BMP (plan multilingue de base) ou peut être l'une des paires de substitution. Il peut également s'agir d'une marque diacritique - par exemple un "accent" à appliquer sur le point de code précédent immédiatement précédant dans un willess.

Le concept d'un "caractère" dans Unicode ne correspond pas facilement à une seule valeur de tout type.


3 commentaires

Un tel appelé ansichar n'est pas nécessairement un caractère ansi non plus. Il peut aussi bien être l'octet de premier plan ou de fuite d'un caractère MBCS.


Les erreurs de composition du passé ne sont pas un moyen de garantir la compréhension correcte à l'avenir.


Ce que la plupart des gens envisagent un "caractère" serait appelé un graphème dans le langage Unicode. Les graphèses sont le caractère complet de la base + tous les points de code + toutes les marques diacritiques attachées. Malheureusement, presque personne ne reçoit cela correctement; Ils utilisent le modèle de réseau de 16 bits échoué.