我在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;
当我调试它时,它会在程序的第一行停止。
我的问题是:我无法从第一个单元访问此程序,我做错了什么?
答案 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;