Page 1 sur 1

Fichier vers tableau[RESOLU]

Publié : dim. 07/févr./2021 20:04
par ach
Bonsoir
Encore un truc que j'ai du zapper ,veuillez m'en excuser.
Comment peut on charger des fichiers que j'ai sur mon DD (des noms d'oiseaux et d'especes) dans des tableaux .
Merci

Re: Fichier vers tableau

Publié : dim. 07/févr./2021 20:51
par Ar-S
Tout depend de comment sont ecris et stockés tes noms d'oiseaux !
regarde du côté de DIM, MAP voir même LIST
Mais donne nous un exemple de contenu ce sera plus aisé

Re: Fichier vers tableau

Publié : dim. 07/févr./2021 21:00
par case
bonjour,
une manière de procéder avec une liste chainée (sur des images)
après relecture j'ai peut être pas compris la question mais je laisse l'exemple qui permet de recuperer les noms de fichiers dans un répertoire tout de mème

Code : Tout sélectionner

dir$=GetUserDirectory(#PB_Directory_Pictures) ; remplacer le contenu de dir$ par le chemin du repertoire a lire
ExamineDirectory(1,dir$,"*.*") ; 
NewList files.s()
Repeat
  If NextDirectoryEntry(1)
    If DirectoryEntryType(1)=1
      ext$=LCase(GetExtensionPart(dir$+"\"+DirectoryEntryName(1)))
      Select ext$
          Case"jpg","png","bmp","tif"
      AddElement(files())
      files()=DirectoryEntryName(1)      
  EndSelect
  
    EndIf    
 Else
   Break
   EndIf
ForEver
ForEach files()
  Debug files()
Next


Re: Fichier vers tableau

Publié : dim. 07/févr./2021 21:15
par ach
Ar-S a écrit :Tout depend de comment sont ecris et stockés tes noms d'oiseaux !
regarde du côté de DIM, MAP voir même LIST
Mais donne nous un exemple de contenu ce sera plus aisé
fichiers text (moineaurougegorgegrimpereaumesange grise etc) (passereaux rapaces perroquets....)
je voudrais recuperer tout cela dim oiseaux(50),dim especes(20)

Re: Fichier vers tableau

Publié : dim. 07/févr./2021 22:18
par case
ach a écrit :fichiers text (moineaurougegorgegrimpereaumesange grise etc) (passereaux rapaces perroquets....)
si il n'y a pas de séparateur entre les noms ça vas être compliqué

se serait plus simple avec

moineau,rouge gorge,grimpereau,mésange grise

par exemple.

Re: Fichier vers tableau

Publié : dim. 07/févr./2021 22:27
par kernadec
bsr à tous
Pour me part le mieux serait de tous mettre dans des listes pour
faire les tris sauver au format.csv ou en datas
et ensuite créér une base données SQL.
Cordialement

Re: Fichier vers tableau

Publié : dim. 07/févr./2021 22:30
par case
avec des , comme separateur par exemple.

Code : Tout sélectionner

 
 
Dim contenu.s(50) 
If OpenFile(1,"fichier.txt")
  pos=0
  Repeat
    r$=ReadString(1)        
    nb=CountString(r$,",")
    For rd=1 To nb+1
      contenu(pos)=StringField(r$,rd,",")
      pos+1
    Next
  Until Eof(1)    
closefile(1)
EndIf
For a=0 To 50
  Debug Str(a)+" - "+contenu(a)
Next

Re: Fichier vers tableau

Publié : lun. 08/févr./2021 13:00
par Ar-S
Le mode de récupération des données du fichier txt avec séparateurs et findstring() est le plus simple.
Après pour le traitement tu as plein de solutions.

Exemple avec des maps

Code : Tout sélectionner

Structure Oiseau
    Nom.s ; Nom scientifique..
    Type.s ; rapace etc
    Vie.s ; diurne/nocturne
  EndStructure

  NewMap Espece.Oiseau()
  
  ; Ici, nous utilisons l'élément courant après l'insertion du nouvel élément
  ;
  Espece("Moineau")\Nom = "Moineaunus Turbiculé"
  Espece()\type = "mini oiseau"
  Espece()\vie = "Diurne"
  
  Espece("Buse")\Nom = "Busetis Aucunidée"
  Espece()\type = "Rapace"
  espece()\vie = "Diurne"

  
  ForEach Espece()
    Debug "Nom de l'oiseau: "+MapKey(Espece())
    Debug "Nom scientifique: "+Espece()\nom
    Debug "Types: "+Espece()\Type.s
    Debug "Vie: "+Espece()\vie.s
    Debug ""
  Next
 
La même chose avec une Macro pour simplifier la syntaxe d'ajout d'oiseau, le résultat est le même.

Code : Tout sélectionner

Structure Oiseau
    Nom.s ; Nom scientifique..
    Type.s ; rapace etc
    Vie.s ; diurne/nocturne
  EndStructure

  NewMap Espece.Oiseau()
  
  ; Macro pour simplifier la syntaxe d'ajout d'oiseau
  Macro AddOiseau(N,NS,T,V)
  Espece(N)\Nom = NS
  Espece()\type = T
  Espece()\vie = V
  EndMacro
  ; ---------------------------------------------------
  
  ; Ici, nous utilisons l'élément courant après l'insertion du nouvel élément
  ;
 AddOiseau("Moineau","Moineaunus Turbiculé", "mini oiseau", "Diurne")
 AddOiseau("Buse", "Busetis Aucunidée", "Rapace", "Diurne")


  
  ForEach Espece()
    Debug "Nom de l'oiseau: "+MapKey(Espece())
    Debug "Nom scientifique: "+Espece()\nom
    Debug "Types: "+Espece()\Type.s
    Debug "Vie: "+Espece()\vie.s
    Debug ""
  Next
 

Re: Fichier vers tableau

Publié : lun. 08/févr./2021 18:22
par ach
Ar-S a écrit :Le mode de récupération des données du fichier txt avec séparateurs et findstring() est le plus simple.
Après pour le traitement tu as plein de solutions.

Exemple avec des maps

Code : Tout sélectionner

Structure Oiseau
    Nom.s ; Nom scientifique..
    Type.s ; rapace etc
    Vie.s ; diurne/nocturne
  EndStructure

  NewMap Espece.Oiseau()
  
  ; Ici, nous utilisons l'élément courant après l'insertion du nouvel élément
  ;
  Espece("Moineau")\Nom = "Moineaunus Turbiculé"
  Espece()\type = "mini oiseau"
  Espece()\vie = "Diurne"
  
  Espece("Buse")\Nom = "Busetis Aucunidée"
  Espece()\type = "Rapace"
  espece()\vie = "Diurne"

  
  ForEach Espece()
    Debug "Nom de l'oiseau: "+MapKey(Espece())
    Debug "Nom scientifique: "+Espece()\nom
    Debug "Types: "+Espece()\Type.s
    Debug "Vie: "+Espece()\vie.s
    Debug ""
  Next
 
La même chose avec une Macro pour simplifier la syntaxe d'ajout d'oiseau, le résultat est le même.

Code : Tout sélectionner

Structure Oiseau
    Nom.s ; Nom scientifique..
    Type.s ; rapace etc
    Vie.s ; diurne/nocturne
  EndStructure

  NewMap Espece.Oiseau()
  
  ; Macro pour simplifier la syntaxe d'ajout d'oiseau
  Macro AddOiseau(N,NS,T,V)
  Espece(N)\Nom = NS
  Espece()\type = T
  Espece()\vie = V
  EndMacro
  ; ---------------------------------------------------
  
  ; Ici, nous utilisons l'élément courant après l'insertion du nouvel élément
  ;
 AddOiseau("Moineau","Moineaunus Turbiculé", "mini oiseau", "Diurne")
 AddOiseau("Buse", "Busetis Aucunidée", "Rapace", "Diurne")


  
  ForEach Espece()
    Debug "Nom de l'oiseau: "+MapKey(Espece())
    Debug "Nom scientifique: "+Espece()\nom
    Debug "Types: "+Espece()\Type.s
    Debug "Vie: "+Espece()\vie.s
    Debug ""
  Next
 
Merci à vous je vais aller tester tout cela.

Re: Fichier vers tableau

Publié : mer. 10/févr./2021 16:21
par ach
case a écrit :avec des , comme separateur par exemple.

Code : Tout sélectionner

 
 
Dim contenu.s(50) 
If OpenFile(1,"fichier.txt")
  pos=0
  Repeat
    r$=ReadString(1)        
    nb=FindString(r$,",")
    For rd=1 To nb+1
      contenu(pos)=StringField(r$,rd,",")
      pos+1
    Next
  Until Eof(1)    
closefile(1)
EndIf
For a=0 To 50
  Debug Str(a)+" - "+contenu(a)
Next
Bonsoir
J'ai un probleme et ne trouve pas l'issue:
Le programme me" debug" 9 dates sur 20,10 achats sur 20 et 6 prix sur 20???
Où je me trompe ?
Merci encore pour votre aide

Code : Tout sélectionner

Dim contenu$(50)
If OpenFile(1,"Datachats.txt")
  pos=0
  Repeat
       
      r$=ReadString(1)   
    nb=FindString(r$,",")
    For rd=1 To nb+1
      contenu$(pos)=StringField(r$,rd,",")
      pos+1
    Next
  Until Eof(1)   
CloseFile(1)
EndIf
For a=0 To 50
    Debug Str(a)+" - "+contenu$(a)
    If contenu$(a)=""
        Break
        EndIf
    Next
    ;<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
    Dim contenu$(50)
If OpenFile(1,"Achats.txt")
  pos=0
  Repeat
       
      r$=ReadString(1)   
    nb=FindString(r$,",")
    For rd=1 To nb+1
      contenu$(pos)=StringField(r$,rd,",")
      pos+1
    Next
  Until Eof(1)   
CloseFile(1)
EndIf
For a=0 To 50
Debug Str(a)+" - "+contenu$(a)
    If contenu$(a)=""
        Break
        EndIf
    Next
    ;<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
        Dim contenu$(50)
If OpenFile(1,"Prixachats.txt")
  pos=0
  Repeat
       
      r$=ReadString(1)   
    nb=FindString(r$,",")
    For rd=1 To nb+1
      contenu$(pos)=StringField(r$,rd,",")
      pos+1
    Next
  Until Eof(1)   
CloseFile(1)
EndIf
For a=0 To 50
Debug Str(a)+" - "+contenu$(a)
    If contenu$(a)=""
        Break
        EndIf
    Next

    ;  Mon fichier Datachats.text
    ;  Janvier,Janvier,Janvier,Janvier,Janvier,Fevrier,Fevrier,Fevrier,Fevrier,Fevrier,Mars,Mars,Mars,Mars,Mars,Avril,Avril,Avril,Avril,Avril,
    ;  Mon fichier Achats.text
    ;  Friskies,Cartouche d'encre,Petrole,Cafe,Pain,Friskies,Cartouche d'encre,Petrole,Cafe,Pain,Friskies,Cartouche d'encre,Petrole,Cafe,Pain,Friskies,Cartouche d'encre,Petrole,Cafe,Pain,Friskies,Cartouche d'encre,Petrole,Cafe,Pain,
    ;  Mon fichier Prixachats.text
    ;  3.13,21.99,14.97,4.31,2.50,3.13,21.99,14.97,4.31,2.50,3.13,21.99,14.97,4.31,2.50,3.13,21.99,14.97,4.31,2.50,3.13,21.99,14.97,4.31,2.50,

Re: Fichier vers tableau

Publié : mer. 10/févr./2021 18:59
par case
salut, je devais être fatigué, il faut remplacer findstring(r$,",") par CountString(r$,",")

car findstring(r$,",") renvoi la position de la virgule la plus a gauche de la chaine.
alors que CountString(r$,",") renvoi le nombre de virgules dans la chaine ce qui donne le nombre d'elements a recuperer avec stringfield.



désolé :)

Re: Fichier vers tableau

Publié : ven. 12/févr./2021 13:56
par ach
case a écrit :salut, je devais être fatigué, il faut remplacer findstring(r$,",") par CountString(r$,",")

car findstring(r$,",") renvoi la position de la virgule la plus a gauche de la chaine.
alors que CountString(r$,",") renvoi le nombre de virgules dans la chaine ce qui donne le nombre d'elements a recuperer avec stringfield.



désolé :)
T'excuses pas...J'aurais du aller voir dans l'aide la def de findstring et countstring.
maintenant c'est parfait cela fonctionne trés bien.
Merci :D

Re: Fichier vers tableau

Publié : ven. 12/févr./2021 14:27
par Ar-S
Cool.
Tu peux ajouter [RESOLU] dans le titre de ton 1er sujet.

Re: Fichier vers tableau (resolu)

Publié : ven. 12/févr./2021 22:22
par ach
ach a écrit :Bonsoir
Encore un truc que j'ai du zapper ,veuillez m'en excuser.
Comment peut on charger des fichiers que j'ai sur mon DD (des noms d'oiseaux et d'especes) dans des tableaux .
Merci

Re: Fichier vers tableau

Publié : ven. 12/févr./2021 22:34
par kernadec
bsr ach
je te copie l'exemple de l'aide voir l'onglet File du manuel
Readfile() devrait faire l'affaire pour la lecture seule :wink:
cordialement

Code : Tout sélectionner

If CreateFile(0, "Test.txt")  ; Crée un nouveau fichier vide ou recrée une fichier vide s'il existe déjà 
    FileSeek(0, Lof(0))         ; Place le pointeur à la fin du fichier en utilisant le résultat de Lof() 
      WriteStringN(0, "... une autre ligne à la fin du fichier.")
    CloseFile(0)
  EndIf
  If ReadFile(0, "Test.txt")   ; Si le fichier peut être lu , on continue...
    While Eof(0) = 0           ; Boucle tant que la fin du fichier n'est pas atteinte. (Eof = 'End Of File') 
      Debug ReadString(0)      ; Affiche du fichier
    Wend
    CloseFile(0)               ; Ferme le fichier précédemment créé ou ouvert
  Else
    MessageRequester("Information","Impossible d'ouvrir le fichier!")
  EndIf