代码如下:
function NetShareFolder(const ServerName:PWideChar;const NetName:String;
const Re:String;const Permissions:DWORD;
const Max_Uses: LongInt;const Current_Uses:DWORD;
const Path:String;const PassWD:PWideChar):LongInt;
var
Buf: PUSER_INFO_1;
begin
GetMem(Buf, Sizeof(Buf));
with Buf^ do
begin
Buf.shi2_netname := @WideString(NetName)[1];
Buf.shi2_type := STYPE_DISKTREE;
Buf.shi2_re := @WideString(Re)[1];
Buf.shi2_permissions := Permissions;
Buf.shi2_max_uses := Max_Uses;
Buf.shi2_current_uses := Current_Uses;
Buf.shi2_path := @WideString(Path)[1];
Buf.shi2_passwd := PassWD;
end; result := NetShareAdd(ServerName, 2, Pointer(Buf), 0);
FreeMem(Buf);
end;
function NetShareFolder(const ServerName:PWideChar;const NetName:String;
const Re:String;const Permissions:DWORD;
const Max_Uses: LongInt;const Current_Uses:DWORD;
const Path:String;const PassWD:PWideChar):LongInt;
var
Buf: PUSER_INFO_1;
begin
GetMem(Buf, Sizeof(Buf));
with Buf^ do
begin
Buf.shi2_netname := @WideString(NetName)[1];
Buf.shi2_type := STYPE_DISKTREE;
Buf.shi2_re := @WideString(Re)[1];
Buf.shi2_permissions := Permissions;
Buf.shi2_max_uses := Max_Uses;
Buf.shi2_current_uses := Current_Uses;
Buf.shi2_path := @WideString(Path)[1];
Buf.shi2_passwd := PassWD;
end; result := NetShareAdd(ServerName, 2, Pointer(Buf), 0);
FreeMem(Buf);
end;
因此需要用类型指针的基本类型(base-type)。如:type
TData = record
ID: Integer;
Sex: Char;
Age: Integer;
end; PData = ^TData;procedure Demo;
var
D: TData;
P: PData;
begin
GetMem(P, SizeOf(TData));
{
如果写成
GetMem(P, SizeOf(PData));
那么结果就是,指针P指向一块内存,该块内存尺寸只有4个字节。
}
P^.ID := 20;
P^.Sex := 'F';
P^.Age := 25;
D := P^;
FreeMem(P);
with D do ShowMessage(Format('%d %s %d', [ID, Sex, Age]));
end;
var
Buf: ^SHARE_INFO_2;