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 :

taille de tableau inconnue


Sujet :

VB 6 et antérieur

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Mai 2004
    Messages
    41
    Détails du profil
    Informations forums :
    Inscription : Mai 2004
    Messages : 41
    Par défaut taille de tableau inconnue
    Bonjour,


    je suis entrain de coder une application qui a pour but de vérifier des adresses IP. Celles ci se trouvent dans un .txt dont la taille est variable. Je sais qu'il y en a au moins une dizaine, et au maximum une cinquantaine.
    J'ai donc pensé à faire un tableau (0 to 100) histoire d'être sûr mais je sais que ça n'est pas la bonne solution. Est il possible de définir de manière dynamique la taille du tableau ? sinon y a-t-il un autre outil qui serait plus efficace ?

  2. #2
    Modérateur

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    1 722
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 722
    Par défaut
    bonjour,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Dim TabIP() As String
    '...
    '1 ère affectation
    ReDim TabIP(0 To 8) As String
    TabIP(0) = "127.0.0.1"
    '...
    'Rajout
    ReDim Preserve TabIP(0 To 14) As String
    TabIP(9) = "127.0.0.10"
    '...
    MsgBox TabIP(0) & " - " & TabIP(9)
    Il existe aussi les collections. Mais il me semble que dans ce cas un tableau suffise.

    A+, Hervé
    Traductions d'articles :
    La mémoire en .NET - Qu'est-ce qui va où ?
    Architecture DAL de haute performance et DTO ; Version C# : Partie 1,Partie 2,Partie 3 — Version VB.NET : Partie 1,Partie 2,Partie 3
    N'hésitez pas à consulter la FAQ VB.NET, le cours complet de Philippe Lasserre et tous les cours, articles et tutoriels.

  3. #3
    Membre averti
    Inscrit en
    Mai 2004
    Messages
    41
    Détails du profil
    Informations forums :
    Inscription : Mai 2004
    Messages : 41
    Par défaut
    ok je testerai ça, merci

  4. #4
    Membre émérite Avatar de avigeilpro
    Homme Profil pro
    Ambulancier
    Inscrit en
    Janvier 2004
    Messages
    880
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Creuse (Limousin)

    Informations professionnelles :
    Activité : Ambulancier
    Secteur : Transports

    Informations forums :
    Inscription : Janvier 2004
    Messages : 880
    Par défaut
    Si tes IP sont séparées par un ou plusieurs caractères (exemple : retour à la ligne), voici un moyen rapide de toutes les stocker dans un tableau :
    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
    Dim Adr As String
    Dim Contenu As String
    Dim TabIP() As String
    Dim Separateur As String
     
    Adr = "C:\Mes IP.txt"   'adresse du fichier contenant les IP
    Separateur = vbCrLf     'caractère(s) de séparation des IP dans le fichier (ici retour à la ligne)
     
    Contenu = Space(FileLen(Adr))   'Dimensionne la variable à la taille du fichier
     
    Open Adr For Binary As #1       'réccupère tout le contenu du fichier
    Get #1, , Contenu
    Close #1
     
    TabIP = Split(Contenu, Separateur)  'découpe le fichier selon les séparateur et charge le tableau

    Nombre d'IP trouvées dans le fichier : UBound(TabIP) + 1
    La connaissance seule ne suffit pas. La vraie compréhension vient de la mise en expérience.
    Règles|FAQ|Tuto

  5. #5
    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
    Par défaut
    bonjour,
    peu être une autre solution

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Dim TabIP() As String
    '
     
    Function AddIP(IP as String) as long
       'Si 1ére itération
       On error resume next
       redim preserve TabIP(ubound(TabIP))
       if err <>0 then redim TabIP(0)
    '
       TabIP(TabIP(ubound(TabIP)-1) = ID
       MsgBox TabIP(Ubound(TabIP)-1) 
       'Retourne le dernier index de TabIP
       AddIP = Ubound(TabIP)-1
    END Function
    A+

  6. #6
    Membre émérite Avatar de avigeilpro
    Homme Profil pro
    Ambulancier
    Inscrit en
    Janvier 2004
    Messages
    880
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Creuse (Limousin)

    Informations professionnelles :
    Activité : Ambulancier
    Secteur : Transports

    Informations forums :
    Inscription : Janvier 2004
    Messages : 880
    Par défaut
    As-tu testé ton code LeForestier ?
    Je crois très fortement qu'il ne fonctionne pas :
    - redim preserve TabIP(ubound(TabIP)) redimensionne le tableau avec les meme dimension (bref ne change rien) car UBound renvoie l'index le plus haut (et non le nombre d'entrées)
    - TabIP(TabIP(ubound(TabIP)-1) = ID : la je crois qu'il va falloir m'expliquer je suppose que ID devrait etre IP, mais ce qui se trouve en gras je comprend encore moins (non je plaisante, petite erreur de frappe )

    Bon voici la meme fonction, légèrement modifiée :
    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
     
    Dim TabIP() As String
     
    Function AddIP(IP As String) As Long
        On Error GoTo ErreurDim
        ReDim Preserve TabIP(UBound(TabIP) + 1)
     
        TabIP(UBound(TabIP)) = IP
        'Retourne le dernier index de TabIP
        AddIP = UBound(TabIP)
     
    Exit Function
     
    ErreurDim:
        ReDim TabIP(0)
        On Error GoTo 0
        Resume Next
     
    End Function
    La connaissance seule ne suffit pas. La vraie compréhension vient de la mise en expérience.
    Règles|FAQ|Tuto

  7. #7
    Membre averti
    Inscrit en
    Mai 2004
    Messages
    41
    Détails du profil
    Informations forums :
    Inscription : Mai 2004
    Messages : 41
    Par défaut
    merci pour vos réponses. Le temps me manque aujourd'hui et je pense voir lundi ce qui me correspond au mieux

  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
    Par défaut
    Citation Envoyé par avigeilpro
    As-tu testé ton code LeForestier ?
    Je crois très fortement qu'il ne fonctionne pas :
    - redim preserve TabIP(ubound(TabIP)) redimensionne le tableau avec les meme dimension (bref ne change rien) car UBound renvoie l'index le plus haut (et non le nombre d'entrées)
    Là tu te trompe, Ubound renvoi le nombre d'indice du tableau , voir mon poste précédant.

    Croisement poste, Je vérifie

Discussions similaires

  1. Problème de taille de tableau
    Par Beush dans le forum C
    Réponses: 4
    Dernier message: 01/11/2005, 17h41
  2. [SGBD] [PHP/MySQL Query]Quelle est la taille du tableau retourné?
    Par Jean_Benoit dans le forum SQL Procédural
    Réponses: 8
    Dernier message: 07/10/2005, 19h10
  3. Problème de taille de tableau
    Par k-nine dans le forum C
    Réponses: 6
    Dernier message: 25/09/2005, 09h16
  4. [VBA-E] taille du tableau non connu
    Par Invité dans le forum Macros et VBA Excel
    Réponses: 21
    Dernier message: 26/07/2005, 15h51
  5. static const et taille de tableau
    Par tut dans le forum C++
    Réponses: 3
    Dernier message: 27/01/2005, 16h01

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