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

Lazarus Pascal Discussion :

Gestion des erreurs dans des classes et traduction des messages [Lazarus]


Sujet :

Lazarus Pascal

  1. #1
    Expert confirmé
    Avatar de BeanzMaster
    Homme Profil pro
    Amateur Passionné
    Inscrit en
    Septembre 2015
    Messages
    1 899
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Amateur Passionné
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Septembre 2015
    Messages : 1 899
    Points : 4 346
    Points
    4 346
    Billets dans le blog
    2
    Par défaut Gestion des erreurs dans des classes et traduction des messages
    Bonsoir à tous,

    Pour gérer les erreurs nous avons le système avec les Exceptions dans mon cas :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    if not Assigned(Result) then
       raise EInvalidImageFile.CreateFmt('Format de fichier non supporté (%s,%s)',
         [ext, 'GLZImageFile' + UpperCase(ext)]);
    En mode "debug" nous avons cette petite fenêtre :

    Nom : 2017-08-16_154213.jpg
Affichages : 512
Taille : 25,0 Ko

    et en mode "Conception" nous avons celle-ci :

    Nom : 2017-08-17_222843.jpg
Affichages : 524
Taille : 14,2 Ko

    Ce n'est pas le mode débug qui me pose problème, mais à la conception

    Par exemple dans mon programme pour charger un fichier j'ai la fonction suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    procedure TMainForm.FormDropFiles(Sender: TObject;const FileNames: array of String);
    begin
       BmpFileName := FileNames[0];
       Screen.Cursor:=crHourGlass;
       ImageView1.Picture.LoadFromFile(BmpFileName); // ---> L'EXCEPTION EST LEVEE DANS CETTE PROCEDURE
       Screen.Cursor:=crDefault;
       lblBmpName.Caption:=BmpFileName;
       IsUpdated:=True;
       ImageView1.Invalidate;
    end;
    Dans ce cas l'exception fait irrémédiablement sortir de la procedure et Screen.Cursor n'est pas exécuté.

    J'ai également testé ça : (même si il faut rajouter les unités Forms et Controls dans le Uses de l'implementation )

    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
     
    function TGLZImageFileFormatsList.FindFromFileName(const fileName: string): TGLZBitmapClass;
    var
     ext: string;
     Screen : TScreen = nil;
    begin
     ext := ExtractFileExt(Filename);
     System.Delete(ext, 1, 1);
     Result := FindExt(ext);
     if not Assigned(Result) then
     begin
       raise EInvalidImageFile.CreateFmt('Format de fichier non supporté (%s,%s)', [ext, 'GLZImageFile' + UpperCase(ext)]);
       Screen.Cursor:=crDefault;
     end;
    end;
    Idem :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Screen.Cursor:=crDefault;
    n'est pas exécuté.

    Le plus simple serait que ma fonction retourne un boolean, mais dans ce cas il faudrait que toute (une majorité retourne un boolean) et dans dans certain cas ce n'est pas faisable.

    Donc, concernant les exceptions :
    • Existe-t-il une autre façon de procéder pour avoir plus de contrôles ?
    • Faut-il se passer des exceptions et gérer soit même ce genre d'erreur afin de ne pas perturber le bon fonctionnement d'un programme ?
    • Faut-il utiliser les exceptions que dans des cas "Critiques" (Acces dans un pointer par exemple) ?


    En gros quel serai le meilleur chemin à suivre ?

    Concernant la traduction

    • Peux-t-on intégrer des fichiers "PO" pour la traductions des divers messages. Et lier ceux-ci à une unité ou bien un paquet de conception ? si oui comment faire marcher tout ce petit monde au pas ?
    • La procédure à suivre est-t-elle la même que pour traduire une application ?


    Merci

    A+
    • "L'Homme devrait mettre autant d'ardeur à simplifier sa vie qu'il met à la compliquer" - Henri Bergson
    • "Bien des livres auraient été plus clairs s'ils n'avaient pas voulu être si clairs" - Emmanuel Kant
    • "La simplicité est la sophistication suprême" - Léonard De Vinci
    • "Ce qui est facile à comprendre ou à faire pour toi, ne l'est pas forcément pour l'autre." - Mon pèrei

    Mes projets sur Github - Blog - Site DVP

  2. #2
    Expert éminent sénior
    Avatar de Jipété
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    10 796
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 10 796
    Points : 15 210
    Points
    15 210
    Par défaut
    Salut,

    As-tu tenté
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     Result := FindExt(ext);
     if not Assigned(Result) then
     begin
       Screen.Cursor:=crDefault;
       Application.ProcessMessages; // pour que l'instruction précédente soit exécutée
       raise EInvalidImageFile.CreateFmt('Format de fichier non supporté (%s,%s)', [ext, 'GLZImageFile' + UpperCase(ext)]);
     end;
    ?
    Il a à vivre sa vie comme ça et il est mûr sur ce mur se creusant la tête : peutêtre qu'il peut être sûr, etc.
    Oui, je milite pour l'orthographe et le respect du trait d'union à l'impératif.
    Après avoir posté, relisez-vous ! Et en cas d'erreur ou d'oubli, il existe un bouton « Modifier », à utiliser sans modération
    On a des lois pour protéger les remboursements aux faiseurs d’argent. On n’en a pas pour empêcher un être humain de mourir de misère.
    Mes 2 cts,
    --
    jp

  3. #3
    Expert confirmé
    Avatar de BeanzMaster
    Homme Profil pro
    Amateur Passionné
    Inscrit en
    Septembre 2015
    Messages
    1 899
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Amateur Passionné
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Septembre 2015
    Messages : 1 899
    Points : 4 346
    Points
    4 346
    Billets dans le blog
    2
    Par défaut
    Citation Envoyé par Jipété Voir le message
    Salut,

    As-tu tenté
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     Result := FindExt(ext);
     if not Assigned(Result) then
     begin
       Screen.Cursor:=crDefault;
       Application.ProcessMessages; // pour que l'instruction précédente soit exécutée
       raise EInvalidImageFile.CreateFmt('Format de fichier non supporté (%s,%s)', [ext, 'GLZImageFile' + UpperCase(ext)]);
     end;
    ?
    Non, mais maintenant oui et un bon gros SIGSEGV ici

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    {------------------------------------------------------------------------------
      procedure TScreen.SetCursor(const AValue: TCursor);
     ------------------------------------------------------------------------------}
    procedure TScreen.SetCursor(const AValue: TCursor);
    begin
      if AValue <> Cursor then -->Paf dans les dents
    Franchement de devoir faire un truc dans le genre ne m'emballe pas. Devoirs ajouter des unités servant à des contrôles graphique dans une unité ne les utilisant pas, c'est pas vraiment le top.

    Par contre un système de gestion d'erreur avec plusieurs niveau de sévérité, et qui réagirait en fonction de ce niveau. Serai nettement mieux (Un peu comme je fait en PHP en gros )

    Faut-t-il donc que je code ma propre classe de gestion d'erreur et l'utiliser comme un pont avec des exceptions (1 par niveau) et utiliser une jolie fonction du nom de Invoke(Level,Message) ?

    Un truc dans le genre, vite fait
    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
     
    Type
      ENoticeError = class(Exception);    // Exception Ou pas ??? affichage avec "ShowMessage" ? Ecriture dans un log ? Les 2 ?
      EWarningError = class(Exception); // Ideml ci-dessus
      ECriticalError = class(Exception);
      EFatalError = class(Exception);
     
    Type
      TErrorLevel = (elNone, elInfo,  elNotice, elWarning, elCritical, elFatal);
     
    Type
      TErrorHandler = class
      private
         FList : TErrorList;
      public
        function Add(Level, Msg); : Integer;
        Function Invoque(Const Level : TErrorLevel; Msg : String);
        Function Invoque(Const ErrorIndex : Integer);
     
      end;
     
    // Variable globale, initialiser dans la partie Initialization de l'unité
    Var
      ErrorManager : TErrorHandler;
    Vous en pensez quoi ?
    • "L'Homme devrait mettre autant d'ardeur à simplifier sa vie qu'il met à la compliquer" - Henri Bergson
    • "Bien des livres auraient été plus clairs s'ils n'avaient pas voulu être si clairs" - Emmanuel Kant
    • "La simplicité est la sophistication suprême" - Léonard De Vinci
    • "Ce qui est facile à comprendre ou à faire pour toi, ne l'est pas forcément pour l'autre." - Mon pèrei

    Mes projets sur Github - Blog - Site DVP

  4. #4
    Expert éminent
    Avatar de jurassic pork
    Homme Profil pro
    Bidouilleur
    Inscrit en
    Décembre 2008
    Messages
    3 986
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Bidouilleur
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2008
    Messages : 3 986
    Points : 9 361
    Points
    9 361
    Par défaut
    hello,
    Question bête : Pourquoi n'utilises-tu pas un try ... finally comme ceci par exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    begin
       try
         BmpFileName := 'FauxFichier.bmp';
         Screen.Cursor:=crHourGlass;
         ImageView1.Picture.LoadFromFile(BmpFileName); // ---> L'EXCEPTION EST LEVEE DANS CETTE PROCEDURE
         lblBmpName.Caption:=BmpFileName;
         IsUpdated:=True;
         ImageView1.Invalidate;
       finally
         Screen.Cursor:=crDefault;
       end;
    end;
    Ami calmant, J.P (santé)
    Jurassic computer : Sinclair ZX81 - Zilog Z80A à 3,25 MHz - RAM 1 Ko - ROM 8 Ko

  5. #5
    Expert confirmé
    Avatar de BeanzMaster
    Homme Profil pro
    Amateur Passionné
    Inscrit en
    Septembre 2015
    Messages
    1 899
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Amateur Passionné
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Septembre 2015
    Messages : 1 899
    Points : 4 346
    Points
    4 346
    Billets dans le blog
    2
    Par défaut
    Citation Envoyé par jurassic pork Voir le message
    hello,
    Question bête : Pourquoi n'utilises-tu pas un try ... finally comme ceci par exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    begin
       try
         BmpFileName := 'FauxFichier.bmp';
         Screen.Cursor:=crHourGlass;
         ImageView1.Picture.LoadFromFile(BmpFileName); // ---> L'EXCEPTION EST LEVEE DANS CETTE PROCEDURE
         lblBmpName.Caption:=BmpFileName;
         IsUpdated:=True;
         ImageView1.Invalidate;
       finally
         Screen.Cursor:=crDefault;
       end;
    end;
    Ami calmant, J.P (santé)
    Que je suis c... ! C'était tellement simple que je n'y avais pas pensé. Oui comme ça cela fonctionne pour ce cas. Masi je lève d'autres exceptions ailleurs, et ou appliquer un bloque Try..Finally est beacoup moins aisé.
    De même ici par exemple l'erreur en elle même n'est pas "grave" je la classerai dans "Notice" ou "Warning" le choix "Ok" de la boite de dialogue est quelque peu "Agressif" je trouve dans ce cas. Est -t-il possible de personnaliser la boite de dialogue d'erreur ?
    • "L'Homme devrait mettre autant d'ardeur à simplifier sa vie qu'il met à la compliquer" - Henri Bergson
    • "Bien des livres auraient été plus clairs s'ils n'avaient pas voulu être si clairs" - Emmanuel Kant
    • "La simplicité est la sophistication suprême" - Léonard De Vinci
    • "Ce qui est facile à comprendre ou à faire pour toi, ne l'est pas forcément pour l'autre." - Mon pèrei

    Mes projets sur Github - Blog - Site DVP

  6. #6
    Membre chevronné

    Homme Profil pro
    au repos
    Inscrit en
    Février 2014
    Messages
    429
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : au repos

    Informations forums :
    Inscription : Février 2014
    Messages : 429
    Points : 1 884
    Points
    1 884
    Par défaut
    Salut BM.

    Tu peux insérer un bloc try..except dans le bloc try..finally.

    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
    procedure TForm1.Button1Click(Sender: TObject);
    var
      A, B: integer;
    begin
      A:= 100;
      B:= 0;
      try
         try
           A:= A div B;
         except
           Showmessage('division par zéro');
         end;
      finally
        Showmessage('finally');
      end;
    end;
    Ainsi le message classique d'exception n'apparaitra pas.
    Ceci ne marche qu'en mode exécution hors Lazarus, sauf à interdire les messages d'exception dans le bloc try..except (possible sous Delphi7, jamais tenté sous Lazarus).

    Cordialement
    Thierry

  7. #7
    Expert confirmé
    Avatar de BeanzMaster
    Homme Profil pro
    Amateur Passionné
    Inscrit en
    Septembre 2015
    Messages
    1 899
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Amateur Passionné
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Septembre 2015
    Messages : 1 899
    Points : 4 346
    Points
    4 346
    Billets dans le blog
    2
    Par défaut
    Je viens d'effectuer quelques recherches, j'ai trouvé quelques liens intéressant que je partage avec vous dans un premier temps.
    La plupart c'est pour Delphi. Mais bon. La base, du pascal reste du pascal.

    En français :
    - https://eric.univ-lyon2.fr/~ricco/co...rs_delphi.html Plein de liens intéressants
    - https://delphi.developpez.com/cours/...n-des-erreurs/
    - http://flash-koti.developpez.com/art...tionexception/ et
    http://fbeaulieu.developpez.com/guide/?page=page_19. Ca c'est plus ce que je recherche. Je vais testé.
    - https://www.gladir.com/CODER/DELPHI/exception.htm
    - https://www.gladir.com/CODER/FREEPASCAL/exception.htm
    - http://delphipage.free.fr/exceptions.html

    En anglais

    - http://stevepeacocke.blogspot.ch/200...ptfinally.html

    Donc le mieux, si j'ai pigé le truc, serait :

    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
     
    begin
       Try
         Screen.Cursor:=crHourGlass;
         Try
           BmpFileName := FileNames[0];
           ImageView1.Picture.LoadFromFile(BmpFileName);
         Finally
           Screen.Cursor:=crDefault;
           lblBmpName.Caption:=BmpFileName;
           IsUpdated:=True;
           ImageView1.Invalidate;
         end;
       Except
         On E : EInvalidImageFile do
         begin
           Screen.Cursor:=crDefault;
           MessageDlg(E.Message, mtWarning, [mbOk], 0);
         end;
         else MessageDlg('Erreur Inconnue : '+
          #13+#10+'Ok pour continuer'+#13+#10+'Abandonner pour quitter l''application', mtError, [mbOk, mbAbort], 0);
       end;
    end;
    Bon je vais creusé un peu plus.
    Sinon une des solution serai que je passe par le composant TApplicationProperties.OnException. Mais savez vous si il existe un moyen "externe" sans utiliser ce composant ?

    EDIT : Salut et merci Thierry, nos message se sont croisés

    REEDIT : Petites questions subsidiaires. Le code ci-dessus fonctionne mais la bonne formule c'est pas plutôt ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     try
             try
                  ....
                 On Except....
             end;
         Finally
            .....
        end;
    Y a-t-il une différence de mettre Finally après except vu que d'après ce que j'ai lu Finally propage l'exception levée ?
    • "L'Homme devrait mettre autant d'ardeur à simplifier sa vie qu'il met à la compliquer" - Henri Bergson
    • "Bien des livres auraient été plus clairs s'ils n'avaient pas voulu être si clairs" - Emmanuel Kant
    • "La simplicité est la sophistication suprême" - Léonard De Vinci
    • "Ce qui est facile à comprendre ou à faire pour toi, ne l'est pas forcément pour l'autre." - Mon pèrei

    Mes projets sur Github - Blog - Site DVP

  8. #8
    Expert confirmé
    Avatar de BeanzMaster
    Homme Profil pro
    Amateur Passionné
    Inscrit en
    Septembre 2015
    Messages
    1 899
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Amateur Passionné
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Septembre 2015
    Messages : 1 899
    Points : 4 346
    Points
    4 346
    Billets dans le blog
    2
    Par défaut
    Salut à tous, après quelques lectures intéressantes. j'en suis venu à rajouter une variable CatchError, afin d'obtenir le comportement que je désire :

    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
    Procedure Tform1.Formdropfiles(Sender : Tobject; Const Filenames : Array Of String);
    Var CatchError:Boolean;
    begin
       CatchError:=False;
       Try
         Screen.Cursor:=crHourGlass;
         Try
           ImageFileName := FileNames[0];
           ImageView.Picture.LoadFromFile(ImageFileName);
         Except
           On E : EInvalidImageFile do
           begin
             MessageDlg(E.Message, mtWarning, [mbOk], 0); // Exemple Format de fichier non supporté, rien de bien méchant, mais néanmoins une erreur.
             CatchError:=True;
           end
           else
           begin
             MessageDlg('Erreur Inconnue : '+//E.Message+
             #13+#10+'Ok pour continuer'+#13+#10+'Abandonner pour quitter l''application', mtError, [mbOk, mbAbort], 0);
           end;
         end;
       Finally
         Screen.Cursor:=crDefault;
         if CatchError then
         begin
           Exit;
         end
         else
         begin
           panel2.Caption:= imageFileName;
           IsUpdated:=True;
           ImageView.Invalidate;
         end;
       end;
    End;
    Existe-t-il un moyen de se passer la variable "CatchError" ? faut-il que j'intercepte l'erreur dans Finally..End mais rien vu de semblable dans mes recherches.
    • "L'Homme devrait mettre autant d'ardeur à simplifier sa vie qu'il met à la compliquer" - Henri Bergson
    • "Bien des livres auraient été plus clairs s'ils n'avaient pas voulu être si clairs" - Emmanuel Kant
    • "La simplicité est la sophistication suprême" - Léonard De Vinci
    • "Ce qui est facile à comprendre ou à faire pour toi, ne l'est pas forcément pour l'autre." - Mon pèrei

    Mes projets sur Github - Blog - Site DVP

  9. #9
    Expert confirmé
    Avatar de BeanzMaster
    Homme Profil pro
    Amateur Passionné
    Inscrit en
    Septembre 2015
    Messages
    1 899
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Amateur Passionné
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Septembre 2015
    Messages : 1 899
    Points : 4 346
    Points
    4 346
    Billets dans le blog
    2
    Par défaut
    Salut a force les exceptions ça commence à rentrer

    voila la solution finale

    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
    Procedure Tform1.Formdropfiles(Sender : Tobject; Const Filenames : Array Of String);
    begin
       Try
         Try
           Screen.Cursor:=crHourGlass;
           ImageFileName := FileNames[0];
           ImageView.Picture.LoadFromFile(ImageFileName);
         Finally
           Screen.Cursor:=crDefault;
         End;
       Except
         On E : EInvalidImageFile do
         begin
           MessageDlg(E.Message, mtWarning, [mbOk], 0);
           Exit;
         end
         else
         begin
           MessageDlg('Erreur Inconnue : '+//E.Message+
           #13+#10+'Ok pour continuer'+#13+#10+'Abandonner pour quitter l''application', mtError, [mbOk, mbAbort], 0);
         end;
       end;
       ImageView.Invalidate;
       UI_UpdateImageInfos;
    End;
    Pour la traduction, ben on verra tout ça plus tard.

    A+
    • "L'Homme devrait mettre autant d'ardeur à simplifier sa vie qu'il met à la compliquer" - Henri Bergson
    • "Bien des livres auraient été plus clairs s'ils n'avaient pas voulu être si clairs" - Emmanuel Kant
    • "La simplicité est la sophistication suprême" - Léonard De Vinci
    • "Ce qui est facile à comprendre ou à faire pour toi, ne l'est pas forcément pour l'autre." - Mon pèrei

    Mes projets sur Github - Blog - Site DVP

  10. #10
    Expert éminent sénior
    Avatar de Jipété
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    10 796
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 10 796
    Points : 15 210
    Points
    15 210
    Par défaut
    Salut,
    Citation Envoyé par BeanzMaster Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Procedure Tform1.Formdropfiles(Sender : Tobject; Const Filenames : Array Of String);
    begin
       Try
         Try
           Screen.Cursor:=crHourGlass; // changement curseur visible ?
           ImageFileName := FileNames[0];
           ImageView.Picture.LoadFromFile(ImageFileName);
         Finally
           Screen.Cursor:=crDefault;
         End;
    //...
    Tu le vois changer, le curseur, en cas de LoadFromFile d'un gros fichier sans Application.ProcessMessages ?
    Il a à vivre sa vie comme ça et il est mûr sur ce mur se creusant la tête : peutêtre qu'il peut être sûr, etc.
    Oui, je milite pour l'orthographe et le respect du trait d'union à l'impératif.
    Après avoir posté, relisez-vous ! Et en cas d'erreur ou d'oubli, il existe un bouton « Modifier », à utiliser sans modération
    On a des lois pour protéger les remboursements aux faiseurs d’argent. On n’en a pas pour empêcher un être humain de mourir de misère.
    Mes 2 cts,
    --
    jp

  11. #11
    Expert confirmé
    Avatar de BeanzMaster
    Homme Profil pro
    Amateur Passionné
    Inscrit en
    Septembre 2015
    Messages
    1 899
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Amateur Passionné
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Septembre 2015
    Messages : 1 899
    Points : 4 346
    Points
    4 346
    Billets dans le blog
    2
    Par défaut
    Citation Envoyé par Jipété Voir le message
    Salut,

    Tu le vois changer, le curseur, en cas de LoadFromFile d'un gros fichier sans Application.ProcessMessages ?
    Oui, un des plus gros fichier que j'ai chargé un XPm d'environ 121 Mo et pas de soucis . . Pourquoi ? chez toi ce genre de code sous Linux, le curseur ne s'affiche pas sans un coup de ProcessMessages ?
    • "L'Homme devrait mettre autant d'ardeur à simplifier sa vie qu'il met à la compliquer" - Henri Bergson
    • "Bien des livres auraient été plus clairs s'ils n'avaient pas voulu être si clairs" - Emmanuel Kant
    • "La simplicité est la sophistication suprême" - Léonard De Vinci
    • "Ce qui est facile à comprendre ou à faire pour toi, ne l'est pas forcément pour l'autre." - Mon pèrei

    Mes projets sur Github - Blog - Site DVP

  12. #12
    Expert éminent sénior
    Avatar de Jipété
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    10 796
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 10 796
    Points : 15 210
    Points
    15 210
    Par défaut
    Citation Envoyé par BeanzMaster Voir le message
    Oui, un des plus gros fichiers que j'ai chargé un XPm d'environ 121 Mo et pas de soucis . . Pourquoi ? chez toi ce genre de code sous Linux, le curseur ne s'affiche change pas sans un coup de ProcessMessages ?
    Ben non, mais ça me le faisait déjà aussi sous D7/w2k il y a longtemps...
    Il a à vivre sa vie comme ça et il est mûr sur ce mur se creusant la tête : peutêtre qu'il peut être sûr, etc.
    Oui, je milite pour l'orthographe et le respect du trait d'union à l'impératif.
    Après avoir posté, relisez-vous ! Et en cas d'erreur ou d'oubli, il existe un bouton « Modifier », à utiliser sans modération
    On a des lois pour protéger les remboursements aux faiseurs d’argent. On n’en a pas pour empêcher un être humain de mourir de misère.
    Mes 2 cts,
    --
    jp

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

Discussions similaires

  1. Gestion d'erreurs dans une classe
    Par a028762 dans le forum Langage
    Réponses: 4
    Dernier message: 10/12/2011, 11h50
  2. Gestion des erreurs dans une classe
    Par gregb34 dans le forum ASP.NET
    Réponses: 10
    Dernier message: 26/07/2007, 09h59
  3. Réponses: 3
    Dernier message: 21/10/2006, 22h46
  4. Gestion des erreurs dans un TRIGGER
    Par SDU64 dans le forum DB2
    Réponses: 1
    Dernier message: 18/05/2006, 09h51
  5. [VB6] Gestion des erreurs dans une dll
    Par zimba-tm dans le forum VB 6 et antérieur
    Réponses: 8
    Dernier message: 02/08/2004, 11h20

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