Bonsoir a tous,
Depuis quelques temps, je me pose la question suivante:
Quelle est la différences entre #Null$ et #Empty$
J'utilise les 2 indifféremment sans voir de différence particulière.
MaVariable=#Null$ et MaVariable$=#Empty$
Dans quels cas dois-je utiliser l'une ou l'autre.
Quel est l'avantage de l'une par rapport a l'autre.
Merci pour l'éclairage que vous pourrez m'apporter.
cage
Différence entre #Null$ et #Empty$ ???
Différence entre #Null$ et #Empty$ ???
■ Win10 64-bit (Intel Celeron CPU N2920 @ 1.86GHz, 4,0GB RAM, Intel HD Graphics) & PB 6.00 LTS
■ Vivre et laisser vivre.
■ PureBasic pour le fun
■ Gérard sur le forum Anglais
■ Mes sites: http://pbcage.free.fr - http://yh.toolbox.free.fr
■ Vivre et laisser vivre.
■ PureBasic pour le fun
■ Gérard sur le forum Anglais
■ Mes sites: http://pbcage.free.fr - http://yh.toolbox.free.fr
Re: Différence entre #Null$ et #Empty$ ???
Le texte officiel est au chapitre Règles de syntaxe générales
#Null$ est un peu l'équivalent de nil qu'on trouve en Pascal et dans d'autres langages.
Voir surtout l'exemple proposé par Kenmo
https://www.purebasic.fr/english/viewto ... 39#p480239
Code : Tout sélectionner
Il y a deux constantes spéciales pour les chaînes:
#Empty$: représente une chaîne vide (exactement la même chose que "")
#Null$ : représente une chaîne nulle. Ceci peut être utilisé avec les fonctions
des APIs nécessitant un pointeur NULL en guise de chaîne ou à une chaîne vraiment libre.
Voir surtout l'exemple proposé par Kenmo
https://www.purebasic.fr/english/viewto ... 39#p480239
Re: Différence entre #Null$ et #Empty$ ???
Merci Marc56,
Il vaut donc mieux utiliser #Empty$ en standard pour des chaînes simple.
Je n'ai découvert #Empty$ que depuis quelques mois tellement j'étais habitué a utiliser #Null$ sans me poser de question.
cage
Il vaut donc mieux utiliser #Empty$ en standard pour des chaînes simple.
Je n'ai découvert #Empty$ que depuis quelques mois tellement j'étais habitué a utiliser #Null$ sans me poser de question.
cage
■ Win10 64-bit (Intel Celeron CPU N2920 @ 1.86GHz, 4,0GB RAM, Intel HD Graphics) & PB 6.00 LTS
■ Vivre et laisser vivre.
■ PureBasic pour le fun
■ Gérard sur le forum Anglais
■ Mes sites: http://pbcage.free.fr - http://yh.toolbox.free.fr
■ Vivre et laisser vivre.
■ PureBasic pour le fun
■ Gérard sur le forum Anglais
■ Mes sites: http://pbcage.free.fr - http://yh.toolbox.free.fr
Re: Différence entre #Null$ et #Empty$ ???
Pour #Empty$ je préfère « "" », c'est 8 fois moins de touches à taper (oui, 8 car # nécessite AltGr) et c'est de toutes façon compatible avec toutes les versions de PB.
#Null$ quant à lui a son usage pour l'appel aux API
Re: Différence entre #Null$ et #Empty$ ???
J'ai cru comprendre qu'il vaut mieux utiliser des constantes plutôt que des chaînes texte.
Si j'ai bien compris, utiliser 50 fois ("") dans un programme revient a initialiser 50 chaînes en mémoire alors que #Empty$ étant une constante, n'est initialisée qu'une fois.
Je fais tout mon possible pour que mes applications utilisent le moins de mémoire et de CPU possible. C'est pour ça que j'essaye d'améliorer ma façon de faire avec parfois des petits détails.
A ce sujet, j'aimerais savoir ce que deviennent toutes les chaînes et variables déclarées en Protected dans une procédure a la fin de l'appel de ladite procédure. Quand la procédure se termine, le ménage est-il fait automatiquement par PB ou faut-il blanchir toutes les variables en dehors bien sur de tout ce qui est nettoyé par les fonctions ClearQuelquechose()
Merci a toi.
cage
Si j'ai bien compris, utiliser 50 fois ("") dans un programme revient a initialiser 50 chaînes en mémoire alors que #Empty$ étant une constante, n'est initialisée qu'une fois.
Je fais tout mon possible pour que mes applications utilisent le moins de mémoire et de CPU possible. C'est pour ça que j'essaye d'améliorer ma façon de faire avec parfois des petits détails.
A ce sujet, j'aimerais savoir ce que deviennent toutes les chaînes et variables déclarées en Protected dans une procédure a la fin de l'appel de ladite procédure. Quand la procédure se termine, le ménage est-il fait automatiquement par PB ou faut-il blanchir toutes les variables en dehors bien sur de tout ce qui est nettoyé par les fonctions ClearQuelquechose()
Merci a toi.
cage
■ Win10 64-bit (Intel Celeron CPU N2920 @ 1.86GHz, 4,0GB RAM, Intel HD Graphics) & PB 6.00 LTS
■ Vivre et laisser vivre.
■ PureBasic pour le fun
■ Gérard sur le forum Anglais
■ Mes sites: http://pbcage.free.fr - http://yh.toolbox.free.fr
■ Vivre et laisser vivre.
■ PureBasic pour le fun
■ Gérard sur le forum Anglais
■ Mes sites: http://pbcage.free.fr - http://yh.toolbox.free.fr
Re: Différence entre #Null$ et #Empty$ ???
1. "" : Je ne sais pas si ça prend vraiment plus. Une chaîne (AZT) vide c'est juste (je pense?) une adresse mémoire qui pointe vers une case avec logiquement un nul (\0) donc peut être que " " prend alors 2 octets ou c'est une conversion? Un pro d' assembleur dirait sans doute plus ?Je me suis toujours demandé pourquoi cette constante existe ?
2. Gratter de la ram: Je fais ça aussi (vieille habitude du ZX81 (1Ko) et du Vic 20 (3.5ko) on ne se refait pas.
3. Procedure: À ma connaissance, dès qu'une procédure a fini son boulot, les variables déclarées en Protected sont supprimée automatiquement, seules celles déclarées en Static "survivent". Peut-être qu'il y a une exception si on a alloué de la ram en manuel (AllocateMemory() ?)
De même quand on quitte un programme PB il fait le ménage: libère toutes les zones de ram occupées, y compris celles déclarés dans des threads. Il libère les handles de fichier pas fermés, clos les connexions serie et base de données, vide le cendrier et éteint la lumière.
Fred pense à tout.
2. Gratter de la ram: Je fais ça aussi (vieille habitude du ZX81 (1Ko) et du Vic 20 (3.5ko) on ne se refait pas.
3. Procedure: À ma connaissance, dès qu'une procédure a fini son boulot, les variables déclarées en Protected sont supprimée automatiquement, seules celles déclarées en Static "survivent". Peut-être qu'il y a une exception si on a alloué de la ram en manuel (AllocateMemory() ?)
De même quand on quitte un programme PB il fait le ménage: libère toutes les zones de ram occupées, y compris celles déclarés dans des threads. Il libère les handles de fichier pas fermés, clos les connexions serie et base de données, vide le cendrier et éteint la lumière.
Fred pense à tout.
Re: Différence entre #Null$ et #Empty$ ???
Bonjour,
C'est vrai, Fred pense à (presque) tout.
Je me félicite chaque fois que j'utilise PB d'avoir pris une licence.
Impatient de voir ce que va donner la prochaine version de PB.
Prêt a repayer une licence si besoin.
cage
C'est vrai, Fred pense à (presque) tout.
Je me félicite chaque fois que j'utilise PB d'avoir pris une licence.
Impatient de voir ce que va donner la prochaine version de PB.
Prêt a repayer une licence si besoin.
cage
■ Win10 64-bit (Intel Celeron CPU N2920 @ 1.86GHz, 4,0GB RAM, Intel HD Graphics) & PB 6.00 LTS
■ Vivre et laisser vivre.
■ PureBasic pour le fun
■ Gérard sur le forum Anglais
■ Mes sites: http://pbcage.free.fr - http://yh.toolbox.free.fr
■ Vivre et laisser vivre.
■ PureBasic pour le fun
■ Gérard sur le forum Anglais
■ Mes sites: http://pbcage.free.fr - http://yh.toolbox.free.fr