Lors de la compilation d'un morceau de code comme ceci:Delphi: commande 'GoTo' ne compile pas à l'intérieur 'avec'
01 function MyGotoDecision: boolean;
02 begin
03 {code ...}
04 end;
05
06 procedure TForm1.Button1Click(Sender: TObject);
07 label MyLabel;
08 begin
09 with Application do
10 begin
11 {code ...}
12 if MyGotoDecision then
13 goto MyLabel;
14 {more code ...}
15 end;
16 MyLabel:
17 {more code ...}
18 end;
Je reçois ce message d'erreur étrange compilateur:
'Void' does not contain a member named 'MyLabel' at line 13
Si je retire la ligne 'avec', l'erreur disparaît.
Dans mon vrai programme, la commande 'goto' sera utilisée pour sortir d'un code fortement imbriqué, où la logique de sortie en toute sécurité est tortueuse.
Toute aide serait appréciée.
Editer: Je viens de découvrir que Delphi compile correctement le code. Mais l'erreur de message est toujours affichée dans la vue Structure.
Je ne peux pas reproduire. Bien que je n'ai pas exactement la même version Delphi que vous (j'ai D6 et D2010 à portée de main). Pouvez-vous faire un MCVE. Alors au moins nous pouvons voir si le problème persiste dans les versions Delphi plus modernes –
Dépend de votre vrai code mais ne pouvez-vous pas supprimer le 'avec '? C'est à dire. qualifier explicitement quelque chose comme nécessaire? –
"Dans mon programme réel, la commande 'goto' sera utilisée pour quitter un code fortement imbriqué, où la logique de sortie en toute sécurité est tortueuse." - nettoyez la logique de sortie, utilisez 'try/finally' pour le nettoyage, et vous pouvez remplacer' goto' par 'exit'. –