Oui PASCAL le fait
Les procédures imbriquées sont supportées en D et dans certains C, mais pas tous.
http://fr.wikipedia.org/wiki/Fonction_imbriqu%C3%A9e
En fait c'est super utile quand une fonction n'est utilisée que par une autre, elle n'a donc pas besoin d’être publique.
Ca permet aussi pour simplifier le code, comme par exemple dans une enumeration ou pourrait ecrire une seule procédure au lieu de s'en trimbaler deux, une principale et une autre qui se balade dans le code qui ne dépend que de sa procédure mère
Dans les codes ça simplifierait drolement la clarté, quand tu copie une procédure tout ce que tu as besoin est dedans si ça ne sert qu'a elle.
Dans certains cas les API ne savent être utilisées qu'en pointant une autre procédure, c'est le cas non isolé de "EnumWindows_"
Comme dans ce code que j'ai modifié à l'arache..et qui marche évidement pas
Code : Tout sélectionner
Structure result
hWnd.i
String.s
EndStructure
Procedure.s EnumereProcess()
Procedure EnumWindowsProc(hWnd, *lParam.result)
Protected Title.s{260}
GetWindowText_(hWnd, @Title, 260)
If FindString(Title, *lParam\String)
*lParam\String = Title
*lParam\hWnd = hWnd
ProcedureReturn #False
EndIf
ProcedureReturn #True
EndProcedure
Define param.result
param\String = " 5.10 ("
If Not EnumWindows_(@EnumWindowsProc(), @param)
ProcedureReturn "Found: " + param\String + " with hWnd: " + Str(param\hWnd)
EndIf
EndProcedure
Mais apparemment FRED a deja des problemes avec juste un gosub, et il parait que c'est compliqué a gerer les variables d'une procedure locale, alors c'est mal barré
