PureBasic

Forums PureBasic
Nous sommes le Ven 18/Oct/2019 0:09

Heures au format UTC + 1 heure




Poster un nouveau sujet Répondre au sujet  [ 8 messages ] 
Auteur Message
 Sujet du message: Nono 2017
MessagePosté: Jeu 19/Oct/2017 14:32 
Hors ligne
Avatar de l’utilisateur

Inscription: Mar 31/Mai/2016 9:06
Messages: 2090
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:


; 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

_________________
Image
Image
Site: http://michel.dobro.free.fr/
Devise :"dis moi ce dont tu as besoin, je t'expliquerai comment t'en passer"


Dernière édition par Zorro le Dim 22/Oct/2017 17:50, édité 2 fois.

Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: Nono 2017
MessagePosté: Jeu 19/Oct/2017 14:40 
Hors ligne
Avatar de l’utilisateur

Inscription: Mar 31/Mai/2016 9:06
Messages: 2090
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:

;***********************************************
;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

_________________
Image
Image
Site: http://michel.dobro.free.fr/
Devise :"dis moi ce dont tu as besoin, je t'expliquerai comment t'en passer"


Dernière édition par Zorro le Dim 22/Oct/2017 17:51, édité 1 fois.

Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: Nono 2017
MessagePosté: Sam 21/Oct/2017 18:10 
Hors ligne
Avatar de l’utilisateur

Inscription: Sam 23/Sep/2006 18:32
Messages: 6657
Localisation: Isere
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


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: Nono 2017
MessagePosté: Sam 21/Oct/2017 19:59 
Hors ligne
Avatar de l’utilisateur

Inscription: Mar 31/Mai/2016 9:06
Messages: 2090
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"


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: Nono 2017
MessagePosté: Dim 22/Oct/2017 3:37 
Hors ligne

Inscription: Ven 29/Juin/2007 17:50
Messages: 3503
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.


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: Nono 2017
MessagePosté: Dim 22/Oct/2017 10:06 
Hors ligne
Avatar de l’utilisateur

Inscription: Mer 29/Juin/2011 14:11
Messages: 1661
Localisation: Belgique
Salut Dobro,

j'ai testé, mais il semblerait que la dll ne se charge pas.

_________________
Windows 10 64 bits PB: 5.70 ; 5.71 beta 2


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: Nono 2017
MessagePosté: Dim 22/Oct/2017 12:12 
Hors ligne
Avatar de l’utilisateur

Inscription: Mar 31/Mai/2016 9:06
Messages: 2090
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"


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: Nono 2017
MessagePosté: Dim 22/Oct/2017 17:53 
Hors ligne
Avatar de l’utilisateur

Inscription: Mar 31/Mai/2016 9:06
Messages: 2090
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"


Haut
 Profil  
Répondre en citant le message  
Afficher les messages postés depuis:  Trier par  
Poster un nouveau sujet Répondre au sujet  [ 8 messages ] 

Heures au format UTC + 1 heure


Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 1 invité


Vous ne pouvez pas poster de nouveaux sujets
Vous ne pouvez pas répondre aux sujets
Vous ne pouvez pas éditer vos messages
Vous ne pouvez pas supprimer vos messages

Rechercher:
Aller à:  
cron

 


Powered by phpBB © 2008 phpBB Group | Traduction par: phpBB-fr.com
subSilver+ theme by Canver Software, sponsor Sanal Modifiye