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

Langage Delphi Discussion :

créer une version de demo à partir de la version complète


Sujet :

Langage Delphi

  1. #1
    Membre habitué
    Homme Profil pro
    retraité
    Inscrit en
    Mars 2003
    Messages
    382
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Mars 2003
    Messages : 382
    Points : 161
    Points
    161
    Par défaut créer une version de demo à partir de la version complète
    Bonjour,

    J'ai un petit problème. j'ai une version complète et à partir de cette version je veux créer une nouvelle appli de démonstration dans laquelle je limite les possibilités (modif du code)

    J'ai fait une copie du dossier ou se trouve ma version complète dans un nouveau dossier puis j'ai enregistré le projet sous un nouveau nom dans le nouveau dossier (j'ai supprimé manuellement l'ancien projet). Mais chaque fois que je fait une modif sur le nouveau projet il se répercute sur la version complète.

    Comment remédier à ce problème ?
    75 ans quelques dents en moins, mais toujours envie d'apprendre

  2. #2
    Rédacteur/Modérateur
    Avatar de Andnotor
    Inscrit en
    Septembre 2008
    Messages
    5 694
    Détails du profil
    Informations personnelles :
    Localisation : Autre

    Informations forums :
    Inscription : Septembre 2008
    Messages : 5 694
    Points : 13 130
    Points
    13 130
    Par défaut
    Edite le DPR et contrôle le uses. Tu as certainement des chemins en absolu.

    Mais faire une copie du projet complet n'est pas la meilleure chose à faire. Tu devras maintenir deux applications en parallèle.

    Ne copie que le DPR (en le sauvant sous un autre nom) et ajoute-lui une condition de compilation (ex. DEMO). Dans ton code, tu n'as plus qu'à limiter la version demo par des {$IFNDEF DEMO}. Tu n'auras ainsi qu'une seule source pour les 2 applications .

  3. #3
    Membre habitué
    Homme Profil pro
    retraité
    Inscrit en
    Mars 2003
    Messages
    382
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Mars 2003
    Messages : 382
    Points : 161
    Points
    161
    Par défaut
    Merci pour la réponse, en effet il y des chemins en absolu. De plus comme tu le dis avec ma méthode je suis obligé de gérer deux appli distinctes. Donc j'aimerais bien utiliser ta méthode de compil avec une condition mais j'avoue que je suis VRAIMENT pas familier des conditions de compil.

    Pourrais tu m'éclairer un peu plus ?

    Si je comprend bien il faut que je compil mon appli "mère" avec une condition "demo" par exemple. (en gros ça va faire quoi ?)
    Dans mon dossier d'appli "mère" es ce que je vais avoir un projet "demo-quelque chose" et mon projet d'origine ? et lorsque je vais compiler mon projet "demo-quleque chose" es ce que je vais avoir un fichier "demo-quelque chose.exe"?

    merci de votre patiente
    75 ans quelques dents en moins, mais toujours envie d'apprendre

  4. #4
    Membre expérimenté Avatar de guillemouze
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    876
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Novembre 2004
    Messages : 876
    Points : 1 448
    Points
    1 448
    Par défaut
    2 possibilités
    1- tu utilise un seul dpr, dans lequel tu va mettre une directive DEMO (dans projet->options->repertoire/conditions->Definitions), que tu ajoutera ou suppirmera selon que tu veuille compiler en mode demo ou pas. Dans ce cas, tu aura le meme nom d'exe
    2- tu utilise deux dpr, un contenant la definition, l'autre non. Dans ce cas, les 2 exe auront des noms differents (ceux des 2 dpr).

    dans tous les cas, tu differencie le code comme suit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    {$IFDEF DEMO}
    //Ce code sera executé seulement dans la demo
    {$ENDIF}
    //Ce code sera executé pour les 2 versions
    {$IFNDEF DEMO}
    //Ce code sera executé seulement dans la version complete
    {$ENDIF}

  5. #5
    Rédacteur/Modérateur
    Avatar de Andnotor
    Inscrit en
    Septembre 2008
    Messages
    5 694
    Détails du profil
    Informations personnelles :
    Localisation : Autre

    Informations forums :
    Inscription : Septembre 2008
    Messages : 5 694
    Points : 13 130
    Points
    13 130
    Par défaut
    guillemouze a bien résumé . (personnellement, je ferais 2 DPR distincts)

    Ne pas oublier! Quand tu passes d'un projet à l'autre, force une reconstruction sinon le projet pourrait utiliser les DCUs compilés dans l'autre mode.

  6. #6
    Membre éprouvé
    Avatar de Dr.Who
    Inscrit en
    Septembre 2009
    Messages
    980
    Détails du profil
    Informations personnelles :
    Âge : 45

    Informations forums :
    Inscription : Septembre 2009
    Messages : 980
    Points : 1 294
    Points
    1 294
    Par défaut
    Citation Envoyé par guillemouze Voir le message
    2 possibilités
    1- tu utilise un seul dpr, dans lequel tu va mettre une directive DEMO (dans projet->options->repertoire/conditions->Definitions), que tu ajoutera ou suppirmera selon que tu veuille compiler en mode demo ou pas. Dans ce cas, tu aura le meme nom d'exe
    2- tu utilise deux dpr, un contenant la definition, l'autre non. Dans ce cas, les 2 exe auront des noms differents (ceux des 2 dpr).

    dans tous les cas, tu differencie le code comme suit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    {$IFDEF DEMO}
    //Ce code sera executé seulement dans la demo
    {$ENDIF}
    //Ce code sera executé pour les 2 versions
    {$IFNDEF DEMO}
    //Ce code sera executé seulement dans la version complete
    {$ENDIF}

    TOUT A FAIT! c'est LA meilleure solution!


    les directives de compilation sont justement faite pour ce genre de chose.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    unit Main;
     
    interface 
     
    {$DEFINE FULLVERSION}
    {.$UNDEF FULLVERSION} // activer ? enlever le "."
    // genere une version demo par defaut.
     
    uses ...;
    puis :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    procedure TForm.SauverFichierClick(Sender: TObject);
    begin
    {$IFNDEF FULLVERSION}
      ShowMessage('La sauvegarde est indisponible en version Demo.');
    {$ELSE}
      SauverFichier(fCurrentFile);
    {$ENDIF}
    end;
    ou encore pour faire une version bridée (donc piratable)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    const
      FullVersion = {$IFNDEF FULLVERSION} false {$ELSE} true{$ENDIF};
     
    procedure TForm.SauverFichier(const FileName: string);
    const
      Ext : array[boolean] of string = ('.demo.jpg','.jpg');
      Quality : array[boolean] of TJPEGQuality = (jqLow, jqHigh);
    begin
      SauvegardeJPG(ChangeFileExt(FileName, Ext[FullVersion]), Quality[FullVersion]);
    end;
    [ Sources et programmes de Dr.Who | FAQ Delphi | FAQ Pascal | Règlement | Contactez l'équipe ]
    Ma messagerie n'est pas la succursale du forum... merci!

  7. #7
    Membre expérimenté Avatar de guillemouze
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    876
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Novembre 2004
    Messages : 876
    Points : 1 448
    Points
    1 448
    Par défaut
    Citation Envoyé par Andnotor Voir le message
    Ne pas oublier! Quand tu passes d'un projet à l'autre, force une reconstruction sinon le projet pourrait utiliser les DCUs compilés dans l'autre mode.
    Cette remarque est extremement importante, car il y a de tres grandes chances que ce ne soit pas fait automatiquement.

    Quant au message de DrWho, fait tres attention
    dans une unité ne defini cette directive seulement pour cette unité, apres cette ligne. Pour l'appliquer a toutes les unités, ajoute la directive dans les options du projet

  8. #8
    Membre habitué
    Homme Profil pro
    retraité
    Inscrit en
    Mars 2003
    Messages
    382
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Mars 2003
    Messages : 382
    Points : 161
    Points
    161
    Par défaut
    Merci à tous, je vais me pencher sur cette solution
    75 ans quelques dents en moins, mais toujours envie d'apprendre

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 3
    Dernier message: 21/11/2007, 08h32
  2. créer une table ds MySQL à partir de java
    Par emin87 dans le forum JDBC
    Réponses: 14
    Dernier message: 06/04/2007, 17h55
  3. créer une table ds MySQL à partir de java
    Par emin87 dans le forum Requêtes
    Réponses: 3
    Dernier message: 06/04/2007, 09h35
  4. Créer une variable d'environnement à partir d'une liste de fichier
    Par ddams dans le forum Shell et commandes GNU
    Réponses: 2
    Dernier message: 23/02/2007, 20h03
  5. créer une base de donnée à partir d'un script
    Par illegalsene dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 26/08/2005, 14h08

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