2010-02-12 11 views
0

Je me demandais si quelqu'un d'autre a rencontré cette erreur plutôt obtuse. J'ai une procédure qui ressemble vaguement à ceci:Delphi 2009 button.enabled montre une erreur dans la structure, mais compile encore

procedure dostuff(); 
begin 
    if session_started = true then // global var 
    begin 
    // do bunch of calculations 
    // goes on for a while 
    // then at the end we enable the save button 
    save_score.enabled := true; // save_score is a tbutton - nothing special about it! 
    end; 
end; 

Avec cette déclaration, la vue de la structure me dit que « TButton » ne contient pas un membre nommé « Activé » à la ligne 4499. Mais le code compile et exécute très bien ! Et si je le fais de cette façon:

procedure dostuff(); 
begin 
    if session_started = true then // global var 
    begin 
    // do bunch of calculations 
    // goes on for a while 
    // then at the end we enable the save button 
    with save_score do 
    begin 
     enabled := true; 
    end; 
    end; 

fin;

Ensuite, je ne reçois aucune plainte du spectateur et il compile encore.

Alors quelqu'un sait ce que l'affaire est ici? Ce n'est pas du tout bouleversant, mais c'est juste bizarre de se plaindre d'un tel code apparemment inoffensif.

+0

voir question http://stackoverflow.com/questions/1665691/how-to-remove-errors-red-underlines-in-d2007 pour des solutions possibles – jasonpenny

Répondre

0

Cette fonctionnalité est appelée "Error Insight": elle est censée vous montrer des erreurs dans votre code source avant de faire une compilation.
Vous pouvez voir les nœuds correspondant aux erreurs dans la visionneuse "Structure" (appuyez sur Maj + Alt + F11 pour l'afficher).

Depuis le début, Error Insight a été bogué.
De nos jours, il est moins buggé qu'auparavant, mais quand même.

Certaines choses dans l'EDI Delphi dépendent de l'erreur Insight et souffrent également de ces bogues.
Par exemple, certaines des possibilités du refactor intégré ne fonctionnent pas lorsque l'analyse des erreurs pense que le code sous-jacent est erroné.

Vous pouvez disable Error Insight, mais cela ne résout pas certaines des dépendances (c'est-à-dire que les refactorings ne fonctionnent toujours pas, mais vous ne pouvez plus les voir a priori).

C'est l'une des raisons telles que ModelMaker Code Explorer (MMX).
MMX est une extension Delphi bon marché qui a une tonne d'actions refactor qui fonctionnent.

--jeroen

+0

Ok, il est donc une erreur l'ide. Erreur d'aperçu dans ce cas. Merci pour les conseils. – Rafe