當程式檔案大小感覺有些大時,開始考慮分割程式,在網路上蒐集相關資料。

在 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;