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
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
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)
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
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)
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)
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
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
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
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
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
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
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