Bonjour,

si je tape A dans un Edit1, le test IntToStr(Length(Edit1.Text)); me retourne 1.

Et si je tape <CTRL><MAJ>u00c0<ESPACE> pour faire afficher À, le test me retourne 2.

Vous voyez 2 caractères, vous ?

Env. : Laz 1.0.10, FPC 2.6.2, Debian Wheezy 32 bits.
Quelqu'un pourrait tester avec une 1.0.12 et/ou FPC 2.7 et/ou 64 bits ?

Merci pour vos retours de tests, pour vos idées, et bon week-end,

EDIT : et y a plus grave ! Le code pour les trois points de suspension (qui compte pour 1 seul caractère, en typographie : …), me retourne 3.
Vous pouvez tester avec <CTRL><MAJ>u2026<ESPACE>

Par ailleurs, un test en console sous Bash fonctionne bien :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
#!/bin/bash
tst=$1
echo $tst
echo ${#tst}
D'autant plus curieux qu'un code en C retourne les mêmes erreurs que Lazarus :
Code c : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <stdio.h>
#include <string.h>
 
int main(int argc, char **argv)
{
	int arg;
	for (arg = 0; arg < argc; arg++) {
		if (argv[arg] [0] == '-')
			printf("option : %s\n", argv[arg] + 1);
		else	
			printf("argument %d: %s\n", arg, argv[arg]);
			printf("longueur : %d\n", strlen(argv[arg]));
		}
	return 0;
}
Sorties :
# ./testarg 'À'
argument 0: ./testarg
longueur : 9
argument 1: À
longueur : 2
# ./testarg '…'
argument 0: ./testarg
longueur : 9
argument 1: …
longueur : 3
# ./testarg '•'
argument 0: ./testarg
longueur : 9
argument 1: •
longueur : 3
# ./testarg 'A'
argument 0: ./testarg
longueur : 9
argument 1: A
longueur : 1