raise EDECHashException.CreateRes(@sHashNoDefault);
(Dies compiliert übrigens nicht, wenn man in den Compiler-Optionen "Typed @ Parameter" einschaltet.)
raise EDECHashException.Creates(sHashNoDefault);
Die Frage habe ich vor kurzem auch in der englischsprachigen Delphi Praxis
gestellt, wenn auch nicht für Create/CreateRes sondern CreateFmt/CreateFmtRes.
Der Unterschied liegt darin, dass der Ressource-String erst beim eigentlichen Zugriff aus den Ressourcen geladen wird.
Das führt zu einer anderen Behandlung bei der Übersetzung:
"Constant resourcestring references are resolved during initialization by System._InitResStrings.
If you change the application language after that, e.g. by calling LoadResourceModule, then these references will not be updated."
--
Anders Melander
D.h. bei Create(sRessourceString) wird der Ressource String einmalig bei Programmstart geladen (und dabei ggf. die Übersetzung verwendet). Falls der User (oder das Programm) später auf eine andere Sprache umschaltet, wirkt sich das auf diese Strings nicht mehr aus. Bei CreateRes(@sRessourceString) wird er erst beim Aufruf geladen, also in der jeweils zu diesem Zeitpunkt ausgewählten Sprache.