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!
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!
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 !
Salut,
Ajoute l'unité où tu exécutes ta commandes dans le Uses de L'implémentation ..
à vrai dire, si tu garde les noms des composants tels qu'ils sont, alors ton Form1 est déclaré dans Unit1
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;
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]
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).
Ça entraînerait une erreur de compilation mais pas d'exécution
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 .
Tu parles de la référence circulaire ??a entraînerait une erreur de compilation mais pas d'exécution
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]
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 !
"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]
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.
! HS !
@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
Devient en Français, faux et illogique :Do not call Dock in application code. …. To dock a form programmatically, use the ManualDock method instead.
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
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager