PC SOFT

FORUMS PROFESSIONNELS
WINDEVWEBDEV et WINDEV Mobile

Accueil → WINDEV (précédentes versions) → [WD24]Chaine vers Hexa
[WD24]Chaine vers Hexa
Débuté par NerDeD, 29 juil. 2021 12:15 - 3 réponses
Membre enregistré
8 messages
Posté le 29 juillet 2021 - 12:15
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 ?
Membre enregistré
3 845 messages
Popularité : +227 (347 votes)
Posté le 29 juillet 2021 - 12:44
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
Membre enregistré
8 messages
Posté le 29 juillet 2021 - 16:52
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.
Membre enregistré
3 845 messages
Popularité : +227 (347 votes)
Posté le 01 août 2021 - 10:05
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