J'ai des entier 1,..1243,9588, etc
que je souhaite formaté en String de la façon suivante:
0000001
0001243
0009588
...
c'est à dire avec une longueur fixe dont les espaces précédents seraient rempli par des 0
Comment puis je procéder ?
Merci
J'ai des entier 1,..1243,9588, etc
que je souhaite formaté en String de la façon suivante:
0000001
0001243
0009588
...
c'est à dire avec une longueur fixe dont les espaces précédents seraient rempli par des 0
Comment puis je procéder ?
Merci
salut
@+ Phil
Code : Sélectionner tout - Visualiser dans une fenêtre à part format('%.7d',[monentier]);
Bonjour,
StringOfChar('0', 10) renvoi '0000000000' soit 10 fois '0'.
Length(Value) renvoi le nombre de caractère dans Value;
Vous pouvez donc essayer une fonction de ce type;
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24 Function IntegerFixedLenght(Value: String; Length: Integer): string; var I: Integer; begin I := Length(Value); If I > Length then begin Result := Copy(Value, -I - Length, I); // j'ai deja plus de Length Caractères, je prend les dernier caractères Exit; end; If I = Length then begin Result := value; Exit; end; Result := StringOfChar('0', Length - I) + Value; // Exemple Length = 10; // Value = '12' // donc StringOfChar('0', Length - I) = StringOfChar('0', 10 - 2) = '00000000' soit 8 fois '0' // Le resultat est donc '0000000012' soit 10 caractères
Pour info une tite fonction :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 Function IntToZeroStr(Value : Integer; Digit : Integer) : String; Begin Result := IntToStr(Value); for i := Length(Result)+1 to Digit do REsult := '0'+Result; End;
amha je trouve que les fonctions Format et FormatFloat sont largement suffisante, à moins d'être dans une contrainte de performance et d'optimisation forte (sachant que format est particulièrement rapide).
Je pense que vous réinventez un peu la roue ...![]()
![]()
![]()
Partager