|
- Types de chaînes de caractères
- Cas particulier
- Chaîne Fixe et chaîne ASCIIZ
- Traitement des chaînes fixes
- Attribut d'extension
- Interpolation de chaînes (ou construction dynamique des chaînes)
- Notes
- Valeur par défaut
- Passer une chaîne de caractères en paramètre à une procédure
- Utiliser le caractère guillemet dans une chaîne de caractères
- Comparaison des différents types chaîne disponibles dans WINDEV et dans WINDEV Mobile
Types de chaînes de caractères Le WLangage propose différents types de chaînes de caractères. 1. Les types les plus courants sont les suivants : | | | Caractère codé sur 1, 2 ou 4 octets selon le mode de gestion des chaînes de caractères et la plateforme d'exécution.- Sous Windows :
- en mode Ansi, un caractère est codé sur 1 octet,
- en mode Unicode, un caractère est codé sur 2 octets.
- Sous Linux :
- en mode Ansi, un caractère est codé sur 1 octet,
- en mode Unicode, un caractère est codé sur 4 octets.
- Sous iOS, en Unicode, un caractère est codé sur 4 octets.
Lorsque un caractère est vide, sa valeur correspond à Caract(0).
| | Chaîne de taille dynamique contenant uniquement des caractères au format ANSI. Ce format est notamment nécessaire pour manipuler : - les fichiers XML
- les fichiers RTF
- les fichiers PDF
- les fonctions utilisant le format UTF8, ...
| | Chaîne de taille dynamique contenant uniquement des caractères au format UNICODE. | | Chaîne de taille dynamique.
Le type "chaîne" est propre au WLangage. Avec ce type, il n'est pas nécessaire de déclarer la longueur de la chaîne. Celle-ci peut varier de façon libre lors de l'utilisation de la variable. | | Zone mémoire binaire. Permet d'écrire un code portable entre WINDEV et WINDEV Mobile en ce qui concerne la manipulation des données brutes. Pour plus de détails, consultez le type "Buffer". | 2. D'autres types de chaînes de caractères peuvent également être utilisés :
| | | Chaîne de taille fixée, terminée par un 0 binaire (identique au langage C). La taille spécifiée correspond au nombre maximum de caractères de la chaîne. Ce type de chaîne de caractères permet de créer un code compatible WINDEV / WINDEV Mobile lors de l'appel d'API existantes sur les deux plateformes. | | Chaîne terminée par un 0 binaire (identique au langage C). La longueur d'une chaîne ASCIIZ est limitée à environ 2 Go. La taille à donner à la chaîne ASCIIZ doit être égale à la taille de la chaîne plus 1 (pour le zéro binaire). | | Chaîne de taille fixe. La longueur d'une chaîne fixe est limitée à environ 2 Go. La chaîne de caractères est complétée : - avec 0 si la variable n'est pas encore affectée.
- avec des espaces si nécessaire si la variable est affectée (elle est semblable au type "string" du Basic).
| | Chaîne précédée d'un octet précisant la longueur (identique au langage Pascal). Cet octet n'est pas accessible. Par exemple chaine[1] représente le premier caractère de la chaîne et non pas sa longueur. La longueur d'une chaîne Pascal est limitée à 255 caractères maximum. La taille à donner à la chaîne Pascal doit être égale à la taille de la chaîne. | | Chaîne de taille fixée contenant uniquement des caractères au format UNICODE. | Remarques : - Le type "Chaîne sur" doit être utilisé pour envoyer des paramètres en entrée / sortie à une API Windows.
- Tous les types avancés (différents du type "Chaîne") sont disponibles pour compatibilité avec les autres langages de programmation (Turbo Pascal Windows, C, Visual Basic Windows, ...) ou pour recevoir le résultat d'une API Windows.
- WINDEV Mobile et WINDEV ne proposent pas les mêmes types de chaînes de caractères. Pour plus de détails sur les différents types de chaînes de caractères proposées, consultez le paragraphe Notes.
Nouveauté 28Attribut d'extension <indétectable> L'attribut d'extension <indétectable> permet d'obfusquer la valeur stockée en mémoire d'une chaîne de caractères (par exemple lors d'un Dump mémoire d'un exécutable). Par défaut (si l'attribut d'extension <indétectable> n'est pas précisé), tous les caractères affectés à une variable de type Chaîne sont visibles lors d'un Dump mémoire de l'exécutable. Ils sont visibles parmi toutes les informations présentes dans le dump : on ne sait donc pas où commence et où fini la chaîne, et il n'y a pas moyen d'identifier à quoi correspond cette chaîne. L'attribut <indétectable> permet d'obfusquer la valeur stockée en mémoire. Les caractères visibles lors d'un Dump ne pourront identifier la valeur de la chaîne. Cet attribut d'extension est notamment utile lors du stockage mémoire de la valeur d'un login ou d'un mot de passe, ou lors du passage d'un mot de passe à la fonction HPasse ou lors de la connexion à une base de données. Exemple :
MaChaîneMémoire est une chaîne <indétectable> MaChaîneMémoire = "MotDePasse"
Remarque : L'utilisation de l'attribut d'extension <indétectable> peut ralentir l'application. Il est nécessaire de l'utiliser uniquement sur les variables de type chaîne le nécessitant. Interpolation de chaînes (ou construction dynamique des chaînes) L'interpolation de chaînes consiste à combiner des variables (ou des expressions) et des chaînes de caractères. Pour effectuer cette opération, le WLangage propose : - Une option spécifique dans l'onglet "Compilation" de la fenêtre de description du projet : Autoriser "[% %]" dans les chaînes.
- Une syntaxe spécifique :
[%Nomdevariable ou Expression%]
Par exemple :
// Demande de confirmation du client SI OuiNon(Oui, "Confirmez-vous la création du client [%sNomClient%]") = Non ALORS RETOUR FIN
Remarques : - Si l'option n'est pas cochée dans l'onglet "Compilation" de la fenêtre de description du projet, la chaîne apparaît telle quelle : le nom de la variable (ou l'expression) apparaît dans la chaîne de caractères.
- Pour ne pas interpréter les caractères "[% %]", il est nécessaire de les faire précéder par "-%". Certaines fonctions WLangage nécessitent cette syntaxe spécifique. Exemple :
grBulle(GR_Echéance, grFormatBulle, "[%CATEGORIE%]" + RC + RC+ "[%VALEUR%]" + " H")
devient
grBulle(GR_Echéance, grFormatBulle, -%"[%CATEGORIE%]" + RC + RC + -%"[%VALEUR%]" + " H")
- Lors de la traduction de ce type de chaînes, il est nécessaire de ne pas traduire le nom de la variable (ou l'expression) à l'intérieur des [% %]. Cependant, il est possible de modifier la place de la balise [%Nomdevariable ou Expression%] dans la phrase.
Valeur par défaut - Une variable de type "Chaîne" ou "Chaîne sur" déclarée et non initialisée correspond à une chaîne vide ("").
- Une variable de type "Buffer" déclarée et non initialisée est vide.
- Une variable de type "Buffer sur" déclarée et non initialisée est remplie avec des 0.
Passer une chaîne de caractères en paramètre à une procédure Il est possible de passer une variable de type "Chaîne" en paramètre à une procédure. Attention : Si la variable a une taille fixée, il faut supprimer les espaces. Par exemple :
MaChaîne est une chaîne MaChaîne = "WINDEV est formidable" // Suppression des espaces dans MaChaîne MaChaîne = SansEspace(MaChaîne) ComptageLettre(MaChaîne) // ComptageLettre est une procédure
Utiliser le caractère guillemet dans une chaîne de caractères Pour utiliser le caractère guillemet dans une chaîne de caractères, il est nécessaire de le doubler. Par exemple :
MaChaîne est une chaîne MaChaîne = "L'option ""Conditions générales"" doit être cochée" Info(MaChaîne) // Affiche : L'option "Conditions générales" doit être cochée
Liste des exemples associés :
|
Exemples unitaires (WINDEV) : Divers types de chaînes
[ + ] Utilisation des différents types de chaînes disponibles avec WINDEV. Les spécificités de chaque type sont détaillées. Types utilisés : - Chaîne "standard" - Chaîne UNICODE - Chaîne fixe - Chaîne Pascal - Chaîne ASCIIZ - Type Buffer
|
Documentation également disponible pour…
|
|
|
|
|
|
|