Hallo.
Kann ich den "Gültigkeitsbereich" eines Parameters einschränken, dass ich zwar gerne Objekte annehme, aber kein
nil
?
Beispiel:
Delphi-Quellcode:
procedure TMyClass.OperateOnObject(const someObject: TObject);
if not Assigned(someObject) then raise EArgumentNilException.Create(..);
// Kram
end;
myInstance.OperateOnObject(nil); // <-- Soll nicht kompilieren
Somit könnte ich mir auch immer das
Exception werfen am Methodenanfang sparen. Gibt es da etwas?
Bislang fällt mir nur ein, den Methoden-Parameter zu einem var-Parameter zu machen aber das kann ja auch nicht Sinn der Sache sein.
Die
Delphi-Hilfe spricht von einem sehr gut aussehenden [Ref]-Attribut für Parameter. Ich sehe allerdings bei mir keinen Unterschied: Das scheint mal wieder nur im iOS/Android-Compiler zu stecken...
Zitat:
Da S1 und S2 im Rumpf von CompareStr nicht geändert werden, können sie als Konstantenparameter deklariert werden.
Konstantenparameter können je nach verwendetem Compiler an die Funktion per Wert oder per Referenz übergeben werden. Um den Compiler zu veranlassen, einen Konstantenparameter per Referenz zu übergeben, können Sie den Dekorator [Ref] mit dem Schlüsselwort const verwenden.
Das folgende Beispiel zeigt, wie Sie den Dekorator [Ref] entweder vor oder nach dem Schlüsselwort const angeben können:
function FunctionName(const [Ref] parameter1: Class1Name; [Ref] const parameter2: Class2Name);