SOS

Résolu
hassaine Messages postés 23 Date d'inscription samedi 12 avril 2003 Statut Membre Dernière intervention 18 mai 2009 - 11 juin 2007 à 21:43
cs_rt15 Messages postés 3874 Date d'inscription mardi 8 mars 2005 Statut Modérateur Derniè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

MERCI

7 réponses

cs_rt15 Messages postés 3874 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 7 novembre 2014 13
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.
3
Sat83 Messages postés 166 Date d'inscription mardi 11 novembre 2003 Statut Membre Dernière intervention 13 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.
0
WhiteHippo Messages postés 1154 Date d'inscription samedi 14 août 2004 Statut Membre Dernière intervention 5 avril 2012 2
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
0
Cirec Messages postés 3833 Date d'inscription vendredi 23 juillet 2004 Statut Modérateur Dernière intervention 18 septembre 2022 50
11 juin 2007 à 23:54
Salut,


très bon conseil de WhiteHippo, comme toujours ...


juste une petite précision dans les versions plus récentes de Delphi  (Ex Turbo Delphi)

"Erreur d'execution" est devenu "Aller à l'adresse" ... rien de bien méchant

 
@+
Cirec

<hr size="2" />
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
hassaine Messages postés 23 Date d'inscription samedi 12 avril 2003 Statut Membre Dernière intervention 18 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;
0
cs_rt15 Messages postés 3874 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 7 novembre 2014 13
14 juin 2007 à 16:57
Salut,

Je sais pas ce que c'est HandleMessage, et ou tu veux en venir...

Mais je crois que tu voulais faire un Application.ProcessMessage.

Ou un GetMessage/TranslateMessage/DispatchMessage...

Pourquoi ne pas utiliser Application.Run ?

Bref, précise ton objectif...
0
cs_rt15 Messages postés 3874 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 7 novembre 2014 13
14 juin 2007 à 17:07
Erf, mais tu es dans Application.Run...

Et HandleMessage semble être judicieux...

Oublie tout ce que j'ai dit...
0