Fichier vers tableau[RESOLU]

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
ach
Messages : 16
Inscription : mar. 10/nov./2020 18:43

Fichier vers tableau[RESOLU]

Message 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
Dernière modification par ach le sam. 13/févr./2021 17:33, modifié 1 fois.
Avatar de l’utilisateur
Ar-S
Messages : 9477
Inscription : dim. 09/oct./2005 16:51
Contact :

Re: Fichier vers tableau

Message 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é
~~~~Règles du forum ~~~~
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
Avatar de l’utilisateur
case
Messages : 1528
Inscription : lun. 10/sept./2007 11:13

Re: Fichier vers tableau

Message 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

ImageImage
ach
Messages : 16
Inscription : mar. 10/nov./2020 18:43

Re: Fichier vers tableau

Message 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)
Avatar de l’utilisateur
case
Messages : 1528
Inscription : lun. 10/sept./2007 11:13

Re: Fichier vers tableau

Message 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.
ImageImage
Avatar de l’utilisateur
kernadec
Messages : 1594
Inscription : ven. 25/avr./2008 11:14

Re: Fichier vers tableau

Message 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
Dernière modification par kernadec le dim. 07/févr./2021 22:36, modifié 1 fois.
Avatar de l’utilisateur
case
Messages : 1528
Inscription : lun. 10/sept./2007 11:13

Re: Fichier vers tableau

Message 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
Dernière modification par case le mer. 10/févr./2021 19:02, modifié 1 fois.
ImageImage
Avatar de l’utilisateur
Ar-S
Messages : 9477
Inscription : dim. 09/oct./2005 16:51
Contact :

Re: Fichier vers tableau

Message 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
 
~~~~Règles du forum ~~~~
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
ach
Messages : 16
Inscription : mar. 10/nov./2020 18:43

Re: Fichier vers tableau

Message 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.
ach
Messages : 16
Inscription : mar. 10/nov./2020 18:43

Re: Fichier vers tableau

Message 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,
Avatar de l’utilisateur
case
Messages : 1528
Inscription : lun. 10/sept./2007 11:13

Re: Fichier vers tableau

Message 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é :)
ImageImage
ach
Messages : 16
Inscription : mar. 10/nov./2020 18:43

Re: Fichier vers tableau

Message 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
Avatar de l’utilisateur
Ar-S
Messages : 9477
Inscription : dim. 09/oct./2005 16:51
Contact :

Re: Fichier vers tableau

Message par Ar-S »

Cool.
Tu peux ajouter [RESOLU] dans le titre de ton 1er sujet.
~~~~Règles du forum ~~~~
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
ach
Messages : 16
Inscription : mar. 10/nov./2020 18:43

Re: Fichier vers tableau (resolu)

Message 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
Avatar de l’utilisateur
kernadec
Messages : 1594
Inscription : ven. 25/avr./2008 11:14

Re: Fichier vers tableau

Message 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

Répondre