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] Limitation des variables à 64 Ko


Sujet :

VB 6 et antérieur

  1. #1
    Membre régulier Avatar de daladim
    Profil pro
    Étudiant
    Inscrit en
    Juillet 2004
    Messages
    153
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2004
    Messages : 153
    Points : 94
    Points
    94
    Par défaut [VB6] Limitation des variables à 64 Ko
    Salut à tous, (désolé, ma question est un peu longue...)

    je suis en train de programmer un explorateur de fichiers alternatif (un peu comme celui de Windows, mais avec, entre autres, des onglets)

    J'ai donc besoin d'une variable listant tous les dossiers, fichiers, etc. affichés par la fenêtre. Cette variable s'appelle objExpl. Elle est déclarée comme ca :

    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
    'Dans un module :
    Public objExpl(255) As Explorateur
    
    Public Type Explorateur
        Path As String
        Titre As String
        
        'Panneau de gauche, listant l'arborescence des dossiers
        ContenuDossiers(1024) As String
        CoordDossiers(1024) As Long     'Coordonnées des dossiers, pour la sélection
        dossierSelectionne As Long          'Dossier sélectionné
        
        nomFichiers(4096) As String
        extensionFichiers(4096) As String
        tailleFichiers(4096) As Single
       
        historique(255) As String
    End Type
    J'ai simplifié un peu, en fait, le type Explorateur contient encore quelques autres variables (Long ou Single), mais ca ne change rien au problème.

    Le but de objExpl est de pouvoir simplement gérer les onglets. Par exemple, je peux avoir objExpl(OngletEnCours).contenuDossiers(0), c'est le premier dossier affiché dans l'onglet en cours.

    Mon problème est que quand je lance ce programme, VB me dit "Erreur de compilation : une donnée fixe ou statique ne peut dépasser 64 Ko" , et il sélectionne la ligne d'où provient l'erreur : il s'agit d'un tableau du type Explorateur.

    Je comprend donc que mon type Explorateur est trop gros. Cependant, j'ai vraiment besoin de tous ces tableaux. Comment faire pour contourner l'erreur de compilation ?
    (ou alors comment alléger le type Explorateur, à mon avis il y a beaucoup de subtilités de VB que je ne connais pas et qui pourraient m'être bien utiles)

    Merci beaucoup

  2. #2
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 546
    Points
    15 546
    Par défaut
    Je n'ai pas de solution mais j'ai lu ton TPE. Ce n'est pas le sujet mais tu ne parles pas de la future installation d'un centre de recherche international en France. Tu as des renseignements là-dessus

    Merci

    A+

  3. #3
    Inactif  
    Avatar de jmfmarques
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    3 784
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 3 784
    Points : 4 674
    Points
    4 674
    Par défaut
    Pourquoi, dans ce cas, ne pas faire ton outil en te servant des contrôles Drivelist, Dirlist et Filelist conjugués avec les onglets que tu veux et les labels que tu veux ...
    Il me semble que ce serait beaucoup plus simple, pour le même résultat ...

  4. #4
    Membre éclairé
    Avatar de Catbull
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    542
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 542
    Points : 854
    Points
    854
    Par défaut
    Tu ne peux malheureusement pas passer par un Type. Un type n'est pas un pointeur sur un objet. La taille de la variable est donc initimement liée aux types qui l'a compose.

    Voici la taille de ton type :

    Path As String '4 octets
    Titre As String '4 octets
    ContenuDossiers(1024) '1025 * 4 Octets
    CoordDossiers(1024) As Long '1025 * 4 Octets
    dossierSelectionne As Long '4 octets
    nomFichiers(4096) As String '4097 * 4 Octets
    extensionFichiers(4096) As String '4097 * 4 Octets
    tailleFichiers(4096) As Single '4097 * 4 Octets
    historique(255) As String '256 * 4 Octets

    Une solution consisterait à passer non par un type mais un module de classe. Ainsi tu pointerais sur une adresse qui pointerait sur d'autres adresses et tu éviteras ce dépassement.

  5. #5
    Membre régulier Avatar de daladim
    Profil pro
    Étudiant
    Inscrit en
    Juillet 2004
    Messages
    153
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2004
    Messages : 153
    Points : 94
    Points
    94
    Par défaut
    Salut tout le monde, merci pour vos réponses.

    jmfmarques, merci pour ta réponse, mais je ne pense pas qu'elle me convienne : j'aurais besoin d'avoir la liste des fichiers, de leur taille... pour pouvoir les classer par type, par taille, par date, etc...
    Catbull, merci aussi. Je ne connais pas les modules de classe, mais je vais apprendre et j'essayerai ce que tu me proposes.

    Merci beaucoup
    (Je ne mets pas le tag résolu, si jamais quelqu'un a d'autres solutions)

  6. #6
    Inactif  
    Avatar de jmfmarques
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    3 784
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 3 784
    Points : 4 674
    Points
    4 674
    Par défaut
    jmfmarques, merci pour ta réponse, mais je ne pense pas qu'elle me convienne : j'aurais besoin d'avoir la liste des fichiers, de leur taille... pour pouvoir les classer par type, par taille, par date, etc...
    OUI ? Et alors ?
    Il s'agit là d'un aspect que tu peux gérer, ma foi... A condition que tu saches faire tout le reste (extraire par API et gérer). Et je pense que tu sais faire tout celà, sinon tu ne te lancerais pas dans une telle entreprise ! Le contraire voudrait dire que tu attends que l'on fasse tout, pas à pas,....

  7. #7
    Membre éprouvé
    Avatar de méphistopheles
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    1 551
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 1 551
    Points : 1 220
    Points
    1 220
    Par défaut
    autre solution: déclarer des tableaux vides ou bien des variables variant et créer une sub de redimentionnement que tu appelle après chaques déclaration.

  8. #8
    Expert confirmé
    Avatar de zazaraignée
    Profil pro
    Étudiant
    Inscrit en
    Février 2004
    Messages
    3 174
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2004
    Messages : 3 174
    Points : 4 085
    Points
    4 085
    Par défaut
    Et pour l'affichage du contenu des dossier il y a le ListView et pour l'arborescence le TreeView. Mais tu savais peut-être déjà.

  9. #9
    Membre régulier Avatar de daladim
    Profil pro
    Étudiant
    Inscrit en
    Juillet 2004
    Messages
    153
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2004
    Messages : 153
    Points : 94
    Points
    94
    Par défaut
    Salut tout le monde,

    merci beaucoup pour toutes vos réponses.

    jmfmarques, effectivement, je pourrais utiliser les contrôles DriveList, FileList et FileList, mais ce que je veux dire, c'est que je n'aurais pas tout "sous la main" : s'il faut que je recherche la taille de chaque fichier à chaque fois que l'utilisateur veut trier le contenu d'un dossier, je pense que ce sera très lent... (c'est sourtout cela qui m'inquiète, VB est très lent...)

    zazaraignée, j'ai pensé au TreeView, mais je voudrais que l'apparence de mon programme soit justement plus ou moins différente de l'explorateur de windows. Au lieu d'un TreeView, j'utilise un PictureBox, où j'affiche ce que je veux, notamment des cardes de sélection "évolués" qu'il serait impossible d'avoir avec un TreeView.

    méphistopheles, je n'avais pas pensé à ta solution, mais elle me paraît très bien...

    Merci encore à tous !
    Je vais essayer de redimensionner des tableaux ou d'utiliser des modules de classe.

  10. #10
    Inactif  
    Avatar de jmfmarques
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    3 784
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 3 784
    Points : 4 674
    Points
    4 674
    Par défaut
    Je ne comprends toujours pas le mécanisme de cette pensée et attends donc la suite avec intérêt

Discussions similaires

  1. Valeurs limite des variables float et double
    Par Skagaz dans le forum Débuter avec Java
    Réponses: 16
    Dernier message: 16/04/2010, 11h24
  2. [VB6][fichier texte]limite des 32 ko
    Par hawk14 dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 20/02/2006, 23h45
  3. Compteur XSL...Portée des variables limitée
    Par lanfeustdetroy dans le forum XSL/XSLT/XPATH
    Réponses: 11
    Dernier message: 03/06/2005, 14h12
  4. Réponses: 8
    Dernier message: 17/02/2005, 09h05
  5. [VB6] [Fichier] Enregistrer des variables de structure
    Par de.bo dans le forum VB 6 et antérieur
    Réponses: 4
    Dernier message: 07/10/2002, 11h09

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