http://www.cnblogs.com/railgunman/archive/2010/11/29/1891200.html
主程序與DLL之間的全局變量問題
有幾個朋友經常向我問題在DLL中怎么共用一個全局變量。比如像用戶登陸后的用戶名(UserName)...
其實這個問題很簡單。下面我把我的做法寫出來大家一起分享。
把共享的變量放在主程序里:UserName,....等等,
在主程序里寫兩個函數
Function CurUserName():PChar;
begin
Result:=pchar(UserName);
end;
procedure SetCurUserName(LoginUserName: PChar)
begin
UserName:=LoginUserName;
end;
然后在主程序的工程文件(*.dpr)里輸出這兩個函數里寫
.....
{$R *.res}
exports
CurUserName, SetCurUserName;
....
這樣在每個DLL里就可以使用這兩個函數了
function CurUserName: PChar; //從主程序里獲取當前登陸帳號
var
GetCurUserName: function: pchar;
begin
@GetCurUserName := GetProcAddress(GetModuleHandle(pchar(application.Exename)), 'CurUserName');
if Assigned(GetCurUserName) then //找到
result := GetCurUserName
else
result := 'admin';
end;