écriture fichier txt/ini - VB/VBA/VBS - Programmation
Marsh Posté le 08-06-2004 à 16:05:25
Je suis sur un job pas très exitant, alors je me distrais sur le forum :-))
Tu peux lire et écrire les fichiers .ini avec les API:
GetPrivateProfileString et WritePrivateProfileString (de mémoire). C'est le plus efficace.
Si tu veux un exemple, fais moi signe, parce que récupérer les valeurs de retour d'API dans VB exige qq précautions.
Marsh Posté le 08-06-2004 à 16:08:04
De mémoire ce sont aussi celles utilisées en C++, mais elle ne fonctionnent pas en VBA!!! bouh... =( Il y a p-ê moyen d'inclure des librairies nan?
Marsh Posté le 08-06-2004 à 16:13:17
J'ai pas Split mais j'ai les API
Plus sérieux...
Dans le module, dans la section déclarations:
Code :
|
et tu vas voir que VBA la reconnait.
Marsh Posté le 08-06-2004 à 16:26:49
JihemAir a écrit : J'ai pas Split mais j'ai les API
|
yaeh ça marche!!! décidément tu es vmt trop fort... lol. ce qui est en gras est pour intégrer des API? sinon pour les paramètres : le 1er, fo mettre koi? normalement c'est un handle qu'on passe en c++. là ce serait "XLMAIN" par exemple?
Marsh Posté le 08-06-2004 à 16:33:34
Le 1er param, c'est l'entrée dans le fichier .ini,
[Appli],
le 2ème c'est la clé
IniPath=
Le 3ème c'est une valeur pas défaut si y a rien à extraire
etc.. mais c'est quoi cette histoire de gras ?
Marsh Posté le 08-06-2004 à 16:35:44
pr le gras, tu vois pas les balises dans la citation de ton code? pr les paramètrse j'essaie et je te dis...
Marsh Posté le 08-06-2004 à 16:44:43
Alors ça marche pas terro :
Code :
|
retour=5 et str=vide.
Les paramètres doivent avoir un pb. avant le chemin du fichier, c bien le nb de caractères prévu à récupérer non?
Marsh Posté le 08-06-2004 à 16:47:35
bonne soirée! ah la la et il me laisse tt seul ds la galère... Au Secours!!! si qq'un m'entend....
Marsh Posté le 08-06-2004 à 17:02:49
yo sa marche!!! j'ai créé un ini avec WritePrivateProfileString puis je l'ai relu, et impecc! retour est le nb de caractères lus. merci pr ton aide=)
Marsh Posté le 08-06-2004 à 17:57:23
ya un truc que je ne comprend pas, un ini, c'est pas crypté alors pourquoi ne pas le lire et l'ecrire avec Open.
L'API ferait-elle un truc de plus ?
Marsh Posté le 08-06-2004 à 18:18:46
Avec la fonction Open (que je ne connais pas, je ne fais jamais de VB habituellement), est-ce qu'il ne faut pas déplacer un pointeur pour lire et écrire dans le fichier? de ttes façons il faut se dire que la fonction Open utilise très certainement des fonctions de l'API. avec WritePrivateProfileString, on accède directement aux sections et valeurs. c qd même bcp + rapide.
Marsh Posté le 08-06-2004 à 18:21:33
je viens de retrouver les termes exacts. Avec Open, tu obtient un accès séquentiel au fichier, et avec les API Write... et Get... tu as un accès direct. j'espère avoir répondu à ta question. =)
Marsh Posté le 08-06-2004 à 20:04:47
Non avec Open, tu as aussi un accés direct et le pointeur se déplace a chaque input # si tu lis en mode input.
Open est très pratique pour ouvrir n'importe quel fichier et tu peut les ouvrir dans different modes :
-Append : pour écrire directement a la fin du fichier
-Binary : lit par octet je croit
-Input: lecture normal (Input = lire jusqu'a une virgule, Line Input =lire ligne après ligne)
-Output : (écrire avec Write(place les chaines de texte entre quillemets) ou Print (écrit tel quel))
-Random : pour lire et écrire dans le meme mode (Put pour écrire et Get pour lire)
Exemple :
Open "Chemin\du\fichier" For Output as #1
Write #1, "Toto"
Print #1, "Toto"
Close #1
Resultat dans le fichier il sera écrit :
"Toto"
Toto
et tu peut faire encore plein de truc mais il faudrais plusieurs pages pour tout afficher.
L'aide de VB sur Open n'est pas très complètes je trouve (sur un pt de vue des exemples).
j'ai pas testé l'API, je vais le faire pour voir la difference.
Marsh Posté le 09-06-2004 à 08:02:17
on parle de fichiers ini ici, laisse lui utiliser les API, c'est ce qu'il y a de mieux et de plus sûr
(chuis pas fan des fonctions fichiers en VB, plus merdique et flou que ça, tu meurs)
Marsh Posté le 09-06-2004 à 08:08:21
Qq précisions sur la lecture des fichiers:
Citation : Non avec Open, tu as aussi un accés direct et le pointeur se déplace a chaque input # si tu lis en mode input. |
Oui mais si ton fichier fait 10000 lignes, tu dois te pastiller la lecture ligne à ligne, avec test si c'est la bonne à chaque lecture. C'est pas vraiment direct!
Avec les API, tu sautes directement à la section qui t'intêresse, en 1 ligne de code.
L'important, c'est de préparer le buffer de réception des données retournées, sinon, la méchante API, elle plante le gentil programme VB!
Dans notre cas:
Code :
|
Marsh Posté le 09-06-2004 à 08:40:14
en effet, si le buffer n'est pas préparé, c même excel qui plante (il se ferme sans rien dire! d'où l'intérêt de sauvegarder de tps en tps...)
Marsh Posté le 09-06-2004 à 08:46:06
j'aurais voulu savoir comment faire pour que le fichier ini soit dans le répertoire courant et ne pas désigner un chemin en dur dans le code.
Marsh Posté le 09-06-2004 à 08:59:30
ouais, ms non... il me donne où tourne excel, et moins j'aimerais qu'il me donne le chemin où est le document... merci qd même =)
Marsh Posté le 08-06-2004 à 15:55:07
Yo tout le monde =) bon je te sens chaud JihemAir aujourd'hui =) j'aimerais savoir s'il est possible en VBA de manipuler(ouverture, écriture,...) des fichiers ini, ou alors au pire des fichiers texte??? Merci d'avance