Information : Fonction différences ASC/AscB/AscW et ChrW/ChrB/Chr

Traductions disponibles Traductions disponibles
Numéro d'article: 145745 - Voir les produits auxquels s'applique cet article
Agrandir tout | Réduire tout

Résumé

Pendant des années, les programmeurs de base ont été à l'aide la ASC et jeu de caractères de fonctions Chr pour accéder et manipuler l'ASCII. Avec l'avènement de l'acceptation de Unicode dans les systèmes d'exploitation standard et les applications, la nécessité pour des versions améliorées des fonctions ASC et Chr a développé. Pour répondre à cette demande, Microsoft Visual Basic (4.0 et versions ultérieures) pour Windows inclut la fonction AscB/ChrB et les fonctions AscW/ChrW.

Plus d'informations

Unicode est une norme qui est conçue pour remplacer la norme ANSI pour le codage de caractères dans un formulaire numérique. Étant donné que la norme ANSI utilise uniquement un seul octet pour représenter chaque caractère, il est limité à un maximum de 256 caractères différents. Bien que cela soit suffisante pour répondre aux besoins d'une audience parler anglais, il est compris court que le marché des logiciels dans le monde entier est considéré comme. Avec la norme Unicode, chaque caractère est représenté par deux octets, afin que le caractère Unicode entier inclut 65 536 emplacements possibles.

Microsoft Windows NT, Microsoft Windows 2000 et Microsoft OLE 2.0 sont entièrement Unicode basé et Visual Basic (4.0 et versions ultérieure) représente toutes les chaînes en interne au format Unicode. Les fonctions AscW et ChrW autorisent l'accès aux complète plage de caractères Unicode. Ces fonctions fonctionnent de la même façon que les fonctions ASC et Chr d'origine, sauf qu'ils prennent en charge arguments à partir de 0 à 65 535 au lieu de simplement à partir de 0 à 255. De nombreux objets de Visual Basic (tels que la fenêtre de débogage et l'étiquette et la zone de texte) renvoient un «?» lorsque ces objets ne savent pas comment afficher un caractère Unicode.

Toutes les chaînes sont maintenant représentés en interne au format Unicode, il n'est pas aussi simple qu'il est utilisé pour représenter les données binaires dans une chaîne. À l'aide de la fonction Chr pour affecter des données à une chaîne n'entraîne pas le même comportement qu'avant. Par exemple :
   stringvar = Chr(65)
				

résultats dans une chaîne longue de deux octets, où 1 octet a la valeur de 65 et octets 2 a la valeur 0 (il s'agit de la représentation Unicode de la lettre «A»). Veillez à garder à l'esprit que la conversion d'ANSI en Unicode ne pas toujours entraîner simplement en ajoutant un deuxième octet avec la valeur de zéro comme c'est dans ce cas. Par exemple, la plupart des codes de caractère ANSI dans la plage 130 159 ont complètement différentes valeurs Unicode. Essayez de l'exécution d'un 'Debug.Print AscW(Chr(130))' et une valeur de 8218 vous êtes affiché.

Actuellement, Microsoft Windows requiert un peu processeur endian, ce qui signifie que dans une entité octets plusieurs le premier octet est le moins significatif et signification augmente en octets successives. Ceci explique pourquoi le caractère Unicode «A» est représenté en interne à la suivante :
   -------------------
   |   65   |    0   |
   -------------------
     byte 0     byte 1
				

Les fonctions AscB et fonction ChrB permet de répliquer qu'utilisé pour être accomplies par les fonctions ASC et Chr, car ces fonctions permettent la manipulation des quantités de l'octet unique. Si vous souhaitez une chaîne de quatre octets contenant les valeurs binaires de 65, 66, 67 et 68 consécutivement puis en utilisant la fonction Chr ne fonctionnera pas. Vous devez plutôt utiliser la fonction ChrB. Par exemple :
   stringvar = ChrB(65) & ChrB(66) & ChrB(67) & ChrB(68)
				

Vous pouvez également utiliser la possibilité de créer des tableaux de nouveau type de données byte et de manipuler vos données binaires de cette façon.

Vous trouverez ci-dessous une explication des résultats de certaines utilisations de ces fonctions pour clarifier ces informations la plus simples.

Imprimer Asc(Chr(255))--> "255"

Rien de nouveau ici, sauf que la fonction Chr renvoie un caractère Unicode qui occupe deux octets au lieu d'un caractère ANSI sur un octet.

Imprimer Asc(ChrB(255))--> 5 - appel de procédure non valide.

Cette utilisation renvoie une erreur car la fonction Asc attend toujours au moins un paramètre de deux octets et la fonction ChrB retourne uniquement un seul octet.

Imprimer Asc(Chr(256))--> 5 - appel de procédure non valide.

Bien que la fonction Chr retourne un caractère Unicode à deux octets, il prend toujours uniquement les nombres compris entre 0 et 255 pour son argument (Notez que sur un système DBCS activé, ASC/Chr gérer caractères codés sur deux octets DBCS, en les convertissant et en Unicode). À l'aide de la fonction ChrW autorise l'accès aux emplacements de caractère Unicode complet 65 536.

Imprimer AscW(ChrW(256))--> "256"

Il s'agit de la nouvelle version de la première instruction dans cette section. La fonction ChrW prend une valeur comprise entre 0 et 65 536 et renvoie ce caractère (sur les systèmes 32 bits). La fonction AscW interprète ce caractère comme un caractère Unicode à deux octets et renvoie la valeur Unicode correcte pour ce caractère.

Imprimer Asc(ChrW(256))--> "65"
Imprimer Asc(ChrW(5000))--> "63"

Que se passe-t-il ici est que la fonction ChrW est en cours évaluée en premier. ChrW(256) est le caractère «A» et donc la fonction réduit à Asc("A") et le numéro de Unicode (et ANSI) de «A» est 65. Car Visual Basic ne sait pas comment afficher le caractère représenté par Chr(5000) il affiche uniquement un «?», et comme prévu, l'Unicode et ANSI valeur pour «?» est de 63.

Imprimer AscB(Chr(65))--> "65"
Imprimer AscB(ChrW(256))--> "0"
Imprimer AscB(ChrW(257))--> "1"
Imprimer AscB(ChrW(555))--> "43"
Imprimer AscB(ChrW(65535))--> "255"

Renvoient toutes ces valeurs peuvent être expliquées en comprenant comment chaque caractère est représenté en interne (voir la référence de poids faible (little-endian) ci-dessus) et par le fait que la fonction AscB examine uniquement le premier octet du caractère qu'il reçoit. Il se présente visuellement comme le diagramme suivant :
             -------------------
   Chr(65)   |   65   |    0   |
             -------------------
   Chr(256)  |    0   |    1   |
            -------------------
   Chr(257)  |    1   |    1   |
             -------------------
   Chr(555)  |   43   |    1   |
             -------------------
   Chr(65535)|   255  |  255   |
             -------------------
               byte 0    byte 1
				

La fonction AscB retourne simplement tout ce qui est le premier octet du caractère.

Impression ChrB(65)--> ""

Visual Basic imprime rien du tout pour cet appel à la fonction ChrB car la fonction ChrB retourne uniquement une chaîne d'un octet. Chaînes d'un seul octet comme ceci signifient rien à Visual Basic, car ils ne constituent pas un caractère Unicode valide (ou une série de caractères).

ChrB(0) & ChrB(65) impression--> «A»

Dans ce cas, nous concaténez des deux chaînes sur un octet dans une seule chaîne de deux octets. Étant donné que le modèle de bit résultant est le même que le modèle binaire pour l'Unicode «A», qui est ce que Visual Basic imprime.

Propriétés

Numéro d'article: 145745 - Dernière mise à jour: mercredi 7 mai 2003 - Version: 2.0
Les informations contenues dans cet article s'appliquent au(x) produit(s) suivant(s):
  • Microsoft Visual Basic 5.0 Édition initiation
  • Microsoft Visual Basic 6.0 Édition initiation
  • Microsoft Visual Basic 5.0 Édition professionnelle
  • Microsoft Visual Basic 6.0 Édition professionnelle
  • Microsoft Visual Basic 5.0 Édition Entreprise
  • Microsoft Visual Basic Enterprise Edition for Windows 6.0
  • Microsoft Visual Basic 4.0 Édition Standard
  • Microsoft Visual Basic 4.0 Édition professionnelle
  • Microsoft Visual Basic 4.0 Édition professionnelle
  • Microsoft Visual Basic 4.0 16-bit Enterprise Edition
  • Microsoft Visual Basic 4.0 32-Bit Enterprise Edition
Mots-clés : 
kbmt kbinfo KB145745 KbMtfr
Traduction automatique
IMPORTANT : Cet article est issu du système de traduction automatique mis au point par Microsoft (http://support.microsoft.com/gp/mtdetails). Un certain nombre d?articles obtenus par traduction automatique sont en effet mis à votre disposition en complément des articles traduits en langue française par des traducteurs professionnels. Cela vous permet d?avoir accès, dans votre propre langue, à l?ensemble des articles de la base de connaissances rédigés originellement en langue anglaise. Les articles traduits automatiquement ne sont pas toujours parfaits et peuvent comporter des erreurs de vocabulaire, de syntaxe ou de grammaire (probablement semblables aux erreurs que ferait une personne étrangère s?exprimant dans votre langue !). Néanmoins, mis à part ces imperfections, ces articles devraient suffire à vous orienter et à vous aider à résoudre votre problème. Microsoft s?efforce aussi continuellement de faire évoluer son système de traduction automatique.
La version anglaise de cet article est la suivante: 145745
L'INFORMATION CONTENUE DANS CE DOCUMENT EST FOURNIE PAR MICROSOFT SANS GARANTIE D'AUCUNE SORTE, EXPLICITE OU IMPLICITE. L'UTILISATEUR ASSUME LE RISQUE DE L'UTILISATION DU CONTENU DE CE DOCUMENT. CE DOCUMENT NE PEUT ETRE REVENDU OU CEDE EN ECHANGE D'UN QUELCONQUE PROFIT.

Envoyer des commentaires

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com