尝试从另一个单元调用过程时访问冲突

时间:2017-10-20 12:29:33

标签: delphi

我在Delphi中有两个不同的单元。 第一个单元有一个名为ApplyUpdates的过程,它所做的就是运行一个查询。

我需要从另一个单元访问此过程,当我这样做时,会收到一条错误消息“Access violation”“。

第一个单元的程序是:

procedure TForm1.ApplyUpdates ( var AppType: string);
begin
  qryApplyUpdates.ParamByName('type').DataType := ftString;
  qryApplyUpdates.ParamByName('type').ParamType := ptInput;
  qryApplyUpdates.ParamByName('type').AsString := AppType;
  qryApplyUpdates.ExecSQL;
end;

我从第二个单元称这个程序为:

var
  UserForm: TForm1;
begin
    UserForm.ApplyUpdates (AppType );
end;

当我调试它时,它会在程序的第一行停止。

我的问题是:我无法从第一个单元访问此程序,我做错了什么?

1 个答案:

答案 0 :(得分:2)

如果表单是自动处理的,请不要使用本地变量:

// The default declared variable for an autocreated form is the classname without the prefix
Form1.ApplyUpdates(AppType);

如果表单未自动处理,则必须先创建表单,然后才能使用它。

var
  UserForm: TForm1;
begin
  UserForm := TForm1.Create(nil);
  try
    UserForm.ApplyUpdates(AppType);
  finally
    UserForm.Free;
  end;
end;