Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Enregistrements de l'application (ter)...

2 réponses
Avatar
elnabo
Me voil? de retour avec mon bl?me fileIO. Je ne sais tjs pas comment r?cup?rer
mes donn?es sauvegard?es, est-ce que le script qui suit est correct? Dois-je
faire deux boutons, un pour sauver, l'autre pour r?cup?rer les donn?es et
partager mon script en deux parties? Pour l'instant j'ai ce script...

on mouseup me
--intialisation des 2 instances d'xtras
--filextra4 : gestion des fichiers
fx=xtra("filextra4").new()
--fileio : lecture/ecriture de fichiers texte
f=xtra("fileio").new()
--recuperation du texte du membre
txt=member("App1-RC1-T1").text
txt=member("App2-RC1-T1").text
txt=member("App3-RC1-T1").text
txt=member("App4-RC1-T1").text
txt=member("App5-RC1-T1").text
txt=member("App6-RC1-T1").text
txt=member("App7-RC1-T1").text
txt=member("App8-RC1-T1").text
txt=member("App9-RC1-T1").text
txt=member("App10-RC1-T1").text
txt=member("App11-RC1-T1").text
txt=member("App12-RC1-T1").text
txt=member("App13-RC1-T1").text
txt=member("App14-RC1-T1").text
txt=member("App15-RC1-T1").text
txt=member("App16-RC1-T1").text
txt=member("App17-RC1-T1").text
txt=member("App18-RC1-T1").text
txt=member("App19-RC1-T1").text
if txt="" then
--aucun texte, pas de sauvegarde
alert "Pas de texte"
return
end if
--ouverture d'une boite de dialogue de sauvegarde
chemin=fx.fx_FileSaveAsDialog("c:\","sauv.txt","Enregistrer",TRUE)
if chemin="" then
--le chemin est vide, l'utilisateur a cliqu? sur annuler
alert "Sauvegarde annul?e"
return
end if
--v?rification que le chemin se termine bien par l'extension
ln=chemin.length
if chemin.char[ln-3..ln]<>".txt" then
chemin=chemin&".txt"
end if
--test d'existence pr?alable du fichier
if fx.fx_FileExists("C:\BATEC\Application OPB\Save\sauv.txt") then
--le fichier exite d?j?, il faut le supprimer avant de le recr?er
if not(fx.fx_FileDelete("C:\BATEC\Application OPB\Save\sauv.txt")) then
--erreur, impossible de supprimer l'ancien fichier
alert "Impossible de supprimer le fichier existant"&RETURN&RETURN&"Sauvegarde
annul?e"
return
end if
end if
--cr?ation d'un nouveau fichier
f.createfile("C:\BATEC\Application OPB\Save\sauv.txt")
if f.status()<>0 then
--erreur de cr?ation
alert "Impossible de cr?er le fichier de sauvegarde"&RETURN&RETURN&"Sauvegarde
annul?e"
return
end if
--ouverture du fichier en ?criture (2)
f.openfile(chemin,2)
if f.status()<>0 then
--erreur d'ouverture
alert "Impossible d'ouvrir le fichier de sauvegarde"&RETURN&RETURN&"Sauvegarde
annul?e"
return
end if
--?criture du texte dans le fichier
f.writestring(txt)
if f.status()<>0 then
--erreur d'?criture
alert "Impossible d'?crire dans le fichier de
sauvegarde"&RETURN&RETURN&"Sauvegarde annul?e"
return
end if
--ouvertrue de fichier, 1 pour lecture
openfile("C:\BATEC\Application OPB\Save\sauv.txt",1)
--lecture des donn?es et entr?es dans le champs texte
member("App1-RC1-T1").text=readfile()
member("App2-RC1-T1").text=readfile()
member("App3-RC1-T1").text=readfile()
member("App4-RC1-T1").text=readfile()
member("App5-RC1-T1").text=readfile()
member("App6-RC1-T1").text=readfile()
member("App7-RC1-T1").text=readfile()
member("App8-RC1-T1").text=readfile()
member("App9-RC1-T1").text=readfile()
member("App10-RC1-T1").text=readfile()
member("App11-RC1-T1").text=readfile()
member("App12-RC1-T1").text=readfile()
member("App13-RC1-T1").text=readfile()
member("App14-RC1-T1").text=readfile()
member("App15-RC1-T1").text=readfile()
member("App16-RC1-T1").text=readfile()
member("App17-RC1-T1").text=readfile()
member("App18-RC1-T1").text=readfile()
member("App19-RC1-T1").text=readfile()
--fermeture du fichier
f.closefile()
--destruction des instances
f=VOID
fx=VOID
end

2 réponses

Avatar
Vincent BLOCQUAUX
Essaye ceci :

on mouseup me
--intialisation des 2 instances d'xtras
--filextra4 : gestion des fichiers
fx=xtra("filextra4").new()
f = new(Xtra "fileIo")
--fileio : lecture/ecriture de fichiers texte
--recuperation du texte du membre
txt=member("App1-RC1-T1").text
txt=member("App2-RC1-T1").text
txt=member("App3-RC1-T1").text
txt=member("App4-RC1-T1").text
txt=member("App5-RC1-T1").text
txt=member("App6-RC1-T1").text
txt=member("App7-RC1-T1").text
txt=member("App8-RC1-T1").text
txt=member("App9-RC1-T1").text
txt=member("App10-RC1-T1").text
txt=member("App11-RC1-T1").text
txt=member("App12-RC1-T1").text
txt=member("App13-RC1-T1").text
txt=member("App14-RC1-T1").text
txt=member("App15-RC1-T1").text
txt=member("App16-RC1-T1").text
txt=member("App17-RC1-T1").text
txt=member("App18-RC1-T1").text
txt=member("App19-RC1-T1").text
if txt="" then
--aucun texte, pas de sauvegarde
alert "Pas de texte"
return
end if
chemin=fx.fx_FileSaveAsDialog("c:","sauv.txt","Enregistrer",TRUE)

-- créer/effacer le fichier précédent
openFile(f, chemin,0)
delete(f)
createFile(f, chemin)
openFile(f, chemin,0)
writeString(f, txt)
closeFile(f)


chemin = "C:BATECApplication OPBSavesauv.txt"
openFile(f, chemin,1)
contenu = readFile(f)
closeFile(f)
--lecture des donn?es et entr?es dans le champs texte
member("App1-RC1-T1").text=contenu
member("App2-RC1-T1").text=contenu
member("App3-RC1-T1").text=contenu
member("App4-RC1-T1").text=contenu
member("App5-RC1-T1").text=contenu
member("App6-RC1-T1").text=contenu
member("App7-RC1-T1").text=contenu
member("App8-RC1-T1").text=contenu
member("App9-RC1-T1").text=contenu
member("App10-RC1-T1").text=contenu
member("App11-RC1-T1").text=contenu
member("App12-RC1-T1").text=contenu
member("App13-RC1-T1").text=contenu
member("App14-RC1-T1").text=contenu
member("App15-RC1-T1").text=contenu
member("App16-RC1-T1").text=contenu
member("App17-RC1-T1").text=contenu
member("App18-RC1-T1").text=contenu
member("App19-RC1-T1").text=contenu



--destruction des instances
f=VOID
fx=VOID
end
Avatar
Bubar
A priori, tu débutes en prog ? Ce n'est pas méchant il faut bien commencer
un jour.
Si c'est le cas, je ne saurais trop te conseiller de prendre des bouquins de
base là-dessus, car ce qui suit est de niveau débutant.

Me voil? de retour avec mon bl?me fileIO. Je ne sais tjs pas comment
r?cup?rer mes donn?es sauvegard?es, est-ce que le script qui suit est
correct? Dois-je faire deux boutons, un pour sauver, l'autre pour
r?cup?rer les donn?es et partager mon script en deux parties? Pour
l'instant j'ai ce script...


Une fonction = une action
Donc il n'est pas possible de faire en une fonction, deux choses
diamétralement opposées (sauver et charger). Il te faut donc deux fonctions

on mouseup me
--intialisation des 2 instances d'xtras
--filextra4 : gestion des fichiers
fx=xtra("filextra4").new()
--fileio : lecture/ecriture de fichiers texte
f=xtra("fileio").new()
--recuperation du texte du membre



txt=member("App1-RC1-T1").text
txt=member("App2-RC1-T1").text
txt=member("App3-RC1-T1").text


SNIP des autres lignes.

Essaye de réflechir à ce qui se passe dans toutes ces lignes.
Tu mets dans txt, le contenu d'un champ.
Puis tu _remplaces_ le contenu de txt par le contenu d'un autre champ. Au
final, txt ne contient que le dernier champ.
Il vaudrait mieux _ajouter_ le contenu de chaque champ à la suite
txt=member("App1-RC1-T1").text -- 1ere ligne
txt=txt&member("App2-RC1-T1").text --toutes les autres lignes sur ce
principe.

Ensuite imaginons que tu ais 5000 champs, tu vas écrire chaque ligne l'une
après l'autre ?
Dans ce genre de situation, une boucle est ce qu'il y a de mieux. Pour faire
une boucle facilement, il convient de bien penser son appli. Ici tout va
bien, car le nom de tes champs est numériquement chronologique.
txt=""
repeat with i=1 to le_nombre_de_champ
txt=txt&member("App"&i&"-TC1-T1").text
end repeat

Ensuite, un problème de récupération des données.
Ex :
champ 1 : "bonjour"
champ 2 : 'le monde"

champ 1 & champ 2 : 'bonjourle monde"
Pour récupérer les textes de chaque champ, ça va être très dur. Comment sait
tu où fini un champ et où commence l'autre ? Pour pouvoir différencier les
champs, il faut que tu l'indiques. Généralement on utilise un caractère (ou
une suite de caractère) dont tu es _SUR_ qu'il ne se trouvera jamais dans le
texte d'un champ. Exemple "µ" ou "µ*µ" ou n'importe quoi. Si tu peux
utiliser un seul caractère, c'est plus pratique pour la suite
Ainsi champ 1 & champ 2 : bonjourµle monde

Maintenant tu peux différencier les champs. Pour cela, il suffit de modifier
le code de la boucle
txt=""
repeat with i=1 to le_nombre_de_champ
txt=txt&member("App"&i&"-TC1-T1").text&"µ"
end repeat

Attention, avec cette boucle tu te retrouves avec un "µ" après le dernier
texte. C'est important pour la suite

Tu peux ensuite sauver ce texte avec le code que je t'avais fourni.

Pour récupérer les textes, il faut procéder à l'envers
on startmovie
-- création des intances d'xtras
fx=xtra("filextra4").new()
f=xtra("fileio").new()
-- ouvrir le fichier en lecture
if not(fx.fx_fileexist(chemin_vers_ton_fichier)) then
alert "Pas de sauvegarde"
return
end if
f.openfile(chemin_vers_ton_fichier,0)
if f.status() then
alert "Erreur d'ouverture'
return
end if
-- lire le contenu
txt=f.readfile()
-- ferme le fichier
f.closefile()
--remplir les champs avec le contenu du texte
the itemdelimiter="µ" -- le caractère choisi
nb=txt.item.count
repeat with i=1 to nb-1 -- -1 car le texte se termine par un µ
member("App"&i&"-TC1-T1").text=txt.item[i]
end repeat
end

--
Bubar
Freelance Multimédia - internet
Création de logiciels multimédia et sites web
http://www.wapitistudio.com