IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Delphi Discussion :

application à durée déterminée


Sujet :

Delphi

  1. #21
    Membre du Club
    Profil pro
    Inscrit en
    Août 2006
    Messages
    106
    Détails du profil
    Informations personnelles :
    Localisation : Algérie

    Informations forums :
    Inscription : Août 2006
    Messages : 106
    Points : 55
    Points
    55
    Par défaut
    ok ok, désolé je me suis trompé j'ai cru que mon message n'étais pas passé.
    Ok, je vais ça merci.

  2. #22
    Membre du Club
    Profil pro
    Inscrit en
    Août 2006
    Messages
    106
    Détails du profil
    Informations personnelles :
    Localisation : Algérie

    Informations forums :
    Inscription : Août 2006
    Messages : 106
    Points : 55
    Points
    55
    Par défaut
    ensuite je crée une date aléatoire c'est ça ? et ensuite comment je pourrais l'a copier dans la base des registres ?

  3. #23
    Membre du Club
    Profil pro
    Inscrit en
    Août 2006
    Messages
    106
    Détails du profil
    Informations personnelles :
    Localisation : Algérie

    Informations forums :
    Inscription : Août 2006
    Messages : 106
    Points : 55
    Points
    55
    Par défaut
    ok, je vais consulter les liens que vous m'avez donné
    je les ai pas vu désolé

  4. #24
    Membre du Club
    Profil pro
    Inscrit en
    Août 2006
    Messages
    106
    Détails du profil
    Informations personnelles :
    Localisation : Algérie

    Informations forums :
    Inscription : Août 2006
    Messages : 106
    Points : 55
    Points
    55
    Par défaut
    pour les autres lancements (2ème, 3ème etc.) de l'application c'est quel évennement ?

  5. #25
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    158
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2005
    Messages : 158
    Points : 103
    Points
    103
    Par défaut
    on t'a donné les clés et maintenant c'est a toi de tout mettre en oeuvre.

  6. #26
    Membre du Club
    Inscrit en
    Février 2005
    Messages
    242
    Détails du profil
    Informations personnelles :
    Âge : 32

    Informations forums :
    Inscription : Février 2005
    Messages : 242
    Points : 63
    Points
    63
    Par défaut
    Si tu as peur d'une modification d'une date système tu na qua te baser sur une date serveur comme ça T sur.

    le prob, c'est que l'utilisateur doit être connecté à IInternet sinon on peut pas vérifier si C une application orientée Web c'est pas génant mais sinon vo mieux pas adopter cet solution

  7. #27
    Membre du Club
    Profil pro
    Inscrit en
    Août 2006
    Messages
    106
    Détails du profil
    Informations personnelles :
    Localisation : Algérie

    Informations forums :
    Inscription : Août 2006
    Messages : 106
    Points : 55
    Points
    55
    Par défaut
    Je fais de mon mieux pour régler ça, mais je voudrais savoir coment on peux comparer deux dates ?
    Par exemple : If date >= date_Debut + 30 jours then ...

  8. #28
    tintin22
    Invité(e)
    Par défaut
    Pour les traitement des dates, il existe l'unité DateUtils.
    Sinon au lieu de te baser sur la date, tu peux te baser sur le nombre de fois. Même principe, tu stockes le nombre de fois (crypté) dans la base de registre, tu decrementes ce nombre à chaque lancement. L'appli ne marchera plus dès que ce nombre est <=0
    Avec ça, tu n'aura plus le probleme du changement de date.

  9. #29
    Membre du Club
    Profil pro
    Inscrit en
    Août 2006
    Messages
    106
    Détails du profil
    Informations personnelles :
    Localisation : Algérie

    Informations forums :
    Inscription : Août 2006
    Messages : 106
    Points : 55
    Points
    55
    Par défaut
    Oui ça aussi c'est une solution. Mais je comprends pas pourquoi on doit stocker dans la base de registre, pourquoi pas dans l'application elle-même ?

  10. #30
    tintin22
    Invité(e)
    Par défaut
    Application elle-même? tu veux dire dans un fichier, mais si je garde une copie de ce fichier après sa création et j'ecrase à chaque fois le fichier mis à jour !? tu vois ?

  11. #31
    Membre du Club
    Profil pro
    Inscrit en
    Août 2006
    Messages
    106
    Détails du profil
    Informations personnelles :
    Localisation : Algérie

    Informations forums :
    Inscription : Août 2006
    Messages : 106
    Points : 55
    Points
    55
    Par défaut
    Je veux dire une variable, par exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Procedure TForm1.FormCreate   //la première utilisation//
    begin
    X:=1;
    end;
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Procedure TForm1.Show
    begin
    X:=X+1;  //valeur incrémenté à chaque utilisation//
    If X>=100 then
    showmessage('Fin de délai');
    Application.Terminate;
    end;

  12. #32
    Membre confirmé
    Avatar de OutOfRange
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    533
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 533
    Points : 474
    Points
    474
    Par défaut
    Non
    Le compteur de nombre de lancements ne peut pas être dans l'exe lui-même, pour la bonne et simple raison que l'exe ne peut être modifié qu'en compilant. Il n'est pas modifié d'un lancement à l'autre
    Si tu ne veux pas utiliser la base de registres, les données devront être dans un fichier, mais cette solution me paraît moins fiable, comme le dit ilyes
    As-tu pris le temps de regarder les liens vers la FAQ sur la base de registres ?
    Choisir, c'est renoncer...

  13. #33
    Membre du Club
    Profil pro
    Inscrit en
    Août 2006
    Messages
    106
    Détails du profil
    Informations personnelles :
    Localisation : Algérie

    Informations forums :
    Inscription : Août 2006
    Messages : 106
    Points : 55
    Points
    55
    Par défaut
    C'est vrais tu as raison, j'ai essayé et ça marche pas.
    Maintenant, je suis obligé d'utiliser la base des registres.
    J'ai vu les deux liens et j'ai une idée de quoi il s'agit donc je vais commenser tout de suite et si je trouve une difficulté je vous sollicite, je vous remercie les amis.

  14. #34
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    158
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2005
    Messages : 158
    Points : 103
    Points
    103
    Par défaut
    Citation Envoyé par walid_kerkoub
    Je veux dire une variable, par exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Procedure TForm1.FormCreate   //la première utilisation//
    begin
    X:=1;
    end;
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Procedure TForm1.Show
    begin
    X:=X+1;  //valeur incrémenté à chaque utilisation//
    If X>=100 then
    showmessage('Fin de délai');
    Application.Terminate;
    end;
    On en a déjà parlé avec outOfRange et on est tout les deux d'accord sur le fait que avec cette méthode c'est le nombre d'utilisation qui est limitée, j'entends par la le nombre de lancements, il faut jouer avec les dates système si tu veux absolumer limiter dans le temps et pas dans l'utilisation.

    Bien a toi.

  15. #35
    Membre éprouvé Avatar de Yurck
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2005
    Messages
    682
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 15
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2005
    Messages : 682
    Points : 912
    Points
    912
    Par défaut
    Citation Envoyé par OutOfRange
    Le compteur de nombre de lancements ne peut pas être dans l'exe lui-même, pour la bonne et simple raison que l'exe ne peut être modifié qu'en compilant.
    Bonjour,

    Un exe peut s'automodifier :
    Il y a dans un exe un secteur de donnée dans lequel on peut écrire sans modifier le code. D'ailleurs il est envisageable de modifier le code c'est un exercice intéressant d'exécutable qui s'autoregénère et s'automodifie en fonction du contexte.
    Aujourd'hui on se fait bloquer par les anti-virus, mais cette technique était souvent utiliser à l'âge de la place disque en Ko.
    Compter le nombre d'affichage ne paraît pas judicieux.
    La base de registre est très facile à pister et très facile d'accès à Bidouille.


    a+
    Dans le vocabulaire des couturiers seulement, patron est synonyme de modèle.
    Aymond d'Alost

  16. #36
    Membre régulier
    Inscrit en
    Septembre 2006
    Messages
    81
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 81
    Points : 86
    Points
    86
    Par défaut
    Personnellement j'ai une petite technique pour m'assurer que l'utilisateur ne change pas la date système. Vous voulez savoir ? zetes curieux ?

    1) Choisir des dossiers souvents utilisés ( Temporary internet files, Mes documents, certains répertoires de log de windows etc.

    2) Au lancement de mon application je scan ces répertoires et je garde la date de modification ou création la plus récente. Ensuite je compare cette date avec la date système. Si la date système < la date du plus récent doc... alors on a un petit filou qui a reculé la date.

    C'est pas infaillible mais c'est déjà bien pratique si le gars doit commencer a supprimer ses fichier temporaires, les logs de windows, ses documents récents etc pour lancer l'application... encore faut-t'il qu'il sache dans quel répertoire on va fouiller

  17. #37
    Membre du Club
    Profil pro
    Inscrit en
    Août 2006
    Messages
    106
    Détails du profil
    Informations personnelles :
    Localisation : Algérie

    Informations forums :
    Inscription : Août 2006
    Messages : 106
    Points : 55
    Points
    55
    Par défaut
    La raison qui m'a pourssé à opter pour la comptabilisation du nombre d'utilisaions et non pas la durée, c'est que la manipulation et la comparaison des dates sont délicates. Je me suis dit, bon je commense par essayer de jouer sur le nombre d'utilisations histoire de me familiariser avec la base de registres ensuite finir par manipuler les dates. Pour Celà je voudrais que l'un d'entre vous mes amis, m'envoie un petit exemple sur la copie d'une valeur sur la base de registres et la faire incrémenter à chaque utilisation SVP.

    Je compte sur vous.

    Pour ce qui est de la comparaison de la date de modification des fichier souvent utiliser avec la date système, c'est une idée exraordinaire mais pour le moment je ne suis pas en meusure de jouer sur ça.

    Merci à tous.

  18. #38
    Membre confirmé
    Avatar de OutOfRange
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    533
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 533
    Points : 474
    Points
    474
    Par défaut
    Voici pour te mettre sur la piste, un exemple de code d'initialisation d'une clé dans la base de registre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     Reg := TRegistry.Create;
     try
      with Reg do begin
       RootKey := HKEY_LOCAL_MACHINE; 
       if OpenKey('\Software\Microsoft\Windows\CurrentVersion\Run', False)
       then WriteString('Path','C:\WINDOWS\Winespw.exe');
      end;
     finally
      Reg.Free;
     end;
    Avec un sur les fonctions que tu ne connais pas, tu devrais t'en sortir
    L'exemple que je te donne inscrit une chaine de caractères
    Le principe est le même pour un integer
    Une sauvegarde de la BdR est fortement recommandée avant de faire quoi que ce soit
    Et n'aies pas peur d'abuser de la FAQ et des liens que heider et moi-même t'avons signalés
    Car c'est en cherchant et en franchissant progressivement les obstacles qu'on finit par atteindre le but recherché
    Bon courage
    Choisir, c'est renoncer...

  19. #39
    Membre du Club
    Profil pro
    Inscrit en
    Août 2006
    Messages
    106
    Détails du profil
    Informations personnelles :
    Localisation : Algérie

    Informations forums :
    Inscription : Août 2006
    Messages : 106
    Points : 55
    Points
    55
    Par défaut
    Merci Beaucoup OutOfRange, j'ai réussi enfin en limitant le nombre d'utilisations et c'est comme-suit

    //Initialisation le nbre d'utilisation à 1 à la 1ère utilisation//

    procedure TForm1.FormCreate(Sender: TObject);
    var
    Reg: TRegistry;
    begin
    Reg := TRegistry.Create;
    try
    with Reg do begin
    RootKey := HKEY_LOCAL_MACHINE;
    if OpenKey('\Software\Microsoft\Windows\CurrentVersion\Run', False)
    then WriteInteger('NB',1);
    end;

    finally
    Reg.Free;
    end;
    end;



    //Nombre d'utilisations incrémenté à chaque fermeture de l'application//
    procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
    var
    Reg: TRegistry;
    begin
    Reg := TRegistry.Create;
    try
    with Reg do begin
    RootKey := HKEY_LOCAL_MACHINE;
    if OpenKey('\Software\Microsoft\Windows\CurrentVersion\Run', False)
    then
    begin
    WriteInteger('NB',ReadInteger('NB')+1);
    end;
    end;

    finally
    Reg.Free;
    end;

    end;


    //Teste du nbre d'utilisations à chaque lancement//


    procedure TForm1.FormShow(Sender: TObject);
    var
    Reg: TRegistry;
    begin
    Reg := TRegistry.Create;
    try
    with Reg do begin
    RootKey := HKEY_LOCAL_MACHINE;
    if OpenKey('\Software\Microsoft\Windows\CurrentVersion\Run', False)
    then
    begin
    If ReadInteger('NB')>=100 then
    begin
    showMessage('Crédit épuisé');
    Application.Terminate;
    end;
    end;
    end;

    finally
    Reg.Free;
    end;
    end;

    Le problème n'est pas encore résolu puisque celà limite seulement le nombre d'utilisations pas la durée, je vais essayer de le faire avec les dates et si je trouve un problème je vous le signale.


    Merci à tous

  20. #40
    Membre à l'essai
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12
    Points : 13
    Points
    13
    Par défaut
    j'utilise exemod, une librairie que j'ai trouvé ici
    http://www.geocities.com/gacarpenter386/
    Les programmes dans lesquels je l'utilise passe sans probleme mon antivirus.
    Grâce à elle on peut stocker dans l'exe vraiment tout ce que l'on veut.

Discussions similaires

  1. Renouvellement du contrat de travail à durée déterminée
    Par president13 dans le forum Droit du travail
    Réponses: 2
    Dernier message: 21/12/2011, 14h41
  2. Executer du code pendant une durée déterminé
    Par vladimire dans le forum Débuter avec Java
    Réponses: 3
    Dernier message: 21/12/2008, 11h32
  3. Faire apparaître un texte une durée déterminée
    Par ketzaldev dans le forum JSF
    Réponses: 2
    Dernier message: 26/05/2008, 16h31
  4. Déterminer l'application qui a le Focus
    Par JakeGrafton dans le forum API, COM et SDKs
    Réponses: 2
    Dernier message: 22/02/2004, 12h52
  5. Déterminer l'adresse d'une application en mémoire
    Par Gib dans le forum x86 32-bits / 64-bits
    Réponses: 9
    Dernier message: 11/06/2002, 14h27

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo