Page 1 sur 1

Restore a$

Publié : sam. 23/juil./2022 11:42
par SPH
Salut,

J'avais posé la question il y a fort longtemps mais comme PB a évolué, je la repose :

Code : Tout sélectionner

For i=1 To 5
a$="SPH_data"+Str(i)
Debug a$

    ; Et maintenant, l'objet de mon post :
    Restore a$

Next

End
;;;
DataSection
  SPH_data1:
  Data.w 10,0,15,450,30,20
  SPH_data2:
  Data.w 25,58,74,7,7,1478
  SPH_data3:
  Data.w 15,215,47,20,17,0
  SPH_data4:
  Data.w 5,458,78,90,104,4
  SPH_data5:
  Data.w 510,70,5,410,3,77
EndDataSection

Re: Restore a$

Publié : sam. 23/juil./2022 12:01
par case
je ne comprend pas la question :?:

restore sert a revenir dans une datasection à un label pres defini. pour lire ensuite avec read le contenu des datas suivants



Syntax
Restore label

Description

Ce mot clef permet de placer un indicateur de début de zone pour la commande Read. Le label utilisé par cette commande doit être déclaré dans le bloc DataSection, car il sera déplacé lors de la création de l'exécutable.
Exemple

Code : Tout sélectionner

  Restore DonneesTexte
  Read.s MonPremierTexte$
  Read.s MonSecondTexte$
  
  Restore DonneesNumeriques
  Read.l a
  Read.l b
  
  Debug MonPremierTexte$
  Debug a
  
  End  

  DataSection
  
    DonneesNumeriques:    
      Data.l 100, 200, -250, -452, 145
      
    DonneesTexte:
      Data.s "Bonjour", "Qu'est-ce", "que ", "c'est ?"
  EndDataSection








si on reprend a peu pres ton code...

Code : Tout sélectionner

Restore a$ ;<< utiliser un label ressemblant a une variable est très confus label qu'on aurais pu nommer 'nimportequoi'
    For i=1 To 5
      	Read.b a
	a$="SPH_data "+Str(a)
	Debug a$ ; ici la variable a$ a ne  pas confondre avec a$ le label qu'on aurais pu nommer 'nimportequoi'
next

End


DataSection
  a$:   ; label a$ ou se trouvent les datas qu'on aurais pu nommer 'nimportequoi'
  Data.b 1,2,3,4,5

Re: Restore a$

Publié : sam. 23/juil./2022 13:50
par SPH

Code : Tout sélectionner

For i=1 To 5
a$="SPH_data"+Str(i)
Debug a$

    ; Et maintenant, l'objet de mon post :
    Restore a$

Next
J'essaye de restaurer l'étiquette "SPH_data"+Str(i)
Donc, j'essaye de restaurer "SPH_data1" (si i=1)

Au lieu de restaurer :
restore SPH_data1
le souhaite que a$ contienne l'etiquette "SPH_data1" (ou 2, ou 3, etc....)
====

Si tu veux, c'est comme les premiers basic sur ordi 8 bits des annees 80. On pouvait restaurer la ligne 100 (par exemple).

Re: Restore a$

Publié : sam. 23/juil./2022 19:11
par case
je ne pense pas que ce soit possible.
apres dans les ancien basics tu ne pouvais pas faire restore [variable] tu devais specifier la ligne par exemple 100
test sur amstrad
10 a=20
11 restore a
20 data 1,2,3,4,5
run
Syntax error in 11
tu peux faire ca par contre si ca peux t'aider

Code : Tout sélectionner


Procedure rest(i)
  Select i
    Case 1
      Restore sphdata1
    Case 2
      Restore sphdata2
    Case 3
      Restore sphdata3
    Case 4
      Restore sphdata4
    Case 5
      Restore sphdata5
  EndSelect
  
 EndProcedure
    For i=1 To 5
      Rest(i)
      Debug "sphdata"+Str(i)
      For rd=1 To 5
        Read.b a
        Debug a
      Next
    Next
End
DataSection
 sphdata1:
  Data.b 1,2,3,4,5
 sphdata2:
  Data.b 6,7,8,9,10
 sphdata3:
  Data.b 11,12,13,14,15
 sphdata4:
  Data.b 16,17,18,19,20
 sphdata5:
  Data.b 21,22,23,24,25

Re: Restore a$

Publié : sam. 23/juil./2022 19:14
par SPH
Ok, je ferais a peu prêt comme ça 😎

Thx