Strings

Sujets variés concernant le développement en PureBasic
Heis Spiter
Messages : 1092
Inscription : mer. 28/janv./2004 16:22
Localisation : 76
Contact :

Strings

Message par Heis Spiter »

Bon ceci ne sera pas un sujet de charme, mais un sujet vachement serieux ! :roll:
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$ ?
Heis Spiter, webmaster du site http://www.heisspiter.net
Développeur principal et administrateur du projet Bird Chat
Parti courir au bonheur du dév. public et GPL :D
Fred
Site Admin
Messages : 2652
Inscription : mer. 21/janv./2004 11:03

Message par Fred »

String$ et String.s ne sont pas les meme variables. Ca repond a ta question ?
Heis Spiter
Messages : 1092
Inscription : mer. 28/janv./2004 16:22
Localisation : 76
Contact :

Message par Heis Spiter »

Non ! :lol: 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 ?
Heis Spiter, webmaster du site http://www.heisspiter.net
Développeur principal et administrateur du projet Bird Chat
Parti courir au bonheur du dév. public et GPL :D
Oliv
Messages : 2117
Inscription : mer. 21/janv./2004 18:39

Message par Oliv »

quelle est la différence ? :oops:
Invité

Message 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 !
Guimauve
Messages : 1015
Inscription : mer. 11/févr./2004 0:32
Localisation : Québec, Canada

Message 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
Guimauve
Messages : 1015
Inscription : mer. 11/févr./2004 0:32
Localisation : Québec, Canada

Message 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
Patrick88
Messages : 1564
Inscription : mer. 21/janv./2004 18:24

Message 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
Anonyme2
Messages : 3518
Inscription : jeu. 22/janv./2004 14:31
Localisation : Sourans

Message 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.
Répondre