0

なぜこれが機能しないのですか??

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;
4

1 に答える 1

1

PSECURITY_ATTRIBUTES はアクセス (ポインター) タイプであり、そのインスタンスを割り当てていないため:

type PSECURITY_ATTRIBUTES is access all SECURITY_ATTRIBUTES;

したがって、最初にそのインスタンスを割り当てる必要があります。

SecurityAttributes  : PSECURITY_ATTRIBUTES := new SECURITY_ATTRIBUTES;

(ポインタ型なのでエイリアスは不要です。)

これで、それに割り当てることができます:

SecurityAttributes.nLength  :=   123;

または、SecurityAttributes がタイプ SECURITY_ATTRIBUTES のエイリアスとして宣言されている場合、元の割り当ては機能していました。名前からすると、先頭の「P」は、型がポインター型であることを示すことを意図していると強く思います。

これはコンパイルされていません。オンラインのソース コード リストを使用します。

于 2013-11-03T15:54:04.290 に答える