System.SysUtils.CharLength

De RAD Studio API Documentation
Aller à : navigation, rechercher

Delphi

function CharLength(const S: UnicodeString; Index: Integer): Integer;

C++

extern DELPHI_PACKAGE int __fastcall CharLength(const System::UnicodeString S, int Index)/* overload */;

Propriétés

Type Visibilité  Source Unité  Parent
function public
System.SysUtils.pas
System.SysUtils.hpp
System.SysUtils System.SysUtils

Description

Renvoie le nombre d'octets utilisés par un caractère.

Appelez CharLength pour déterminer la taille en octets du caractère commençant à la position Index dans S. Si le caractère ne commence pas à la position Index, cette fonction renvoie la taille du reste du caractère, et non la longueur totale du caractère.

Remarque :  Index est un index d'élément dans S, et non un index de caractère ou d'octet.

Si S est un AnsiString et si le système n'utilise pas un système de caractères multi-octets (MBCS), CharLength renvoie toujours 1.

L'exemple suivant illustre l'opération CharLength.

type
  SJISString = type AnsiString(932);

var
  A: SJISString;
  L: Integer;

begin
  A := 'A' + 'B' + #$82#$A0 + // Japanese Hiragana 'A'
    #$82#$A2 + // Japanese Hiragana 'I'
    #$82#$A4 + // Japanese Hiragana 'U'
    'C' + 'D';

  L := CharLength(A, 1); //renvoie 1 ('A')
  L := CharLength(A, 2); //renvoie 1 ('B')
  L := CharLength(A, 3); //renvoie 2
  L := CharLength(A, 4); //renvoie 1

end.


Dans cet exemple, quand l'index vaut 1 ou 2, il pointe sur le début d'un caractère à octet unique, la fonction renvoie alors 1. Quand l'index vaut 3, il pointe sur le début d'un caractère à deux octets, la fonction renvoie alors 2. Quand l'index vaut 4, il pointe sur la seconde moitié d'un caractère à deux octets, la fonction renvoie alors 1. Sachez que pour cet exemple, la taille d'élément est 1. Certains caractères nécessitent deux éléments, et d'autres seulement un élément.

CharLength peut être utilisée pour localiser la position des caractères multi-octets dans une chaîne.

Cette fonction fonctionne aussi pour les caractères Unicode :

var
  U: UnicodeString;
  L: Integer;

begin
  U := 'abc';
  L := SysUtils.CharLength(U,1); //renvoie 2
  L := SysUtils.CharLength(U,2); //renvoie 2

  U := #$20BB7; // paire de substitution
  L := SysUtils.CharLength(U,1); //renvoie 4
  L := SysUtils.CharLength(U,2); //renvoie 2

end.

Sachez que pour cet exemple la taille d'élément est 2, et que le caractère de paire de substitution est constitué de deux éléments.

Quand la chaîne vaut abc, chaque caractère est un élément à deux octets unique, la fonction renvoie alors 2. Les littéraux chaîne sont Unicode par défaut.

Pour la paire de substitution, quand l'index vaut 1, il pointe sur le premier élément du caractère, la fonction renvoie alors 4. Quand l'index vaut 2, il pointe sur le second élément du caractère et la fonction renvoie 2.

Voir aussi