德爾福單位,我有一個名爲「語境」全球記錄:德爾福:分配給全球紀錄 - 全球記錄不改變
interface
type
TContext = record
...
end;
var
context: TContext;
我也有在這個單元中的初始化程序,採取背景:
interface
procedure Init(AContext: TContext);
的初始化過程裏面,我試着給定上下文分配給全球範圍內:
implementation
procedure Init(AContext: TContext);
begin
context := AContext;
end;
佛由於某種原因,作業後的全局範圍仍然是空的。這是爲什麼? 在過程中聲明一個局部變量,並賦予它按預期工作。
我應該提到的是,這個單元住在一個dll中,而init程序是從exe中調用的。 聲明一個全局記錄,或聲明幾個全局字符串沒有區別。分配的值將丟失。
問候,
-Vegar
如果你按住Ctrl鍵單擊在程序「初始化」的「語境」的IDE應該帶你到的有關情況。 – 2010-07-08 09:08:16
關於您的更新:IIUC「丟失」的值是字符串。混合字符串和DLL總是很棘手。你使用ShareMem,FastMM或類似的東西嗎? – 2010-07-08 10:18:12
您尚未演示如何在EXE中調用該函數。這個函數聲明在EXE端看起來如何? – 2010-07-08 14:17:32