有幾個朋友經常向我問題在DLL中怎麼共用一個全局變量。比如像使用者登陸後的使用者名(UserName)...
其實這個問題很簡單。下面我把我的做法寫出來大家一起分享。
把共享的變量放在主程式裡:UserName,....等等,
在主程式裡寫兩個函數
Function CurUserName():PChar;
begin
Result:=pchar(UserName);
end;
procedure SetCurUserName(LoginUserName: PChar)
UserName:=LoginUserName;
然後在主程式的工程檔案(*.dpr)裡輸出這兩個函數裡寫
.....
{$R *.res}
exports
CurUserName, SetCurUserName;
....
這樣在每個DLL裡就可以使用這兩個函數了
function CurUserName: PChar; //從主程式裡擷取目前登陸帳号
var
GetCurUserName: function: pchar;
@GetCurUserName := GetProcAddress(GetModuleHandle(pchar(application.Exename)), 'CurUserName');
if Assigned(GetCurUserName) then //找到
result := GetCurUserName
else
result := 'admin';