Handle de fenetre non valide

Signaler
Messages postés
1284
Date d'inscription
mardi 28 octobre 2003
Statut
Contributeur
Dernière intervention
3 juillet 2015
-
Messages postés
814
Date d'inscription
vendredi 3 novembre 2000
Statut
Membre
Dernière intervention
30 juillet 2009
-
Bonjour,


Un PC me fait des misères... J'ai une appli Delphi-Paradox qui
m'affiche régulièrement (mais pas systématiquement) le message "Handle
de fenêtre non valide" lorsque je veux prévisualiser un rapport (généré
par QuickReport par "PreviewModal"). La page de prévisualisation
s'affiche bien mais le rapport n'apparait pas. Le pb c'est que je
n'arrive pas à reproduire le bug sur mon pc de dev, ni sur aucun autre.
Je subodore un pb de DLL ou de mémoire... Quelqu'un aurait une petite
piste à me donner ?

Simon

5 réponses

Messages postés
814
Date d'inscription
vendredi 3 novembre 2000
Statut
Membre
Dernière intervention
30 juillet 2009
3
salut,

as-tu essayer d'ajouterais un system de log avec pile d'appel dans ton projet.

et de filerer une version avec log activé au PC missérant.

Tu aurait déjà plus d'info pour chercher...

bonne chance.
Messages postés
1284
Date d'inscription
mardi 28 octobre 2003
Statut
Contributeur
Dernière intervention
3 juillet 2015
13
Salut Loda et merci pour ta réponse.


Je ne maitrise pas très bien les termes informatiques...
Pourrais-tu m'expliquer en gros ce que c'est qu'un "système de log avec
pile d'appel" (un fichier texte avec des marqueurs?) ? Merci.

Simon
Messages postés
814
Date d'inscription
vendredi 3 novembre 2000
Statut
Membre
Dernière intervention
30 juillet 2009
3
un system de log:

Durant l'execution du programme, tu enregistre dans un fichier (souvent .txt) des informations qui te permet de debuger ton applic.

Tu peux le faire toi même, c'est pas compliquer si tu veux qqch de simple.

Ce genre de system peux aussi permettre de "logé" les exceptions.

Il en existe des tout fait qui te gère aussi les pile d'appel (j'ai vu une pub, mais je me rappel pas le nom).

tout cela te permet donc de voir des infos après l'execution (et le plantage) du programme.


un exemple (pas testé) pour me faire comprendre:
----------
{$DEFINE oda_WRITELOG}

// ecrie dans un fichier text le str (ev. avec la date et l'heure)
procedure WriteLog(str : string);


procedure TMaForm.AfficherElement(sender : TForm; ElemNum : integer);
begin
// test parametere
if ElemNum < 0 then begin
{$IFDEF oda_WRITELOG}
WriteLog('[TMaForm.AfficherElement] Num<0 : ' + Sender.Name + ' : '+ inttostr(ElemNum) );
{$END}
exit;
end;

// reste du code
end;

procedure TMaForm.FaireQqch(p1 : integer);
begin
try
// code
except
on E: Exception do begin
WriteLog('[TMaForm.FaireQqch] p1 : '+ inttostr(p1) + ' M: ' + E.Message );
raise;
end;
end;
end;
--------

Pour recuperer la pile d'appel, je sais pas comment faire. Mais c'est possible.

je te conseille aussi de jeter un coup d'oeil à:
TApplication.OnException

bon code,
Messages postés
1284
Date d'inscription
mardi 28 octobre 2003
Statut
Contributeur
Dernière intervention
3 juillet 2015
13
-> Cirec :

Non, c'est un pc tout simple avec un seul écran et XP... Je vais quand même jeter un coup d'oeil à la source en question


-> Loda :

Ok pour ces explications, je vais essayer de m'en servir mais si ça
plante sur le "previewmodal" comme je le pense, je ne vois pas comment
trouver ce qu'il faut faire

Simon
Messages postés
814
Date d'inscription
vendredi 3 novembre 2000
Statut
Membre
Dernière intervention
30 juillet 2009
3
si ça t'aide (pour un autre problème peut-être...)

debug tool pour delphi:
http://www.torry.net/pages.php?id=265