Super déconcertant..

Résolu
Signaler
Messages postés
64
Date d'inscription
mercredi 4 avril 2007
Statut
Membre
Dernière intervention
6 juin 2007
-
Messages postés
64
Date d'inscription
mercredi 4 avril 2007
Statut
Membre
Dernière intervention
6 juin 2007
-
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

Messages postés
64
Date d'inscription
mercredi 4 avril 2007
Statut
Membre
Dernière intervention
6 juin 2007

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...
Messages postés
64
Date d'inscription
mercredi 4 avril 2007
Statut
Membre
Dernière intervention
6 juin 2007

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...
Messages postés
64
Date d'inscription
mercredi 4 avril 2007
Statut
Membre
Dernière intervention
6 juin 2007

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...
Messages postés
1141
Date d'inscription
mercredi 7 mars 2007
Statut
Membre
Dernière intervention
19 septembre 2007
3
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 ?
Messages postés
1141
Date d'inscription
mercredi 7 mars 2007
Statut
Membre
Dernière intervention
19 septembre 2007
3
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 
Messages postés
883
Date d'inscription
vendredi 3 novembre 2000
Statut
Membre
Dernière intervention
3 mars 2009
7
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.
Messages postés
173
Date d'inscription
jeudi 3 février 2005
Statut
Membre
Dernière intervention
30 janvier 2009

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
Messages postés
64
Date d'inscription
mercredi 4 avril 2007
Statut
Membre
Dernière intervention
6 juin 2007

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...
Messages postés
883
Date d'inscription
vendredi 3 novembre 2000
Statut
Membre
Dernière intervention
3 mars 2009
7
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.
Messages postés
64
Date d'inscription
mercredi 4 avril 2007
Statut
Membre
Dernière intervention
6 juin 2007

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...
Messages postés
64
Date d'inscription
mercredi 4 avril 2007
Statut
Membre
Dernière intervention
6 juin 2007

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...
Messages postés
64
Date d'inscription
mercredi 4 avril 2007
Statut
Membre
Dernière intervention
6 juin 2007

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...
Messages postés
1141
Date d'inscription
mercredi 7 mars 2007
Statut
Membre
Dernière intervention
19 septembre 2007
3
Apres une petite recherche, j'ai trouvé cette méthode,

FileLen
Messages postés
64
Date d'inscription
mercredi 4 avril 2007
Statut
Membre
Dernière intervention
6 juin 2007

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...
Messages postés
64
Date d'inscription
mercredi 4 avril 2007
Statut
Membre
Dernière intervention
6 juin 2007

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...