Super déconcertant..

Résolu
JeremyNeReculeraPas Messages postés 64 Date d'inscription mercredi 4 avril 2007 Statut Membre Dernière intervention 6 juin 2007 - 24 mai 2007 à 11:56
JeremyNeReculeraPas Messages postés 64 Date d'inscription mercredi 4 avril 2007 Statut Membre Dernière intervention 6 juin 2007 - 24 mai 2007 à 15:58
Bonjour à tous!!

Ca faisait un pti moment que je ne venais plus vous embeter mais la j'arrive en force accompagné d'un problème qui me laisse pantois!! (j'ésper que ca ne sera pas le cas pour tout le monde..)

Déjà, voici le bout de code posant problème:

Public
Sub LectureConfigSas()

Dim i
As
Byte

' Ouverture du fichier de configuration sas

'==========================================OpenFile()

' Test existence d'un précédent enregistrement

'==============================================NbSasCfg =

LOF(Canal) / Len(SasN1)

If NbSasCfg = 0
Then

' Première création du fichier

For i = 0
To NBPSMAX - 1SasN1.in_PORTE(i) = i 

' adresses portesSasN1.in_NomPorte(i) =

"PORTE " & Chr(&H41S + i )
' noms portesSasN1.stat_M_ouvre(i) =

False
' Interne: Mémoire Ouverture depuis PorteSasN1.stat_Aut_ouvre(i) =

False
' Interne: Autorisation d'ouverture depuis Porte

Next

================================================

Le problème est le suivant:Lorsque je rentre dans la boucle "for to, next" (je suis en mode debug ,pas à pas), je vois que la première instruction est lue MAIS ensuite au lieu de passer à la 2ième instruction, le programme sort complètement de la "sub" comportant cette boucle et n'éxecute pas meme une seule fois la boucle !!!!! Mais qu'est ce qu'il lui prend???!! Si vous avez une idée de la raison de ce problème ou meme un pti message de soutien pour ma cause il sera le bienvenue..lol

Merci d'avance!!!

Ce qui se conçoit bien s'énonce clairement...

15 réponses

JeremyNeReculeraPas Messages postés 64 Date d'inscription mercredi 4 avril 2007 Statut Membre Dernière intervention 6 juin 2007
24 mai 2007 à 14:27
Bon, première erreur résolue!!
Il fallait que je donne une taille au tableau in_Porte() dans la classe SasN, mais comme au départ il faisait parti d'une structure c'était impossible! 

Ce qui se conçoit bien s'énonce clairement...
3
JeremyNeReculeraPas Messages postés 64 Date d'inscription mercredi 4 avril 2007 Statut Membre Dernière intervention 6 juin 2007
24 mai 2007 à 14:48
Et en fait faut croire que le "Len()" ne marche pas avec un objet, ce qui ne parait plutot bizar étant donné que les propriétés de l'objet on toutes une taille définies et des types de variables définies!!! Alors la j'ai vraiment besoin d'aide!lol
Non serieux, sans code source je n'irais probablement pas loin...

Ce qui se conçoit bien s'énonce clairement...
3
JeremyNeReculeraPas Messages postés 64 Date d'inscription mercredi 4 avril 2007 Statut Membre Dernière intervention 6 juin 2007
24 mai 2007 à 15:58
Bon ba voila la seule solution que j'ai trouvé pour connaitre la taille d'un tableau:
Ptite fonction pourrie!lol(Jpense qu'on doit pouvoir trouvé la taille du tableau directement dans la fonction et que donc un seul argument peut etre necessaire pour celle-ci mais j'ai pas trouvé la et puis jm'en fiche un peu ca me suffit comme ca...

Public
Function LenTab(
ByVal Name
As Array,
ByVal NbrLignes
As
Integer)

Dim L
As
Integer = 0

Dim i
As
Integer

For i = 0
To NbrLignesL = L + Len(Name(i))

Next

Return L

End
Function

Ce qui se conçoit bien s'énonce clairement...
3
cs_Nicko11 Messages postés 1141 Date d'inscription mercredi 7 mars 2007 Statut Membre Dernière intervention 19 septembre 2007 3
24 mai 2007 à 12:11
Salut,

tu dois gérer une erreur quelque part. En VB6 ou VBA, il y a une instruction ON ERROR GOTO Label.

As tu une gestion d'erreur avant l'appel de ta sub.

Vers ou le code s'execute lorsqu'il sort de la sub ?
0

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

Posez votre question
cs_Nicko11 Messages postés 1141 Date d'inscription mercredi 7 mars 2007 Statut Membre Dernière intervention 19 septembre 2007 3
24 mai 2007 à 12:13
Essaies aussi de voir s'il n'y a pas un soucis avec l'instruction suivant (meme autre part dans le programme)

SasN1.in_PORTE(0) = 0 
0
Julien237 Messages postés 883 Date d'inscription vendredi 3 novembre 2000 Statut Membre Dernière intervention 3 mars 2009 7
24 mai 2007 à 13:38
Mouais c'est quand même strange comme problème...
Vb a dja perdu les pédales chez moi parce que j'affectais à un string une chaine de caractère contenant le caractère null habituellement utilisé pour indiquer la fin de la chaine dans la mémoire. Tu vas me dire que c'est l'instruction suivante, mais vérfie quand meme que Chr(&H41S + i )  ne produit jamais Chr(0)...

<hr size="2" width="100%" />Julien.
0
pseudoOM Messages postés 173 Date d'inscription jeudi 3 février 2005 Statut Membre Dernière intervention 30 janvier 2009 1
24 mai 2007 à 13:40
NBPSMAX a quelle valeur ? Parce que si il est égale à 0 et que comme j'ai vu tu fais -1 c'est sûr qu'il y a un problème à ce moment là.





 pseudoOM
0
JeremyNeReculeraPas Messages postés 64 Date d'inscription mercredi 4 avril 2007 Statut Membre Dernière intervention 6 juin 2007
24 mai 2007 à 13:48
Déja merci beaucoup mais je suis encore en train de cherché je ne trouve pas, l'instruction en elle meme ne crée pas de problème mais je n'ai aucune gestion d'erreur ici donc je continu mes recherches.autrement je suis sur VB2005 et c'est normalement "on error resume next" que j'utilise mais la il faut que cette instruction s'éxecute impérativement sans problème.
encore merci nicko!

Ce qui se conçoit bien s'énonce clairement...
0
Julien237 Messages postés 883 Date d'inscription vendredi 3 novembre 2000 Statut Membre Dernière intervention 3 mars 2009 7
24 mai 2007 à 13:50
On error resume next c'est pas top, faut gérèr les erreurs avec des blocs Try Catch en .Net.

<hr width="100%" size="2" />Julien.
0
JeremyNeReculeraPas Messages postés 64 Date d'inscription mercredi 4 avril 2007 Statut Membre Dernière intervention 6 juin 2007
24 mai 2007 à 13:52
désolé j'avais pas vu les autres messages!

NBSPMAX=4 donc pas de souci a ce niveau et si Chr(&H41S + i )= chr(0) j'arrete la prog!! lol
en tout cas merci a vous quand meme !! 






Ce qui se conçoit bien s'énonce clairement...
0
JeremyNeReculeraPas Messages postés 64 Date d'inscription mercredi 4 avril 2007 Statut Membre Dernière intervention 6 juin 2007
24 mai 2007 à 14:15
Oula merciiii beaucoup julien je n'utilisais pas le try catch et en fait ca aide vraiment bien!!
l'erreur qui m'est donné est en fait ailleur:

'***********************************************************

' Ouverture d'un fichier en accès direct (type RECORD)

'***********************************************************

Private
Sub OpenFile()

' Ouverture du fichier de configuration sas

'==========================================Canal = FreeFile()

TryFileOpen(Canal, CFG_FILE_NAME, OpenMode.Random, , , Len(SasN1))

Catch ex
As ExceptionMsgBox(ex.Message)

End
Try

 l'erreur décrite est: "incompatibilité de type."

Je pense que ca vien du fait que SasN1 est un objet de la classe SasN mais pourquoi je ne sais pas..

Je fais en fait la migration d'un projet VB6 vers VB2005 mais je n'ai aucune erreur a la génération..

Merci julien!

Ce qui se conçoit bien s'énonce clairement...
0
JeremyNeReculeraPas Messages postés 64 Date d'inscription mercredi 4 avril 2007 Statut Membre Dernière intervention 6 juin 2007
24 mai 2007 à 14:23
Et pour la première erreur , la définition est : "la reférence d'objet n'est pas définie à une instance d'objet , bon , ca me parait louche car à la génération ca me signalerais une érreur non??merci

Ce qui se conçoit bien s'énonce clairement...
0
cs_Nicko11 Messages postés 1141 Date d'inscription mercredi 7 mars 2007 Statut Membre Dernière intervention 19 septembre 2007 3
24 mai 2007 à 15:11
Apres une petite recherche, j'ai trouvé cette méthode,

FileLen
0
JeremyNeReculeraPas Messages postés 64 Date d'inscription mercredi 4 avril 2007 Statut Membre Dernière intervention 6 juin 2007
24 mai 2007 à 15:30
Merci mais ceci ne fonctionne pas avec un objet comme le mien contenant des tableaux(ou meme tous simplement avec un seul tableau)  et Len() ne peu pas retourné la taille en octet d'un tableau je vien de m'en apercevoir... donc je ne sais pas comment je vais faire pour avoir la taille totale en octets de mon objet pour pouvoir l'enregistrer dans un fichier en accès direct. Je continu mes recherches..
merci quand meme! 
Ce qui se conçoit bien s'énonce clairement...
0
JeremyNeReculeraPas Messages postés 64 Date d'inscription mercredi 4 avril 2007 Statut Membre Dernière intervention 6 juin 2007
24 mai 2007 à 15:36
Bon ba je crois que c'est clair, je ne l'ai pas encore fait mais je pense qu'il faut que je cré une fonction parcourant une à une les cases de mes tableaux et additionner toutes les longeurs pour chaque tableau!

Ce qui se conçoit bien s'énonce clairement...
0
Rejoignez-nous