Erstmal muß natürlich sowohl try-finally-except-end als auch try-except-finally-end oder gar sowas wie try-finally-except-finally-end usw. möglich sein,
aber das problem dabei ist, dass wohl im TRY der
Exception-Block mehrmals bei der CPU registriert/initialisiert werden muß, für jedes einzelne finally/except, damit sowas funktioniert.
Und ja, "named-with" wäre mal was, aber wichtiger wären mir denn doch eher named-arguments und dass bei gewissen Dingen die unverständlichen, nervigen und total unnötigen Reihenfolgezwänge bei der Definition entfallen.
Also sowas wie es teilweise in einigen/vielen C-Sprachen schon ähbliches gibt.
z.B. wo man beim Funktionsaufruf die Namen der Parameter nutzt und dann Parameter auslassen kann,
bzw. bei den assoziative-Arrays, wo Name und Value besser übergeben werden kann und wie es z.B. beim Befüllen von Record-Konstanten kennt, wobei ich es da manschmal schön fände, wenn man dort die Namen weglassen kann, wenn alles übergeben wird, bzw. wenn es Anhand der Reihenfolge eh zuordnen kann, so wie bei Funktionsaufrufen mit Defaultparametern.
Und wieso kann sich der Compiler nichtmal eine Sekunde lang was merken und brauch stdcall, static, virtuell usw. immer in einer bestimmten aber unmerkbaren Reihenfolge?
Delphi-Quellcode:
array of record = (
(name: "Mantel", size: [44,42,40,38], price: 69),
(name: "Jeans", size: [44,42,], price: 59),
(name: "Pullover", size: [42,40,38], price: 29),
(name: "Jacke", size: [44,42,40], price: 28)
);
MyFunction(ParamA: 'dsad', ParamB: 123);
oder zumindestens sowas direkt für Assoziative-Array-Parameter ähnlich dem
array of const
.
Auch die Variadic-Arguments könnte man in Pascal mal ordentlich einbauen, denn direkt nutzen kann man sie nur bedingt, zumindestens Aufruf und Deklaration innerhalb der eigenen EXE (es geht, sogar sehr einfach und ohne den Compiler zu verbiegen, aber ich garantiere, dass es niemand nutzen will) und das schlimmste sind die fehlenden TypeInfos (liegt aber nicht an Pascal, was aber kein Grund wäre das nicht zu erweitern) und dass der Compiler die falschen Typen verwendet.
z.B. legt C++ Float-Konstanten als Double auf den Stack, aber Delphi als Single, was ohne manuellen TypeCast oder Temp-Variable nicht nutzbar ist um sowas z.B. in einer C++-
DLL aufrufen zu wollen, denn durch die fehlenden TypeInfo kann die Funktion nicht drauf reageren und knallt somit gnadenlos gegen die Wand.