hassaine
Messages postés23Date d'inscriptionsamedi 12 avril 2003StatutMembreDernière intervention18 mai 2009
-
11 juin 2007 à 21:43
cs_rt15
Messages postés3874Date d'inscriptionmardi 8 mars 2005StatutModérateurDernière intervention 7 novembre 2014
-
15 juin 2007 à 09:00
Bonjour,
Appel a tout le monde DELPHI j'ai un problème dans mon application un message d'erreur (Violation d'accés à l'adresse 0049FFE3 dans le module "Gpaie.exe" lecture de l'adresse 00000000 svp que je dois faire depuis deux jours que je verifier mon application est le résultat (erreur) toujours même message.
je lance cet appel aux experts et les gens qui aiment DELPHI
cs_rt15
Messages postés3874Date d'inscriptionmardi 8 mars 2005StatutModérateurDernière intervention 7 novembre 201413 15 juin 2007 à 09:00
Bon, bin je vais quand même essayer de te faire avancer.
Il me semble que ce code, c'est Borland qui l'a écrit, mais je l'ai pas, vu que j'ai une edition perso.
Ce code, c'est un peu le coeur de ton appli.
Quand tu y réfléchit, quand est ce que le code que tu as écrit est-il executé ? C'est soit lors du chargement d'une Form, lors d'un clique sur un bouton, lors de pression d'un raccourcis clavier, lors d'un déplacement de la souris au dessus d'un contrôles, à l'aide d'un timer...
A chaque fois, tu as sélectionné un évenèment et tu as écrit ton code dans la routine de cette énvènement.
Qu'elle mécanisme permet de connecter ces routines à l'activité de l'utilisateur ?
C'est Windows qui récupère tous les déplacements de souris, les appuis de touche, les timers... Il détermine quelle fenêtre est concernée par ces actions, et envoie des messages à l'application qui a créé cette fenêtre. Ces messages contiennent la fenêtre concernée, le type d'action, ainsi quelques paramètres dépendant du message, tel que la position de la souris...
L'application, quand elle n'execute pas ton code, elle est en attente. En attente de messages en provenance de Windows. C'est la méthode HandleMessage, qui contient très certainement un GetMessage qui assure cette attente. Ton appli ne consomme donc pas de CPU jusqu'à ce qu'un message arrive. Quand un message arrive, l'application le traite, ou le fait suivre à la fenêtre concernée par le message. Puis elle se remet en attente. C'est ta boucle repeat (...) until Terminated.
C'est du code écrit par Borland qui traite ces messages, et appel tes évènements en fonction de ceux-ci.
Tout ça pour dire que ce n'est certainement pas ce code en lui même qui pose problème. Il ne fait que distribuer les messages... Ton appli plante dans un évènement que tu as implémenté, ou dans du code de Borland qui plante à cause d'un problème d'initialisation de ta part ou quelque chose comme ça.
Pour savoir plus précisément où est l'erreur, tu pourrais utiliser F7 à la place de F8 pour entrer dans les appelées, mais ça risque d'être long. Place plutôt des points d'arrêt, dans tes évènements. Dans le formload de ta form principal pour commencer par exemple.
Sat83
Messages postés166Date d'inscriptionmardi 11 novembre 2003StatutMembreDernière intervention13 octobre 2008 11 juin 2007 à 22:20
Bonjour!
Essai de d'isolé l'endroit dans ton code qui pose probleme. Utilise les points d'arret et l'execution en mode pas-à-pas pour trouvé d'ou vient la partie de ton code qui genere cette erreur.
Si lorsque tu a identifié d'où venais l'erreur, tu n'arrive pas a resoudre le probleme, met ici le bout de code.
WhiteHippo
Messages postés1154Date d'inscriptionsamedi 14 août 2004StatutMembreDernière intervention 5 avril 20123 11 juin 2007 à 23:32
Bonsoir
Tu compiles ton programme, tu le lance avec F8, c'est à dire en pas à pas, puis dans le menu Chercher tu cliques sur "Erreur d'execution", et là tu saisis ton adresse, c'est à dire $0049FFE3, tu arriveras alors sur le code qui pose problème.
P.S. Ne pas oublier, que tant qu'un projet n'est pas débogué, il est plus que souhaitable que dans les options du projet, onglet Compilateur, TOUTES les cases de "Erreurs à l'exécution" et de "Débogage" soient cochées (Tu auras alors plus d'informations lors des exceptions)
Cordialement. <hr />"L'imagination est plus importante que le savoir." Albert Einstein
hassaine
Messages postés23Date d'inscriptionsamedi 12 avril 2003StatutMembreDernière intervention18 mai 2009 12 juin 2007 à 00:04
MERCI WHITEHIPPO
VOILA LE RESULTAT DU F8 MAIS JE N'ARIVE PAS A INTRODUIRE $0049FFE3 SVP QUE JE DOIS FAIRE
procedure TApplication.Run;
begin
FRunning := True;
try
AddExitProc(DoneApplication);
if FMainForm <> nil then
begin
case CmdShow of
SW_SHOWMINNOACTIVE: FMainForm.FWindowState := wsMinimized;
SW_SHOWMAXIMIZED: MainForm.WindowState := wsMaximized;
end;
if FShowMainForm then
if FMainForm.FWindowState = wsMinimized then
Minimize else
FMainForm.Visible := True;
repeat
try //DE TRY HANDLE MESSAGE AU UNTIL TERMINATED
HandleMessage; // LA BOUCLE LORS F8 //
except
HandleException(Self);
end;
until Terminated;
end;
finally
FRunning := False;
end;
end;