delphi - Delphi:分配给全局记录-全局记录不变

标签 delphi variable-assignment record

在delphi单元中,我有一个名为“ Context”的全局记录:

interface
  type
    TContext = record
       ...
    end;

  var
    context: TContext;


在本单元中,我还会有一个初始化过程,需要一个上下文:

interface  
  procedure Init(AContext: TContext);


在初始化过程中,我尝试将给定的上下文分配给全局上下文:

implementation
  procedure Init(AContext: TContext);
  begin
    context := AContext;
  end;


由于某些原因,分配后全局上下文仍为空。这是为什么?
在过程内部声明一个局部变量,并对其进行分配按预期工作。



我应该提到的是,该单元位于dll中,并且从exe调用了初始化过程。
声明全局记录或声明多个全局字符串没有区别。分配的值将丢失。

问候,
-醋

最佳答案

我想您必须显示更多代码。用

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。

关于delphi - Delphi:分配给全局记录-全局记录不变,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3201849/

相关文章:

javascript - extjs 记录按所需属性销毁

actionscript-3 - AS3将媒体文件保存到服务器

delphi - 我如何使用delphi跟踪IP

delphi - 为什么在 'Child' 方法中将参数类型从 'const' 切换到 'var' 时无法传递 'overloaded' 类实例

python - 将整数分配给列表

list - 更新列表的第 'x' 个元素 - Haskell

haskell - 如何一般地提取 Haskell 记录中的字段名称和值

delphi - 更改宽度 SysIPAddress32

multithreading - 德尔福 2010 线程

java - 对变量 [Something] 的赋值无效