[Delphi] 主程式 與 DLL 之間的全域變數問題
12 月.29, 2005 in Delphi
當程式檔案大小感覺有些大時,開始考慮分割程式,在網路上蒐集相關資料。
在 DLL 中如何共用一個全域變數,例如使用者登入後的使用者帳號(UserName)
把要共享的全域變數放在主程式裡,如 UserName,UserID,…等等
在主程式中寫兩個函數
Function GetCurUserName():PChar;
begin
Result := PChar(UserName);
end;
Function SetCurUserName(AUserName:PChar);
begin
UserName := AUserName;
end;
然後在專案檔 (.dpr) 裡輸出這兩個函數寫
…
{$R *.res}
Exports
GetCurUserName, SetCurUserName;
…
這樣在每個 DLL 裡就可以使用這兩個函數了
function GetCurUserName: PChar;
var
fGetCurUserName: function: PChar;
begin
@fGetCurUserName := GetProcAddress(GetModuleHandle(PChar(Application.ExeName)), ‘GetCurUserName’);
if Assigned(fGetCurUserName) then
begin
Result := fGetCurUserName
else
Result := ‘Admin’;
end;
Leave a Reply