IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VB 6 et antérieur Discussion :

[VB6-Vista] Compatibilité avec Vista, c:\program files\


Sujet :

VB 6 et antérieur

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    40
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 40
    Points : 47
    Points
    47
    Par défaut [VB6-Vista] Compatibilité avec Vista, c:\program files\
    Salut le forum!
    J'ai développé une petite application en VBA sous windows XP. Elle fonctionne très bien sur mon poste, mais lorsque je veux la tester sur Vista, ba ça va plus
    Le problème viens d'une de mes fonction, qui doit normalement ecrire un fichier "Fic.txt". Voici le code que j'utilise :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    Public Sub EcritureCvs(nomfic As String, TabCvs1 As TabCvs)
     
        'assignation automatique d'un numero de travail pour le fichier
        Dim FreeFilenumber As Integer
        FreeFilenumber = FreeFile
     
        'ouverture du fichier
        Open nomfic For Output As FreeFilenumber
     
        'ecriture de la ligne i du tableau tabcvs1 dans le fichier
        Dim i As Integer
        i = 0
        For i = 0 To TabCvs1.nrblignes - 1
            Print #FreeFilenumber, TabCvs1.t(i)
        Next i
     
        'fermeture du fichier
        Close #FreeFilenumber
    Exit Sub
    Où TabCvs1 est un tableau contenant des données type "String" et où NomFic correspond à l'adresse du fichier ".txt" que je souhaite ecrire.

    Le fonction marche sur Xp mais sur Vista, je comprend pas pourquoi, elle s'exectute mais ne crée ou ne modifie pas le fichier txt...

    Quelqun est-il en mesure de m'expliquer ce mystère?? Ainsi qu'une façon de le résoudre?

    Merci d'avance,

    Tibaldus

  2. #2
    Membre averti
    Homme Profil pro
    Développeur VB6 et tout neuf en .Net
    Inscrit en
    Avril 2005
    Messages
    377
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France

    Informations professionnelles :
    Activité : Développeur VB6 et tout neuf en .Net
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2005
    Messages : 377
    Points : 446
    Points
    446
    Par défaut
    Bonjour Tibaldus,

    Vérifie qu'il ne s'agit pas d'un problème de droit.
    Essaie avec un chemin où tu est sûr d'avoir le droit d'écrire.
    Tu n'as pas de message d'erreur ?
    Le plus difficile pour trouver une bonne réponse, c'est déjà de trouver la bonne question.

  3. #3
    Inactif  

    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    4 555
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 4 555
    Points : 5 535
    Points
    5 535
    Par défaut
    bonjour,

    si tu es (cette section) sous VB6, j'ai des difficultés à comprendre ceci
    :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    For i = 0 To TabCvs1.nrblignes - 1
            Print #FreeFilenumber, TabCvs1.t(i)
        Next i
    en comparaison avec celà :

    TabCvs1 est un tableau

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    40
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 40
    Points : 47
    Points
    47
    Par défaut
    En effet, je me suis mal expliqué
    En fait, TabCvs1 est un objet avec 2 attributs :
    t() -> Tableau de String
    nbreLigne -> nombre de ligne dans le tableau "t()"

    Sinon, pour répondre à Najdar, je n'ai pas de message d'erreur, et je suis bien dans un dossier où j'ai le "contrôle total" donc ça ne doit pas venir de là...

  5. #5
    Inactif  

    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    4 555
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 4 555
    Points : 5 535
    Points
    5 535
    Par défaut
    j'ai encore des difficultés !

    C'est quoi, les attributs d'un objet ?

    Quel est donc cet objet ?

    D'ou vient nrblignes ?

    Il va te falloir te montrer très précis, si tu veux de l'aide...

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    40
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 40
    Points : 47
    Points
    47
    Par défaut
    ok, bon alors c'est parti pour une belle explication :
    L'application que j'ai developpé sert à faire des études de dimensionnement. Une fois les calculs terminés, je souhaite pouvoir sortir un rapport reprennant les résultats grace au publipostage de Word.

    Or, pour faire un publipostage, il me faut un fichier source comprennant les donnée. D'où la necessité de créer un fichier txt.
    Je dois donc avoir (dans mon fichier txt), sur la première ligne, les nom de mes données (BesoinJanvier;BesoinFevrier;BesoinMars;...), puis sur les ligne suivante, leur valeurs (12504;14354;10427;...).

    Voilà pour l'explication de l'objectif. Passons maintenant à l'explication du code que je vous ai fourni :

    Pour pouvoir créer mon fichier txt, j'ai besoin d'un tableau de "String", dont chaque élement correspond à une ligne.

    J'ai donc crée un nouveau type de variable :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Type Tab
       t() as String
       nrbligne as integer
    end Type
    Je sais, c'est completement inutile, j'aurai pu utiliser un simple tableau mais je m'en suis rendu compte bien tard et ça serai trop long de tout modifier maintenant, donc je fais avec...

    On en reviens donc à la fonction "EcritureCvs" postée plus haut, qui est censée créer mon fichier txt.

    Voilà, j'espère avoir fourni un explication complète et compréhensible...

  7. #7
    Membre averti
    Homme Profil pro
    Développeur VB6 et tout neuf en .Net
    Inscrit en
    Avril 2005
    Messages
    377
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France

    Informations professionnelles :
    Activité : Développeur VB6 et tout neuf en .Net
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2005
    Messages : 377
    Points : 446
    Points
    446
    Par défaut
    Plutôt que d'utiliser les Print ou Put, essai avec l'objet FileSystemObject (il faut ajouter la référence Microsoft Scripting Runtime).

    Il dispose de méthodes comme :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    .OpenTextFile(MonFichier, ForWriting).Write
    ou
    .OpenTextFile(MonFichier).ReadAll
    A voir si Vista aime mieux...
    Le plus difficile pour trouver une bonne réponse, c'est déjà de trouver la bonne question.

  8. #8
    Inactif  
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    2 054
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 054
    Points : 2 416
    Points
    2 416
    Par défaut
    Citation Envoyé par Tibaldus Voir le message
    Sinon, pour répondre à Najdar, je n'ai pas de message d'erreur, et je suis bien dans un dossier où j'ai le "contrôle total" donc ça ne doit pas venir de là...
    Qu'appel-tu 'contrôle total', sous Vista MEME SI TU EST L'ADMINISTRATEUR DU PC si tu ouvre VB ou une appli d'une façon 'Normale' tu ne l'ouvre qu'avec le 1er jeton.
    Pour avoir accès aux privilège d'administrateur (avoir le 2ém jeton) tu doit ouvrir VB ou l'appli en..
    Clic droit sur l'icône, et sélectionner 'exécuter en tant qu'admnistrateur'
    Si ton appli fonctionne sous XP, 95% de chances qu'elles fonctionnerra de cette façon.
    Tu peu aussi, sous Vista avoir des problèmes avec les OX/dll si oui voir C'est article.
    A+
    PS: J'ai déjà mis un tas de poste sur ce sujet.

  9. #9
    Expert éminent
    Avatar de ThierryAIM
    Homme Profil pro
    Inscrit en
    Septembre 2002
    Messages
    3 673
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2002
    Messages : 3 673
    Points : 8 524
    Points
    8 524
    Par défaut
    A tout hasard (je n'ai pas Vista ici), si tu essaie de passer tes paramètres ByVal ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Public Sub EcritureCvs (ByVal nomfic As String, TabCvs1 As TabCvs)
    Vous vous posez une question, la réponse est peut-être ici :
    Toutes les FAQs VB
    Les Cours et Tutoriels VB6/VBScript
    Les Sources VB6


    Je ne réponds pas aux questions techniques par MP. Utilisez les forums. Merci de votre compréhension

  10. #10
    Expert éminent sénior


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Points : 20 038
    Points
    20 038
    Par défaut
    Qu'utilise-tu comme nom de fichier ? fic1.txt sans préciser le répertoire..? quel est alors ton répertoire par défaut ("curDir") ..

    s'il sagit du répertoire par défaut de VB6 .. C:\Program Files\Microsoft Visual Studio\VB98 .. il me semble avoir lu quelque part que Vista gère de façon particulière l'écriture dans le répertoire c:\program files..

    j'ai testé ton code avec :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
     
    Private Sub Command1_Click()
     Dim ta As TabCvs
     ReDim ta.t(4)
     ta.nrblignes = 3
     
     ta.t(0) = "00"
     ta.t(1) = "01"
     ta.t(2) = "02"
     Debug.Print "------- Essai 1 --------"
     Debug.Print "Répertoire courant : " & CurDir
     EcritureCvs "Fic1.txt", ta
     Debug.Print "Resultat 1 = " & Dir("fic1.txt")
     Debug.Print "------- Essai 2 --------"
     ChDir ("d:\users")
     ChDrive ("d")
     Debug.Print "Répertoire courant : " & CurDir
     EcritureCvs "Fic1.txt", ta
     Debug.Print "Resultat 2 = " & Dir("fic1.txt")
    End Sub
    Le résultat .. dans la fenêtre exécution est :
    Citation Envoyé par fenêtre exécution
    ------- Essai 1 --------
    Répertoire courant : C:\Program Files\Microsoft Visual Studio\VB98
    Resultat 1 = Fic1.txt
    ------- Essai 2 --------
    Répertoire courant : d:\users
    Resultat 2 = Fic1.txt
    vu de l'intérieur" du programme tout ce passe "bien" les 2 fichiers ont bien été créés..

    cependant .. à la sortie le fichier D:\users\fic1.txt et bien présent et pas de fichier C:\Program Files\Microsoft Visual Studio\VB98\fic1.txt !!

    d'ailleurs.. le code suivant, ne "voit" plus le premier fichier :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    Private Sub Command2_Click()
      Debug.Print "Affiche résultats"
      Debug.Print "Res1 : " & Dir("C:\Program Files\Microsoft Visual Studio\VB98\Fic1*.")
      Debug.Print "Res2 : " & Dir("D:\users\Fic*.*")
    End Sub
    Citation Envoyé par fenêtre exécution
    Affiche résultats
    Res1 :
    Res2 : Fic1.txt
    en fait .. Vista à bien crée le fichier mais dans le répertoire suivant :

    "C:\Users\bbil\AppData\Local\VirtualStore\Program Files\Microsoft Visual Studio\VB98\Fic1.txt"

    Vista "simule" un répertoire application pour chacun des utilisateur du poste... ( ce que je trouve "bizarre" c'est que ma deuxième procédure ne "voit" plus ce fichier ...)

    Je sais pas si cela correspond à ton problème...

  11. #11
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    40
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 40
    Points : 47
    Points
    47
    Par défaut
    Bien vu bbill !!
    C'est bien de là que viens le problème. En effet, le programme enregistre le fichier txt dans un répertoire dans Program Files. Et en cherchant un peu, j'ai remarqué un "bouton" intitulé "Fichiers de compatibilité" dans la barre de menu. Et en cliquant dessus... je me retrouve dans "...\VirtualStore\Program Files\..." Et là, comme par hasard, je retrouve mon petit fichier txt bien caché!

    Je ne sais pas trop à quoi servent ces "dossiers de compatibilité", mais en tout cas, ils pouraient prevenir... Quelqun connait un moyen de les désactiver, ou du moins d'éviter ce genre de problème??

    Merci à tous en tout cas pour vos conseils.

    Tibaldus

  12. #12
    Expert éminent sénior


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Points : 20 038
    Points
    20 038
    Par défaut
    peu-être
    en utilisant le "mode compatibilité XP (je suis au bureau je peu pas tester la..) " ... voir menu contextuel d'explorer... sur le .exe de votre programme...


  13. #13
    Rédacteur
    Avatar de Louis-Guillaume Morand
    Homme Profil pro
    Cloud Architect
    Inscrit en
    Mars 2003
    Messages
    10 839
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Cloud Architect
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2003
    Messages : 10 839
    Points : 28 252
    Points
    28 252
    Par défaut
    pour ce qui est de Vista, il faut chercher du côté des forums Vista

    @Tibaldus, la lecture de ce post devrait pouvoir t'éclairer un petit peu

    Je sais qu'il existe des white paper pour developper sans problèmes sous Vista mais ces white paper ne marchent que pour du .Net et j'ai peur qu'avec du VB6, il te faille toujours galérer un tant soit peu :/

    si après, tu as des questions bien précises comme
    Quelqun connait un moyen de les désactiver, ou du moins d'éviter ce genre de problème??
    alors là encore, il faudra demander sur les forums Vista. En local, une désactivation de l'UAC est la manière la plus brutale mais la plus simple (tu retrouves un XP en gros). Pour déployer une appli, là c'est moins aisé car il faut jouer avec l'impersonnification et les fichiers de manifest (géré par VB6?)
    moi c'est Louis-Guillaume, ni Louis, ni Guillaume mais Louis-Guillaume et je n'aide pas ceux qui écorchent mon nom

  14. #14
    Expert éminent sénior


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Points : 20 038
    Points
    20 038
    Par défaut
    Citation Envoyé par Louis-Guillaume Morand Voir le message
    pour ce qui est de Vista, il faut chercher du côté des forums Vista
    .....
    Je fais faire un aller-retour de ce message dans le forum Vista.. afin d'y laisser un lien et de cumuler les avantages des 2 sous-forums...

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Money 2005] Compatibilité avec Vista ?
    Par Aitone dans le forum Windows Vista
    Réponses: 9
    Dernier message: 01/12/2007, 09h53
  2. [VB6] Compatibilité avec Vista
    Par Tibaldus dans le forum Windows Vista
    Réponses: 13
    Dernier message: 16/11/2007, 17h24
  3. Compatibilité avec VIsta
    Par Edarian dans le forum Code::Blocks
    Réponses: 27
    Dernier message: 02/10/2007, 20h12
  4. Réponses: 2
    Dernier message: 22/08/2007, 14h39
  5. Compatibilite avec Vista
    Par Seth77 dans le forum Framework .NET
    Réponses: 10
    Dernier message: 02/02/2007, 13h39

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo