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

Contribuez Delphi Discussion :

Suggestion modification FAQ


Sujet :

Contribuez Delphi

  1. #1
    Membre régulier Avatar de Nicolas Coolman
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2006
    Messages
    133
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2006
    Messages : 133
    Points : 76
    Points
    76
    Par défaut Suggestion modification FAQ
    Hello,

    Ce message sera à déplacer par un modérateur dans sa bonne rubrique !

    Tout d'abord, je tiens à dire un grand bravo à tous les développeurs qui contribuent à la qualité de la FAQ Delphi.

    Je voudrais vous faire une suggestion de modification de code pour la FAQ :
    Comment sauvegarder la base de registre ?

    Première remarque :
    -------------------
    Son éxécution est contraignante dans le sens où elle oblige à saisir un TimeOut comme paramètre. J'ai testé sur plusieurs stations et cela oblige a ajuster pour chacune d'elle ce paramètre. Dans le cas d'une application diffusée au public cela devient pratiquement impossible à paramétrer un délai standard à moins de mettre un délai de plusieurs dizaines de secondes pour palier tous les cas possibles mais cela pénalise alors ceux qui ont des processeurs rapides. Il est donc préférable d'inclure un 'WAIT_TIMEOUT' au niveau du WaitForSingleObject.

    Deuxième remarque :
    -------------------
    Le curseur de recherche s'efface alors que le traitement n'est pas encore terminé etcela fait penser à un possible plantage mais ce n'est pas le cas.
    Il serait préférable d'inclure la gestion du curseur afin d'avoir jusqu'à la fin l'affichage du curseur de recherche.

    Voici mon code modifié qui corrige ces deux points.


    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
     
    //=================================================================
    procedure SaveRegister(sFileName : SHortString);
    //=================================================================
    // sFileName est le chemin et le nom de fichier à créer
    //(ex:'C:\TestSave.reg')
    Var
      StartInfo: TStartupInfo;
      ProcessInfo: TProcessInformation;
      Fin: Boolean;
      oldCursor : TCursor;
     
    Begin
     
      //Gestion du curseur
      oldCursor := Screen.Cursor; // On enregistre le curseur utilisé
      Screen.Cursor := crHourglass; // On le remplace par le sablier (ou le cercle pour Vista)
     
      // Mise à zéro de la structure StartInfo
      FillChar(StartInfo, SizeOf(StartInfo), #0);
     
      // Seule la taille est renseignée, toutes les autres options }
      // laissées à zéro prendront les valeurs par défaut }
      StartInfo.cb := SizeOf(StartInfo);
     
      // Lancement de la ligne de commande
      If CreateProcess(Nil, PChar('regedit.exe /se ' +sFileName),
        Nil, Nil, False, 0, Nil, Nil, StartInfo, ProcessInfo) Then begin
     
     
           // L'application est bien lancée, on va en attendre la fin
           // ProcessInfo.hProcess contient le handle du process principal de l'application
           Fin:=False;
           Repeat
             // On attend la fin de l'application
             Case WaitForSingleObject(ProcessInfo.hProcess, 200)Of
               WAIT_OBJECT_0 :Fin:=True; // L'application est terminée, on sort
               WAIT_TIMEOUT  :;          // elle n'est pas terminée, on continue d'attendre
             End;
             //Mise à jour de la fenêtre pour que l'application ne paraisse pas bloquée.
             Application.ProcessMessages;
           Until Fin;
     
           //La sauvegarde terminée
           ShowMessage('La sauvegarde du registre est terminée.');
     
           // On Remet le curseur.
           Screen.Cursor := oldCursor;
     
      End
      Else RaiseLastOSError;
     
    end;
    Bonne journée à tous

  2. #2
    Expert éminent sénior
    Avatar de Paul TOTH
    Homme Profil pro
    Freelance
    Inscrit en
    Novembre 2002
    Messages
    8 964
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Freelance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2002
    Messages : 8 964
    Points : 28 445
    Points
    28 445
    Par défaut
    il serait plus simple de placer le CreateProcess dans un Thread
    Developpez.com: Mes articles, forum FlashPascal
    Entreprise: Execute SARL
    Le Store Excute Store

  3. #3
    Membre régulier Avatar de Nicolas Coolman
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2006
    Messages
    133
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2006
    Messages : 133
    Points : 76
    Points
    76
    Par défaut
    Hello Paul TOTH,

    Bien sûr mais je n'ai pas voulu modifier profondement cette FAQ, mais juste ce qu'il faut pour qu'elle puisses s'appliquer plus facilement.

    A bientôt...

  4. #4
    Rédacteur
    Avatar de Pedro
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    5 411
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 5 411
    Points : 8 078
    Points
    8 078
    Par défaut
    Merci pour ta proposition, je la transmets à l'équipe

    @Paul: effectivement, mieux vaut simplifier au maximum pour la FAQ mais dans le fond, tu as raison
    Pedro
    Aucune réponse aux sollicitations techniques par MP

    Faut pas attendre d'en avoir besoin pour s'en servir... (Lucien Stéphane)

    Les pages Source C'est bon. Mangez-en!
    Le défi Delphi
    Règles du forum - FAQ Delphi - Pensez au chtit
    Aéroclub Bastia Saint-Exupéry

Discussions similaires

  1. Nouvelle FAQ OpenGL en ligne : commentaires et suggestions
    Par LittleWhite dans le forum OpenGL
    Réponses: 7
    Dernier message: 02/05/2016, 19h54
  2. La FAQ MySQL - commentaires & suggestions
    Par yiannis dans le forum Contribuez
    Réponses: 48
    Dernier message: 25/06/2013, 14h59
  3. modif faq pour envoi de mail sous VB.net 2010
    Par Nic0s dans le forum Contribuez
    Réponses: 0
    Dernier message: 15/03/2011, 22h05
  4. Réponses: 42
    Dernier message: 23/12/2010, 01h41
  5. Nouvelle FAQ DirectX en ligne : commentaires et suggestions
    Par LittleWhite dans le forum DirectX
    Réponses: 5
    Dernier message: 13/10/2009, 09h26

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