德尔福:分配给全球记录 - 全球记录不会改变

时间:2010-07-08 08:32:21

标签: delphi variable-assignment record

在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

3 个答案:

答案 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.

我得到了预期的结果,即cUnit1.contextInit(c);执行Test后都包含666。

答案 1 :(得分:0)

答案 2 :(得分:-1)

你不应该改变

procedure Init(AContext:TContext);

procedure Init(Var AContext:TContext);