Bon alors je me fais mal comprendre.
Je suis complètement d'accord qu'il faut utiliser (je le dis dans mon PS).
class TMaClasse.MaMethode() begin...end;
puisque c'est la marche à suivre dans l'aide Delphi. La dessus pas de problème.
Par contre, le code que j'ai posté fonctionne
En faisant MaClasse := nil; tu utilises une instance.
Pour moi, une instance, est une allocation d'une classe. L'instance devient un objet.
Or, en faisant MaClasse := nil, il n'y a aucune allocation, uniquement une affection d'un pointeur (nil) à la variable MaClasse.
Ceci, est uniquement dans le but de bluffer le compilo qui rale en disant: "attention vous utilisez une variable non initialisée'...donc je l'initialise.
Ensuite, l'appel MaClasse.MaMethode fonctionne parfaitement, sans violation d'accès. Car il n'y a pas de tentative de lecture d'une zone mémoire non allouée (les méthodes sont allouées même si aucun objets n'a été instancié).
Cela provoquerait une violation si je tentais d'accéder à une variable, qui est allouée pour chaque instanciation par contre.
je suis pas en train de dire que ma méthode est bonne, mais qu'elle fonctionne et qu'elle ne plante absolument pas contrairement à ce que je lis (essayez!).
C'est une constatation, rien de plus...
Partager