Petit programme pour debutant

cs_amaussa Messages postés 10 Date d'inscription dimanche 6 mars 2005 Statut Membre Dernière intervention 19 novembre 2005 - 6 mars 2005 à 15:56
jsem2k1 Messages postés 125 Date d'inscription samedi 11 décembre 2004 Statut Membre Dernière intervention 12 août 2008 - 14 mars 2005 à 23:44
Bonjour,
Je debute et pour faire un test, je cherche a faire un programme qui fait :
- lecture d'un fichier .txt contenant des information du type:
ind1=a0021
adm1=tarcl
date1=061203
...
- je souhaite faire apparaitre ces valeurs ( a0021,tarc1,...) dans un formulaire pour pouvoir les modifier manuellement
- apres modification en selectionnant un boutton pouvoir les enregistrer dans un fichier .txt
je pense que cela n'est pas complique pour un expert, et cela ne servira de base pour commencer a ecrire un programme.
merci de votre reponse rapide.
Amaussa

15 réponses

cs_CanisLupus Messages postés 3757 Date d'inscription mardi 23 septembre 2003 Statut Membre Dernière intervention 13 mars 2006 20
6 mars 2005 à 16:37
Salut,

Que ce soit ou non compliqué, je peux te dire qu'en cherchant un petit peu sur le site, tu auras plein d'exemples de traitement de fichiers texte.
Mais passons puisque tu es débutant.
Quelle est la structure exacte de ton fichier texte de départ ? Il se présente vraiment comme dans ta question ? C'est à dire :

1ère ligne : ind1=a0021
2ème ligne : adm1=tarcl
3ème ligne : date1=061203

4ème ligne : .......

Ou il y a plusieurs enregistrement structurés comme :
a0021;tarcl;061203; ...

Ou c'est encore autre chose ?

Passe par le notepad et donne-nous un copier/coller de 2 ou 3 enregs.
Le traitement est plus facile quand on sait ce qu'il y a en entrée.

Loup Gris
0
jsem2k1 Messages postés 125 Date d'inscription samedi 11 décembre 2004 Statut Membre Dernière intervention 12 août 2008 1
7 mars 2005 à 03:27
The J

Personellement je te conseille d'utiliser un fichier ini a la place d'un fichier txt.
c plus facile de récupéré le style d'information que tu recherches. il est aussi
plus facile d'écrire exactement a l'endroit que tu recherche.

Pour ce faire il faut que tu call 2 api de windows
et créé 2 fonction: une qui lit dans le fichier ini et l'autre qui écrit dans le fichier
ini

sa resemble a peu pret a ceci :

'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
'''''''''''''''''''''''API Utile pour lite et écrire dan un fichier ini''''''''''''''''''''''''''''''''''''
Private Declare Function GetPrivateProfileString Lib "kernel32" Alias "GetPrivateProfileStringA" _
(ByVal lpApplicationName As String, ByVal lpKeyName As Any, ByVal lpDefault As String, _
ByVal lpReturnedString As String, ByVal nSize As Long, ByVal lpFileName As String) As Long


Private Declare Function WritePrivateProfileString Lib "kernel32" Alias "WritePrivateProfileStringA" _
(ByVal lpApplicationName As String, ByVal lpKeyName As Any, ByVal lpString As Any, _
ByVal lpFileName As String) As Long
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''


'Procédure qui permet d'écrire dans un fichier INI


Public Sub EcritDansFichierIni(section As String, cle As String, _
valeur As String, Fichier As String)
WritePrivateProfileString section, cle, valeur, Fichier
End Sub


'Fonction qui permet de lire dans un un fichier ini
Public Function LitDansFichierIni(section As String, cle As String, Fichier As String, _
Optional ValeurParDefaut As String = "") As String


Dim strReturn As String


strReturn = String(255, 0)
GetPrivateProfileString section, cle, ValeurParDefaut, strReturn, Len(strReturn), Fichier
LitDansFichierIni = Left(strReturn, InStr(strReturn, Chr(0)) - 1)


End Function

La stucture d'un fichier ini est très simple c comme un fichier txt mais en mieux

sa resemble a sa :

[section]
cle = valeur
cle = valeur

[section]
cle = valeur

le paramètre fichier indique le chemain d'accet du fichier ini

une section et comme un dosier ou on classe des document (cle). La valeur est alors l'information contenu dans le doccument (cle) en question.

Un petit example:
on a plusieurs utilisateur d'un programe et chacun a des configuration pien présie
nous avons:

John
-yeux bleu
-cheveux blond
-fruits préféré Pomme

Malcom
-yeux brun
-cheveux roux
-fruits préféré banane

Morice
-yeux noir
-cheveux noir
-fruits préféré raisin

Le fichier ini va se présanté sous la forme

[John]
yeux = bleu
cheveux = blond
fruitprefere = pomme
[Malcom]
yeux = brun
cheveux = roux
fruitprefere = banane
[Maurice]
yeux = noir
cheveux = noir
fruitprefere = raisin

si on veux récupéré par example la couleur des yeux de John et la stoqué dan une variable alors on tape:
cyeux = LitDansFichierIni("John", "yeux", App.Path & "\option.ini")

si on s'est tromper et que les cheveux de Maurice étias brun et non pas noir et que l'on veux modifier le tout alors on tape

EcritDansFichierIni "Maurice", "cheveux", "brun", App.Path & "\option.ini"

maintenant imaginon qu'un nouvel utilisateur du nom de Jack veux utiliser le programme
Jack a les yeux rouge les cheveux bleu et aime les kiwi

pour entré ces paramètre il suffi de taper

EcritDansFichierIni "Jack", "yeux", "rouge", App.Path & "\option.ini"
EcritDansFichierIni "Jack", "cheveux", "bleu", App.Path & "\option.ini"
EcritDansFichierIni "Jack", "fruitprefere", "kiwi", App.Path & "\option.ini"

et voila le tour est jouer
bon la si on a plusieure cle dans une section et qu'on ne veux pas tape inutilement les chose on peux toujours utiliser une boucle

Bon si tu veux plus d'example sur l'utilisation des fichier ini tu peux toujours aller voir un de mes example au http://www.vbfrance.com/code.aspx?id=28481 c mes premier prog alors soit indulgent. Il menque certaine chose que j'ai apri avec le temps mais il est d'après moi assez intéressant pour un débutant

Entout cas bonne chance
Le savoir est une chose, l'expériance en est une autre
0
cs_amaussa Messages postés 10 Date d'inscription dimanche 6 mars 2005 Statut Membre Dernière intervention 19 novembre 2005
7 mars 2005 à 10:00
merci pour ces reponses, ci-joint le fichier d'entree pour exemple ligne par ligne
nota: j'ai cherche sur le site des exemples simple, hélas je n'ai trouve que des morceaux de phases mais pas de prog simple complet pour blien comprendre la strutures.

VERSION]
V=2004.2


[SYMBOLS]


jci_block-dsheet=borders:jci_block-dsheet.1
DSHEETL=BUILTIN:jcae_uk-fr-dsheet.1
DSHEETL1=BUILTIN:jcae_uk-fr-dsheet.1


[ATTRIBUTES]
REV_1=001
REV_2=.
DESCRIP_1=CREATION FROM LEGACY DRAWING 21 REV A5
DESCRIP_2=.
DATE_1=28/01/05
DATE_2=.
DRAWN_1=AMN
DRAWN_2=.
APPROV_1=PDM
APPROV_2=.
APPROV_7=.
ECO_1=123456
ECO_2=.
ADRESS_1=18, CHAUSS
ADRESS_2=BP 340 O
ADRESS_3=F-95
TITLE1=GENERAL GMT 966/967/968
TITLE2=INSTRUMENT CLUSTER
BLOCK_NAME=21-MICROCONTROLLER CORE
DRAWING_NUMBER=1234567
REV_DRAWING=001
LEGACY_NUMBER=21654567-6
REV_LEGACY=A5
SHEET_BLOCK=1
SHEETTOTAL_BLOCK=1
Amaussa
0
jsem2k1 Messages postés 125 Date d'inscription samedi 11 décembre 2004 Statut Membre Dernière intervention 12 août 2008 1
7 mars 2005 à 19:31
The J

et la il y a quoi que tu ne comprend pas ???
précise ta question svp
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_CanisLupus Messages postés 3757 Date d'inscription mardi 23 septembre 2003 Statut Membre Dernière intervention 13 mars 2006 20
7 mars 2005 à 20:06
>> amaussa > au vu de la structure de ton fichier, la soluce de jsem2k1 est la plus indiquée et son explication de la structure en sections et clés est claire ainsi que les méthodes de lecture et d'écriture.
nota : ton fichier peux avoir une autre extension que .ini, ça marche aussi.
Reste plus qu'à exploiter ce que tu lis dans le fichier.

Loup Gris
0
cs_amaussa Messages postés 10 Date d'inscription dimanche 6 mars 2005 Statut Membre Dernière intervention 19 novembre 2005
11 mars 2005 à 16:49
Merci a tous pour ces réponses.
l'example de jsem2k1 est trés bien fait, même s' il est un peu complexe pour moi. c'est l'example avec la "structure" que je cherchais, organisation des programmes et formulaire entre eux. Désole du vocabulaire mais je viens du monde unix.
quand je charge le projet , j'ai un message gif89.dll manquant ? mais cela fonctionne comme même?
Merci à tous , ce forum est tres bien et les réponses sont professionnelle.

Amaussa
0
cs_CanisLupus Messages postés 3757 Date d'inscription mardi 23 septembre 2003 Statut Membre Dernière intervention 13 mars 2006 20
11 mars 2005 à 20:06
Pour ce qui est de gif89.dll, ça sert pour les gif animés. Si ça t'intéresse, tu tapes le nom de la dll dans google et ça te renverra plusieurs pages (y compris de vbfrance) qui en parlent. Mais, à mon avis, pour lire un fichier comme le tien, contente-toi de commencer par l'api GetPrivateProfileString.

Une descrition et un exemple en anglais sur : http://www.mentalis.org/apilist/GetPrivateProfileString.shtml

Une description en français : http://www.progotop.com/api.php?id=86

Loup Gris
0
cs_CanisLupus Messages postés 3757 Date d'inscription mardi 23 septembre 2003 Statut Membre Dernière intervention 13 mars 2006 20
11 mars 2005 à 20:17
Si tu es vraiment perdu et que j'ai un peu de temps, je te posterai demain un exemple basé sur ton fichier.

Loup Gris
0
jsem2k1 Messages postés 125 Date d'inscription samedi 11 décembre 2004 Statut Membre Dernière intervention 12 août 2008 1
11 mars 2005 à 23:31
The J

Salut amaussa je vien juste de recevoir ton message!!! Je te fais un example plus simple tout de suite avec des comment avec un petit tutauriel et je te le poste dèque j'ai fini mais pour sa il faudrais que j'ai ton e mail. Au pire si tu ne veux pas la donner dans le forum, tu n'a qu'a m'envoyer un message perso et je t'enverrais le tout.
0
jsem2k1 Messages postés 125 Date d'inscription samedi 11 décembre 2004 Statut Membre Dernière intervention 12 août 2008 1
12 mars 2005 à 06:27
The J

Bon Voila j'ai finalement décidé de publier l'example que j'étais en train de te faire et d'y ajouter des information supplémantaire

tu peux toujours aller la voir elle te sera probablement d'une plus grande utiliter
http://www.vbfrance.com/code.aspx?ID=30062

Bonne Chance
0
cs_amaussa Messages postés 10 Date d'inscription dimanche 6 mars 2005 Statut Membre Dernière intervention 19 novembre 2005
12 mars 2005 à 08:31
Felicitation à tous pour vos réponses et un grand Merci à jsem2k1 ces programmes sont bien documente.
Nota: si d'autre example sur le traitement de fichier de type .ini peuvent être fait et ajoute au forum cela peut servir à tous ( en réponse à toup gris)

Je pense avoir assez d'éléments pour commencer à programmer et il est temps que je dépense un peu de matière grise.

a+
Amaussa
0
cs_amaussa Messages postés 10 Date d'inscription dimanche 6 mars 2005 Statut Membre Dernière intervention 19 novembre 2005
13 mars 2005 à 10:35
Complément:
Après avoir analyser les programmes 30062 et 28481 peut-on avoir un mixe ?
je m'explique dans mon fichier example ci dessus les sections dans le fichier ne sont pas identique.
Je voudrais donc au démarrage afficher automatiquement que la section [ATTRIBUTES].
Les clés ne sont pas identique rev_1, date_1,.. et sont imposées, je voudrais donc garder ces clés dans le formulaires.
Est ce trop demande?
Merci d'avance.
Amaussa
0
jsem2k1 Messages postés 125 Date d'inscription samedi 11 décembre 2004 Statut Membre Dernière intervention 12 août 2008 1
14 mars 2005 à 01:02
The J

Oui Amaussa tu peux très bien le faire. Tu peux toujours opter pour la stratégie que j'ai utiliser dans l'example 28481 soit te créé un vecteur de clé et y faire référance quand tu
call ta fonction

sa resamble a peut pret a sa:

Ici on vas former le vecteur de cle

dim cle (..) as string

cle(1)="REV_1"
cle(2)="REV_2"
cle(3)="DESCRIP_1"
cle(4)="DESCRIP_2"
cle(5)="DATE_1"
cle(6)="DATE_2"
cle(7)="DRAWN_1"
cle(8)="DRAWN_2"
cle(9)="APPROV_1"
cle(10)="APPROV_2"
cle(12)="APPROV_7"
cle(13)="ECO_1"
cle(14)="ECO_2"
cle(15)="ADRESS_1"
cle(16)="ADRESS_2"
cle(17)="ADRESS_3"

... et ainsi de suite
Conseil pour évité d'encombé ton code si tu utilise cette stratégie je te conseil de créé une procédure et de la mettre dans un module ainsi sa évide de voir tout se tralala dans tle temps

Maintenant tu n'a qu'a faire une boucle et faire référance au vecteur que tu vien juste de créé

example je cré un groupe de controle lable ou je veux que les informations soi afficher

dim i as integer

for i = 1 to 17
lbl(i).Caption = LitDansFichierIni("ATTRIBUTES",cle(i), App.Path & "\option.ini")
next i

et voila le tour est jouer j'espère que sa répon a ta question
0
cs_amaussa Messages postés 10 Date d'inscription dimanche 6 mars 2005 Statut Membre Dernière intervention 19 novembre 2005
14 mars 2005 à 16:59
je sais, je suis C., malgres toutes ces informations en tant que debutant je n'arrive pas à modifier correctement le programme.
ou faut-il ajouter les cles, modifier certaines lignes ? procedure ? je me perd un peu.
Peut-tu promit pour la derniere fois me donner un example fonctionnel avec ces modifs (deux ou trois cle uniquement).
Désole
Amaussa
0
jsem2k1 Messages postés 125 Date d'inscription samedi 11 décembre 2004 Statut Membre Dernière intervention 12 août 2008 1
14 mars 2005 à 23:44
The J

Ok Amaussa le mieux encore serais que tu m'envoie ta source que je voi se que tu veux vraiment faire et comment tu t'y est pris jusque la.

d'autre part je crois que tu n'a pas bien compris comment fonctionne un fichier ini. Dans ce cas je te conseille de revoir mon example (redownload le j'ai corriger les erreur et changer sertaine structure de phrase il sera plus facile a comprendre http://www.vbfrance.com/code.aspx?ID=30062


Mon adresse est [mailto:jsem2k1@hotmail.com jsem2k1@hotmail.com]


Bonne chance
0
Rejoignez-nous