在delphi单元中,我有一个名为'Context'的全局记录:
interface
type
TContext = record
...
end;
var
context: TContext;
我在这个单元中也有一个初始化过程,采用上下文:
interface
procedure Init(AContext: TContext);
在Init过程中,我尝试将给定的上下文分配给全局上下文:
implementation
procedure Init(AContext: TContext);
begin
context := AContext;
end;
由于某种原因,分配后全局上下文仍为空。这是为什么? 在过程中声明局部变量,并为其分配按预期工作。
我应该提到的是,这个单元存在于一个DLL中,并且从exe调用init过程。 声明全局记录,或声明几个全局字符串没有区别。分配的值将丢失。
的问候,
-Vegar
答案 0 :(得分:3)
我想你必须显示更多的代码。与
unit Unit1;
interface
type
TContext = record
dummy: Integer;
end;
var
context: TContext;
procedure Init(AContext: TContext);
implementation
procedure Init(AContext: TContext);
begin
context := AContext;
end;
end.
和
program Project1;
{$APPTYPE CONSOLE}
uses
Unit1 in 'Unit1.pas';
procedure Test;
var
c: TContext;
begin
c.dummy := 666;
Init(c);
end;
begin
Test;
end.
我得到了预期的结果,即c
和Unit1.context
在Init(c);
执行Test
后都包含666。
答案 1 :(得分:0)
答案 2 :(得分:-1)
你不应该改变
procedure Init(AContext:TContext);
到
procedure Init(Var AContext:TContext);