|
Chaine de caractére vers null |
Iniciado por Sylvain PAINCHAUD, 23,oct. 2021 14:24 - 7 respuestas |
| |
| | | |
|
| |
Miembro registrado 39 mensajes Popularité : +4 (4 votes) |
|
Publicado el 23,octubre 2021 - 14:24 |
Bonjour,
Sur mon projet, j'ai une classe toto, dedans j'ai des membres :
id is int foo is string bar is string
Je souhaiterai pouvoir faire en sorte que mon foo si il y a quelque chose dedans je puisse le passer a null pour l'envoyer sur une API.
Car mon API n'accepte que les null ou des choses prédéfinit dans certain champs Or si j'ai mon foo qui à déjà quelque chose je souhaiterai le passé à null or je n'y arrive pas car windev me fait passé mon null en "0"
Auriez vous une astuce.
Cordialement |
| |
| |
| | | |
|
| | |
| |
Miembro registrado 3.891 mensajes Popularité : +227 (347 votes) |
|
Publicado el 23,octubre 2021 - 14:47 |
Bonjour, Il faut passer par des variants à la place des chaînes. Ce n'est pas propre, mais c'est la seule solution.
-- Il y a peut être plus simple, mais, ça tourne |
| |
| |
| | | |
|
| | |
| |
Miembro registrado 3.891 mensajes Popularité : +227 (347 votes) |
|
Publicado el 23,octubre 2021 - 14:53 |
En WL, pour une chaîne ou un numérique, Null signifie "non affecté", on peut aussi passer par un objet temporaire et affecter ou non le membre en question. Mais pas sur que ça passe.
-- Il y a peut être plus simple, mais, ça tourne |
| |
| |
| | | |
|
| | |
| |
Miembro registrado 39 mensajes Popularité : +4 (4 votes) |
|
Publicado el 23,octubre 2021 - 16:11 |
Merci de l'information. C'est quand même la base de la programmation et eux ils laissent cela comme ça... C'est fou |
| |
| |
| | | |
|
| | |
| |
Miembro registrado 3.891 mensajes Popularité : +227 (347 votes) |
|
Publicado el 24,octubre 2021 - 08:48 |
| |
| |
| | | |
|
| | |
| |
Miembro registrado 39 mensajes Popularité : +4 (4 votes) |
|
Publicado el 24,octubre 2021 - 12:01 |
Super, merci de l'info. Car le support technique payent ne le savaient même pas... J'avais pas mal de bug à cause de retour Null qui faisaient des "0" ou autre. |
| |
| |
| | | |
|
| | |
| |
Publicado el 24,octubre 2021 - 14:26 |
Oui je trouve dommage, j'ai récemment eu le même type de problème La gestion du nul n’est soit trop permissive, soit manque la gestion du nul pour les types simples (gestion de la valeur inexistante et propriété ..nul comme dans les variants) .
Sans devoir changer leurs systèmes, j'aimerais que pcsoft nous offre la possibilité de : 1) une option dans la configuration pour relever une exception en cas de nul sur un type simple 2) Pouvoir faire un variant, mais qui accepterait un type ou plusieurs types en paramètre.
Par exemple un variant qui accepte seulement le nul et l'entier.
Pour éviter les problèmes dans certains cas j'ai commencé à écrire des méthodes de vérification :
Exemple Renvoie une exception si la valeur est null
Procedure type_verschaine(soit sChaine) : chaîne SI PAS TypeVar(sChaine) DANS (wlChaîne,wlChaîneAnsi,wlChaîneUnicode) ALORS ExceptionDéclenche(404,"Type invalide") RENVOYER sChaine
On accepte le null mais renvoie une chaine vide
Procedure type_verschaine_nullable(soit pChaine) nType est un entier = TypeVar(pChaine) = wlVariant ? pChaine..Type SINON TypeVar(pChaine) SI PAS nType DANS (wlChaîne,wlChaîneAnsi,wlChaîneUnicode,wlVide) ExceptionDéclenche(404,"Type invalide") sChaine est une chaîne = nType = wlVide ? "" SINON pChaine RENVOYER sChaine
Si je dois gérer le nul (avec une rubrique (source,enregistrement,requête) ou un champ nullable) d'un type simple, j'utilise un variant pour récupérer la valeur et je vérifie le type(simple) avec cette fonction (je dois clairement encore l'affiner )
COTypeVariant est une Combinaison typevariant_chaine typevariant_null typevariant_entier2 typevariant_entier4 typevariant_entier8 typevariant_numerique typevariant_reel4 typevariant_reel8 FIN
Procedure verifieTypeVariant(LOCAL vValeur est un Variant,coTypes est un COTypeVariant) : (booléen,booléen) nValide est un entier = 0 bEstNull est un booléen POUR TOUT eOption de coTypes SELON eOption CAS typevariant_null: SI vValeur..Type DANS (wlVide) ALORS nValide++;bEstNull=Vrai CAS typevariant_chaine: SI vValeur..Type DANS (wlChaîne,wlChaîneAnsi,wlChaîneUnicode) ALORS nValide++ CAS typevariant_entier2: SI vValeur..Type DANS (wlEntier,wlEntier_2) ALORS nValide++ CAS typevariant_entier4: SI vValeur..Type DANS (wlEntier,wlEntier_4) ALORS nValide++ CAS typevariant_entier8: SI vValeur..Type DANS (wlEntier,wlEntier_8) ALORS nValide++ CAS typevariant_reel4: SI vValeur..Type DANS (wlRéel,wlRéel_4) ALORS nValide++ CAS typevariant_reel8: SI vValeur..Type DANS (wlRéel,wlRéel_8) ALORS nValide++ CAS typevariant_numerique: SI vValeur..Type DANS (wlNumérique) ALORS nValide++ FIN FIN dbgAssertion(nValide>0,"Le type est invalide") RENVOYER (nValide,bEstNull) |
| |
| |
| | | |
|
| | |
| |
Miembro registrado 39 mensajes Popularité : +4 (4 votes) |
|
Publicado el 11,noviembre 2021 - 11:57 |
Merci pour l'info. C'est sympa. Après j'ai créer tout fait en POO et il ne me manqué que cela enfin j'ai d'autre bug mais la c'est des bug pcsoft qui sont déjà dessus depuis plus de 6 mois xD |
| |
| |
| | | |
|
| | | | |
| | |
|