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.