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 :

RichEdit1 marche pas


Sujet :

Delphi

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    130
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2002
    Messages : 130
    Points : 46
    Points
    46
    Par défaut RichEdit1 marche pas
    Bonjour,
    j'ai mis ça dans mon code

    Form1.RichEdit1.Lines.Add('coucou');

    Erreur fatale : violation d'accès à l'adresse 00461D88 dans le module Project1.exe. Lecture de l'adresse 00000260
    Je comprends rien à ce charabia, help!

  2. #2
    Modérateur
    Avatar de tourlourou
    Homme Profil pro
    Biologiste ; Progr(amateur)
    Inscrit en
    Mars 2005
    Messages
    3 854
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Biologiste ; Progr(amateur)

    Informations forums :
    Inscription : Mars 2005
    Messages : 3 854
    Points : 11 287
    Points
    11 287
    Billets dans le blog
    6
    Par défaut
    Bonjour,

    Le RichEdit1 fonctionne, pour peu qu'il existe !

    Où est placé le code incriminé ? Quand s'exécute-t-il ? Le RichEdit est-il créé à ce moment ?

    Je pense que la fiche Form1 doit l'être, mais pas le RichEdit.
    Delphi 5 Pro - Delphi 11.3 Alexandria Community Edition - CodeTyphon 6.90 sous Windows 10 ; CT 6.40 sous Ubuntu 18.04 (VM)
    . Ignorer la FAQ Delphi et les Cours et Tutoriels Delphi nuit gravement à notre code !

  3. #3
    Membre averti Avatar de Moez.B
    Homme Profil pro
    Développeur Delphi
    Inscrit en
    Mars 2006
    Messages
    219
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Développeur Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2006
    Messages : 219
    Points : 370
    Points
    370
    Par défaut
    Salut,

    Ajoute l'unité où tu exécutes ta commandes dans le Uses de L'implémentation ..
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    unit Unit2;
     
    interface
     
    uses
      Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
      Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Unit1;
    à vrai dire, si tu garde les noms des composants tels qu'ils sont, alors ton Form1 est déclaré dans Unit1

    Bonne journée.
    "L'homme supérieur est celui qui a une bienveillance égale pour tous, et qui est sans égoïsme et sans partialité." [Confucius]
    "Celui qui n'évolue pas disparaît." [Charles Darwin]
    “Without requirements or design, programming is the art of adding bugs to an empty text file.” [Louis Srygley]

  4. #4
    Rédacteur/Modérateur
    Avatar de Andnotor
    Inscrit en
    Septembre 2008
    Messages
    5 680
    Détails du profil
    Informations personnelles :
    Localisation : Autre

    Informations forums :
    Inscription : Septembre 2008
    Messages : 5 680
    Points : 13 086
    Points
    13 086
    Par défaut
    Si ce code est dans l'événement OnCreate :
    la fiche principale ne pose généralement pas de problème puisqu'elle est créée par Application.CreateForm() qui assigne la variable (ex .Form1) dès l'allocation mémoire, avant même le constructeur de la fiche. Par contre avec une création du type Form1 := TForm1.Create(), ce n'est qu'au retour du constructeur que la variable est assignée et dans ce cas, VA assurée

    Mais de toute façon, il ne faut jamais faire appel à une variable externe pour référencer l'objet depuis l'une de ses méthodes. Soit ne rien mettre (RichEdit1.Lines.Add('coucou')), soit utiliser self s'il y a une ambiguïté (un with sur un objet possédant une méthode/propriété de même nom).

    Citation Envoyé par Moez.B Voir le message
    Ajoute l'unité où tu exécutes ta commandes dans le Uses de L'implémentation ..
    Ça entraînerait une erreur de compilation mais pas d'exécution

  5. #5
    Membre averti Avatar de Moez.B
    Homme Profil pro
    Développeur Delphi
    Inscrit en
    Mars 2006
    Messages
    219
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Développeur Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2006
    Messages : 219
    Points : 370
    Points
    370
    Par défaut
    Form1.RichEdit1.Lines.Add('coucou');

    Sys1 n'a pas indiqué où il fait son appel , et c'est primordial, je suppose que ce n'est pas dans Form1 en tous cas

    Si c'est dans une autre unité, alors il faut référencer l'unité de Form1 dans l'Interface pour pouvoir ce genre d'appel à condition que: Form1 est instancié, RichEdit1 est instancié sinon on est sûr qu'il y a une violation d'accès .

    a entraînerait une erreur de compilation mais pas d'exécution
    Tu parles de la référence circulaire ??

    Bonne journée.
    "L'homme supérieur est celui qui a une bienveillance égale pour tous, et qui est sans égoïsme et sans partialité." [Confucius]
    "Celui qui n'évolue pas disparaît." [Charles Darwin]
    “Without requirements or design, programming is the art of adding bugs to an empty text file.” [Louis Srygley]

  6. #6
    Rédacteur/Modérateur
    Avatar de Andnotor
    Inscrit en
    Septembre 2008
    Messages
    5 680
    Détails du profil
    Informations personnelles :
    Localisation : Autre

    Informations forums :
    Inscription : Septembre 2008
    Messages : 5 680
    Points : 13 086
    Points
    13 086
    Par défaut
    Une VA est une erreur d'exécution. Si ce code n'était pas dans l'unité où est déclarée Form1 ou si l'unité était absente de la clause uses, le programme ne compilerait pas (E2003)

    Citation Envoyé par Moez.B Voir le message
    je suppose que ce n'est pas dans Form1 en tous cas
    C'est pourtant une erreur très fréquente !

  7. #7
    Membre averti Avatar de Moez.B
    Homme Profil pro
    Développeur Delphi
    Inscrit en
    Mars 2006
    Messages
    219
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Développeur Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2006
    Messages : 219
    Points : 370
    Points
    370
    Par défaut
    Citation Envoyé par Andnotor Voir le message
    Une VA est une erreur d'exécution. Si ce code n'était pas dans l'unité où est déclarée Form1 ou si l'unité était absente de la clause uses, le programme ne compilerait pas (E2003)



    C'est pourtant une erreur très fréquente !
    Oui, tu as parfaitement raison, enfin, Sys1 a dû nous donner un minima de code pour voir où ça rame
    "L'homme supérieur est celui qui a une bienveillance égale pour tous, et qui est sans égoïsme et sans partialité." [Confucius]
    "Celui qui n'évolue pas disparaît." [Charles Darwin]
    “Without requirements or design, programming is the art of adding bugs to an empty text file.” [Louis Srygley]

  8. #8
    Rédacteur/Modérateur
    Avatar de Andnotor
    Inscrit en
    Septembre 2008
    Messages
    5 680
    Détails du profil
    Informations personnelles :
    Localisation : Autre

    Informations forums :
    Inscription : Septembre 2008
    Messages : 5 680
    Points : 13 086
    Points
    13 086
    Par défaut
    Et là je m'adresse plus particulièrement à Thierry Laborde, le programme Solve ne compilera pas non plus (en tout cas en français )

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    program Solve;
    var
      Compte : Integer;
    begin
      Count := 0;
      Inc(Count);
      Writeln(Count);
    end.

  9. #9
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 447
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    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 447
    Points : 24 846
    Points
    24 846
    Par défaut
    ! HS !
    Citation Envoyé par Andnotor Voir le message
    Et là je m'adresse plus particulièrement à Thierry Laborde, le programme Solve ne compilera pas non plus (en tout cas en français )
    @Andnotor utilise le "Envoyer mon commentaire"
    J'ai signalé des erreurs ou imprécision sur la documentation et jusqu'à présent,
    l'équipe documentation a toujours effectué les modifications sur la version anglaise
    mais l'équipe de traduction est d'une inefficacité totale !

    comme Vcl.Forms.TCustomForm.Dock

    Do not call Dock in application code. …. To dock a form programmatically, use the ManualDock method instead.
    Devient en Français, faux et illogique :
    N'appelez pas Dock dans le code d'une application. …. Pour ancrer une fiche par programme, utilisez la méthode Dock.

    Je me réfère souvent à la documentation anglaise lorsque la version française me semble peu fiable !
    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

  10. #10
    Rédacteur/Modérateur
    Avatar de Andnotor
    Inscrit en
    Septembre 2008
    Messages
    5 680
    Détails du profil
    Informations personnelles :
    Localisation : Autre

    Informations forums :
    Inscription : Septembre 2008
    Messages : 5 680
    Points : 13 086
    Points
    13 086
    Par défaut
    Citation Envoyé par ShaiLeTroll Voir le message
    @Andnotor utilise le "Envoyer mon commentaire"
    C'est fait

Discussions similaires

  1. 'SHOW TABLES' marche pas sous postgresql !?
    Par fet dans le forum PostgreSQL
    Réponses: 4
    Dernier message: 13/05/2004, 09h28
  2. Maximiser fenêtre ne marche pas
    Par sandrinec dans le forum Composants VCL
    Réponses: 2
    Dernier message: 12/06/2003, 12h02
  3. Réponses: 9
    Dernier message: 07/05/2003, 12h57
  4. [GifDecoder] marche pas dans applet avec IE
    Par formentor dans le forum Applets
    Réponses: 2
    Dernier message: 06/05/2003, 10h43
  5. Sysdate qui marche pas ??
    Par StouffR dans le forum Langage SQL
    Réponses: 4
    Dernier message: 28/08/2002, 13h23

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