OVH Cloud OVH Cloud

Pour François Picalausa

3 réponses
Avatar
TEV
Bonjour,

Suite à la dernière réponse à propos de "pourquoi cela me retourne une
chaîne vide" : la fonction GetIniEntry permettant de lire une valeur dans un
fichier ini.

J'ai cherché à comprendre la raison d'être de la fonction. J'avoue que je ne
la comprend pas trop. Est-ce un bug de l'API ou bien ce problème se pose
seulement dans certains cas ?

Je sais que cela dépasse un peu du cadre du news, mais cela me turlupine
depuis hier.

Christian.

3 réponses

Avatar
François Picalausa
Bonjour/soir,

J'ai cherché à comprendre la raison d'être de la fonction.



Simplement offrir une fonction plus aisée aux dévs VB pour accéder au
fichier ini ;-)

J'avoue que je ne
la comprend pas trop.



La méthode est plus ou moins simple ;-)
La valeur qu'on lit dans un fichier INI n'a jamais une taille certaine.
Une API ne sait pas redimensionner la chaine qu'on lui passe. On lui affecte
donc un espace fixe de caractère (buffer).
Le problème se pose si par exemple, la valeur fait plus de la taille du
buffer.
De ce fait, on a besoin d'un bContinue pour quitter la boucle quand on a
atteint la bonne taille (et qu'on a lu la valeur) et d'un indicateur de
taille actuelle du buffer (buffersize).
Pour savoir si la lecture échoue ou non, on doit tester le retour que l'API
nous donne. D'où le ReturnCode.

Ensuite, la procédure est la même que celle que tu as employée:
On dimensionne le buffer et on lit.
Seule différence: je teste le retour pour savoir si la lecture a été
effectuée avec succès ou si le buffer était trop court (pour l'allonger, et
recommencer la boucle).

Cette fonction te permet donc de ne pas devoir t'occuper d'initialiser un
buffer, de gérer la taille, ...
Mais sinon, cette fonction ne sert à rien.

--
François Picalausa (MVP VB)
FAQ VB : http://faq.vb.free.fr
MSDN : http://msdn.microsoft.com

"TEV" a écrit dans le message de
news:3f6ede55$0$3386$
Bonjour,

Suite à la dernière réponse à propos de "pourquoi cela me retourne une
chaîne vide" : la fonction GetIniEntry permettant de lire une valeur dans


un
fichier ini.

J'ai cherché à comprendre la raison d'être de la fonction. J'avoue que je


ne
la comprend pas trop. Est-ce un bug de l'API ou bien ce problème se pose
seulement dans certains cas ?

Je sais que cela dépasse un peu du cadre du news, mais cela me turlupine
depuis hier.

Christian.




Avatar
Zoury
> Simplement offrir une fonction plus aisée aux dévs VB pour accéder au
fichier ini ;-)



...ou plutôt à tous les développeurs utilisant la dll, peu importe le
langage. ;O)

--
Cordialement
Yanick Lefebvre - MVP pour Visual Basic
http://faq.vb.free.fr/?rubrique=0 - http://www.mvps.org/vbnet/
http://www.mentalis.org/agnet/apiguide.shtml - http://www.mztools.com/

Merci de poster les réponses au groupe afin d'en faire profiter à tous
Avatar
TEV
Re-Merci avec M majuscule.
Christian.
"François Picalausa" a écrit dans le message de news:

Bonjour/soir,

> J'ai cherché à comprendre la raison d'être de la fonction.

Simplement offrir une fonction plus aisée aux dévs VB pour accéder au
fichier ini ;-)

> J'avoue que je ne
> la comprend pas trop.

La méthode est plus ou moins simple ;-)
La valeur qu'on lit dans un fichier INI n'a jamais une taille certaine.
Une API ne sait pas redimensionner la chaine qu'on lui passe. On lui


affecte
donc un espace fixe de caractère (buffer).
Le problème se pose si par exemple, la valeur fait plus de la taille du
buffer.
De ce fait, on a besoin d'un bContinue pour quitter la boucle quand on a
atteint la bonne taille (et qu'on a lu la valeur) et d'un indicateur de
taille actuelle du buffer (buffersize).
Pour savoir si la lecture échoue ou non, on doit tester le retour que


l'API
nous donne. D'où le ReturnCode.

Ensuite, la procédure est la même que celle que tu as employée:
On dimensionne le buffer et on lit.
Seule différence: je teste le retour pour savoir si la lecture a été
effectuée avec succès ou si le buffer était trop court (pour l'allonger,


et
recommencer la boucle).

Cette fonction te permet donc de ne pas devoir t'occuper d'initialiser un
buffer, de gérer la taille, ...
Mais sinon, cette fonction ne sert à rien.

--
François Picalausa (MVP VB)
FAQ VB : http://faq.vb.free.fr
MSDN : http://msdn.microsoft.com

"TEV" a écrit dans le message de
news:3f6ede55$0$3386$
> Bonjour,
>
> Suite à la dernière réponse à propos de "pourquoi cela me retourne une
> chaîne vide" : la fonction GetIniEntry permettant de lire une valeur


dans
un
> fichier ini.
>
> J'ai cherché à comprendre la raison d'être de la fonction. J'avoue que


je
ne
> la comprend pas trop. Est-ce un bug de l'API ou bien ce problème se pose
> seulement dans certains cas ?
>
> Je sais que cela dépasse un peu du cadre du news, mais cela me turlupine
> depuis hier.
>
> Christian.
>
>