Page 1 sur 1
Strings
Publié : mar. 06/avr./2004 17:16
par Heis Spiter
Bon ceci ne sera pas un sujet de charme, mais un sujet vachement serieux !
string$ <> string.s ! J'ai vérifié avec le compilateur.
déclarez string.b puis string$, tout va bien.
déclarez string.b puis string.s, tout va mal !
De plus Procedurereturn string$ ne fonctionnera pas, mais Procedurereturn string.s si...
Cela m'amene a une question quel est alors l'interet de l'écriture string$ ?
Publié : mar. 06/avr./2004 17:19
par Fred
String$ et String.s ne sont pas les meme variables. Ca repond a ta question ?
Publié : mar. 06/avr./2004 17:31
par Heis Spiter
Non !

e j'avais remarqué que ce n'étaient pas deux memes vairables, mais quel est l'interet de deux ecriture ? Pourquoi ne pas en utiliser qu'une ?
Publié : mar. 06/avr./2004 17:33
par Oliv
quelle est la différence ?

Publié : mar. 06/avr./2004 18:31
par Invité
ben moi je pense que le $ est consideré comme un caractere normal !!
d'apres la doc seul les ".l .w .s ect ..." sont des types !
Publié : mar. 06/avr./2004 19:39
par Guimauve
Regarde bien lorsque tu déclare des variables, exemple alpha.b, plus loin dans le code alpha, il faut deviner c'est quoi le type de variable il s'agit.
Moi au début j'utilisais le .s mais après avoir passé 4-5 heures à chercher un bogue j'utilise le $ pour une variable type chaine de caractère.
Et pour les autres je fais comme ça : Alpha_byte.b, Beta_word.w, Iota_long.l, Gamma_float.f.
Je pourrais faire aussi Omega_string.s mais il est plus rapide à mon sens de faire Omega$ pour les chaînes de caractères.
Comme ça je peux plus facilement relire mon code. C'est certain que pour une procédure simple c'est un peu poussé de faire ça, mais si les variables sont Global ou Shared c'est là que les bogues peuvent apparaîtrent et être très difficile à trouver.
Exemple : Alpha Beta et Iota sur des opérations mathématique avec des petites valeurs personne ne verra la différences entre un Byte, un Word ou un Long. Mais dans certain cas, ça peut causer bien des problèmes de débordement mémoire.
Alpha.b
Beta.w
Iota.l
...
2800 lignes plus loin dans le code
...
Beta = 100
Iota = 120
Alpha = Beta + Iota et ça donne -36 comme résultat et non pas 220.
À mon sens si on code comme ça
Alpha_byte.b
Beta_word.w
Iota_long.l
...
2800 lignes plus loin dans le code
...
Beta_word = 100
Iota_long = 120
Alpha_byte = Beta_word + Iota_long, ça saute aux yeux tout de suite que ça risque fortement de boguer.
Tout ça pour dire que c'est important de bien différencier les variables.
A+
Guimauve
Publié : mar. 06/avr./2004 20:03
par Guimauve
De plus Procedurereturn string$ ne fonctionnera pas, mais Procedurereturn string.s si...
Cela m'amene a une question quel est alors l'interet de l'écriture string$ ?
Voyons donc toi, ça marche certain, tu as certainement oublié de définir le type de la procedure.
Code : Tout sélectionner
Procedure$ Chaine()
Chaine$ = "Allo le monde"
ProcedureReturn Chaine$
EndProcedure
Debug Chaine()
Ça aussi fonctionne.
Code : Tout sélectionner
Procedure.s Chaine()
Chaine$ = "Allo le monde"
ProcedureReturn Chaine$
EndProcedure
Debug Chaine()
Code : Tout sélectionner
Procedure.s Chaine()
Chaine.s = "Allo le monde"
ProcedureReturn Chaine
EndProcedure
Debug Chaine()
Dans les 3 cas le Déboggeur affiche bien "Allo le monde" sur mon PC avec Win 2000.
A+
Guimauve
Publié : mer. 07/avr./2004 19:11
par Patrick88
Guimauve a écrit :Regarde bien lorsque tu déclare des variables, exemple alpha.b, plus loin dans le code alpha, il faut deviner c'est quoi le type de variable il s'agit.
tu peux faire comme les gugusses de l'institut pascal (pascalissime....)
une chaine de carcatère en local = l_str_ma_chaine
en global = g_str_ma_chaine
etc
et la toc tu sais exactement à quelle type de variable tu as affaire....
mais un fonction genre typeof() du genre de pascal serait la bienvenue...
patrick
Publié : jeu. 08/avr./2004 12:16
par Anonyme2
String$ et String.s ne sont pas les meme variables.
Il y a déjà un moment que je l'avais remarqué et je suis comme Heis. Pour moi, ces 2 variables devraient représenter la même variable car il ne s'agit que d'une convention d'écriture .s ou $ définissant le type string.