It is not as rare as you believe. IEC61508 (similar to MISRA on software) is civilian industry, automotive, robotics, automation, factory/plant equipment. The standard itself escalate with risk of lifes on failure, but it is an increasing awareness in the industry that software failure cost money as more and more use computers.
Only the parts that can cause physical or environmental harm. (e.g. trip systems when a door is opened, and kill switches for doors). Things that cause extensive damage to the machine are also usually protected, though that has reasons that are more economic in nature. And the wording is usually "that you need to be aware of risks, and asses them". I don't really think they forbid certain approaches on the more normal levels.
But usually that is only a very small part of the total machine control, and often isolated in hardwired discrete components with a PLC especially designed and validated for security and safety in charge of them. For many cases solutions are available off the shelf. Doing it this (uniform across a plant) way is usually also easier to modify and revalidate for the customer.
While we are mostly a vision company, occasionally we build custom machinery around the quality control, and most customers don't even want us to go there at all, but build their own safety system using modular, validated components. If only because they want some control over it (wanting the whole conveyor line to stop if the security mechanism of one machine trips, reset suppressible alarms from multiple locations etc).
But I assume if you make equipment in larger series without customization in this area, costs factors in, yes you will probably have to do it yourself. If you have more info about the exact details in that directive, I'd be happy to hear/discuss them. It is an interesting twist to the discussion, even IMHO they are no reason to glorify old TP objects.
Is Delphi 7 different from FPC on this? Since I find that Delphi 7 is used in this context?
Yes,
of course. FPC is more advanced!
(
It has the D2006 expansion to add methods to records, which make the old objects even more redundant. While old objects are more powerful (inheritance and polymorphism), that is nearly useless cases where dynamic allocation is forbidden. (and even dangerous, if you e.g. rely on the object to match some predefined memory layout, one accidental "virtual" and under the hood a hidden field is added to TP objects)
That being said, one could just as well argue one doesn't need OOP at all, since the good parts are prohibited and just use normal procedural programming. Our machine control is plain C, so without OOP.
)