Enregistrer une license

Partagez votre expérience de PureBasic avec les autres utilisateurs.
Heis Spiter
Messages : 1092
Inscription : mer. 28/janv./2004 16:22
Localisation : 76
Contact :

Enregistrer une license

Message par Heis Spiter »

Voila mon ancien code (dans une version améliorée), qui est très facile à comprendre (et à faire), mais c'est plus somple de le prendre ici ;-) C'est plus rapide
Changement depuis la dernière version : S'il y a trop d'erreurs, la personne n'acquiert aucune license et le programme refuse de se lancer.
PS : pour les nouveaux, je remprend ce code ne sert pas à faire de sharware ou autre, il sert juste a avoir un logiciel à son nom !

Code : Tout sélectionner

Procedure.s Enregistrement(FichierINI$, Programme$) 

  ; Tente d'ouvrir le fichier *.ini ; s'il exite tout sera sauté 
  If ReadFile(0, FichierINI$) = 0 
    ; affiche un message d'avertissment 
    MessageRequester("Attention", "Ceci est votre première utilisation de " +  Programme$ + " ou le fichier " + FichierINI$ +" a été supprimé ou remplacé ! Il vous sera demandé des informations qui ne seront communiquées à personne (puisque'elle resteront sur votre PC)", #MB_ICONWARNING)  
    ; demande le nom 
    Nom : 
    Nom$ = InputRequester("Saisie des informations 1/2", "Entrez votre nom", "ici") 
    ; Vérifie que le nom n'est pas "ici" 
    If Nom$ = "ici" 
      ; s'il est "ici", il faut recommencer 
      MessageRequester("Erreur", "Votre nom ne peut être ici !", #MB_ICONERROR)
      ; Incrémente le nombre d'erreur
      ErreurN = ErreurN + 1
      ; Si il y a eu 4 erreurs pour le nom
      If ErreurN = 4
        ; Supression du droit de license...
        MessageRequester("Erreur", "Vous n'avez pas obtenu de license !", #MB_ICONERROR)
        ; ... et enregistrement dans le *.ini
        CreateFile(0, FichierINI$)
        ; du string "No"
        WriteStringN("No")
        ; Fin du programme
        End
      EndIf
      ; demande de recommencer
      Goto Nom 
    EndIf 
    ; Vérifie que le nom n'est pas trop long 
    If Len(Nom$) >= 200 
      ; s'il est trop long
      MessageRequester("Erreur", "Votre nom est trop long !", #MB_ICONERROR)
      ; Incrémente le nombre d'erreur
      ErreurN = ErreurN + 1
      ; Si il y a eu 4 erreurs pour le nom
      If ErreurN = 4
        ; Supression du droit de license...
        MessageRequester("Erreur", "Vous n'avez pas obtenu de license !", #MB_ICONERROR)
        ; ... et enregistrement dans le *.ini
        CreateFile(0, FichierINI$)
        ; du string "No"
        WriteStringN("No")
        ; Fin du programme
        End
      EndIf 
      ; demande de recommencer
      Goto Nom 
    EndIf 
    ; Vérifie que le nom n'est pas trop court
    If Len(Nom$) <= 4 
      ; s'il est trop court 
      MessageRequester("Erreur", "Votre nom est trop court !", #MB_ICONERROR)
      ; Incrémente le nombre d'erreur
      ErreurN = ErreurN + 1
      ; Si il y a eu 4 erreurs pour le nom
      If ErreurN = 4
        ; Supression du droit de license...
        MessageRequester("Erreur", "Vous n'avez pas obtenu de license !", #MB_ICONERROR)
        ; ... et enregistrement dans le *.ini
        CreateFile(0, FichierINI$)
        ; du string "No"
        WriteStringN("No")
        ; Fin du programme
        End
      EndIf
      ; demande de recommencer 
      Goto Nom 
    EndIf
    ; demande l'adresse e-mail 
    AdresseMail : 
    Adresse$ = InputRequester("Saisie des informations 2/2", "Entrez une adresse e-mail", "ici") 
    ; Vérifie que l'adresse e-mail n'est pas "ici" 
    If Adresse$ = "ici" 
      ; si elle est "ici", 
      MessageRequester("Erreur", "Votre adresse e-mail ne peut être ici !", #MB_ICONERROR)
      ; Incrémente le nombre d'erreur
      ErreurA = ErreurA + 1
      ; Si il y a eu 5 erreurs pour l'adresse
      If ErreurA = 5
        ; Supression du droit de license...
        MessageRequester("Erreur", "Vous n'avez pas obtenu de license !", #MB_ICONERROR)
        ; ... et enregistrement dans le *.ini
        CreateFile(0, FichierINI$)
        ; du string "No"
        WriteStringN("No")
        ; Fin du programme
        End
      EndIf 
      ; demande de recommencer
      Goto AdresseMail 
    EndIf 
    ; Vérifie que l'adresse e-mail n'est pas trop longue
    If Len(Adresse$) >= 250 
      ; si elle est trop longue 
      MessageRequester("Erreur", "Votre adresse e-mail est trop longue !", #MB_ICONERROR)
      ; Incrémente le nombre d'erreur
      ErreurA = ErreurA + 1
      ; Si il y a eu 5 erreurs pour l'adresse
      If ErreurA = 5
        ; Supression du droit de license...
        MessageRequester("Erreur", "Vous n'avez pas obtenu de license !", #MB_ICONERROR)
        ; ... et enregistrement dans le *.ini
        CreateFile(0, FichierINI$)
        ; du string "No"
        WriteStringN("No")
        ; Fin du programme
        End
      EndIf 
      ; demande de recommencer 
      Goto AdresseMail 
    EndIf
    ; Vérifie que l'adresse e-mail n'est pas trop courte
    If Len(Adresse$) <= 4 
      ; si elle est trop courte
      MessageRequester("Erreur", "Votre adresse e-mail est trop courte !", #MB_ICONERROR)
      ; Incrémente le nombre d'erreur
      ErreurA = ErreurA + 1
      ; Si il y a eu 5 erreurs pour l'adresse
      If ErreurA = 5
        ; Supression du droit de license...
        MessageRequester("Erreur", "Vous n'avez pas obtenu de license !", #MB_ICONERROR)
        ; ... et enregistrement dans le *.ini
        CreateFile(0, FichierINI$)
        ; du string "No"
        WriteStringN("No")
        ; Fin du programme
        End
      EndIf 
      ; demande de recommencer 
      Goto AdresseMail 
    EndIf
    ;Vérifie la présence de @
    Arobas = FindString(Adresse$, "@", 1)
    If Arobas = 0
      ;S'il n'y en a pas
      MessageRequester("Erreur", "Ceci n'est pas une adresse e-mail valide !", #MB_ICONERROR) 
      ; Incrémente le nombre d'erreur
      ErreurA = ErreurA + 1
      ; Si il y a eu 5 erreurs pour l'adresse
      If ErreurA = 5
        ; Supression du droit de license...
        MessageRequester("Erreur", "Vous n'avez pas obtenu de license !", #MB_ICONERROR)
        ; ... et enregistrement dans le *.ini
        CreateFile(0, FichierINI$)
        ; du string "No"
        WriteStringN("No")
        ; Fin du programme
        End
      EndIf 
      ; demande de recommencer
      Goto AdresseMail 
    EndIf
    ; Créé le fichier et stoke les infos 
    CreateFile(0, FichierINI$) 
    WriteStringN(Nom$) 
    WriteString(Adresse$) 
    ; Annonce que tout est fini 
    MessageRequester("Succés !", "Vous venez d'acquerir une license ! Elle est decernée à : " + Nom$ + " " + Adresse$ + ".", #MB_ICONINFORMATION) 
    ; ferme le fichier 
    CloseFile(0) 
  EndIf 
  ;Ouvre le fichier 
  If ReadFile(0, FichierINI$) 
    ;Lit la première ligne 
    License$ =  ReadString() 
    ;Si elle ne vaut rien 
    If License$ = "" 
      ;Affcihe du message d'erreur 
      MessageRequester("Erreur", "Vous n'avez pas obtenu de license", #MB_ICONERROR) 
      ;Fermeture du fichier 
      CloseFile(0) 
      ;Quitte le programme 
      End 
    ; Ou si elle est égale à "No"
    ElseIf License$ = "No"
      ;Affcihe du message d'erreur 
      MessageRequester("Erreur", "Vous n'avez pas obtenu de license", #MB_ICONERROR) 
      ;Fermeture du fichier 
      CloseFile(0) 
      ;Quitte le programme 
      End 
    EndIf 
    ; fermeture du fichier
    CloseFile(0) 
  EndIf 
  ;Ouvre le fichier 
  If ReadFile(0,FichierINI$) 
    ;Lit la première ligne 
    License.s =  ReadString() 
    ; fermeture du fichier
    CloseFile(0)
  EndIf 
  ;La procedure retourne maintenant le nom d'utilisateur 
  ProcedureReturn License.s

EndProcedure
A noter plusieurs choses : Un seul appel suffit en début de programme : Si le ini n'exsite pas (ou est vide), enregistrement puis retour du nom, s'il est plein retour du nom !
Exemple :

Code : Tout sélectionner

Nom$ = Enregistrement("config.ini", "Editeur")
A venir : Enregistrement sur une base SQL ;-) Si l'utilisateur est d'accord.
Heis Spiter, webmaster du site http://www.heisspiter.net
Développeur principal et administrateur du projet Bird Chat
Parti courir au bonheur du dév. public et GPL :D