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 :

Appli qui plante sous Windows 95


Sujet :

Delphi

  1. #1
    Membre régulier

    Profil pro
    Inscrit en
    Août 2003
    Messages
    207
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2003
    Messages : 207
    Points : 91
    Points
    91
    Par défaut Appli qui plante sous Windows 95
    Bonjour à tous,

    J'ai développé en Delphi7 une application qui diffuse des pages HTML (stockées sur un serveur local)

    Cette appli n'utilise qu'un TWebBrowser et un Timer qui, toutes les 15 secondes charge une nouvelle page HTML.

    Tout cela semble fonctionner correctement sauf qu'après quelques heures les PC plantent. Pas de messages d'erreurs, mais écran figé, plus de clavier ni sours. Le phénomène se produit sur tous les postes (12 au total) et en moyenne après 6 ou 7 h de fonctionnement.

    Je pense à un problème de mémoire, je l'ai donc augmentée en la passant à 256 Mo (contre 64 auparavant). Le problème persiste.

    Le code est extrèmement simple. Un tableau var_HTMLFile[1..10] contient les noms des 10 fichiers HTML à afficher. Un timer qui se déclenche toutes les 15 secondes permet de changer la page HTML à afficher à l'aide de la commande Navigate (web étant le composant TWebBrowser).

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    procedure TMAIN.TimerSEQTimer(Sender: TObject);
    begin
    inc(var_SEQ_Number);
    If (var_SEQ_Number > 10)
        then var_SEQ_Number := 1,
     
    web.Navigate(Server_Path + '\' + var_HTMLFile[var_SEQ_Number]);
    end;

    Si quelqu'un a une idée, je suis preneur.

    Merci d'avance pour vos réponses,
    Wilco

  2. #2
    Membre chevronné
    Avatar de Droïde Système7
    Homme Profil pro
    Inscrit en
    Septembre 2003
    Messages
    2 262
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 2 262
    Points : 1 928
    Points
    1 928
    Par défaut
    Bonjour,

    As-tu vérifié à l'aide du vumètre ressources de Windows 95 (oupsss s'il existe sur w95) de temps en temps ; ce qui serait très révélateur.

    @+

  3. #3
    Membre éprouvé
    Avatar de CapJack
    Homme Profil pro
    Prof, développeur amateur vaguement éclairé...
    Inscrit en
    Mars 2004
    Messages
    624
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Prof, développeur amateur vaguement éclairé...
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2004
    Messages : 624
    Points : 988
    Points
    988
    Par défaut
    Ça vient peut-être de la mémoire utilisée par l'historique.

    J'ai trouvé un vieux fil : http://www.developpez.net/forums/showthread.php?t=1113

    Mettre la propriété Silent à true résoudrait le problème ?

  4. #4
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 597
    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 597
    Points : 25 280
    Points
    25 280
    Par défaut
    J'ai eu aussi des programmes utilisant massivement le TWebBrowser en fonctionnement nocturne, j'ai souvent aussi des blocages au bout d'un certains temps (fréquence parfois pire que la tienne, entre 1 par minute à 1 page seconde selon le code analysé), ... et comme c'était des traitements qui devait tourné sans interaction humaine (j'aurais du utilisé un composant HTTP non graphique, mais c'était un truc tout pourri ...), et j'avais Silent à True, ce qui ne suffit pas parfois, j'ai été obligé d'avoir un Timer qui tue les fenêtres (ShowMessage) venant de IE, ...

    Je n'ai jamais cherché mais je pense que le TWebBrowser doit laisser trainer des Interfaces liés à son Body et qu'au fil du temps, cela sature la mémoire, d'ailleurs les erreurs de pagination se compte en dizaine de millions au bout de quelques heures avec ce composant ... mais le code de mon programme étant une vraie pourriture (bon c'était juste un bot qui jouait à planetium la nuit à ma place, un jeu tout aussi nul mais tellement jouissif pour les failles de sécurité que je me faisais une joie de publier sur le forum des admins, ce qui ne changait vu qu'ils ne maintenant pas le jeu) ...

    tu devrais voir si en créant/détruisant le TWebBrowser, à chaque page (pourquoi pas un système d'onglet dynamique un pour chaque item du tableau) et avant de faire le Navigate tu fais

    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
    procedure TMAIN.TimerSEQTimer(Sender: TObject);
    begin
    ...
     web := var_HTMLBrowser[var_SEQ_Number];
     if Assigned(web) then
       web.Free();
     
      web := TWebBrowser.Create(nil); // à toi de gérer la libération à la fermeture
       web := TWebBrowser.Create(nil);
       var_HTMLPage[var_SEQ_Number].InsertControl(NewNet); // Parent, un TabSheet, à ton de gérer tes tableaux ou faire un tableau de strucutre ...
     
       web .OnDocumentComplete := WebBrowserDocumentComplete;
       web .Navigate2(Url, Flags, TargetFrameName, PostData, Headers);
       var_HTMLBrowser[var_SEQ_Number] := web ;
       PageControl.ActivePage := var_HTMLPage[var_SEQ_Number];
     
       web.Navigate(Server_Path + '\' + var_HTMLFile[var_SEQ_Number]);
    end;

Discussions similaires

  1. Réponses: 17
    Dernier message: 13/01/2022, 19h13
  2. [Débuter] Programme qui fonctionne sous Linux mais qui plante sous Windows 7
    Par p1a2t3 dans le forum Qt Creator
    Réponses: 1
    Dernier message: 22/11/2014, 12h38
  3. compactage qui plante sous 2000
    Par alinette dans le forum Access
    Réponses: 1
    Dernier message: 22/09/2006, 19h00
  4. La commande su qui plante sous Ubuntu
    Par adrien357 dans le forum Shell et commandes GNU
    Réponses: 2
    Dernier message: 29/06/2006, 12h37
  5. Application Delphi 6 qui plante sur Windows Server 2003
    Par david_chardonnet dans le forum Langage
    Réponses: 1
    Dernier message: 12/01/2006, 15h20

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