我在一个公共Unit中定义了一个SysCode变量,如下:
Unit AppUtils;Interface...
var
  SysCode: String;Implementprocedure InitVar
begin
  SysCode := '0001';
end;end.随后在Form1中使用它,
Form2.OpenBarcode(SysCode);//此时跟踪SysCode的值为‘0001’
参数传递之后的值(即在OpenBarcode内形参的值)为‘’,但
Form2.OpenBarcode(AppUtils.SysCode);//此时跟踪SysCode的值为‘0001’
则一切正常,请问是什么原因,非常感谢!

解决方案 »

  1.   

    你是不是在Form1中也定义了一个SysCode?
      

  2.   

    无论你调用哪个外部单元的对象(变量,过程,函数...),都必须加上该单元的名称,否则在编译的时候会提示该对象没有定义而出错。
    如果Form2.OpenBarcode(SysCode);语句在编译中可通过的话,先查查是不是本单元定义了SysCode变量,说不定该SysCode是form2.SysCode,而不是AppUtils.SysCode。
      

  3.   

    谢谢两位。
    To sysu(死树):第一,我已在整个Project中搜索了,只有AppUtils.pas中定义了SysCode,
    第二,我想即使Form1中也定义了一个SysCode,当程序执行到
    Form2.OpenBarcode(SysCode),
    此时跟踪SysCode的值为‘0001’,那么不管是哪个SysCode,‘0001’都应该传入OpenBarcode的,是吗?能帮忙解释吗?
      

  4.   

    补充:在AppUtils中除了SysCode外,还有一百零几个变量在此定义.
      

  5.   

    你确定出现这两种情况的区别仅仅是 SysCode 和 AppUtils.SysCode 的区别吗?