Page 1 sur 1
Concaténation : "+" Vs "&"

Publié:
16 Nov 2009 à 15:12
par Ahamay
quelqu'un pourrait il m'expliquer la différence profonde entre + et & quand il s'agit de concaténer des chaines en LS....
Parce que, par exemple :
Call doc.ReplaceItemValue("TestDbComment", "## Base Test Créée par Agent le " & Str(Now) &"##"&Chr$(13) & doc.GetItemValue("TestDbComment")(0))
ET
Call doc.ReplaceItemValue("TestDbComment", "## Base Test Créée par Agent le " + Str(Now) +"##"+Chr$(13) + doc.GetItemValue("TestDbComment")(0))
Bin c'est kiff-kiff
Et j'en ai plein ma musette des exemples comme celui ci.
Bref.... soyons académique.... selon IBM et ses Good Practices, quand doit on utiliser l'un ... ou l'autre ?

Publié:
16 Nov 2009 à 16:58
par Ahamay
bin j'vois que ça vous laisse dubitatif ma question


Publié:
16 Nov 2009 à 17:04
par Michael DELIQUE
ben franchement j'aipas de réponse !

Publié:
16 Nov 2009 à 17:22
par stloje
Selon ce qu'on m'a déjà expliqué, le signe + et & sont deux opérateurs de concaténation, mais le signe + est surchargé lorsqu'il est utilisé sur une chaîne de caractères. A cause de sa nature première, qui est l'addition, il peu arriver qu'une erreur survienne lorsqu'il y a concaténation d'un numérique et d'une chaîne. Il est donc préférable de toujours utiliser le signe & pour indiquer que le traitement est bien une chaîne de caractères.

Publié:
16 Nov 2009 à 17:30
par erenault
stloje a écrit:Selon ce qu'on m'a déjà expliqué, le signe + et & sont deux opérateurs de concaténation, mais le signe + est surchargé lorsqu'il est utilisé sur une chaîne de caractères. A cause de sa nature première, qui est l'addition, il peu arriver qu'une erreur survienne lorsqu'il y a concaténation d'un numérique et d'une chaîne. Il est donc préférable de toujours utiliser le signe & pour indiquer que le traitement est bien une chaîne de caractères.
Tiens ça expliquerait certaines des erreurs de logs dans une partie de l'appli ...
Il va falloir tout modifier
Merci

Publié:
16 Nov 2009 à 17:36
par Ahamay
@erenault : désolé... c'était pas le but de ma question


Publié:
17 Nov 2009 à 11:14
par oguruma
bahhh c'est simple
le & te fait simplement la conversion de type ce que ne fait pas le + où les deux chaînes doivent être alpha
exemple 1
dim A as string
dim B as integer
dim C as string
A="lapins"
B=2
c= B + " " + A
==> provoquera une erreur
il faut donc faire
c= cstr(B) + " " + A
=> OK
on peut aussi fare
c= str$(B) + " " + A
mais le str$() ajout un blanc de tête pour la gestion du signe - ici transparent car comme en math le signe est ignoré par défaut sauf dans l'ensemble Z où le spécifie
dans les view basic (le basica ou gwbasic)le cstr n'existait et on se faisait tous un bon vieux DefFN cstr=(.........) [années 80....]
ou
c= B & " " + A
==> OK le & fait conversion de B en alpha
voili voilà !

Publié:
19 Nov 2009 à 09:31
par Ahamay
Yessss....
Bin en voila une réponse qu'elle est bonne
c'est clair, simple, précis.... nickel !
Merci oguruma.

Publié:
20 Nov 2009 à 12:12
par erenault
Ahamay a écrit:@erenault : désolé... c'était pas le but de ma question

Pas de problème, il vaut mieux savoir que laisser trainer


Publié:
20 Nov 2009 à 17:50
par Michael DELIQUE
je ne dirais qu'un mot : tip

Publié:
23 Nov 2009 à 15:02
par oguruma
c'est fait

Publié:
23 Nov 2009 à 15:13
par Michael DELIQUE
Merci Maître

Publié:
08 Déc 2009 à 12:10
par d.bugger

Publié:
08 Déc 2009 à 12:26
par Michael DELIQUE
en effet !
le billet de de septembre 2005 je serais curieux de voire les résultats sur la derniere version !
mais en gros que l'on utilise + ou & ça reviens a peut pres au meme !

Publié:
09 Déc 2009 à 10:06
par oguruma
nous sommes d'accord, le perf peuvent évoluer sensiblement sur un gros volume d'opérations avec un grand nombre de documents à traiter dans une vue
avec la version 8 (plus rapide) il n'y a quasiment plus de différences