function TForm_Main.Perform_SysDLL(Const Tel, SysFrame: string;
var DataFrame: string): integer;
var
iResult: integer;
ParseSysFrame: TParseSysFrame; //in SysSMS.DLL
begin
Try
Result := 0;
@ParseSysFrame := GetProcAddress(G_SysLibHandle, 'ParseSysFrame'); if not (@ParseSysFrame = nil) then begin
iResult := ParseSysFrame(Tel, SysFrame, DataFrame);
case iResult of
2: Result := 1;
1: ShowStr('数据解析成功');
0: ShowStr('设备无权限发送系统数据帧');
-1:ShowStr('错误的帧格式');
-2:ShowStr('错误的命令字');
end;
end;// if not (@ParseSysFrame = nil) then begin
except
on E:Exception do ShowStr(E.Message);
end;
end;
大家看这一段代码中。我动态调用了一个DLL后。在把DLL库中函数的地址传递给程序中时。我看人家是这样写的。可是我不明白这里的:ParseSysFrame和@ParseSysFrame的关系是怎么样的?为什么有这样的写法:@ParseSysFrame := GetProcAddress(G_SysLibHandle, 'ParseSysFrame');啥意思?用面向对象的思想解释是如何好像解释不通。
var DataFrame: string): integer;
var
iResult: integer;
ParseSysFrame: TParseSysFrame; //in SysSMS.DLL
begin
Try
Result := 0;
@ParseSysFrame := GetProcAddress(G_SysLibHandle, 'ParseSysFrame'); if not (@ParseSysFrame = nil) then begin
iResult := ParseSysFrame(Tel, SysFrame, DataFrame);
case iResult of
2: Result := 1;
1: ShowStr('数据解析成功');
0: ShowStr('设备无权限发送系统数据帧');
-1:ShowStr('错误的帧格式');
-2:ShowStr('错误的命令字');
end;
end;// if not (@ParseSysFrame = nil) then begin
except
on E:Exception do ShowStr(E.Message);
end;
end;
大家看这一段代码中。我动态调用了一个DLL后。在把DLL库中函数的地址传递给程序中时。我看人家是这样写的。可是我不明白这里的:ParseSysFrame和@ParseSysFrame的关系是怎么样的?为什么有这样的写法:@ParseSysFrame := GetProcAddress(G_SysLibHandle, 'ParseSysFrame');啥意思?用面向对象的思想解释是如何好像解释不通。
就想网页中选择文本一样,当选择超过显示部分时,滚动条自动往下滚!
TScrollBox里放一个TIMAGE控件,当TScrollBox有滚动条时,怎么选择图片中的一部分,但这部分包括显示和没被显示的部分!
就想网页中选择文本一样,当选择超过显示部分时,滚动条自动往下滚!这个问题也帮回答下。回答了就结帐下班。