achills
Messages postés213Date d'inscriptionvendredi 13 janvier 2006StatutMembreDernière intervention20 août 2008
-
30 mai 2008 à 00:05
achills
Messages postés213Date d'inscriptionvendredi 13 janvier 2006StatutMembreDernière intervention20 août 2008
-
30 mai 2008 à 23:18
bsr
svp j'enregistre des données dans un fichier txt avec cette methode:
Dim iFile As Integer
iFile = FreeFile
Open "C:\data.txt" For Output As iFile
Print #iFile, , Text1.Text;
Close iFile
puis je les charge un par un, le probleme que qunad je les charge un par un, cad,
timer1:
if text10.text = 1 then
text2.text = data(1)
elsif text10.text = 2 then
text2.text = data(1)...........end if
je sait pas a quel point je doit marrété, cad je conait pas combien de data enregistré, et kand le timer choisie une data non existante sa fait une erreur de debodage, alors svp s'il ya un moyen de conaitre le nombre de data enregistrer dans le fichier text merci de me l'aprendre sachant que mes data ne sont pas fixe, elle sont charger de internet donc sa n'arret pas de changer, parfois 2 datas parfois 0 parfois 20...
merciii a vous
cs_MPi
Messages postés3877Date d'inscriptionmardi 19 mars 2002StatutMembreDernière intervention17 août 201823 30 mai 2008 à 12:17
Je ne comprend pas pourquoi tu utilises l'événement Change (?) Ça veut dire qu'à chaque lettre que l'utilisateur va modifer/ajouter, l'événement sera enclanché et le fichier sera édité...
Autre question que je me pose, c'est l'utilisation de textbox. Combien tu en as ? Y en a-t-il suffisamment pour inscrire tous les mots de ton fichier ??? Pour quoi ne pas utiliser une Listbox, Listview ou grille quelconque ?
Comme je disais, UBound te serait utile
Quand tu écris ceci
Mydata = Split(vartemp, " ")
UBound(MyData) contient le nombre d'items
For i 0 to UBound(MyData)
Text(i) = MyData(i)
Next
Pour pouvoir utiliser ce genre de code, il faut que tes contrôles soient indexés (groupe de contrôle). Si tu es en VB6, pas de problème. Encore faut-il que tu aies assez de contrôles.
Si tu as un Timer pour inscrire les données à un certain intervalle, il te faudrait une variable Static dans ce code du Timer
Static Cnt As Integer
If Cnt = UBound(MyData) Then 'toutes les données ont été lues et écrites
Cnt = 0 ' ou autre action
Else
Cnt = Cnt + 1 'on passe au prochain item
End If
En espérant que mes explications soient assez claires...
MPi²
Pour ceux qui programment sous Office, n'oubliez pas qu'il existe un forum dédié à ces applications VBA....... ICI
Si pour l'entrée du texte on utilise l'évènement Keypress la fin de saisie se fait par la touche Entrée et seulement à ce moment là on enregistre la Textbox, tu relis ton fichier et ensuite tu utlises ton Timer pour afficher un mot à chaque fois
Private Sub Text1_KeyPress(KeyAscii As Integer)
Dim iFile As Integer
If KeyAscii <> 13 Then Exit Sub
iFile = FreeFile
Open "e:\irc.txt " For Output As iFile
Print #iFile, Text1.Text
Close iFile
' Lecture du fichier dans Text2.text
' Créer un tableau de String pour les mots
' initialisation du timer (Enabled)
End Sub
Private Sub Timer1.Timer()
' Affichage d'un mot en explorant le tableau
End sub
achills
Messages postés213Date d'inscriptionvendredi 13 janvier 2006StatutMembreDernière intervention20 août 2008 30 mai 2008 à 23:18
merci pour votre reponse c'est tres claire et sa aide
j'ai une autre idée, a l'enregistrement des donnée on ajoute un mot, par exemple:
iFile = FreeFile
Open "e:\irc.txt " For Output As iFile
Print #iFile, Text1.Text; "fin"
Close iFile
et si text.change = a "fin" alors
laction que tu veut faire quand tu arrive a la fin
j'ai utilisé sa parceque mon application te donne pas le choix de'ecrire mais elle charge des profiles via des page web
merci beaucoup pour votre aide
@+
cs_Jack
Messages postés14006Date d'inscriptionsamedi 29 décembre 2001StatutModérateurDernière intervention28 août 201579 30 mai 2008 à 01:28
Salut
De plus, dans cette syntaxe
Print #iFile, , Text1.Text;
deux choses bizarres :
2 virgules après le n° de fichier
Cela va insérer une tabulation entre le début et la donnée
terminaison par ;
Cela veut dire que la prochaine se met à la suite, sans retour à la ligne
--> Futurs problèmes à la relecture des données
Voir méthode Open Append
Vala
Jack, MVP VB NB : Je ne répondrai pas aux messages privés
<hr />Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
achills
Messages postés213Date d'inscriptionvendredi 13 janvier 2006StatutMembreDernière intervention20 août 2008 30 mai 2008 à 10:19
bonjour
merci pour vos réponse,
voila une explication de ce ue je fait,
'pour enregistrer le contenu du text1 qui contient une phrase variable qui peut etre changer par l'utilisateur du programme :
Private Sub Text1_Change()
Dim iFile As Integer
iFile = FreeFile
Open "e:\irc.txt " For Output As iFile
Print #iFile, Text1.Text
Close iFile
End Sub
'pour charger dans un autres texte2 j'ai mi un timer1 qui charge les données tout les 5 secondes, il charge data par data, les data sont séparé par des 'espace :
Dim FF As Integer, vartemp As String, Mydata() As String
FF = FreeFile
Open "e:\irc.txt" For Input As #FF
vartemp = Input$(LOF(FF), #FF)
Close #FF
Mydata = Split(vartemp, " ")
Text2.Text = Mydata(0)
Erase Mydata
exemple la phrase = je suis un mec a la recherche d'aide
le timer va chager le 1er data qui est "je" puis apres 5 secondes il va charger "suis" et ainsi de suite, mais puisque je conait pas ce que l'utilisateur va ecrire alors je sais pas a quel data le timer doit charger, si l'utilsateur n'ecrit rien l'application va afficher un message d'erreur puisque y'a pas de data a charger, donc je veut savoir comment savoir combien de data sont enregistrer afin de savoir quand est ce que le timer doit se renistialisé ou s'arrété de charger
j'espere que c'est assé claire comme sa pour pouvoir obtenir de l'aide
merci a vous