PC SOFT

PROFESSIONAL NEWSGROUPS
WINDEVWEBDEV and WINDEV Mobile

Home → WINDEV (earlier versions) → [WD24]Chaine vers Hexa
[WD24]Chaine vers Hexa
Started by NerDeD, Jul., 29 2021 12:15 PM - 3 replies
Registered member
8 messages
Posted on July, 29 2021 - 12:15 PM
Bonjour,

Je sais que ce sujet a été traité maintes et maintes fois mais toutes parle d'utiliser la fonction BufferVersHexa() mais cela ne s'applique pas vraiment à ce que je veux faire.
Dans mon application, j'ai décidé pour certains items d'être identifiés par un ID unique non géré par HFSQL. L'id est généré par construction avec plusieurs ID :
IDTechnicien
IDMatériel
IDincrémenté (par une boucle par rapport au précédent ID généré)

Je convertis ces valeurs en chaine puis je construis mon IDUnique = IDTechnicien + IDMatériel + IDincrémenté. Puis je le reconverti en entier via la fonction Val().
Mais évidemment, comme j'aurai plus de 10 techniciens, je finirai quoiqu'il arrive à avoir des doublons.

Donc en regardant la doc, j'ai vu que les entiers peuvent être stockés en Hexa sous la forme 0x_1A_2B_3C par exemple. Mais lorsque je veux reconvertir ma chaine en entier, je coince car Val sort 0 dès qu'il y a une lettre.

Avez-vous une idée ?
Registered member
3,883 messages
Popularité : +227 (347 votes)
Posted on July, 29 2021 - 12:44 PM
Bonjour, dans Val, tu peux préciser la base
e.g:
nNbTech est entier

nNbTech=Val("1A",16) //Ou Val("1A","x")


--
Il y a peut être plus simple, mais, ça tourne
Registered member
8 messages
Posted on July, 29 2021 - 4:52 PM
Bonjour,

Merci pour cette réponse, toutefois, il apparait impossible de stocker une valeur Hexa sous la forme 0x_1A_2B_3C dans un fichier HFSQL sans que la rubrique ne soit en texte.
J'ai donc opté pour le UUID qui lui me permet de le construire en portion.

Merci quand même.
Registered member
3,883 messages
Popularité : +227 (347 votes)
Posted on August, 01 2021 - 10:05 AM
NerDeD a écrit :
il apparait impossible de stocker une valeur Hexa sous la forme 0x_1A_2B_3C dans un fichier HFSQL sans que la rubrique ne soit en texte.

ça c'est une chaine, l'entier c'est 0x1A2B3C.
Pour le créer, il faut utiliser les décalage de 16 et 8 bit avec la fonction OR et l'exploiter, il faut utiliser les masques 0x11000, 0x001100 et 0x000011 avec lles fonction et bit à bit

--
Il y a peut être plus simple, mais, ça tourne