Donnerstag, 20. November 2008

entwickler.com Magazine Konferenzen Akademie Entwickler-Forum Jobbörse Bücher
Software & Support Verlag

EmptyParam und Delphi 8

Frage:Unter Delphi konnte man bisher die nicht belegten Parameter mit EmptyParam als Default belegen. Unter Delphi 8 gibt es dieses EmptyParam nicht mehr. Wie bekomme ich ein kurzen Aufruf hin, ohne alle Parameter als separate Variablen zu belegen?

Antwort: Gegenüber früher hat sich nur geändert, dass wir nun eine Variable vom Typ System.Object (alias TObject) deklarieren müssen. Über System.Reflection.Missing.Value wird der Parameter als nicht übergeben gekennzeichnet, so dass der optionale Parameter der Interface-Methode greift. Das folgende Beispiel für die Automation von Microsoft Word 2002 demonstriert dies:

procedure TWinForm.Button1_Click(sender: System.Object; e: System.EventArgs);
var
  aWordApp    : Word.ApplicationClass;
  vFileName   : System.Object;
  aEmptyParam : System.Object;
begin
  aWordApp := Word.ApplicationClass.Create;
  vFileName := 'C:\Temp\wartung.doc';
  aEmptyParam := System.Reflection.Missing.Value;
  aWordApp.Documents.Open(vFileName, aEmptyParam, aEmptyParam, aEmptyParam,
    aEmptyParam, aEmptyParam, aEmptyParam, aEmptyParam, aEmptyParam,
    aEmptyParam, aEmptyParam, aEmptyParam, aEmptyParam, aEmptyParam,
    aEmptyParam);
  aWordApp.Visible := True;
end;






Software & Support Verlag GmbH