Je pense que tout un chacun connait ce jeu de l’émission des chiffres et des lettres.
Je vais ici rappeler les règles de ce jeu.
On tire au hasard 10 lettres des 26 possibilités de l’alphabet composées de voyelles et de consonnes. Toutes ces lettres seront en majuscule.
Il n’y a aucune lettre accentuée tirée, par contre les mots acceptés peuvent en contenir.
On demande aux candidats de trouver le mot le plus long possible avec ces 10 lettres.
Fonctionnement du prg.
Le principal problème est de trouver un dictionnaire le plus complet possible.
J’ai trouvé 2 dictionnaires qui peuvent être chargés automatiquement par le prg.
Par défaut l’un de ces deux dictionnaires sera chargé automatiquement au départ.
Ceci demande quelques secondes pour l’initialisation.
Pour générer les 10 lettres vous avez 3 Options.
1) vous pouvez taper vous-même ces lettres dans le cadre chargé de les recevoir.
Si vous tapez ces lettres en minuscule le mot sera inversé.
par exemple vous tapez le mot oiseau en minuscule il sera inversé dans le cadre et apparaitra UAESIO.
Par contre si vous tapez ce même mot en majuscule les lettres seront placées dans le bon ordre
Vous pouvez placer le curseur entre les lettres et soit les supprimer avec le touche <---
soit en ajouter jusqu’au maximum autorisé.
2) Vous pouvez choisir au hasard les voyelles ou les consonnes en tapant sur la touche ‘voyelle’ ou ‘consonne’ .
(une seule lettre par touche cliquée)
3) Vous pouvez générer les 10 lettres en cliquant sur la touche ‘change tout’.
Vous pouvez effacer toute cette zone en cliquant sur la touche ‘Efface’.
Vous pouvez limiter le nombre de lettres générées en limitant ce nombre entre 4 et 10 en choisissant le nombre de caractères à tirer sous Nb Car Max.
La valeur 10 est prise par défaut.
Si vous êtes maintenant satisfait du tirage vous pouvez afficher tous les mots trouvés par ordre inverse le leur longueur en cliquant sur ‘solution’.
Vous pouvez à nouveau tirer les lettres comme il est précisé ci-dessus, Modifier le Nb de caractères max et rechercher une autre solution.
Utilisation des menu ‘Choix_dico’ et ‘Fichier’.
1) Avec Choix_dico vous pouvez choisir un dictionnaire de votre choix.
Soit dans le répertoire ou est situé le prg.
Dans ce cadre si vous désirez modifier un fichier existant, faites-en une copie avant modification.
Vous pouvez créer votre propre dictionnaire en *.TXT et le placer dans ce même répertoire.
Soit en chargeant un dictionnaire à partir du Web.
Il y a 2 options possibles :
Web ASCII est chargé au départ du PRG mais vous pouvez le recharger.
Web UTF8 si vous choisissez cette option le Dico en UTF8 sera chargé et converti en ASCII.
Dans cette option le prg réinitialise tous les éléments qu’il aura besoin ce qui demande quelques secondes d’attente.
2) Menu ‘Fichier’.
Tous les fichiers Choisis dans Choix_Dico seront sauvegardés sous le suffixe *.TXTSav.
Donc si un fichier *.txt disparait par inadvertance il peut être restauré dans cette option.
dans la mesure où la sauvegarde existe.
Vous pouvez aussi supprimer des fichiers *.TXT.
Code : Tout sélectionner
Enumeration FormWindow
#Window_1
EndEnumeration
Enumeration FormGadget
#TITRE
#NB_CAR
#VOYELLE
#EDITION_CAR
#Text_1
#CONSONNE
#CHANGE_TOUT
#SOLUTION
#SOLUT1
#NomFic
#Efface
#NBFic
EndEnumeration
Enumeration FormMenu
#FchierRep
#WEB_1
#Web_2
#Quiter
#EFFACER
#RESTAURER
EndEnumeration
Enumeration FormFont
#Font_Window_1_0
#Font_Window_1_1
#Font_Window_1_2
EndEnumeration
LoadFont(#Font_Window_1_0,"Arial", 28, #PB_Font_Bold)
LoadFont(#Font_Window_1_1,"Courier New", 40, #PB_Font_Bold)
LoadFont(#Font_Window_1_2,"Courier New", 9)
Procedure OpenWindow_1(x = 0, y = 0, width = 730, height = 800)
OpenWindow(#Window_1, x, y, width, height, "", #PB_Window_SystemMenu | #PB_Window_MinimizeGadget)
CreateMenu(0, WindowID(#Window_1))
MenuTitle("Choix_Dico")
MenuItem(#FchierRep, "Fichier TXT en répertoire")
MenuItem(#WEB_1, "Web ASCII=>LEXIQUE*.TXT")
MenuItem(#Web_2, "Web UTF8=>LISTE*.TXT")
MenuItem(#Quiter, "Quiter")
MenuTitle("Fichier")
MenuItem(#EFFACER, "Effacer *.TXT")
MenuItem(#RESTAURER, "RESTAURer *.TXT")
TextGadget(#TITRE, 40, 10, 650, 50, "L E M O T L E P L U S L O N G", #PB_Text_Center)
SetGadgetFont(#TITRE, FontID(#Font_Window_1_0))
ComboBoxGadget(#NB_CAR, 40, 100, 50, 20, #PB_ComboBox_Editable)
ButtonGadget(#VOYELLE, 190, 190, 80, 30, "Voyelle")
EditorGadget(#EDITION_CAR, 185, 60, 345, 70, #PB_Editor_WordWrap)
SetGadgetFont(#EDITION_CAR, FontID(#Font_Window_1_1))
TextGadget(#Text_1, 30, 80, 70, 20, " Nb Car Max")
ButtonGadget(#CONSONNE, 450, 190, 80, 30, "Consonne")
ButtonGadget(#CHANGE_TOUT, 300, 190, 130, 30, "Change tout")
ButtonGadget(#SOLUTION, 300, 230, 130, 30, "SOLUTION")
EditorGadget(#SOLUT1, 10, 270, 700, 490)
SetGadgetFont(#SOLUT1, FontID(#Font_Window_1_2))
TextGadget(#NomFic, 50, 150, 620, 20, "Nom du fichier utilisé :", #PB_Text_Center)
ButtonGadget(#Efface, 570, 90, 80, 30, "Efface")
TextGadget(#NBFic, 20, 240, 210, 20, "")
EndProcedure
structure mot
StructureUnion
NOMC.s{26}
Lettre.s{1}[26]
EndStructureUnion
endstructure
Structure colonne
numelem.a[11]
car.mot
EndStructure
Structure tabres
ligne.colonne[255]
EndStructure
Global FICHIER$
global Path_Map$
global NewMap moti.string()
global NewMap mot4.string()
global NewMap mot5.string()
global NewMap mot6.string()
global NewMap mot7.string()
global NewMap mot8.string()
global NewMap mot9.string()
global NewMap motx.string()
global NewMap mots.string()
global newmap motrouve.string()
global Aphabet.mot
ProcedureDLL.q _nbcycl()
!RDTSC
ProcedureReturn
EndProcedure
macro stock(_n)
if len(mot$)<12
If FindMapElement(mot#_n(),nomt\NOMC)
if FindString(mot#_n(nomt\NOMC)\s,mot$)
else
mot#_n(nomt\NOMC)\s=mot#_n()\s+"/"+mot$
endif
Else
mot#_n(nomt\NOMC)\s=nomt\NOMC+"/"+mot$
endif
endif
endmacro
Macro _q_t
"
EndMacro
macro TestMap(__n)
a$=_q_t#__n#_q_t
ficMap$=Path_Map$+"Mot_"+a$+".txt"
if filesize(FicMap$)<0
resulta *0
Else
resulta *1
endif
endmacro
Macro Ecrire(__n)
a$=_q_t#__n#_q_t
if filesize(Path_Map$)=-1
if CreateDirectory(Path_Map$)
Else
MessageRequester("Information","Impossible de créer le répertoire Mapx.txt!"+#LF$+ Path_Map$)
endif
endif
ficMap$=Path_Map$+"Mot_"+a$+".txt"
if filesize(FicMap$)=>0
RenameFile(ficMap$,ficMap$+"sav")
endif
If CreateFile(__n, ficMap$) ; crée un nouveau fichier texte ou recrée une fichier texte vide s'il existe déjà ...
ResetMap(mot#__n())
While NextMapElement(mot#__n())
WriteStringN(__n, mot#__n()\s)
Wend
CloseFile(__n) ; ferme le fichier précédemment ouvert et enregistre les données
Else
MessageRequester("Information","Impossible de créer le fichier Mapx.txt!"+#LF$+ ficMap$)
EndIf
endmacro
procedure creation_Fichier(fichierm$)
nom_fichier$=GetCurrentDirectory()+"_Nom_Fichier_"
if createfile(5,nom_fichier$)
WriteString(5,Fichierm$+chr(10),#PB_Ascii )
CloseFile(5)
else
MessageRequester("Information","Impossible de creer le fichier ASCII"+#LF$+ FichierM$)
endif
endprocedure
procedure Lecture_Nom_Fichier_()
nom_fichier$=GetCurrentDirectory()+"_Nom_Fichier_"
if filesize(nom_fichier$)>0
if readfile(5,nom_fichier$) ;;; fichier avec un seul enregistrement donc pas de boucle
FICHIER$=ReadString(5)
CloseFile(5) ; Ferme le fichier précédemment créé ou ouvert
Else
MessageRequester("Information","Impossible d'ouvrir le fichier!=_Nom_Fichier_")
EndIf
Else
fichier$=""
endif
endprocedure
;;;;****************** initialisation générale pour les cas ou les fichiers ne seraient pas créés ********
procedure INIT_GEN(val);; val pour une éventuelle utilisation avec thread
EnableExplicit
protected result, resulta,resultb,resultc, mot$,i,lmot,ii,a$,x,s,init_dic$,FichierParDefaut$,Filtre$
protected filtre,prgpb$,Compilateur,Sortie$,code_ret,prgexec$,exec_dico
protected Path_Fic$,file$,files$,ficMap$,jjj
define Nomt.mot
define Nom.mot
dim tabnom.s(25)
lecture_Nom_fichier_()
ClearMap(motrouve())
Clearmap( moti.string())
Clearmap( mot4.string())
Clearmap( mot5.string())
Clearmap( mot6.string())
Clearmap( mot7.string())
Clearmap( mot8.string())
Clearmap( mot9.string())
Clearmap( motx.string())
Clearmap( mots.string())
if FileSize(Fichier$) <0
if fichier$=""
Fichier$ = getCurrentDirectory()+"LEXIQUE_MOTS_FR2.TXT"
creation_fichier(fichier$)
endif
InitNetwork()
result=ReceiveHTTPFile("http://www.lexique.org/listes/liste_mots.txt",fichier$)
Else
if CopyFile(fichier$, fichier$+"sav")
result=1
Else
result=0
MessageRequester("Information","Impossible de créer le fichier!"+#LF$+ fichier$+"sav")
endif
endif
Path_Fic$=GetPathPart(FICHIER$)
if path_fic$=""
files$=GetFilePart(FICHIER$,#PB_FileSystem_NoExtension)
else
files$=GetFilePart(FICHIER$,#PB_FileSystem_NoExtension)+"\"
endif
file$=GetFilePart(FICHIER$)
path_map$=Path_Fic$+files$
SetGadgetText(#NomFic,"FICHIER UTILISE : "+fichier$)
;;; Test de la présence des fichiers MAP*.txt
resulta=1
for jjj=1 to 10
select jjj
case 1 to 3
TestMap(i)
case 4
testMap(4)
case 5
testMap(5)
case 6
testMap(6)
case 7
testMap(7)
case 8
testMap(8)
case 9
testMap(9)
case 10
TestMAp(x)
Default
TestMap(s)
endselect
next
if result and not resulta
If ReadFile(0, fichier$, #PB_Ascii ) ; Si le fichier peut être lu , on continue...
While Eof(0) = 0 ; Boucle tant que la fin du fichier n'est pas atteinte. (Eof = 'End Of File')
MOT$=StringField(ReadString(0),1,chr(09))
if FindString(Mot$," ") =0 ;;;or FindString(Mot$,chr(9))=0
nom\NOMC=Ucase(MOT$)
for i=0 to len(nom\NOMC)-1
select peeka(ascii(nom\lettre[i]))
case 32 to 63
nom\lettre[i]=""
case 192 to 197
nom\lettre[i]="A"
case 199
nom\lettre[i]="C"
case 200 to 203
nom\lettre[i]="E"
case 204 to 207
nom\lettre[i]="I"
case 210 to 214
nom\lettre[i]="O"
case 217 to 220
nom\lettre[i]="U"
case 255,221,253
nom\lettre[i]="Y"
endselect
tabnom(i)=nom\Lettre[i]
next
SortArray(tabnom(),#PB_Sort_Ascending,0,len(nom\NOMC)-1 )
nomt\NOMC=""
for i=0 to len(nom\NOMC)-1
nomt\Lettre[i]=tabnom(i)
next
lmot=len(mot$)
select lmot
case 1 to 3
stock(i)
case 4
stock(4)
case 5
stock(5)
case 6
stock(6)
case 7
stock(7)
case 8
stock(8)
case 9
stock(9)
case 10
stock(x)
case 11 to 22
stock(s)
endselect
Else
endif
Wend
CloseFile(0); Ferme le fichier précédemment ouvert
;;;; ******************** remettre l'initialisation dictionnaire à 0
; SetGadgetState(#Init_Dic,#PB_CheckBox_Unchecked)
; flag_dic=0
;;;;********************* sauve les map sur des fichiers **************************
for ii=3 to 11
select ii
case 3
i=3
ecrire (i)
case 4
ecrire(4)
case 5
ecrire(5)
case 6
ecrire(6)
case 7
ecrire(7)
case 8
ecrire(8)
case 9
ecrire(9)
case 10
x=ii
ecrire(x)
case 11 to 22
s=ii
ecrire(s)
endselect
Next
Else
MessageRequester("Information","Impossible d'ouvrir le fichier!")
EndIf
endif
DisableExplicit
creation_Fichier(Fichier$)
endprocedure
;****************** Moteur du mot le plus long *************************
Macro Lire(__n)
a$=_q_t#__n#_q_t
ficMap$=Path_Map$+"Mot_"+a$+".txt"
If ReadFile(__n, ficMap$,#PB_File_SharedRead ) ; Si le fichier peut être lu , on continue...
While Eof(__n) = 0
MOT$=ReadString(__n)
pos=__n
if __n<4 or __n>9
pos = FindString(mot$, "/")-1
endif
clef$=left(mot$,pos)
mot#__n(clef$)\s=mot$
Wend
CloseFile(__n) ; ferme le fichier précédemment ouvert et enregistre les données
Else
MessageRequester("Information","Impossible de Lire le fichier!"+#LF$+ FicMap$)
EndIf
endmacro
procedure AlphabetVoyelleConsonne(val);; val pour une éventuelle utilisation avec thread
EnableExplicit
protected VOYELLE.mot,CONSONNE.mot,i,c$
for i=0 to 25
c$= chr(65+i)
select c$
case "A","E","I","O","U","Y"
voyelle\NOMC+c$
Default
consonne\NOMC+c$
endselect
next
Aphabet.mot\NOMC=voyelle\NOMC+consonne\NOMC
DisableExplicit
endprocedure
;;;***************************************************
procedure chargementMap(val);; val pour une éventuelle utilisation avec thread
EnableExplicit
protected ii,i,x,s,a$,fichier$,mot$,pos,clef$,FicMap$
AlphabetVoyelleConsonne(0)
for ii=3 to 11
select ii
case 3
i=3
Lire (i)
case 4
Lire(4)
case 5
Lire(5)
case 6
Lire(6)
case 7
Lire(7)
case 8
Lire(8)
case 9
Lire(9)
case 10
x=ii
Lire(x)
case 11 to 22
s=ii
Lire(s)
endselect
Next
DisableExplicit
endprocedure
;************************ les deux Procédure de degroupement **********************************
EnableExplicit
Declare comb_exp0(N,gr,ind)
Procedure Comb_exp(N,GR,chaine$)
EnableExplicit
Global clef.mot\NOMC=chaine$
Global RES.tabres
define res0.tabres
copymemory(res0,res,SizeOf(tabres))
res\ligne[0]\numelem[0]=1
Global Dim tab(N)
comb_exp0(N,Gr,1);
DisableExplicit
EndProcedure
Procedure comb_exp0(N,gr,ind);;;,Array tab(1))
EnableExplicit
protected i,j,lig
global GP0
If ind=1
gp0=gr
EndIf
If gr<>0
For i=tab(ind-1)+1 To N
tab(ind)=i
comb_exp0(N,gr-1,ind+1)
Next
Else
lig=res\ligne[0]\numelem[0]
For j=1 To GP0
res\ligne[lig]\car\Lettre[j-1] = clef\Lettre[tab(j)-1]
Next
res\ligne[0]\numelem[0]+1
EndIf
DisableExplicit
EndProcedure
DisableExplicit
;;;******************** Procédure de tri par lettre ***********************************
procedure.s trilettre(entree$)
EnableExplicit
protected entree.mot,i,sortiet.mot
Entree.mot\NOMC=entree$
dim tabnom.s(25)
for i=0 to len(Entree\NOMC)-1
tabnom(i)=Entree\Lettre[i]
next
SortArray(tabnom(),#PB_Sort_Ascending,0,len(Entree\NOMC)-1 )
define Sortiet.mot\NOMC=""
for i=0 to len(Entree\NOMC)-1
Sortiet\Lettre[i]=tabnom(i)
next
ProcedureReturn Sortiet\NOMC
DisableExplicit
endprocedure
macro edite(__n)
sort$=""
a$=_q_t#__n#_q_t
; fichier$="Mot_"+a$+".txt"
b$=a$
select a$
case "x"
nbcar=10
b$=">10"
case "i"
nbcar=3
b$="<4"
case "s"
nbcar= 11
b$=">10"
Default
nbcar=val(a$)
endselect
if nbli=1
titre$="Mot(s) de " +b$+ " lettres="+chr(10)
mot_de_x_lettre$=""
lmin=len(mot_de_x_lettre$)
endif
; res$=mot4(res\ligne[nbli]\car\NOMC)\s
res$=mot#__n (res\ligne[nbli]\car\NOMC)\s
if res$<>"" and motrouve(res$)\s=""
mot_de_x_lettre$ + right(res$,len(res$)-nbcar);+"/"
; if len(mot_de_x_lettre$)%100>90
; mot_de_x_lettre$+chr(10)
; endif
lmot=len(mot_de_x_lettre$)
motrouve(res$)\s=res$
endif
if nbli=nblign and lmot>lmin
sort$=mot_de_x_lettre$
lsort=len(sort$)
nbslash = CountString(sort$, "/")
; nbcount=96/(nbcar+1)
nbcount=96/(nbcar+1)
nbocc=nbslash/nbcount
for o=1 to nbocc
pos=1+((nbcar+1)*nbcount*o)
; ReplaceString(bbb$,"/",chr(10), #PB_String_InPlace,pos,1)
ReplaceString(sort$,"/",chr(10), #PB_String_InPlace,pos,1)
next
d$=ReplaceString(sort$,chr(10),chr(10)+"/")
nbmot=countstring(d$,"/")
nbmottotal+ nbmot
ltitre=len(str(nbmot)+" "+titre$)
sort$=str(nbmot)+" "+titre$+d$
if len(sort$)>ltitre+3
setgadgettext(#SOLUT1,getgadgettext(#SOLUT1)+sort$+chr(10)+chr(10))
endif
endif
endmacro
;;;;************ simulation du tirage des letrres ****************
procedure TIRAGEALEA()
EnableExplicit
global cartret.mot\NOMC=""
global cartire.mot\NOMC=""
protected nbvoyt=0, nb_atirer, t,rnd
nb_atirer=val(GetGadgetText(#NB_CAR))
for t=1 to nb_atirer
rnd=random(len(Aphabet\NOMC)-1,0)
if rnd<6
nbvoyt+1
endif
if t=nb_atirer and nbvoyt=0
cartire.mot\NOMC+Aphabet\Lettre[random(5,0)]
nbvoyt+1
else
cartire.mot\NOMC+Aphabet\Lettre[rnd]
endif
Next
SetGadgetText(#EDITION_CAR,cartire\NOMC)
DisableExplicit
endprocedure
procedure edition_car()
EnableExplicit
static fin.q,deb.q,fin2.q
protected carm.mot\NOMC= getGadgetText(#EDITION_CAR), car.mot,i,ascii,lcar
car.mot\NOMC=ucase(carm\NOMC)
lcar=len(car.mot\NOMC)
if lcar > val(getgadgettext(#NB_CAR))
setgadgettext(#EDITION_CAR,left(getgadgettext(#EDITION_CAR),val(getgadgettext(#NB_CAR))))
endif
for i=0 to lcar-1
ascii=peeka(ascii(car\lettre[i]))
select ascii
case 192 to 197
car\lettre[i]="A"
case 199
car\lettre[i]="C"
case 200 to 203
car\lettre[i]="E"
case 204 to 207
car\lettre[i]="I"
case 210 to 214
car\lettre[i]="O"
case 217 to 220
car\lettre[i]="U"
case 255,221,253
car\lettre[i]="Y"
case 65 to 90
Default
car\NOMC = ReplaceString(car\NOMC, car\Lettre[i], "" )
endselect
next
if car\NOMC<>carm\NOMC
car\NOMC=ucase(car\NOMC)
setgadgettext(#EDITION_CAR,car\NOMC)
endif
cartire.mot\NOMC=car\NOMC
DisableExplicit
endprocedure
procedure voyelle()
EnableExplicit
protected rnd,tirevoy$,nb_car
rnd=random(5,0)
tirevoy$=Aphabet\Lettre[rnd]
nb_car=val(getgadgettext(#NB_CAR))
setgadgettext(#EDITION_CAR,left(getgadgettext(#EDITION_CAR)+tirevoy$,nb_car))
DisableExplicit
endprocedure
procedure consonne()
EnableExplicit
protected rnd,tirecon$,nb_car
rnd=random(25,6)
tirecon$=Aphabet\Lettre[rnd]
nb_car=val(getgadgettext(#NB_CAR))
setgadgettext(#EDITION_CAR,left(getgadgettext(#EDITION_CAR)+tirecon$,nb_car))
DisableExplicit
endprocedure
procedure Efface_Car()
setgadgettext(#EDITION_CAR,"")
endprocedure
procedure solution()
EnableExplicit
protected gredt,jj,group,nblign,lnomc,nbli,sort$,a$,b$,nbcar,titre$,mot_de_x_lettre$,lmin,res$,lmot,lsort
protected nbslash, nbcount,nbocc,o,pos,d$,nbmot,ltitre,nbmottotal
;;;; exploitation des différents regroupement ************************
;;; ******* Il faut trier les lettres avant de faire la recherche
edition_car()
cartret.mot\NOMC=trilettre(cartire.mot\NOMC)
lnomc=len(cartret.mot\NOMC)
if lnomc>10
; MessageRequester("Mot <10lettres ", "limité à 10 lettres"+chr(10)+cartret.mot\NOMC)
lnomc=10
cartret.mot\NOMC=left(cartret.mot\NOMC,10)
endif
ClearMap(motrouve())
setgadgettext(#SOLUT1,"")
nbmottotal=0
for group=lnomc to 4 step -1
Comb_exp(lnomc,group,cartret.mot\NOMC)
nblign=res\ligne[0]\numelem[0]-1
for nbli=1 to nblign
;;;;******************* Cherche *******************
select group;;;;EEQRSTUU
case 10
edite(x)
case 9
edite(9)
case 8
edite(8)
case 7
edite(7)
case 6
edite(6)
case 5
edite(5)
case 4
edite(4)
endselect
next
next
SetGadgetText(#NBFic,"Nb de Mots trouvés : "+str(nbmottotal))
DisableExplicit
endprocedure
procedure Choix_Rep()
EnableExplicit
protected FichierParDefaut$,filtre$,filtre,FichierM$
FichierParDefaut$ = getCurrentDirectory()+"LEXIQUE_MOTS_FR2.TXT" ; Répertoire et fichier par défaut qui seront affichés
Filtre$ = "Fichiers Textes|*.txt"
Filtre = 0 ; utiliser par défaut le premier des trois filtres possibles
FichierM$ = OpenFileRequester("Choisissez un fichier à charger", FichierParDefaut$, Filtre$, Filtre)
creation_fichier(FichierM$)
INIT_GEN(0)
chargementMap(0)
DisableExplicit
endprocedure
procedure choix_ASCII()
EnableExplicit
protected FichierM$
FichierM$=getCurrentDirectory()+"LEXIQUE_MOTS_FR2.TXT"
InitNetwork()
; result=ReceiveHTTPFile("http://www.pallier.org/extra/liste.de.mots.francais.frgut.txt",FichierM$)
if ReceiveHTTPFile("http://www.lexique.org/listes/liste_mots.txt",FichierM$)
if CopyFile(FichierM$, FichierM$+"sav")
Else
MessageRequester("Information","Impossible de copier le fichier!"+#LF$+ FichierM$+"sav")
endif
else
MessageRequester("Information","Impossible de recevoir le fichier!"+#LF$+ FichierM$)
endif
creation_fichier(FichierM$)
INIT_GEN(0)
chargementMap(0)
DisableExplicit
endprocedure
procedure choix_UTF8()
EnableExplicit
protected fichierUTF8$,mot$,FichierM$
fichierUTF8$=getCurrentDirectory()+"LISTE_MOTS_FRANCAIS_UTF8.TXT"
FichierM$=getCurrentDirectory()+"LISTE_MOTS_FRANCAIS_ASCII.TXT"
InitNetwork()
if ReceiveHTTPFile("http://www.pallier.org/extra/liste.de.mots.francais.frgut.txt",fichierUTF8$)
; result=ReceiveHTTPFile("http://www.lexique.org/listes/liste_mots.txt",FichierM$)
if CopyFile(fichierUTF8$, fichierUTF8$+"sav")
If ReadFile(10, fichierUTF8$, #PB_UTF8 ) ; Si le fichier peut être lu , on continue...
if CreateFile(100, FichierM$, #PB_Ascii )
While Eof(10) = 0 ; Boucle tant que la fin du fichier n'est pas atteinte. (Eof = 'End Of File')
MOT$=ReadString(10)
WriteStringN(100, mot$)
Wend
Else
MessageRequester("Information","Impossible de creer le fichier ASCII"+#LF$+ FichierM$)
endif
CloseFile(100)
if CopyFile(FichierM$, FichierM$+"sav")
Else
MessageRequester("Information","Impossible de copier le fichier!"+#LF$+ FichierM$+"sav")
endif
Else
MessageRequester("Information","Impossible de lire le fichier UTF8"+#LF$+ fichierUTF8$)
endif
Else
MessageRequester("Information","Impossible de copier le fichier!"+#LF$+ fichierUTF8$+"sav")
endif
Else
MessageRequester("Information","Impossible de recevoir le fichier "+#LF$+ fichierUTF8$)
endif
creation_fichier(FichierM$)
INIT_GEN(0)
chargementMap(0)
DisableExplicit
endprocedure
procedure RESTAURER()
EnableExplicit
protected FichierParDefaut$,filtre$,filtre,FichierR$,pos,FICH$
FichierParDefaut$ = getCurrentDirectory()+"LEXIQUE_MOTS_FR2.TXTsav" ; Répertoire et fichier par défaut qui seront affichés
Filtre$ = "Fichiers Textes|*.txtsav"
Filtre = 0 ; utiliser par défaut le premier des trois filtres possibles
FichierR$ = OpenFileRequester("Choisissez un fichier à RESTAURer", FichierParDefaut$, Filtre$, Filtre, #PB_Requester_MultiSelection)
While FichierR$
pos=FindString(FichierR$,".txt",1,#PB_String_NoCase)
FICH$=left(Fichierr$,pos)+"TXT"
if CopyFile(FichierR$,FICH$)
Else
MessageRequester("Information","Impossible de RESTAURer le fichier!"+#LF$+ fichier$+"sav")
endif
FichierR$ = NextSelectedFileName()
Wend
DisableExplicit
endprocedure
procedure EFFACER()
EnableExplicit
protected FichierParDefaut$,filtre$,filtre, FichierM$
FichierParDefaut$ = getCurrentDirectory()+"LEXIQUE_MOTS_FR2.TXT" ; Répertoire et fichier par défaut qui seront affichés
Filtre$ = "Fichiers Textes|*.txt"
Filtre = 0 ; utiliser par défaut le premier des trois filtres possibles
FichierM$ = OpenFileRequester("Choisissez un fichier à EFFACER", FichierParDefaut$, Filtre$, Filtre)
DeleteFile(FichierM$ , #PB_FileSystem_Force)
DisableExplicit
endprocedure
Procedure QuitHandler()
End
EndProcedure
OpenWindow_1()
for i=4 to 10
AddGadgetItem(#NB_CAR,0,str(i) )
next
SetGadgetText(#NB_CAR,"10")
Lecture_Nom_Fichier_()
INIT_GEN(0)
chargementmap(0)
BindMenuEvent(0,#RESTAURER, @RESTAURER())
BindMenuEvent(0,#EFFACER, @EFFACER())
BindMenuEvent(0,#FchierRep, @Choix_Rep())
BindMenuEvent(0,#WEB_1, @Choix_ASCII())
BindMenuEvent(0,#WEB_2, @Choix_UTF8())
BindMenuEvent(0,#QUITER, @QuitHandler())
BindgadgetEvent(#Efface,@Efface_Car())
BindgadgetEvent(#CONSONNE,@consonne())
BindgadgetEvent(#VOYELLE,@voyelle())
BindgadgetEvent(#EDITION_CAR,@edition_car())
BindgadgetEvent(#SOLUTION,@Solution())
BindgadgetEvent(#CHANGE_TOUT,@TIRAGEALEA())
Repeat
Until WaitWindowEvent(#Window_1) = #PB_Event_CloseWindow
A+