为什么这不起作用?
with Win32.Winbase; use Win32.Winbase;
with Win32; use type Win32.BOOL;
with Win32.Winnt; use type Win32.Winnt.pHandle;
procedure Welcome is
Startup_Info : aliased STARTUPINFO;
SecurityAttribute : aliased PSECURITY_ATTRIBUTES;
begin
Startup_Info.dwFlags := 123; -- OK
SecurityAttributes.nLength := 123; -- ERROR
end Welcome;
答案 0 :(得分:1)
因为PSECURITY_ATTRIBUTES是一种访问(指针)类型,并且您尚未分配它的实例:
type PSECURITY_ATTRIBUTES is access all SECURITY_ATTRIBUTES;
所以你必须先分配一个实例:
SecurityAttributes : PSECURITY_ATTRIBUTES := new SECURITY_ATTRIBUTES;
(因为它是一个指针类型,你不需要“别名”。)
现在您可以分配给它:
SecurityAttributes.nLength := 123;
或者,如果SecurityAttributes声明为SECURITY_ATTRIBUTES类型的别名,那么您的原始作业将起作用。按照名称,我强烈怀疑前导'P'是为了表明类型是指针类型。
这还没有编译,我要通过在线source code listing。