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 :

Access violation at address 004046B2


Sujet :

Delphi

  1. #1
    Membre actif Avatar de marsupilami34
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    574
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 574
    Points : 258
    Points
    258
    Par défaut Access violation at address 004046B2
    Bonjour à tous,

    Je m'arrache les cheveux depuis quelques jours car j'ai l'erreur suivante qui apparait :

    Access violation at address 004046B2
    Cette erreur est apparue depuis que j'appelle une forme dans la fiche principale

    Appel de la forme:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    rocedure TFormPrincipale.eventFin(Sender: TObject);
    var
     
    begin
     
     
          Application.Createform(TForm1, Form1);
          Form1.ShowModal;
    Il s'agit d'une forme simple des images + 1 bouton pour fermer la forme

    Unité de ma forme :

    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
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
     
    unit MessageToDisplay;
     
    interface
     
    uses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, ImgList, StdCtrls, jpeg, ExtCtrls, ComCtrls;
     
    type
      TForm1 = class(TForm)
        img3: TImage;
        img2: TImage;
        img1: TImage;
        btn1: TButton;
        lbl1: TLabel;
        procedure FormCreate(Sender: TObject);
        procedure btn1Click(Sender: TObject);
        procedure FormClose(Sender: TObject; var Action: TCloseAction);
     
      private
     
      public
     
      end;
     
    var
      Form1: TForm1;
     
    implementation
     
    {$R *.dfm}
     
    procedure TForm1.btn1Click(Sender: TObject);
    begin
      Close;
    end;
     
     
    procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
    begin
      Action:=caFree;
    end;
     
    procedure TForm1.FormCreate(Sender: TObject);
    begin
      position := poDesktopCenter;
    end;
     
    end.
    En deboggant, l'erreur apparait à la ligne en rouge du module Controls

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    procedure TControl.WMLButtonUp(var Message: TWMLButtonUp);
    begin
      inherited;
      if csCaptureMouse in ControlStyle then MouseCapture := False;
      if csClicked in ControlState then
      begin
        Exclude(FControlState, csClicked);
        if PtInRect(ClientRect, SmallPointToPoint(Message.Pos)) then Click;
      end;
      DoMouseUp(Message, mbLeft);
    end;


    Quelqu'un pourrait-il m'aider à résoudre ce problème

    Merci d'avance Marsup

  2. #2
    Expert confirmé Avatar de sergio_is_back
    Homme Profil pro
    Responsable informatique, développeur tout-terrain
    Inscrit en
    Juin 2004
    Messages
    1 084
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Responsable informatique, développeur tout-terrain
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Juin 2004
    Messages : 1 084
    Points : 5 604
    Points
    5 604
    Par défaut
    On va régler ça...

    Comme tu gère ta fiche en modal (ShowModal), le plus sécurisé pour fermer une fenêtre sans problème c'est affecter une valeur à ModalResult
    Je m'explique :

    A la place de :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    procedure TForm1.btn1Click(Sender: TObject);
    begin
      Close;
    end;
    Il faut utiliser :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    procedure TForm1.btn1Click(Sender: TObject);
    begin
      ModalResult:=mrCancel; // Ou ModalResult:=mrOk mais toujours une valeur différente de mrNone;
    end;
    Ensuite, il faut supprimer ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
    begin
      Action:=caFree;
    end;
    Si tu dois libérer ta fenêtre en mémoire (et ne plus l'utiliser), il vaut mieux que ce soit le module appelant qui le fasse
    L'avantage de ModalResult c'est que tu peux récupérer la valeur

    Exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    begin
         Application.Createform(TForm1, Form1);
         if  Form1.ShowModal=mrOk then
                ShowMessage('L''utilisateur a validé !')
         else
                ShowMessage('L''utilisateur a annulé !')
     
    // --- Le reste de ton code ---
    De plus je déconseille d'utiliser Application.Createform car dans ce cas la fenêtre est rattachée à l'instance de TApplication et lorsque ton application va se terminée, elle va essayer de libérer la fenêtre ce qui peut entrainer un plantage si tu l'as déjà libérée toi même par ailleurs

    Il vaux mieux faire comme ça si tu souhaite la détruire dans la foulée :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    begin
        with TForm1.Create(Application.MainForm) do
        begin
             ShowModal; // ou if ShowModal=mrOk then....
             Free;
        end;

  3. #3
    Membre actif Avatar de marsupilami34
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    574
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 574
    Points : 258
    Points
    258
    Par défaut
    Bonjour sergio_is_back et merci d'avoir pris du temps pour me répondre.

    J'ai fait les modifications que tu m'as soumises mais j'ai toujours le meme message qui apparait.

    Après il y a un truc que je n'ai peut etre pas compris. Il faut utiliser :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    begin
         Application.Createform(TForm1, Form1);
         if  Form1.ShowModal=mrOk then
                ShowMessage('L''utilisateur a validé !')
         else
                ShowMessage('L''utilisateur a annulé !')
     
    // --- Le reste de ton code ---
    ou bien ca ?


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    begin
        with TForm1.Create(Application.MainForm) do
        begin
             ShowModal; // ou if ShowModal=mrOk then....
             Free;
        end;
    J'ai utlisé le dernier cas et le message remonte toujours :-(

  4. #4
    Expert éminent sénior
    Avatar de Paul TOTH
    Homme Profil pro
    Freelance
    Inscrit en
    Novembre 2002
    Messages
    8 964
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Freelance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2002
    Messages : 8 964
    Points : 28 445
    Points
    28 445
    Par défaut
    Form1 est-elle la seule fiche de l'application ?
    Developpez.com: Mes articles, forum FlashPascal
    Entreprise: Execute SARL
    Le Store Excute Store

  5. #5
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 459
    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 459
    Points : 24 873
    Points
    24 873
    Par défaut
    TFormPrincipale invoque TForm1 en modale, dans TForm1, aucun code est utile, avec un BitBtn suffit de mettre un ModalResult via l'inspecteur d'objet

    et pour l'invocation, le plus propre est

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
        with TForm1.Create(nil) do
        try
           ShowModal();
        finally
           Free;
        end;
    Si vous n'avez qu'un seul bouton, vous n'aurez qu'une seule valeur en retour de ShowModal
    si vous souhaitez proposer un choix à l'utilisateur, vous devez utiliser plus Bouton et définir à chaque un ModalResult différent, un case of pour traiter plus de 2 cas sinon un simple if

    personnellement, je me crée une fonction de classe Execute qui fait tout ça mais c'est un autre sujet
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

  6. #6
    Expert confirmé Avatar de sergio_is_back
    Homme Profil pro
    Responsable informatique, développeur tout-terrain
    Inscrit en
    Juin 2004
    Messages
    1 084
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Responsable informatique, développeur tout-terrain
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Juin 2004
    Messages : 1 084
    Points : 5 604
    Points
    5 604
    Par défaut
    Citation Envoyé par ShaiLeTroll Voir le message
    TFormPrincipale invoque TForm1 en modale, dans TForm1, aucun code est utile, avec un BitBtn suffit de mettre un ModalResult via l'inspecteur d'objet
    Oui c'est vrai, mais c'était aussi pour expliquer à quoi sert ModalResult et montrer que l'on peut lui affecter plusieurs valeurs selon les cas que l'on souhaite....

    @marsupilami34 : un petit exemple vaut mieux que de longs discours, je te mets un .ZIP avec deux fiches....
    Fichiers attachés Fichiers attachés

  7. #7
    Membre actif Avatar de marsupilami34
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    574
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 574
    Points : 258
    Points
    258
    Par défaut
    Je ne suis pas sur d'avoir compris cette phrase:

    Citation Envoyé par ShaiLeTroll Voir le message
    TFormPrincipale invoque TForm1 en modale, dans TForm1, aucun code est utile, avec un BitBtn suffit de mettre un ModalResult via l'inspecteur d'objet
    Après j'ai mis le code ci-dessous et l'erreur me remonte toujours
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
        with TForm1.Create(nil) do
        try
           ShowModal();
        finally
           Free;
        end;

  8. #8
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 459
    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 459
    Points : 24 873
    Points
    24 873
    Par défaut
    Citation Envoyé par marsupilami34 Voir le message
    Je ne suis pas sur d'avoir compris cette phrase:

    Citation Envoyé par ShaiLeTroll Voir le message
    TFormPrincipale invoque TForm1 en modale, dans TForm1, aucun code est utile, avec un BitBtn suffit de mettre un ModalResult via l'inspecteur d'objet
    C'est pourtant extrêmement simple, supprimer tous les codes de TForm1, btn1Click = inutile, FormClose = inutile, FormCreate = inutile
    poDesktopCenter peut être défini via l'inspecteur d'objet (F11)
    Utiliser un TBitBtn définissez Kind à bkClose, le bouton sera opérationnel pour fermer la fenêtre dans aucun code, bkOk ou bkYes sont aussi possibles avec un icone différente

    c'est une combinaison incorrecte de code qui provoque cette erreur, vous êtes difficile à suivre, on ne sait pas ce que vous faites réellement, si vous avez suivi tous les conseils depuis le début

    Citation Envoyé par sergio_is_back Voir le message
    Oui c'est vrai, mais c'était aussi pour expliquer à quoi sert ModalResult et montrer que l'on peut lui affecter plusieurs valeurs selon les cas que l'on souhaite.....
    En fait, je répondais à Paul Toth qui demandait si TForm1 était bien une fiche secondaire par rapport à TFormPrincipale puis j'ai enchaine directement sur le fait qu'il fallait repartir de zéro et faire simple
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

  9. #9
    Membre actif Avatar de marsupilami34
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    574
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 574
    Points : 258
    Points
    258
    Par défaut
    Ok, j'ai compris les modifs à faire.
    J'ai supprimé toutes les procédures dans la forme.
    Mais j'ai un autre message d'erreur qui apparait :

    Abstract Error
    Vous savez ce que ca peut être ?

    Merci d'avance pour votre aide

  10. #10
    Expert éminent sénior
    Avatar de Paul TOTH
    Homme Profil pro
    Freelance
    Inscrit en
    Novembre 2002
    Messages
    8 964
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Freelance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2002
    Messages : 8 964
    Points : 28 445
    Points
    28 445
    Par défaut
    à quoi correspond eventFin ?
    Developpez.com: Mes articles, forum FlashPascal
    Entreprise: Execute SARL
    Le Store Excute Store

  11. #11
    Membre actif Avatar de marsupilami34
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    574
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 574
    Points : 258
    Points
    258
    Par défaut
    Citation Envoyé par Paul TOTH Voir le message
    à quoi correspond eventFin ?
    Il s'agit d'une procedure dans la forme principale permettant de saisir des données dans une base

  12. #12
    Expert éminent sénior
    Avatar de Paul TOTH
    Homme Profil pro
    Freelance
    Inscrit en
    Novembre 2002
    Messages
    8 964
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Freelance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2002
    Messages : 8 964
    Points : 28 445
    Points
    28 445
    Par défaut
    Citation Envoyé par marsupilami34 Voir le message
    Il s'agit d'une procedure dans la forme principale permettant de saisir des données dans une base
    de façon plus générale, tu nous donnes des éléments de ton code qui semble ne pas être en relation avec l'erreur, je pense que c'est le contexte d'exécution qui pose problème...par exemple appeler la VCL depuis un Thread, faire référence à une variable non renseignée...et ce que tu montres ne permet pas de déterminer la cause.
    Developpez.com: Mes articles, forum FlashPascal
    Entreprise: Execute SARL
    Le Store Excute Store

  13. #13
    Membre expert
    Avatar de pprem
    Homme Profil pro
    MVP Embarcadero - formateur&développeur Delphi, PHP et JS
    Inscrit en
    Juin 2013
    Messages
    1 876
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : MVP Embarcadero - formateur&développeur Delphi, PHP et JS
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juin 2013
    Messages : 1 876
    Points : 3 611
    Points
    3 611
    Par défaut
    N'y a-t-il que moi que ce

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Application.Createform(TForm1, Form1);
    dérange ?

    Normalement ça ne se fait que dans le programme avant le

    Pour instance une fiche on fait plutôt ce type de code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    Form1 := TForm1.Create(Self);
    try
    form1.ShowModal;
    finally
    Form1.Free;
    end;
    et de préférence pas avec Form1 mais plutôt une variable locale, histoire de pas se mélanger les pinceaux avec les variables créées par Delphi et qui pourraient déjà correspondre à une instance de TForm1 si ça n'a pas été retiré des fiches en création automatique dans les options de projet.

    Concernant la violation d'accès, le bloc de code qui plante n'a aucun intérêt si ça vient des sources, c'est l'endroit dans ton code qui est utile et pour ça il faut regarder la pile d'appel et te positionner sur le premier source te concernant.

  14. #14
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 459
    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 459
    Points : 24 873
    Points
    24 873
    Par défaut
    Citation Envoyé par pprem Voir le message
    N'y a-t-il que moi que ce Application.Createform(TForm1, Form1); dérange ?
    Même si ce n'est pas un problème, c'est une lourdeur inutile, cela fait longtemps que l'on a déjà revu cette partie, ce fut même ma première intervention sur le sujet en #5

    Citation Envoyé par ShaiLeTroll Voir le message
    et pour l'invocation, le plus propre est

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
        with TForm1.Create(nil) do
        try
           ShowModal();
        finally
           Free;
        end;

    Comme le dit Paul Toth, il doit y avoir une multiple de construction de code approximative qui amène à des exceptions sans queue ni tête.
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

  15. #15
    Membre expert
    Avatar de pprem
    Homme Profil pro
    MVP Embarcadero - formateur&développeur Delphi, PHP et JS
    Inscrit en
    Juin 2013
    Messages
    1 876
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : MVP Embarcadero - formateur&développeur Delphi, PHP et JS
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juin 2013
    Messages : 1 876
    Points : 3 611
    Points
    3 611
    Par défaut
    Citation Envoyé par ShaiLeTroll Voir le message
    Même si ce n'est pas un problème, c'est une lourdeur inutile, cela fait longtemps que l'on a déjà revu cette partie, ce fut même ma première intervention sur le sujet en #5
    flute, pas vu, le touchpad descend trop vite, pas fais attention que j'avais loupé des interventions

  16. #16
    Membre actif Avatar de marsupilami34
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    574
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 574
    Points : 258
    Points
    258
    Par défaut
    Bonjour à tous,

    Voilà où j'en suis aujourd'hui.

    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
     
    procedure TFormPrincipale.eventFin(Sender: TObject);
    var
      quality:Boolean;
     
    begin
      quality:=True;
     
        Form1:=TForm1.Create(Self);
        try
          Form1.ShowModal();
        finally
          Form1.Free;
        end;
     
     
         Form2:=TForm2.Create(Self);
         try
            if Form2.ShowModal=mrAbort then
              begin
                quality:=false
              end;
         finally
               Form2.Free;
         end;
     
     
     
    end;
    Form1 et Form2 sont des ficches que j'ai crées contenant des TBitButton

    Dans la procédure principale, je 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
    19
    20
    21
    22
    23
    24
    25
    program Etuvage;
     
    uses
      Forms,
      Windows,
      MaForme1 in 'Forme1.pas' {Form1},
      MaForme2 in 'Forme2.pas' {Form2};
     
    {$R *.res}
     
    var
      H: THandle;
    begin
     
     
      Application.Initialize;
      Application.MainFormOnTaskbar := True;
      Application.CreateForm(TFormPrincipale, FormPrincipale);
      Application.CreateForm(TFrmlogin, Frmlogin);
      Application.CreateForm(TCustomDialog, CustomDialog);
      {Application.CreateForm(TForm1, Form1);
      Application.CreateForm(TForm2, Form2);} // J'ai mis cette partie la en commentaire car j'ai pu lire qu'il ne fallait pas déclarer des sous formes dans le menu principal. Mais meme en enlevant les commentaires, ca ne change rien
      Application.Run;
     
    end.
    Après rien de plus....

    Et j'ai toujours l'erreur suivante qui apparait a la fin du programme

    Nom : Erreur.jpg
Affichages : 815
Taille : 7,2 Ko

    Je ne comprends vraiment pas pourquoi ?

    Merci d'avance pour votre aide

    Marsup

  17. #17
    Membre actif Avatar de marsupilami34
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    574
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 574
    Points : 258
    Points
    258
    Par défaut
    J'avance un petit peu.

    Je viens de tester à tout hasard d'enlever des images dans ma forme. Et l'erreur n'apparait plus.

    Vous savez d'ou ca vient ?

  18. #18
    Expert éminent sénior
    Avatar de Paul TOTH
    Homme Profil pro
    Freelance
    Inscrit en
    Novembre 2002
    Messages
    8 964
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Freelance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2002
    Messages : 8 964
    Points : 28 445
    Points
    28 445
    Par défaut
    c'est quoi TCustomDialog ?
    Developpez.com: Mes articles, forum FlashPascal
    Entreprise: Execute SARL
    Le Store Excute Store

  19. #19
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 459
    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 459
    Points : 24 873
    Points
    24 873
    Par défaut
    Citation Envoyé par marsupilami34 Voir le message
    Et j'ai toujours l'erreur suivante qui apparait a la fin du programme
    Maintenant c'est à la fin ? ce n'est plus juste après l'appel du ShowModal ?
    Difficile d'avoir les infos.

    Sinon Form1 et Form2, ton commentaire n'est pas exacte dans le DPR, ce n'est pas qu'il ne faut pas, c'est à toi de décider du moment juste l'instanciation des fenêtres,
    je dirais que Frmlogin et CustomDialog ne devrait pas y être non plus, la fenêtre de login ne devrait pas avoir une durée plus longue que lorsqu'elle est affichée, le placement automatique des nouvelles fiches dans le DPR, j'ai toujours trouvé ça pourrit après que l'on ait déjà une MainForm, cela trompe tous les débutants

    Je supprime la variable globale type Form1 et Form2 dès que possible, cela évite toute ambiguité, toute utilisation d'une référence libéré mais non affectée à nil

    Est-ce que ton unité jpeg est standard ? c'est du D7 ?
    il ne faut pas convertir manuellement avec TJpegImage pour mettre un jpeg dans un TImage, voir si cela est la source du problème en utilisant des BMP


    en fin, les uses ? comment TFormPrincipale, TFrmlogin sont déclarés, il n'y a pas leur uses ?
    Quel code as-tu supprimé pour laisser un THandle, un code type Mutex pour une instance unique ?

    Eh ben, tu as des choses à voir
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

  20. #20
    Membre actif Avatar de marsupilami34
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    574
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 574
    Points : 258
    Points
    258
    Par défaut
    Alors j'ai remplacé les images et maintenant le problème est résolu
    Tout fonctionne

    Pour répondres à tes différentes questions :
    - j'utilise Delphi 2007
    - J'utilise un TImage pour insérer mon image dans la forme
    - oui c'est pour créer un mutex ( si mutex déja ouvert alors application déja ouverte)

    Merci pour votre aide à tous

    Marsup

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

Discussions similaires

  1. access violation at adress 0057744.read of address 000000
    Par zanoubya dans le forum Débuter
    Réponses: 2
    Dernier message: 21/06/2010, 17h34
  2. Réponses: 8
    Dernier message: 19/11/2008, 16h55
  3. Message Access violation at Address 004665B1
    Par Paounet dans le forum Composants VCL
    Réponses: 3
    Dernier message: 10/04/2008, 13h30
  4. access violation at address
    Par med1112 dans le forum Langage
    Réponses: 5
    Dernier message: 10/08/2007, 22h12
  5. Réponses: 3
    Dernier message: 22/05/2002, 09h37

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