Nono 2017

Programmation d'applications complexes
Avatar de l’utilisateur
Zorro
Messages : 2185
Inscription : mar. 31/mai/2016 9:06

Nono 2017

Message par Zorro »

pour les plus anciens, vous vous souvenez de mon Nono (synthese vocal commencé en DarkBasic il portait le nom de "Spo256" avant)

ben le revoila converti pour Purebasic 5.60 Unicode :)
c'est la version DLL :
a telecharger ici : http://michel.dobro.free.fr/STLINE/down ... -2017-dll/

voici le code de demo :

Code : Tout sélectionner



; voici comment appeller Nono en temps que DLL
; on import la lib

Import "nono.lib"
		nono(phrase.s,panoramique,Frequence,vitesse,tete)   
Endimport

; phrase.s=la phrase a dire
; panoramique= de O a 255 (gauche a droite)
; frequence = de 1 a 50 (11 est la frequence normale)
; vitesse = vitesse de diction  de 1 a 50


	Frequence=11; (de 8 a 22  , la frequence normal est 11)
	vitesse=120
	tete= 1 ; affiche =1 ou pas =0 la tete a Nono

	nono ("Bonjour,, comment vas tu ?",100,Frequence,vitesse,tete)
	; 
	 nono ("Je me présente, je m'appelle Nono ",100,Frequence,vitesse,tete)
	 Frequence=13
	 nono ("je peux dire plein de trucs , pour vos programmes , je suis plutot facile,  a programmer ",100,Frequence,vitesse,tete)
	 Frequence=13 :vitesse=80
	 nono ("Zorro , viens de me passer, en Purebasic Version, ,5 point soixante ",100,Frequence,vitesse,tete)
	; 
	 Frequence=13 :vitesse=90 :tete=1
	 nono ("on peut voir ma tête . comme maintenant ",100,Frequence,vitesse,tete)
	; 
	Frequence=13 :vitesse=100 :tete=0
	 nono ("ou la faire disparaitre . comme maintenant ",100,Frequence,vitesse,tete)
	; 
	 Frequence=11 :vitesse=150 :tete=1
	 nono ("je peux parler vite ",100,Frequence,vitesse,tete)
	; 
	 Frequence=11 :vitesse=20 :tete=1
	 nono ("ou bien lentement ",100,Frequence,vitesse,tete)
	; 
	 Frequence=9 :vitesse=150 :tete=1
	 nono ("je peux avoir une voie Grave",100,Frequence,vitesse,tete)
	; 
 Frequence=18 :vitesse=30 :tete=1
	 nono ("ou bien une voie aigue",100,Frequence,vitesse,tete)
	; 
	 Frequence=10 :vitesse=130 :tete=0
	 nono ("amusez vous bien .",100,Frequence,vitesse,tete)
	

; Epb
Image Image
Dernière modification par Zorro le dim. 22/oct./2017 17:50, modifié 2 fois.
Image
Image
Site: http://michel.dobro.free.fr/
Devise :"dis moi ce dont tu as besoin, je t'expliquerai comment t'en passer"
Avatar de l’utilisateur
Zorro
Messages : 2185
Inscription : mar. 31/mai/2016 9:06

Re: Nono 2017

Message par Zorro »

et voici un petit editeur spécialement créé pour Nono :)
mettre la Dll au meme endroit que le Prg sinon l'editeur ne detectera pas Nono :)

avec cette editeur vous pouvez tester Nono en lui ecrivant des trucs a dire

si vous trouvezz par exemple qu'il ne dis pas bien une lettre par exemple "on Vera"
si vous voulez faire ressortir le "RRA" , il suffit d'ecrire plusieurs fois la lettre :)
donc "on verrrrra" :)

ps: Nono met un certain temps a se mettre en route, patientez un peut (surtout en mode Debugger ON ) apres avoir cliqué sur le bouton "Lire"

Code : Tout sélectionner


;***********************************************
;Titre  :*editeur_nono
;Auteur  : Zorro
;Date  :19/10/2017
;Heure  :14:39:47
;Version Purebasic :  PureBasic 5.60 (Windows - x86)
;Version de l'editeur :EPB V2.68
; Libairies necessaire : Aucune 
;***********************************************




; v pb 4.10
; cet éditeur permet de tester la Dll de Nono
; il permet aussi de coder/décoder un message
; et aussi de cacher un message dans une image BMP

;- Window Constants
;
Import "nono.lib"
		nono(phrase.s,panoramique,Frequence,vitesse,tete)   
Endimport


Enumeration
		#Window_0
EndEnumeration

;- Gadget Constants
;
Enumeration
		#Editor_0
		#lire
		#clipboard
		#nettoie
		#chekbox
		#Police
		#couleur
		#sauve
		#charge
		#message
		#code
		#sauve_image
		#charge_image
		#compile_prog
EndEnumeration

;{; code a Nico pour lancer le program qu'une seul fois !!
#MUTEX_ALL_ACCESS =  $1F0001

Application.s="Nono éditeur by Dobro (michel.dobro@free.fr)"
If SetForegroundWindow_(FindWindow_(#Null,Application.s))<> 0
		End
EndIf

;}



;{ ; Initialisation


Declare wndProc(WindowID, message, wParam, lParam)
Declare SaveContent(ThisFileName.s)
Declare.s code(sortie$, Password.s) 
Global fonte$, taille_fonte.w, Couleur_fonte.l, fichiersav
NewList oc.l() ; ceci sert pour ranger dedans les données de l'image (les pixels)
InitSprite()

file_existe = FileSize("configediteurnono.ini") 
If file_existe =-1
		fonte$="arial" 
		taille_fonte.w=14
		Couleur_fonte.l=0
		Goto azerty
EndIf

handl_fichier = OpenFile(#PB_Any ,"configediteurnono.ini") 
fonte$=ReadString(handl_fichier ) 
taille_fonte.w=ReadWord( handl_fichier )
Couleur_fonte.l=ReadLong(handl_fichier )
CloseFile( handl_fichier)
If handl_fichier =0  
		fonte$="arial" 
		taille_fonte.w=14
		Couleur_fonte.l=0
EndIf
azerty:

LoadFont(#Police, fonte$, taille_fonte.w, #PB_Font_HighQuality ) 
; UseFont(#Police) 
;} ; fin initialisation



Procedure Open_Window_0() ; creer une fenetre avec les gadgets !!
		hauteur=400
		If OpenWindow(#Window_0, 233, 50, 610,  hauteur,  "Nono éditeur by Dobro " ,#PB_Window_SystemMenu | #PB_Window_SizeGadget |#PB_Window_MaximizeGadget |#PB_Window_MinimizeGadget | #PB_Window_TitleBar )
				; WindowID = WindowID(#Window_0) 
				; SetWindowCallback(@wndProc())  ; callback
				;If CreateGadgetList(WindowID(#Window_0))
				SetGadgetFont(#PB_Default, LoadFont(#Police,fonte$, taille_fonte, #PB_Font_HighQuality ) ) ; Change la valeur de la police pour les gadgets.
				handle_editor=EditorGadget(#Editor_0, 2, 50, 606,  hauteur-70) ;#PB_Container_Raised
				; ****couleur des charactere de l'éditeur****
				couleur_text=Couleur_fonte
				format.CHARFORMAT\cbSize = SizeOf(CHARFORMAT) ; Prépare les attributs de couleur dans la structure appropriée pour envoyer les informations au gadget.
				format\dwMask = #CFM_COLOR ; Constante API. Le membre crTextColor et la valeur #CFE_AUTOCOLOR du membre dwEffects sont valides.
				format\crTextColor = couleur_text ; Couleur du texte. Ce membre est ignoré si #CFE_AUTOCOLOR est spécifié. Met à  jour la police après appel du FontRequester.
				SendMessage_(handle_editor, #EM_SETCHARFORMAT, 0, @format) ; Envoie l'information de couleur pour le gadget. Appel API.
				; ************************************************
				SetGadgetFont(#PB_Default, LoadFont(#Police, "arial", 8, #PB_Font_HighQuality ) ) ; Change la valeur de la police pour les gadgets.
				
				
				Debug GetCurrentDirectory()+"nono.dll"
				
				if FileSize("nono.dll")<>-1
				librairie=1
				Else
				librairie=0
				Endif
				
				If   librairie<>0 ; ouvre nono si la phrase est supérieur a 1 
						startbouttonlire=10
						startbouttonclip=startbouttonlire+90
						startbouttonvide=startbouttonvide+210
						startbouttonchec=startbouttonlire+310
						ButtonGadget(#lire,  startbouttonlire, 10, 80, 30, "Lire") 
						ButtonGadget(#clipboard,  startbouttonclip, 10, 100, 30, "Lire le press papier")
						ButtonGadget(#nettoie,  startbouttonvide, 10, 100, 30, "vider l'éditeur") 
						CheckBoxGadget(#chekbox,  startbouttonchec, 10,50, 20, "Nono",#PB_CheckBox_Right  ) :SetGadgetState(#chekbox,1) 
				Else  
						nono_absent=1 ; nono n'est pas actif
						startbouttonvide=10
						startbouttonchec=startbouttonlire+90
						ButtonGadget(#nettoie,  startbouttonvide, 10, 100, 30, "vider l'éditeur") 
						Resultat = TextGadget(#message, startbouttonvide+210, 10, 100, 30, " la DLL Nono n'est pas présente !",#PB_Text_Center  )
				EndIf 
				
				ButtonGadget(#sauve, 110, WindowHeight(#Window_0) - 20, 100, 20, "sauve text") 
				ButtonGadget(#charge, 10, WindowHeight(#Window_0) - 20, 100, 20, "charge text")  
				ButtonGadget(#code, WindowWidth(#Window_0) -110, WindowHeight(#Window_0) - 20, 100, 20, "code/décode")  
				ButtonGadget(#sauve_image, WindowWidth(#Window_0) -380, WindowHeight(#Window_0) - 20, 150, 20, "sauve dans une image")  
				ButtonGadget(#charge_image, WindowWidth(#Window_0) -220, WindowHeight(#Window_0) - 20, 100, 20, "charge d'une image")  
				ButtonGadget(#couleur, 500, 10, 100, 30, "couleur et fonte") 
				
				;EndIf
		EndIf
EndProcedure 
Open_Window_0() ; on ouvre la fenetre


Repeat  ; boucle principale
		;{ ; boucle principale
		eventi = WaitWindowEvent() 
		If eventi= #WM_SIZING 
				Debug "c'est cool"
				ResizeGadget( #Editor_0, 2,50, WindowWidth(#Window_0) - 4, WindowHeight(#Window_0) - 80) ; Modifie la taille du gadget. 
				;UpdateWindow_(WindowID)
		EndIf  
		If eventi = #PB_Event_Gadget 
				;Debug "WindowID: " + Str(EventWindowID()) 
				GadgetID = EventGadget() 
				Select GadgetID
						Case #Editor_0 
						
						Case #lire
						;{ ; Lire
						
						phrase.s = GetGadgetText(#Editor_0) ; récupere le contenu du l'editeur
						
						
						If    Len(phrase.s)>0 ; ouvre nono si la phrase est supérieur a 1
								;************************
								panoramique=100:; le son sera sur les 2 haut-parleurs (0 tout a gauche) (255 tout a droite)
								tete_active= GetGadgetState( #chekbox )
								
								If tete_active=1
										tete=0; on montre la tete
								Else
										tete=1; on cache la tete
								EndIf
								
								
								Result=nono(phrase.s,panoramique,11,70,0)  ;appel la dll et lui passe la phrase a dire   
								
								; If Result=13
								; MessageRequester("Dobro"," sortie reussi ", #PB_MessageRequester_Ok )  
								; EndIf  
						Else 
								If  nono_absent=0 ; nono est actif
										
										
										nono( "il n'y a rien na lire" ,100,11,70,1)  ;appel la dll et lui passe la phrase a dire 
										
										
								EndIf
								
								MessageRequester("Erreur"," il n'y a rien a lire ", #PB_MessageRequester_Ok )  
						EndIf  
						;}
						Case #clipboard
						;{ ; Clipboard
						phrase.s = GetClipboardText() 
						;    librairie=OpenLibrary(0, GetCurrentDirectory()+"nono.dll") 
						If   Len(phrase.s)>0 ; ouvre nono si la phrase est superieur a 1
								;************************
								panoramique=100 :; le son sera sur les 2 haut-parleurs (0 tout a gauche) (200 tout a droite) 
								
								tete_active= GetGadgetState( #chekbox )
								If tete_active=1
										tete=0; on montre la tete
								Else
										tete=1; on cache la tete
								EndIf 
								
								
								nono( phrase.s,100,11,70,1)  ;appel la dll et lui passe la phrase a dire   
								
								;  CallFunction(0, "nono", "/.",Frequence,panoramique)  ;appel la dll et lui passe la phrase a dire 
								; SetGadgetText(#Editor_0, "")
						Else
								;     Global librairie=OpenLibrary(0,GetCurrentDirectory()+ "nono.dll")   
							
								nono( " il n'y a rien a lire" ,100,11,70,1)  ;appel la dll et lui passe la phrase a dire  
								
								; MessageRequester("Erreur"," il n'y a rien a lire", #PB_MessageRequester_Ok )  
						EndIf 
						;}
						Case #nettoie
						ClearGadgetItemList(#Editor_0)
						Case #chekbox 
						tete_active= GetGadgetState( #chekbox ) 
						Case#couleur
						;{ ;couleur
						Texte_sauve$ = GetGadgetText(#Editor_0) ; on met le contenu de l'éditeur dans un buffer
						Debug "couleur" 
						Result = FontRequester("arial", 12, #PB_FontRequester_Effects) 
						fonte$=SelectedFontName() :Debug fonte$ 
						taille_fonte.w=SelectedFontSize() :Debug taille_fonte
						Couleur_fonte.l= SelectedFontColor() :Debug Couleur_fonte
						handl_fichier = OpenFile(#PB_Any ,"configediteurnono.ini") 
						WriteStringN(handl_fichier, fonte$)
						WriteWord( handl_fichier, taille_fonte.w)
						WriteLong( handl_fichier,Couleur_fonte.l) 
				CloseFile ( handl_fichier) 
				; *************redessine les gadget avec les nouveau parrametre de fonte et de couleur****************
				SetGadgetFont(#PB_Default, LoadFont(#Police,fonte$, taille_fonte, #PB_Font_HighQuality ) ) ; Change la valeur de la police pour les gadgets.
				; ****couleur des charactere de l'éditeur****
				handle_editor=EditorGadget(#Editor_0, 2, 50, 606,  hauteur-70,#PB_Container_Raised)
				couleur_text=Couleur_fonte
				format.CHARFORMAT\cbSize = SizeOf(CHARFORMAT) ; Prépare les attributs de couleur dans la structure appropriée pour envoyer les informations au gadget.
				format\dwMask = #CFM_COLOR ; Constante API. Le membre crTextColor et la valeur #CFE_AUTOCOLOR du membre dwEffects sont valides.
				format\crTextColor = couleur_text ; Couleur du texte. Ce membre est ignoré si #CFE_AUTOCOLOR est spécifié. Met à  jour la police après appel du FontRequester.
				SendMessage_(handle_editor, #EM_SETCHARFORMAT, 0, @format) ; Envoie l'information de couleur pour le gadget. Appel API.
				
				wndProc(WindowID, #WM_SIZING, wParam, lParam) ; force le redessin en faisant croire a un redimentionnement
				; *******************************
				; ************************************************
				SetGadgetFont(#PB_Default, LoadFont(#Police, "arial", 8, #PB_Font_HighQuality ) ) ; Change la valeur de la police pour les gadgets.
				ButtonGadget(#lire, 20, 10, 80, 30, "Lire")
				ButtonGadget(#clipboard, 140, 10, 100, 30, "Lire le press papier")
				ButtonGadget(#nettoie, 260, 10, 100, 30, "vider l'éditeur") 
				ButtonGadget(#couleur, 500, 10, 100, 30, "couleur et fonte") 
				CheckBoxGadget(#chekbox, 380, 10,50, 20, "Nono",#PB_CheckBox_Right  ) :SetGadgetState(#chekbox,1) 
				SetGadgetText(#Editor_0, Texte_sauve$) ; on réécrit le contenu du buffer dans l'éditeur 
				;}
				Case #charge 
				;{ ; charge
				NomFichier$ = OpenFileRequester("Charge un fichier", " ", "Fichiers Textes|*.txt;*.doc", 0  )
				file=ReadFile(#PB_Any,  NomFichier$)
				If file<>0
						Repeat
								a$ = ReadString(file)
								AddGadgetItem(0, NLines, a$)
								NLines + 1 ; NLines et NChars sont des variables statistiques, mais servent également à  la fonction recherche.
						Until Eof(file)
				CloseFile(file) 
		EndIf
		;}
		Case #sauve
		If  nono_absent=0 ; nono est actif
				;   Global librairie=OpenLibrary(0,GetCurrentDirectory()+ "nono.dll")   
				
				nono("Choisir le nom du fichier à  enregistrer" ,100,11,70,1)  ;appel la dll et lui passe la phrase a dire 
				
		EndIf
		fichier_save$=SaveFileRequester("Choisir le nom du fichier à  enregistrer", " ", "*.txt", 0)
		SaveContent( fichier_save$) 
		Case #code 
		;{ ; code
		Texte_sauve2$ = GetGadgetText(#Editor_0) ; on met le contenu de l'éditeur dans un buffer  
		Pass$ = InputRequester("un mot pour encoder","entrez un mot de pass:","") 
		
		If Len(  Pass$) >1 And  Len(  Pass$) <255 
				; on encode le texte
				textacoder$=Texte_sauve2$ 
				Password$=Pass$
				result$=code(textacoder$,Password$) ; on code le text
				Texte_sauve2$=result$
				SetGadgetText(#Editor_0, Texte_sauve2$) ; on réécrit le contenu du buffer  Codé ou décodé dans l'éditeur  
		Else 
				Resultat = MessageRequester(" erreur ", "le mot de pass doit avoir entre 1et 255 characteres ",    #PB_MessageRequester_Ok  )
		EndIf 
		su2:
		;}
		Case #charge_image
		;{; charge image
		ClearGadgetItemList(#Editor_0) 
		NLines=0
		phrase.s=""
		ligne$=""
		NomFichier$ = OpenFileRequester("Charge une image BMP", " ", "image|*.bmp", 0  ) 
		file= ReadFile(#PB_Any,  NomFichier$)
		Signature.w =ReadWord(file)
		taille_total_fichier.l=ReadLong(file)
		champ_reserve.l=ReadLong(file)
		offset_image.l=ReadLong(file) 
		taille_entete_image.l=ReadLong(file)
		largeur_image.l=ReadLong(file)
		hauteur_image.l=ReadLong(file)
		nombre_de_plan.w=ReadWord(file)
		profondeur_encodage.w=ReadWord(file)
		methode_de_compression.l=ReadLong(file)
		taille_total_image.l=ReadLong(file)
		resolution_horiz_metre.l=ReadLong(file)
		resolution_vert_metre.l=ReadLong(file)
		nombre_de_couleur_palette.l=ReadLong(file)
		nombre_de_couleur_import.l=ReadLong(file)
		flag1.b=ReadByte(file)
		flag2.b=ReadByte(file)
		flag3.b=ReadByte(file)  
		flag4.b=ReadByte(file)   
		If flag1.b=$64 And flag2=$6F And flag3=$62  
				Longueur_text= ReadLong(file)
				For t=0 To  Longueur_text-1 :Debug  Longueur_text
						a$=Chr( ReadByte(file))
						If a$=Chr(10)
								AddGadgetItem(0, NLines, "")                       
						Else
								ligne$=ligne$+a$ 
						EndIf  
				Next t
				AddGadgetItem(0, NLines, ligne$)
		Else
				MessageRequester("Erreur"," il n'y a rien a lire"+Chr(10)+" dans cette image", #PB_MessageRequester_Ok )  
		EndIf
		
CloseFile( file)   
;}
Case #sauve_image
;{; sauve Image
phrase.s = GetGadgetText(#Editor_0) ; récupere le contenu du l'editeur
Longueur_text=Len( phrase.s)

NomFichier$ = SaveFileRequester("sauve dans une image BMP", " ", "image|*.bmp", 0  )
; on lit quelques infos interréssante dans l'image 
file= ReadFile(#PB_Any,  NomFichier$) 
CallDebugger
Signature.w =ReadWord(file)

If  Signature.w <>$4D42
		MessageRequester("Erreur"," ce n'est pas une image BMP", #PB_MessageRequester_Ok ) 
CloseFile(file) : Goto dd  
EndIf

taille_total_fichier.l=ReadLong(file)
champ_reserve.l=ReadLong(file)
offset_image.l=ReadLong(file) 
taille_entete_image.l=ReadLong(file)
largeur_image.l=ReadLong(file)
hauteur_image.l=ReadLong(file)
nombre_de_plan.w=ReadWord(file)
profondeur_encodage.w=ReadWord(file)
methode_de_compression.l=ReadLong(file)
taille_total_image.l=ReadLong(file)
resolution_horiz_metre.l=ReadLong(file)
resolution_vert_metre.l=ReadLong(file)
nombre_de_couleur_palette.l=ReadLong(file)
nombre_de_couleur_import.l=ReadLong(file)
flag1.b=ReadByte(file)
flag2.b=ReadByte(file)
flag3.b=ReadByte(file)  
flag4.b=ReadByte(file)    
If flag1.b=$64 And flag2=$6F And flag3=$62   ; il y a eu une ecriture dans l'image
		anc_longueur_text=ReadLong(file)
		result1=MessageRequester("Bouh !"," il y a déja du text dans cette image"+Chr(10)+" on ecrit par dessus ?",  #PB_MessageRequester_YesNo  )  
		If result1=6 ; yes 
				Position_p = Loc(file)
				FileSeek( file,offset_image.l) ; on saute a l'image
				offset_image.l= offset_image.l-anc_longueur_text ; on change la place de l'image (on la ramene a sa valeur d'origine ) 
				taille_total_fichier.l=taille_total_fichier.l-anc_longueur_text
				offset_image.l= offset_image.l+Longueur_text ; on change la place de l'image (on la repousse plus loin de la longueur du message ) 
				taille_total_fichier.l=taille_total_fichier.l+Longueur_text 
		Else ; no
		CloseFile(file) : Goto dd 
EndIf

Else ; si il n'y a pas eu d'ecriture precedante (on a une image vierge)
Position_p = Loc(file):Position_p=Position_p-4
FileSeek(file,Position_p) ; on recule la tete de lecture de 4 octets (car les flags que l'on a lu on fait avancer la tete !) 
offset_image.l= offset_image.l+Longueur_text+8 ; on change la place de l'image (on la repousse plus loin ) 
taille_total_fichier.l=taille_total_fichier.l+Longueur_text+8
EndIf 
ResetList(oc.l())  
Repeat  ; lit les données de l'image 
		AddElement(oc.l())    
		oc.l()=ReadLong(file) 
Until Eof(file)  
CloseFile(file)  

file= OpenFile(#PB_Any, NomFichier$)  
WriteWord(file,Signature.w)
WriteLong(file,taille_total_fichier.l)
WriteLong(file,champ_reserve.l)
WriteLong(file,offset_image.l)   
WriteLong(file,taille_entete_image.l)  
WriteLong(file,largeur_image.l)  
WriteLong(file,hauteur_image.l)  
WriteWord(file,nombre_de_plan.w)
WriteWord(file,profondeur_encodage.w)
WriteLong(file,methode_de_compression.l)  
WriteLong(file,taille_total_image.l)  
WriteLong(file,resolution_horiz_metre.l-16)
WriteLong(file,resolution_vert_metre.l-16)
WriteLong(file,nombre_de_couleur_palette.l)
WriteLong(file,nombre_de_couleur_import.l) 
; voila la cause du "offset_image.l+longueur_text+8 "
WriteByte(file,$64)
WriteByte(file,$6F)
WriteByte(file,$62)
WriteByte(file,$FF)
WriteLong(file, Longueur_text) ; on insere la taille tu text
; ************ voila  8 octets ajoutés *********************** 
For t=1 To  Longueur_text
		caractere.b= Asc(Mid(phrase.s, t, 1))  
		WriteByte( file,caractere.b) ; on insere notre text !!  ;-D   
Next t
; maintenant on reconstitue le reste du fichier en l'ajoutant a la fin ; l'air de rien :-D 
ResetList(oc.l())  
While NextElement(oc.l())       ; Process all the elements...
WriteLong(file,oc.l())
Wend 
CloseFile(file)    
dd:
;}
;#compile_prog ; en cours de developement 

EndSelect
EndIf
;}; fin de boucle principale



Until eventi = #PB_Event_CloseWindow ; fin de boucle principale
CloseLibrary(0)
End
; CloseHandle_(Hmutex)



Procedure wndProc(WindowID, message, wParam, lParam)
		Resultat = #PB_ProcessPureBasicEvents 
		Select message
				Case #WM_SIZING ; Cet évènement est le redimensionnement de la fenêtre. #WM_SIZE est une constante API.
				ResizeGadget(#Editor_0, 2, 50, WindowWidth(#Window_0) - 4, WindowHeight(#Window_0) - 80) ; Modifie la taille du gadget.
				ButtonGadget(#sauve, 110, WindowHeight(#Window_0) - 20, 100, 20, "sauve text") 
				ButtonGadget(#charge, 10, WindowHeight(#Window_0) - 20, 100, 20, "charge text") 
				ButtonGadget(#sauve_image, WindowWidth(#Window_0) -380, WindowHeight(#Window_0) - 20, 150, 20, "sauve dans une image")  
				ButtonGadget(#charge_image, WindowWidth(#Window_0) -220, WindowHeight(#Window_0) - 20, 100, 20, "charge d'une image")  
				ButtonGadget(#code, WindowWidth(#Window_0) -110, WindowHeight(#Window_0) - 20, 100, 20, "code/décode")  
				
				UpdateWindow_(WindowID)  
				Case #PB_Event_SizeWindow
				ResizeGadget(#Editor_0, 2, 50, WindowWidth(#Window_0) - 4, WindowHeight(#Window_0) - 80) ; Modifie la taille du gadget.
				ButtonGadget(#sauve, 110, WindowHeight(#Window_0) - 20, 100, 20, "sauve text") 
				ButtonGadget(#charge, 10, WindowHeight(#Window_0) - 20, 100, 20, "charge text")  
				ButtonGadget(#sauve_image, WindowWidth(#Window_0) -380, WindowHeight(#Window_0) - 20, 150, 20, "sauve dans une image")  
				ButtonGadget(#charge_image, WindowWidth(#Window_0) -220, WindowHeight(#Window_0) - 20, 100, 20, "charge d'une image")  
				ButtonGadget(#code, WindowWidth(#Window_0) -110, WindowHeight(#Window_0) - 20, 100, 20, "code/décode")  
				UpdateWindow_(WindowID)  
		EndSelect
		
		ProcedureReturn Resultat
EndProcedure
;


Procedure SaveContent(ThisFileName.s)  ; Vérifie si le contenu du gadget peut être sauvegardé et effectue la sauvegarde
		; on compte les characteres pour pas dépasser 64000 (64kilo par fichier !)
		compte$ = GetGadgetText(#Editor_0);
		compteur=Len(compte$);
		Debug  "il y a "+Str(compteur)+" charactere" ;
		fichiersav=CreateFile(#PB_Any, ThisFileName.s) ;
		If   fichiersav<>0 And  compteur <= 64000;
				WriteString(fichiersav,GetGadgetText(#Editor_0));
		CloseFile( fichiersav) ;|
		Else
				MessageRequester("erreur", "le fichier " + ThisFileName.s + " ne peut être créé ", #PB_MessageRequester_Ok);
		EndIf ;
EndProcedure ;



Procedure.s code(sortie$, Password.s) 
		text.s=sortie$
		Password.s=UCase(Password.s)
		p=0
		long_or = Len(text.s)
		long_pass = Len(Password.s) 
		For i=1 To long_or
				p=p+1 : If p= long_pass:p=1:EndIf 
				car_pass.l=Asc( Mid(Password.s, p, 1))  ; recupere une lettre (son code ascii)du mot de pass
				car_text.l= Asc(Mid(text.s, i, 1)) ; recupere une lettre (son code ascii) du text a coder
				If car_text.l=car_pass.l
						car_pass.l=car_text.l ; echange 
						car_text.l=254    ; si 254 , c'est le code choisi pour dire que la lettre a coder est egal a
						sorti.l=car_pass.l ; la lettre du mot de pass , donc on prend directement cette lettre
						Goto su
				EndIf  
				sorti.l= car_pass ! car_text ; un petit XOR
				If sorti.l=0    ; si par hazard la lettre du mot de pass est egal a la lettre a coder 
						sorti.l=254 ; cela donnerai 0 !! donc on force un 254
				EndIf 
				su: 
				text_sorti.s=text_sorti.s+Chr(sorti) 
		Next i
		text.s= text_sorti.s
		text_sorti.s=""
		ProcedureReturn text.s 
EndProcedure



; Epb
Dernière modification par Zorro le dim. 22/oct./2017 17:51, modifié 1 fois.
Image
Image
Site: http://michel.dobro.free.fr/
Devise :"dis moi ce dont tu as besoin, je t'expliquerai comment t'en passer"
Avatar de l’utilisateur
Kwai chang caine
Messages : 6962
Inscription : sam. 23/sept./2006 18:32
Localisation : Isere

Re: Nono 2017

Message par Kwai chang caine »

Merci du partage ZORRO 8)
Hors mis le code à mettre à jour avec les deprecated
J'ai un plantage sur le END quand je ferme la fenêtre de l'editeur :|
W10 X64 v5.60
ImageLe bonheur est une route...
Pas une destination

PureBasic Forum Officiel - Site PureBasic
Avatar de l’utilisateur
Zorro
Messages : 2185
Inscription : mar. 31/mai/2016 9:06

Re: Nono 2017

Message par Zorro »

regarde ça demain
Image
Image
Site: http://michel.dobro.free.fr/
Devise :"dis moi ce dont tu as besoin, je t'expliquerai comment t'en passer"
Ollivier
Messages : 4190
Inscription : ven. 29/juin/2007 17:50
Localisation : Encore ?
Contact :

Re: Nono 2017

Message par Ollivier »

Zorro a écrit :pour les plus anciens, vous vous souvenez de mon Nono (synthese vocal commencé en DarkBasic il portait le nom de "Spo256" avant)
A ce sujet, tu ne saurais pas si le forum francophone aurait été sauvegardé?
En regardant vite fait, j'ai vu qu'il était passé open source DBP.
Avatar de l’utilisateur
microdevweb
Messages : 1798
Inscription : mer. 29/juin/2011 14:11
Localisation : Belgique

Re: Nono 2017

Message par microdevweb »

Salut Dobro,

j'ai testé, mais il semblerait que la dll ne se charge pas.
Windows 10 64 bits PB: 5.70 ; 5.72 LST
Work at Centre Spatial de Liège
Avatar de l’utilisateur
Zorro
Messages : 2185
Inscription : mar. 31/mai/2016 9:06

Re: Nono 2017

Message par Zorro »

je viens de tester l'archive,

ça marche si tu compiles en Pb 5.60 unicode

une fois lancé le code de test qui est fourni dans l'archive,
il faut attendre bien 4 ,5 secondes avant que la synthese ne se fasse entendre :)
(le temps en fait de la creation d'un mp3 contenant les "allophones" )
et la lecture de celui-ci :)
Image
Image
Site: http://michel.dobro.free.fr/
Devise :"dis moi ce dont tu as besoin, je t'expliquerai comment t'en passer"
Avatar de l’utilisateur
Zorro
Messages : 2185
Inscription : mar. 31/mai/2016 9:06

Re: Nono 2017

Message par Zorro »

pour ceux qui le veulent
j'ai modifié l'archive de nono
et les deux codes precedent dans ce topic
j'ai modifié l'Appel de Nono en utilisant un Import ça simplifie le code
et ça corrige l'erreur trouvée par Kcc

par contre dans le dossier, concervez bien la nono.Dll ET le fichier nono.lib indispensable pour utiliser la fonction de Nono :)

lors de vos tests, patientez bien quelques secondes, le temps que Nono se mette en route :)
Image
Image
Site: http://michel.dobro.free.fr/
Devise :"dis moi ce dont tu as besoin, je t'expliquerai comment t'en passer"
Répondre