cs_petchy
Messages postés710Date d'inscriptionjeudi 20 février 2003StatutMembreDernière intervention19 mai 2015
-
19 avril 2005 à 18:27
cs_petchy
Messages postés710Date d'inscriptionjeudi 20 février 2003StatutMembreDernière intervention19 mai 2015
-
19 avril 2005 à 22:03
bonsoir
Voila,j'ai une erreur de code sur la ligne en rouge,
auriez vous une idée
Private Sub Form_Load()
Dim intVideo As Integer
intVideos = LOF(1) / Len(NewVideo)
intCompteur = intVideos
intNumTemp = intVideos + 1
Dim intTemp As Integer
For intTemp = 1 To intVideos
Get #1, intTemp, NewVideo
lstfilm.AddItem (NewVideo.Numero & " - " & NewVideo.Titre)
Next intTemp
End Sub
cs_Jack
Messages postés14006Date d'inscriptionsamedi 29 décembre 2001StatutModérateurDernière intervention28 août 201579 19 avril 2005 à 18:51
Salut
Diviser des entiers par des entiers ... ça va donner des résultats bizarres.
Au lieu de dimensionner en 'Integer' qui, comme tu le sais surement (après avoir regardé l'aide de VB6), ne permet que de stocker des chiffres entre -32768 et +32767
De toute façon, la notation Integer disparait avec VB.Net
Remplaces tous tes 'Integer' par 'Long'
Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés
Le savoir est la seule matière qui s'accroit quand on la partage. (Socrate)
cs_petchy
Messages postés710Date d'inscriptionjeudi 20 février 2003StatutMembreDernière intervention19 mai 20154 19 avril 2005 à 19:03
Rebonsoir
d'abord merci pour vos réponses.
1) Gobillot
il n'y à pas de fichier open,en fait j'ai repris se code d'une
autre appli,est elle fonctionne.
2) jack j'ai bien remplacé 'Integer' par 'Long' mis cela ne donne rien
3) JoePatent j'ai placé mon code dans activate mais rien,j'ai une erreur
"variables non définies"
merci
@ plus
petchy
Gobillot
Messages postés3140Date d'inscriptionvendredi 14 mai 2004StatutMembreDernière intervention11 mars 201934 19 avril 2005 à 19:09
c'est quoi le libellé de l'erreur ?
tu pourras pas avoir la longueur du fichier s'il est pas ouvert !
en plus il y a des GET#1 , une longueur d'enregistrement, un calcul du nombre d'enregistrements.
apparemment ce serait un fichier Random.
cs_petchy
Messages postés710Date d'inscriptionjeudi 20 février 2003StatutMembreDernière intervention19 mai 20154 19 avril 2005 à 19:23
ReRe
désolé Gobillot j'ai mon open dans le Load de la form
Private Sub Form_Load()
Dim strPath As String
strPath = App.Path & "\videos.loc"
Open strPath For Random As #1 Len = Len(NewVideo)
'FlagVideo = True
Dim intVideo As Long
intVideos = LOF(1) / Len(NewVideo)
ajout.Caption = intVideos & " Vidéos enregistrés"
intCompteur = intVideos
intNumTemp = intVideos + 1
lblNumeroR.Caption = "# " & intNumTemp
end sub
et la j'ajoute mes données dans un fichier loc
Private Sub Command1_Click() 'ajouter
intVideos = LOF(1) / Len(NewVideo)
intNum = intVideos + 1
NewVideo.TITRE = txttitre.Text
NewVideo.ACTEUR = txtacteur.Text
NewVideo.GENRE = txtgenre.Text
NewVideo.Numero = intNum
Put #1, intCompteur + 1, NewVideo
msgAjoute = MsgBox("Le film: '" & txttitre.Text & "' à été ajouter à la liste des films!", vbOKOnly + vbInformation, "Le film à été ajouter!")
txttitre.Text = ""
txtacteur.Text = ""
txtgenre.Text = ""
lblNumeroR.Caption = "# " & intNum + 1
End Sub
mais en fait je voudrais récupéré le titre dans une listbox
qui se trouve dans une autre form .
petchy
Gobillot
Messages postés3140Date d'inscriptionvendredi 14 mai 2004StatutMembreDernière intervention11 mars 201934 19 avril 2005 à 19:48
si je comprend bien il y a plusieurs formes et le fichier a été ouvert par une autre forme ?
est-ce que les variables ont bien été définies partout ?
parce là je vois dans Form_Load:
Dim intVideo As Long
et ensuite dans la Sub Command1_Click() intVideo est utilisé sans être redéfini, un nom identique pour des variables différentes c'est pas bon !
vérifie bien toutes tes variables, et est-ce qu'il y a un module avec des variables Public ?
inutile de recalculer intVideo LOF(1) / Len(NewVideo) à chaque fois, il suffit de faire intVideo intVideo + 1 lorsque tu crées un nouvel enregistrement.
sinon si tu veux utiliser un contrôle d'une autre forme, il faut mettre le nom de la forme devant:
NomdelaForme.listfilm.List(index)
Gobillot
Messages postés3140Date d'inscriptionvendredi 14 mai 2004StatutMembreDernière intervention11 mars 201934 19 avril 2005 à 19:53
mais on ne sais toujours pas le type d'erreur.
est-ce c'est une division par zéro ? parce que si pas d'Option Explicit et que NewVideo n'est pas défini, Len(Newvideo) retournera zéro.
est-ce que c'est un dépassemant de capacité, plus de 32767 enregistrements ?
cs_petchy
Messages postés710Date d'inscriptionjeudi 20 février 2003StatutMembreDernière intervention19 mai 20154 19 avril 2005 à 20:50
merci Gobillot de me répondre,en fait il me met comme
erreur sur intVideos :
"erreur de compilation
variable non définie"
pourtant j'ai bien un module avec les variables Public.
en plus je suis novice en VB et je ne sait pas se que ça veut dire une
division par zéro.
Au niveau des enregistrement j'en suis à 15
un grand merci
petchy
Gobillot
Messages postés3140Date d'inscriptionvendredi 14 mai 2004StatutMembreDernière intervention11 mars 201934 19 avril 2005 à 20:58
"erreur de compilation variable non définie"
ça c'est plus clair et ça prouve que t'as mis Option explicit.
en fait j'ai fait l'erreur aussi et j'ai confondu les 2 variables "intVideo" et "intVideos" sont 2 variables différentes.
est-ce que c'est voulu ou quoi ?
cs_petchy
Messages postés710Date d'inscriptionjeudi 20 février 2003StatutMembreDernière intervention19 mai 20154 19 avril 2005 à 22:03
un grand MERCI Daniel ça fonctionne .
Cette appli je l'ait réalisé en VBA et je voudrais la
reproduire en VB mais dur-dur,il y a une grande différence
de langage.
bonne fin de soirée
@ plus
petchy