je dois lire des valeurs dans des fichiers INI générés par d'autres
programmes, mon problème se situe sur la gestion des espaces dans les
valeurs lues. ces derniers retournent toujours un format sans ""
exemple :
[SECTION]
Val1="1234 " ; valeur de test
Val2=1234 ; valeur réellement retourné par les programmes
contient un espace en fin
bien que Val1 et Val2 soit identique (contient la valeur "1234 " sans
les ") la fonction INILit se comporte de façon différente à mon grand
regret
pour Val1 il me récupère tout ce qui est compris entre "" donc avec
le(s espace(s)
pour Val2 il me tromque le(s) espaces en fin dans mon exemple
les espaces peuvent être avant ou après et en nombre non déterminé,
dans tous les cas les espaces sont tronqués par la fonction INILit
existe-t-il un moyen à mettre en oeuvre pour que la lecture du fichier
INI me récupère les espaces s'il existe
"Avoid specifying a default string with trailing blank characters. The function inserts a null character in the lpReturnedString buffer to strip any trailing blanks."
Pour contourner cela, il te suffit d'enregistrer ton paramètre en remplaçant les éventuels espaces (caract(32)) par des espaces insécables (caract(160)). Ne pas oublier évidemment de faire l'opération inverse après la lecture.
A+
-- Romain PETIT http://cerbermail.com/?O16kfXOFcq (cliquez sur le lien ci-dessus pour me contacter en privé)
JeAn-PhI vient de nous annoncer :
existe-t-il un moyen à mettre en oeuvre pour que la lecture du fichier INI me
récupère les espaces s'il existe
Ce comportement est bien documenté au niveau de l'API :
"Avoid specifying a default string with trailing blank characters. The
function inserts a null character in the lpReturnedString buffer to
strip any trailing blanks."
Pour contourner cela, il te suffit d'enregistrer ton paramètre en
remplaçant les éventuels espaces (caract(32)) par des espaces
insécables (caract(160)).
Ne pas oublier évidemment de faire l'opération inverse après la
lecture.
A+
--
Romain PETIT
http://cerbermail.com/?O16kfXOFcq
(cliquez sur le lien ci-dessus pour me contacter en privé)
"Avoid specifying a default string with trailing blank characters. The function inserts a null character in the lpReturnedString buffer to strip any trailing blanks."
Pour contourner cela, il te suffit d'enregistrer ton paramètre en remplaçant les éventuels espaces (caract(32)) par des espaces insécables (caract(160)). Ne pas oublier évidemment de faire l'opération inverse après la lecture.
A+
-- Romain PETIT http://cerbermail.com/?O16kfXOFcq (cliquez sur le lien ci-dessus pour me contacter en privé)
JeAn-PhI
Romain PETIT a émis l'idée suivante :
JeAn-PhI vient de nous annoncer :
existe-t-il un moyen à mettre en oeuvre pour que la lecture du fichier INI me récupère les espaces s'il existe
Ce comportement est bien documenté au niveau de l'API :
"Avoid specifying a default string with trailing blank characters. The function inserts a null character in the lpReturnedString buffer to strip any trailing blanks."
Pour contourner cela, il te suffit d'enregistrer ton paramètre en remplaçant les éventuels espaces (caract(32)) par des espaces insécables (caract(160)). Ne pas oublier évidemment de faire l'opération inverse après la lecture.
A+
merci pour la réponse je vais avant la lecture ouvrir le fichier faire un remplace global de Caract(32) par Caract(160) puis une fois la valeur récupérer faire un remplacement inverse
-- Cordialement JeAn-PhI
Romain PETIT a émis l'idée suivante :
JeAn-PhI vient de nous annoncer :
existe-t-il un moyen à mettre en oeuvre pour que la lecture du fichier INI
me récupère les espaces s'il existe
Ce comportement est bien documenté au niveau de l'API :
"Avoid specifying a default string with trailing blank characters. The
function inserts a null character in the lpReturnedString buffer to strip any
trailing blanks."
Pour contourner cela, il te suffit d'enregistrer ton paramètre en remplaçant
les éventuels espaces (caract(32)) par des espaces insécables (caract(160)).
Ne pas oublier évidemment de faire l'opération inverse après la lecture.
A+
merci pour la réponse
je vais avant la lecture ouvrir le fichier faire un remplace global de
Caract(32) par Caract(160) puis une fois la valeur récupérer faire un
remplacement inverse
"Avoid specifying a default string with trailing blank characters. The function inserts a null character in the lpReturnedString buffer to strip any trailing blanks."
Pour contourner cela, il te suffit d'enregistrer ton paramètre en remplaçant les éventuels espaces (caract(32)) par des espaces insécables (caract(160)). Ne pas oublier évidemment de faire l'opération inverse après la lecture.
A+
merci pour la réponse je vais avant la lecture ouvrir le fichier faire un remplace global de Caract(32) par Caract(160) puis une fois la valeur récupérer faire un remplacement inverse
-- Cordialement JeAn-PhI
Romain PETIT
Dans son message précédent, JeAn-PhI a écrit :
Romain PETIT a émis l'idée suivante :
JeAn-PhI vient de nous annoncer :
existe-t-il un moyen à mettre en oeuvre pour que la lecture du fichier INI me récupère les espaces s'il existe
Ce comportement est bien documenté au niveau de l'API :
"Avoid specifying a default string with trailing blank characters. The function inserts a null character in the lpReturnedString buffer to strip any trailing blanks."
Pour contourner cela, il te suffit d'enregistrer ton paramètre en remplaçant les éventuels espaces (caract(32)) par des espaces insécables (caract(160)). Ne pas oublier évidemment de faire l'opération inverse après la lecture.
A+
merci pour la réponse je vais avant la lecture ouvrir le fichier faire un remplace global de Caract(32) par Caract(160) puis une fois la valeur récupérer faire un remplacement inverse
Non non pas besoin ! Tu remplaces ta valeur avant le IniEcrit (par exemple en surchargeant WL.INIEcrit / WL.INILit)
"Avoid specifying a default string with trailing blank characters. The
function inserts a null character in the lpReturnedString buffer to strip
any trailing blanks."
Pour contourner cela, il te suffit d'enregistrer ton paramètre en
remplaçant les éventuels espaces (caract(32)) par des espaces insécables
(caract(160)).
Ne pas oublier évidemment de faire l'opération inverse après la lecture.
A+
merci pour la réponse
je vais avant la lecture ouvrir le fichier faire un remplace global de
Caract(32) par Caract(160) puis une fois la valeur récupérer faire un
remplacement inverse
Non non pas besoin !
Tu remplaces ta valeur avant le IniEcrit (par exemple en surchargeant
WL.INIEcrit / WL.INILit)
"Avoid specifying a default string with trailing blank characters. The function inserts a null character in the lpReturnedString buffer to strip any trailing blanks."
Pour contourner cela, il te suffit d'enregistrer ton paramètre en remplaçant les éventuels espaces (caract(32)) par des espaces insécables (caract(160)). Ne pas oublier évidemment de faire l'opération inverse après la lecture.
A+
merci pour la réponse je vais avant la lecture ouvrir le fichier faire un remplace global de Caract(32) par Caract(160) puis une fois la valeur récupérer faire un remplacement inverse
Non non pas besoin ! Tu remplaces ta valeur avant le IniEcrit (par exemple en surchargeant WL.INIEcrit / WL.INILit)
"Avoid specifying a default string with trailing blank characters. The function inserts a null character in the lpReturnedString buffer to strip any trailing blanks."
Pour contourner cela, il te suffit d'enregistrer ton paramètre en remplaçant les éventuels espaces (caract(32)) par des espaces insécables (caract(160)). Ne pas oublier évidemment de faire l'opération inverse après la lecture.
A+
merci pour la réponse je vais avant la lecture ouvrir le fichier faire un remplace global de Caract(32) par Caract(160) puis une fois la valeur récupérer faire un remplacement inverse
Non non pas besoin ! Tu remplaces ta valeur avant le IniEcrit (par exemple en surchargeant WL.INIEcrit / WL.INILit)
et inversement avec IniLit sValeur = INILit(sSection, sClé, "", sFichier) sValeur = remplace(sValeur, caract(160), caract(32))
les fichiers sont générés par des programmes tiers dont je ne peux modifier le comportement donc je récupère les fichiers tels quels
et puis je ne fais que des INILit jamais de INIEcrit
mais merci tout même cela me permet de continuer sans apporter d'énorme modification dans ma classe de gestion d'accès en lecture à ces fichiers spécifiques
-- Cordialement JeAn-PhI
Romain PETIT a émis l'idée suivante :
Dans son message précédent, JeAn-PhI a écrit :
Romain PETIT a émis l'idée suivante :
JeAn-PhI vient de nous annoncer :
existe-t-il un moyen à mettre en oeuvre pour que la lecture du fichier
INI me récupère les espaces s'il existe
Ce comportement est bien documenté au niveau de l'API :
"Avoid specifying a default string with trailing blank characters. The
function inserts a null character in the lpReturnedString buffer to strip
any trailing blanks."
Pour contourner cela, il te suffit d'enregistrer ton paramètre en
remplaçant les éventuels espaces (caract(32)) par des espaces insécables
(caract(160)).
Ne pas oublier évidemment de faire l'opération inverse après la lecture.
A+
merci pour la réponse
je vais avant la lecture ouvrir le fichier faire un remplace global de
Caract(32) par Caract(160) puis une fois la valeur récupérer faire un
remplacement inverse
Non non pas besoin !
Tu remplaces ta valeur avant le IniEcrit (par exemple en surchargeant
WL.INIEcrit / WL.INILit)
et inversement avec IniLit
sValeur = INILit(sSection, sClé, "", sFichier)
sValeur = remplace(sValeur, caract(160), caract(32))
les fichiers sont générés par des programmes tiers dont je ne peux
modifier le comportement donc je récupère les fichiers tels quels
et puis je ne fais que des INILit jamais de INIEcrit
mais merci tout même cela me permet de continuer sans apporter d'énorme
modification dans ma classe de gestion d'accès en lecture à ces
fichiers spécifiques
"Avoid specifying a default string with trailing blank characters. The function inserts a null character in the lpReturnedString buffer to strip any trailing blanks."
Pour contourner cela, il te suffit d'enregistrer ton paramètre en remplaçant les éventuels espaces (caract(32)) par des espaces insécables (caract(160)). Ne pas oublier évidemment de faire l'opération inverse après la lecture.
A+
merci pour la réponse je vais avant la lecture ouvrir le fichier faire un remplace global de Caract(32) par Caract(160) puis une fois la valeur récupérer faire un remplacement inverse
Non non pas besoin ! Tu remplaces ta valeur avant le IniEcrit (par exemple en surchargeant WL.INIEcrit / WL.INILit)
et inversement avec IniLit sValeur = INILit(sSection, sClé, "", sFichier) sValeur = remplace(sValeur, caract(160), caract(32))
les fichiers sont générés par des programmes tiers dont je ne peux modifier le comportement donc je récupère les fichiers tels quels
et puis je ne fais que des INILit jamais de INIEcrit
mais merci tout même cela me permet de continuer sans apporter d'énorme modification dans ma classe de gestion d'accès en lecture à ces fichiers spécifiques