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 :

[Delphi 7] Paramétrage de l'application


Sujet :

Delphi

  1. #1
    Membre régulier
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2007
    Messages
    118
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2007
    Messages : 118
    Points : 89
    Points
    89
    Par défaut [Delphi 7] Paramétrage de l'application
    Bonjour a tous,

    J'aimerais savoir qu 'elle est la meilleure façon d'enregistrer les paramétrages d'une application.
    j ai travaillé auparavant avec les fichiers INI
    j ai entendu parlé de sqlLite serait il la meilleure solution? parapport au performance et la securité.
    nb: j'utilise SGBD (exp:firebird) pour les données.

    merci

  2. #2
    Membre expert
    Avatar de Charly910
    Homme Profil pro
    Ingénieur TP
    Inscrit en
    Décembre 2006
    Messages
    2 346
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur TP
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 346
    Points : 3 124
    Points
    3 124
    Par défaut
    Bonjour,
    sous Windows, la base de registre est normalement faite pour cela. Sinon le fichier ini a l'avantage de pouvoir être sauvegardé à part.

    A+
    Charly

  3. #3
    Membre régulier
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2007
    Messages
    118
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2007
    Messages : 118
    Points : 89
    Points
    89
    Par défaut
    mais l inconvénient du fichier INI (mm les registres) que peuvent être modifier(supprimer) sans passé par l 'application

  4. #4
    Membre expert
    Avatar de Charly910
    Homme Profil pro
    Ingénieur TP
    Inscrit en
    Décembre 2006
    Messages
    2 346
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur TP
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 346
    Points : 3 124
    Points
    3 124
    Par défaut
    Bonjour,
    Les tables d'une base de données peuvent aussi être supprimés en dehors de l'application.

    Si tu "caches" bien tes paramètres dans la base de registre, il sera très difficile à un utilisateur de les trouver.

    A+
    Charly

  5. #5
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 469
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 13 469
    Points : 24 905
    Points
    24 905
    Par défaut
    Si tu es déjà connecté à une base, il y a pas d'intérêt d'avoir des fichiers locaux
    En cas de mise à jour, cela peut-être une plaie à maintenir

    Depuis l'apparition de l'UAC, j'évite les fichiers INI dont une copie est mise dans le VirtualStore
    Pour le registre, j'évite mais parce que c'est lié à l'habitude de CITRIX avec des fermes de serveur avec des raz régulière rendant la BDR obsolète (ainsi que les ini locaux qui sont déportés sur un disque réseau)

    Je me suis créé une table qui ressemble à un fichier ini avec une classe qui l'utilise comme un INI

    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    CREATE TABLE T_REMOTED_INI
    (
      RI_N_INI_ID     NUMBER(9) CONSTRAINT NN_RI_INI_ID NOT NULL,
      RI_CH_INI_NAME  VARCHAR2(255 BYTE)            NOT NULL
    )
     
     
    CREATE TABLE T_REMOTED_INI_VALUES
    (
      RI_N_INI_ID     NUMBER(9) CONSTRAINT NN_RIV_INI_ID NOT NULL,
      RIV_CH_OSUSER   VARCHAR2(255 BYTE),
      SAL_N_NUMFICHE  NUMBER(9),
      MHO_CH_CODE     VARCHAR2(4 BYTE),
      RIV_CH_SECTION  VARCHAR2(255 BYTE)            NOT NULL,
      RIV_CH_KEY      VARCHAR2(255 BYTE)            NOT NULL,
      RIV_CH_VALUE    VARCHAR2(4000 BYTE)
    )

    je peux stocker des informations lié à la session Windows, au nom du poste client (et non le serveur citrix), lié à code utilisateur métier, lié à sa localisation métier

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
     
      TxxxxIniRemoted = class(TObject)
      public
        const
          GLOBAL = '*';
          OSUSER_AS_COMPUTER = 'COMPUTER_';
        type
          TSectionsValue = record
            Key: string;
            TextValue: string;
            OSUser: string;
            Localisation: string;
            NumeroSalarie: Integer;
          end;
          TSectionsValues = array of TSectionsValue;
      private
        class var FQueryRead: TOraQuery;
        class var FQueryWrite: TOraQuery;
        class var FQuerySectionExists: TOraQuery;
        class var FQueryEraseSection: TOraQuery;
        class var FQueryReadSectionValues: TOraQuery;
     
        class function InternalReadValue(DBSession: TOraSession; const AFileName, ASection, AIdent: string; const ADefault: Variant; out AValue: Variant; const AOSUser: string = ''; const ALocalisation: string = ''; ANumeroSalarie: Integer = 0): Boolean;
        class procedure InternalWriteValue(DBSession: TOraSession; const AFileName, ASection, AIdent: string; const AValue: Variant; const AOSUser: string = ''; const ALocalisation: string = ''; ANumeroSalarie: Integer = 0);
        class procedure InternalEraseSection(DBSession: TOraSession; const AFileName, ASection: string; const AOSUser: string = ''; const ALocalisation: string = ''; ANumeroSalarie: Integer = 0);
        class function InternalSectionExists(DBSession: TOraSession; const AFileName, ASection: string; const AOSUser: string = ''; const ALocalisation: string = ''; ANumeroSalarie: Integer = 0): Boolean;
        class function InternalReadSectionValues(DBSession: TOraSession; const AFileName, ASection: string; const AOSUser: string = ''; const ALocalisation: string = ''; ANumeroSalarie: Integer = 0): TSectionsValues;
      public
        // Constructeurs de Classe
        class destructor Destroy();
     
        // Méthodes de Classe
        class function GetClientUser(): string;
        class function GetClientComputer(AWithPrefix: Boolean = True): string;
     
        class function ReadString(DBSession: TOraSession; const AFileName, ASection, AIdent, ADefault: string; const ALocalisation: string = ''; ANumeroSalarie: Integer = 0): string;
        class procedure WriteString(DBSession: TOraSession; const AFileName, ASection, AIdent, AValue: string; const ALocalisation: string = ''; ANumeroSalarie: Integer = 0);
        class function ReadBoolean(DBSession: TOraSession; const AFileName, ASection, AIdent: string; ADefault: Boolean; const ALocalisation: string = ''; ANumeroSalarie: Integer = 0): Boolean;
        class procedure WriteBoolean(DBSession: TOraSession; const AFileName, ASection, AIdent: string; AValue: Boolean; const ALocalisation: string = ''; ANumeroSalarie: Integer = 0);
        class function ReadInteger(DBSession: TOraSession; const AFileName, ASection, AIdent: string; ADefault: Integer; const ALocalisation: string = ''; ANumeroSalarie: Integer = 0): Integer;
        class procedure WriteInteger(DBSession: TOraSession; const AFileName, ASection, AIdent: string; AValue: Integer; const ALocalisation: string = ''; ANumeroSalarie: Integer = 0);
        class function ReadFloat(DBSession: TOraSession; const AFileName, ASection, AIdent: string; ADefault: Double; const ALocalisation: string = ''; ANumeroSalarie: Integer = 0): Double;
        class procedure WriteFloat(DBSession: TOraSession; const AFileName, ASection, AIdent: string; AValue: Double; const ALocalisation: string = ''; ANumeroSalarie: Integer = 0);
        class procedure DeleteValue(DBSession: TOraSession; const AFileName, ASection, AIdent: string; const ALocalisation: string = ''; ANumeroSalarie: Integer = 0);
     
        class function ReadUserString(DBSession: TOraSession; const AFileName, ASection, AIdent, ADefault: string; const AOSUser: string = ''; const ALocalisation: string = ''; ANumeroSalarie: Integer = 0): string;
        class procedure WriteUserString(DBSession: TOraSession; const AFileName, ASection, AIdent, AValue: string; const AOSUser: string = ''; const ALocalisation: string = ''; ANumeroSalarie: Integer = 0);
        class function ReadUserBoolean(DBSession: TOraSession; const AFileName, ASection, AIdent: string; ADefault: Boolean; const AOSUser: string = ''; const ALocalisation: string = ''; ANumeroSalarie: Integer = 0): Boolean;
        class procedure WriteUserBoolean(DBSession: TOraSession; const AFileName, ASection, AIdent: string; AValue: Boolean; const AOSUser: string = ''; const ALocalisation: string = ''; ANumeroSalarie: Integer = 0);
        class function ReadUserInteger(DBSession: TOraSession; const AFileName, ASection, AIdent: string; ADefault: Integer; const AOSUser: string = ''; const ALocalisation: string = ''; ANumeroSalarie: Integer = 0): Integer;
        class procedure WriteUserInteger(DBSession: TOraSession; const AFileName, ASection, AIdent: string; AValue: Integer; const AOSUser: string = ''; const ALocalisation: string = ''; ANumeroSalarie: Integer = 0);
        class function ReadUserFloat(DBSession: TOraSession; const AFileName, ASection, AIdent: string; ADefault: Double; const AOSUser: string = ''; const ALocalisation: string = ''; ANumeroSalarie: Integer = 0): Double;
        class procedure WriteUserFloat(DBSession: TOraSession; const AFileName, ASection, AIdent: string; AValue: Double; const AOSUser: string = ''; const ALocalisation: string = ''; ANumeroSalarie: Integer = 0);
        class procedure DeleteUserValue(DBSession: TOraSession; const AFileName, ASection, AIdent: string; const AOSUser: string = ''; const ALocalisation: string = ''; ANumeroSalarie: Integer = 0);
     
        class function KeyExists(DBSession: TOraSession; const AFileName, ASection, AIdent: string; const AOSUser: string = ''; const ALocalisation: string = ''; ANumeroSalarie: Integer = 0): Boolean;
        class function SectionExists(DBSession: TOraSession; const AFileName, ASection: string; const ALocalisation: string = ''; ANumeroSalarie: Integer = 0): Boolean;
        class procedure EraseSection(DBSession: TOraSession; const AFileName, ASection: string; const ALocalisation: string = ''; ANumeroSalarie: Integer = 0);
     
        class function ReadSectionValues(DBSession: TOraSession; const AFileName, ASection: string; out ASectionValues: TSectionsValues): Integer;
        class function ReadSectionValuesOfUser(DBSession: TOraSession; const AFileName, ASection, AOSUser: string; out ASectionValues: TSectionsValues): Integer;
        class function ReadSectionValuesOfLocalisation(DBSession: TOraSession; const AFileName, ASection, ALocalisation: string; out ASectionValues: TSectionsValues): Integer;
        class function ReadSectionValuesOfSalarie(DBSession: TOraSession; const AFileName, ASection: string; ANumeroSalarie: Integer; out ASectionValues: TSectionsValues): Integer;
     
        class function UserSectionExists(DBSession: TOraSession; const AFileName, ASection: string; const AOSUser: string = ''; const ALocalisation: string = ''; ANumeroSalarie: Integer = 0): Boolean;
        class procedure EraseUserSection(DBSession: TOraSession; const AFileName, ASection: string; const AOSUser: string = ''; const ALocalisation: string = ''; ANumeroSalarie: Integer = 0);
     
        class procedure MigrationLocalToRemoted(DBSession: TOraSession; const AFileName: string; const ARemotedFileName: string; const ALocalisation: string);
      end;
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

  6. #6
    Membre régulier
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2007
    Messages
    118
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2007
    Messages : 118
    Points : 89
    Points
    89
    Par défaut
    merci pour les reponses
    je vais voir

Discussions similaires

  1. [ZF 1.9] Paramètrage d'une application modulaire
    Par akrogames dans le forum MVC
    Réponses: 1
    Dernier message: 24/03/2010, 15h42
  2. [Delphi 2009] Icone de l'application
    Par stanislas dans le forum EDI
    Réponses: 3
    Dernier message: 05/11/2009, 09h49
  3. [Delphi 2007]Lenteur de l'application
    Par davels dans le forum EDI
    Réponses: 2
    Dernier message: 19/03/2009, 01h05
  4. Delphi 6 comunique avec une application J2EE
    Par eristale dans le forum API, COM et SDKs
    Réponses: 2
    Dernier message: 12/10/2007, 11h32
  5. [Delphi.net]Structuration d'une application asp.net
    Par skywaukers dans le forum Delphi .NET
    Réponses: 7
    Dernier message: 28/12/2006, 11h50

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