Page 1 sur 1

int to string

Posté : 12 mars 2021, 16:19
par dpo
un petit truc facile pour les experts sous unity
je reçois par exemple 2 champs en INT : dans des variables INT1 et INT2, je veux les concaténer dans une chaine avec un "_" entre eux
exemple
INT1=123
INT2=456

resu souhaité=123_456

j'ai trouvé le INT_TO_STRING mais celui-ci prend forcément 5 caractères et le signe, ce qui donnerait
+00123_+00456

j'ai d'autres idées pour avoir gain de cause mais avant de tout chambouler, je voulais savoir si j'ai pas raté un truc
(je fouille les conversions possible)
Bon au final c'était pour manipuler des dates donc j'ai récupéré l'heure de l'api pour stocker mon horodate
au passage j'ai trouvé une astuce
si on stocke une horodate dans un string[16] "madate" ça donne 2021-03-12-11:05
pour remplacer le : par h, je ne pouvais pas saisir madate[13], j'ai donc créé un tableau_date de 16 string[1] localisé comme "madate"
et je peux saisir tableau_date[13]:="h"
oui mais pourquoi tout ça ? parce qu'au final ça arrive sur un PC qui va créer un fichier avec comme nom cette date et que windaube ne veut pas de : dans les noms de fichiers
oui mais pourquoi pas changer les caractères dans le PC, parce que j'aime bien avoir le même affichage en ligne sur l'automate et sur le PC

Re: int to string

Posté : 12 mars 2021, 20:57
par skip74
Salut

si tu ne veux garder que les 3 derniers chiffres de ta conversion, tu peux utiliser la fonction delete_int pour supprimer les 4 premiers octets...


et pour changer les caractères '-' par des '_' , j'utiliserais la fonction replace_int

A+

Re: int to string

Posté : 12 mars 2021, 21:00
par Pierro
salut,

pour concaténer des entiers dans des chaines, la fonction MID_INT permet d'extraire une partie de la chaine de caractère. en ST ca donnerai ca:

//convection en chaine
STR1:=int_to_string(INT1) ;
STR2:=int_to_string(INT2) ;

//substitution des caractères non utilisés
STR1 := MID_INT(STR1, 3, 5);
STR2 := MID_INT(STR2, 3, 5);

A+

Re: int to string

Posté : 14 mars 2021, 18:34
par itasoft
Pierro a écrit : 12 mars 2021, 21:00 salut,

pour concaténer des entiers dans des chaines, la fonction MID_INT permet d'extraire une partie de la chaine de caractère. en ST ca donnerai ca:

//convection en chaine
STR1:=int_to_string(INT1) ;
STR2:=int_to_string(INT2) ;

//substitution des caractères non utilisés
STR1 := MID_INT(STR1, 3, 5);
STR2 := MID_INT(STR2, 3, 5);
A+
-------------
Slts,
C’est la bonne solution reste à calculer les positions et le nombre de caractères à extraire en fonction de la valeur de INT1

(* Ya la solution bestiale *)
(*exemple:*)
if INT1>=0 then
nb:=1;posi:=6;
end_if;

if INT1>=10 then
nb:=2;posi:=5;
end_if;

if INT1>=100 then
nb:=3;posi:=4;
end_if;
(* ect.... *)

Re: int to string

Posté : 14 mars 2021, 18:58
par dpo
merci pour les tuyaux même si finalement j'ai fait autrement, je n'avais pas pensé à traiter les données en deux fois
je pensais que j'avais raté une fonction équivalente à int_to_string mais qui me donnerait uniquement les chiffres significatifs
Mon projet comporte une partie supervision et une partie api
comme je viens de passer deux jours à manipuler les données dans pcvue, j'ai pris d'autres habitudes, notamment quand on convertit la valeur 123 en chaine ça donne "123" et pas "+00123"

Re: int to string

Posté : 14 mars 2021, 19:02
par itasoft
slts
je pensais que j'avais raté une fonction équivalente à int_to_string mais qui me donnerait uniquement les chiffres significatifs

--
non tu n'as rien raté , lol