Einzelnen Beitrag anzeigen

Der schöne Günther

Registriert seit: 6. Mär 2013
6.156 Beiträge
 
Delphi 10 Seattle Enterprise
 
#1

Methoden-Parameter soll Referenz, aber kein nil sein können

  Alt 28. Nov 2013, 14:22
Delphi-Version: XE5
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);
  Mit Zitat antworten Zitat