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

ASP Discussion :

probleme avec un array


Sujet :

ASP

  1. #1
    Membre régulier
    Inscrit en
    Septembre 2002
    Messages
    270
    Détails du profil
    Informations forums :
    Inscription : Septembre 2002
    Messages : 270
    Points : 76
    Points
    76
    Par défaut probleme avec un array
    Salut,

    je voudrais créer un tableau avec a chaque fois les noms du fichier que j'ai dans mon repertoire.

    je pense que je dois utiliser redim pour ajouter le nom de mon fichiers a tableau (je ne connais pas le nombre de fichier a l'avance)

    mais je bloque un peu

    pourriez-vous m'aider?

    merci


    voila mon code test:
    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
    21
    22
    23
    24
    <html>
    <head>
    	<title>Untitled</title>
    	<%Set FSO = Server.CreateObject("Scripting.FileSystemObject")%>
    	<%dir = Server.MapPath("pix/")%>
     
    	<%set foldPt = FSO.GetFolder(dir)%>
    	<%set fc = foldPt.Files%>
    </head>
     
    <body>
    <%dim photo%>
    <%for each f in fc%>
     
     
    <%next%>
     
    <% 
    dim a
    a = array(photo)%>
    <%=a(0)%>
    il y a <%=fc.count%> fichiers
    </body>
    </html>

  2. #2
    Membre du Club
    Inscrit en
    Septembre 2003
    Messages
    35
    Détails du profil
    Informations forums :
    Inscription : Septembre 2003
    Messages : 35
    Points : 42
    Points
    42
    Par défaut Reponse
    Salut,

    Pour redimensionner un tableau, il faut d'abord le déclarer.
    Par exemple :

    Dim a(3)

    et ensuite :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    nb = fc.count
    Redim a(nb)

  3. #3
    Membre régulier
    Inscrit en
    Septembre 2002
    Messages
    270
    Détails du profil
    Informations forums :
    Inscription : Septembre 2002
    Messages : 270
    Points : 76
    Points
    76
    Par défaut
    j'ai modifié mon code comme ceci

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    <% 
    dim a(3)
     
    nb = fc.count
    redim a(nb)
    %>
    <%for each f in fc%>
    	<%a(f) = "historique" + f%>
    <%next%>
    et j'ai cette erreur

    Type d'erreur :
    Erreur d'exécution Microsoft VBScript (0x800A000A)
    Tableau fixe ou temporairement verrouillé
    /new/testefichier.asp, line 18
    peut tu m'aider?

    merci

    [Balise code ajoutée par jérôme]
    [Merci d'y penser vous-même à l'avenir]

  4. #4
    Membre du Club
    Inscrit en
    Septembre 2003
    Messages
    35
    Détails du profil
    Informations forums :
    Inscription : Septembre 2003
    Messages : 35
    Points : 42
    Points
    42
    Par défaut Reponse
    Essaye ça :

    Cint : conversion de la variable nb en sous-type entier (Integer).

    Si ça marche pas non plus, dimensionne ton tableau dès le départ à un nombre que tu estimes supérieur au nombre de fichiers : si tu estimes le nombre maximum à 500, dimensionne le à 600, etc.

    Pour les balises <% et %>, c'est pas la peine d'en mettre sur chaque ligne : ça retarde l'interprétation du code.

  5. #5
    Membre du Club
    Inscrit en
    Septembre 2003
    Messages
    35
    Détails du profil
    Informations forums :
    Inscription : Septembre 2003
    Messages : 35
    Points : 42
    Points
    42
    Par défaut Meilleur code
    J'ai pas compris pourquoi tu veux stocker les noms de fichiers dans un tableau.
    Il y a mieux : c'est créer un lien hypertexte pour chaque fichier affiché.
    Voilà le code :

    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
     
    <%
    Dim fsys, dossier, collec, f, flist, chemin
    chemin="\monDossier"
    Set fsys=CreateObject("Scripting.FileSystemObject")
    Set dossier=fsys.GetFolder(Server.MapPath(chemin))
    Set collec=dossier.Files
    For Each f in collec
    	flist=flist + "<a href=""" & chemin & f.name """>" 
    	& f.Name & "</a><br>" 
    Next 
    Response.Write flist 
    Set fsys=Nothing
    Set dossier=Nothing 
    Set collec=Nothing  
    %>

  6. #6
    Membre régulier
    Inscrit en
    Septembre 2002
    Messages
    270
    Détails du profil
    Informations forums :
    Inscription : Septembre 2002
    Messages : 270
    Points : 76
    Points
    76
    Par défaut
    donné une dimension superieur suis pas trop pour.


    en fait c'est un peu plus compliqué que ca.

    je vais utilisé chaque photo pour une banière animée de 5 photos qui defile de haut en bas ou inverse.

    j'ai un nombre inconnu de photo et donc j'ai besoin d'un tableau avec les nom, pour pouvoir aller les rechercher une a une pour faire suivre mon anim.

    avec un tableau j'aurai deja toutes les références dont j'aurai besoin et je pourrai utiliser chaque photo indépendament

    merci

  7. #7
    Yoh
    Yoh est déconnecté
    Membre du Club
    Inscrit en
    Juillet 2002
    Messages
    57
    Détails du profil
    Informations forums :
    Inscription : Juillet 2002
    Messages : 57
    Points : 46
    Points
    46
    Par défaut
    Salut,

    essai ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    <% 
     
    Dim a
    a = Array()
     
    For Each f In fc
       Redim Preserve a(UBound(a)+1)
       a(UBound(a)) = "historique" + f
    Next%>

  8. #8
    Membre régulier
    Inscrit en
    Septembre 2002
    Messages
    270
    Détails du profil
    Informations forums :
    Inscription : Septembre 2002
    Messages : 270
    Points : 76
    Points
    76
    Par défaut
    merci ca marche a merveille

    je vais pouvoir m'y mettre serieux

  9. #9
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 8
    Points : 11
    Points
    11
    Par défaut
    Je me permets de compléter ce post pour l'étendre aux tableaux à plusieurs dimensions car j'ai eu la même erreur ("This array is fixed or temporarily locked" ou "Tableau fixe ou temporairement verrouillé") sur un tableau à deux dimensions :

    Dim a
    Redim a(3,0)
    au lieu de
    Dim a(3,0)

    Il faut dimensionner le tableau à une dimension, puis lui ajouter la deuxième avec un redim
    ensuite, on peut faire

    <%
    Dim a
    Redim a(3,0)
    'Dim a(3,0)

    fc = split("toto,titi,tutu,tyty",",")
    For Each f In fc
    Redim Preserve a(3,UBound(a,2)+1)
    a(1,UBound(a,2)) = f
    a(2,UBound(a,2)) = f
    a(3,UBound(a,2)) = f
    Next
    %>

    Bruno CATTEAU
    http://bruno.catteau.free.fr

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

Discussions similaires

  1. Probleme avec un public array/tableau de strings
    Par Nico820 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 04/07/2011, 13h04
  2. [MySQL] probleme avec un fetch array
    Par Kuchiki Byakuya dans le forum PHP & Base de données
    Réponses: 7
    Dernier message: 10/03/2010, 14h37
  3. probleme de tableau array avec la fonction array_push()
    Par carmen256 dans le forum Langage
    Réponses: 13
    Dernier message: 07/09/2009, 18h21
  4. probleme avec mysql fetch array
    Par philsand77 dans le forum SQL Procédural
    Réponses: 2
    Dernier message: 19/04/2007, 08h56
  5. Petit probleme avec Arrays.Sort(...)
    Par Seth77 dans le forum Collection et Stream
    Réponses: 11
    Dernier message: 15/01/2006, 13h48

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