Es ist nur der Compiler der meckert weil er eine Variable will. Intern wird bei einem Var- oder Pointer-Parametern das gleiche gemacht. Daher kann man auch einfach ein nil derefenzieren.
Beispiel:
Delphi-Quellcode:
procedure Test(var EinString: String);
begin
if (@EinString <> nil) then
begin
ShowMessage(EinString);
end;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
Test(String(nil^));
end;