Longueur champ

cs_MicLau Messages postés 7 Date d'inscription lundi 24 mars 2003 Statut Membre Dernière intervention 10 octobre 2003 - 24 mars 2003 à 14:46
cs_Delphiprog Messages postés 4297 Date d'inscription samedi 19 janvier 2002 Statut Membre Dernière intervention 9 janvier 2013 - 25 mars 2003 à 14:07
Bonjour à vous tous,

Je suis néophyte sur ce forum car je débute avec Delphi.
J'ai une grande expérience avec visual Basic et j'essaie de trouver dans Delphi comment récupérer la longueur "totale" d'un champ (variable, structure ou base de données).
J'ai essayé plusieurs fonctions COPY, LENGTH, mais le problème est qu'elles me renvoient le contenu dynamique de la variable.
Ex:
S: String[6]
T: String[6]

S:='ABC'
T:=COPY(S,1,6)

--> Length(S) va me renvoyer la valeur dynamique (Donc 3), alors que j'aurai souhaité 6.

--> COPY va mettre la valeur 'ABC' dans T alors que j'aurai souhaité 'ABC ' (les 3 blancs ne sont pas pris en compte).

Existe-t'il une fonction ou du code qui permet de récupérer la totalité de la valeur de ma variable ?

Merci à vous tous pour votre aide.

1 réponse

cs_Delphiprog Messages postés 4297 Date d'inscription samedi 19 janvier 2002 Statut Membre Dernière intervention 9 janvier 2013 32
25 mars 2003 à 14:07
Il faut utiliser la fonction SizeOf en prenant, toutefois, quelques précautions comme il est démontré ci-après :

Soit s: string[6]
alors SizeOf(S) renvoie 7

Explication : le compilateur de Delphi détermine qu'il s'agit en réalité d'un type ShortString. Or, le type ShortString utilise un octet de plus pour stocker la longueur de la chaine.

Soit S: string;
alors : SizeOf(S) renvoie 4

Explication : cette fois, le compilateur détermine qu'il s'agit d'un pointeur sur une chaine. Et, en environnement 32 bits, les pointeurs sont stockés sur 4 octets.
On pourrait ainsi multiplier les exemples mais l'essentiel est de bien connaître la taille des structures de base pour comprendre ce que l'on fait.
May Delphi be with you
0
Rejoignez-nous