Page 2 sur 2

Publié : sam. 08/mai/2004 13:06
par Flype
je ferais comme çà moi ( si les lignes n'ont pas d'importance ) :

Code : Tout sélectionner

NewList ListeDeSprite.l()

If ReadFile(0,"sprites.txt")

  While ~Eof(0)
    
    ligne$ = ReadString()
    
    index = 0
    
    Repeat
      
      index + 1
      
      item$ = StringField( ligne$, index, " ")
      If item$ = "" : Break : EndIf
      
      AddElement( ListeDeSprite() )
      ListeDeSprite() = Val( item$ )
      
    ForEver
    
  Wend
  
  ForEach ListeDeSprite()
    Debug "N° de Sprite : "+Str(ListeDeSprite())
  Next
  
EndIf

Publié : sam. 08/mai/2004 13:09
par Flype
ou comme çà si les lignes ont leur importance :

Code : Tout sélectionner

Structure MonSprite
  Numero.l
  Ligne.l
EndStructure

NewList ListeDeSprite.MonSprite()

If ReadFile(0,"sprites.txt")
  
  nLigne = 0
  
  While ~Eof(0)
    
    nLigne + 1
    ligne$ = ReadString()
    
    index = 0
    
    Repeat
      
      index + 1
      
      item$ = StringField( ligne$, index, " ")
      If item$ = "" : Break : EndIf
      
      AddElement( ListeDeSprite() )
      ListeDeSprite()\Numero = Val( item$ )
      ListeDeSprite()\Ligne = nLigne
      
    ForEver
    
  Wend
  
  ForEach ListeDeSprite()
    Debug "N° de Sprite : "+Str(ListeDeSprite()\Numero)+" -- Ligne : "+Str(ListeDeSprite()\Ligne)
  Next
  
EndIf

Publié : sam. 08/mai/2004 13:50
par nico
Si c'est juste pour récupérer des chiffres de même type , il serait plus judicieux d'enregistre les données au format binaire, de plus ça serait extrèmement rapide , simple et moins volumineux.

Sinon, tu peux utiliser une zone de mémoire partagée, les deux processus accédant directement aux données mais ça dépend des capacités de tes deux logs.C'est pour ça que je voulais savoir avec quels logiciels tes 2 progs ont été créés.

Publié : sam. 08/mai/2004 13:58
par Pierre
les lignes doivent toutes être de même longueur, je vois pas l'utilité de faire des lignes plus grandes que les autres.
puis dans ton exemple tu enlèves les espaces, ben c'est pas mon cas
un espace = un zéro
je prend les caractères du fichier 3 par 3
120 19 8 7 6 5 4 3 2 1 1 2 3 4 5 6 7 8 9 0
10 19 8 17 6 5 4 3 2 1 1 2 3 4 5 6 7 8 9 0
0 9 8 7 6 5 4 3 2 1 101 2 3 4 5 6 7 8 9 0
0 9 8 37 16 5 4 3 62 1 1 2 3 4 5 6 7 8 9 0
0 9 48 7 6 5 4 3 52 1 1 2 93 4 5 6 7 8 9 0
ce qui donne (pour le début de la première ligne):
128
019
008
voila les valeurs qui seront mises dans le tableau

Publié : sam. 08/mai/2004 14:03
par Pierre
s'cuse nico j'avais pas vu ta réponse,
tu parle a moi ou a Flype?

Publié : sam. 08/mai/2004 14:07
par Flype
@pierre

a mon avis il parle à toi

sinon ok, j'avais mal lu... donc les espaces = des "0"...
es-tu bloqué où çà va ?
en tout cas c simple à rajouter dans mon exemple la gestion des "0" :

Code : Tout sélectionner

Structure MonSprite
  Numero.l
  Ligne.l
EndStructure

NewList ListeDeSprite.MonSprite()

If ReadFile(0,"sprites.txt")
  
  nLigne = 0
  
  While ~Eof(0)
    
    nLigne + 1
    ligne$ = ReadString()
    
    index = 0
    
    Repeat
      
      index + 1
      
      item$ = StringField( ligne$, index, " ")
      If item$ = "" : Break : EndIf
      
      AddElement( ListeDeSprite() )
      ListeDeSprite()\Numero = Val( item$ )
      ListeDeSprite()\Ligne = nLigne
      AddElement( ListeDeSprite() )
      ListeDeSprite()\Numero = 0
      ListeDeSprite()\Ligne = nLigne
            
    ForEver
    
  Wend
  
  ForEach ListeDeSprite()
    Debug "N° de Sprite : "+Str(ListeDeSprite()\Numero)+" -- Ligne : "+Str(ListeDeSprite()\Ligne)
  Next
  
EndIf

Publié : sam. 08/mai/2004 14:54
par Pierre
bah non je suis pas bloqué

Si c'est juste pour récupérer des chiffres de même type , il serait plus judicieux d'enregistre les données au format binaire, de plus ça serait extrèmement rapide , simple et moins volumineux.

Sinon, tu peux utiliser une zone de mémoire partagée, les deux processus accédant directement aux données mais ça dépend des capacités de tes deux logs.C'est pour ça que je voulais savoir avec quels logiciels tes 2 progs ont été créés.
bah je verrais peut être ça plus tard, parce que ça m'embrouille un peu, je sais pas si j'ai le niveau pour faire ça...

Publié : sam. 08/mai/2004 18:54
par nico
Petit exemple d'écriture de chiffres en binaire:

Quand je vous disais que c'était simple!
Bien sûr, faut adapter suivant le cas.

Code : Tout sélectionner

If CreateFile(0, "c:\PureBasicTestFile.txt") 
  For a.l=1 To 100
    WriteLong(a) 
  Next a 
  CloseFile(0)
Else
  MessageRequester("PureBasic", "Error: can't write the file", 0)
  End
EndIf


If ReadFile(1, "c:\PureBasicTestFile.txt") 
  For a=1 To 100
    Nombre.l = ReadLong() 
    Debug Nombre
  Next a 
  CloseFile(1)
Else
  MessageRequester("PureBasic", "Error: Can't read the file", 0)
EndIf

Publié : dim. 09/mai/2004 18:36
par Pierre
merci mais pour l'instant je vais rester comme ça, après je ferais un éditeur de tiles qui génèrera des fichiers comme tu l'as dit, pour l'instant je fais mes map a la main dans un fichier txt (c'est long et chi**t)
et puis pour encore 2 ou 3 raisons...
donc je ferais ce que tu dis mais je le ferais plus tard.