Delphi 将字符串传递给过程出现访问冲突错误

Delphi pass string to procedure gets an access violation error

我目前正在尝试创建一个测试程序并向其传递一个字符串。该函数检查字符串是否等价。问题是,当测试运行时,我在过程中传递的字符串上出现 EAccessViolation 访问冲突错误。我知道这是一个内存声明问题,但我不确定如何解决。

这是我的代码:

声明

TestTForm1 = class(TTestCase)
strict private
    FForm1: TForm1;
public
    procedure SetUp; override;
    procedure TearDown; override;
published
    procedure TestCompareListBoxToFile(Method : String);
end;

通话

TestCompareListBoxToFile('Save');

程序

procedure TestTForm1.TestCompareListBoxToFile(Method : String);  
begin
    Check('Save' = Method,'they dont match');
end;

我是 delphi 的新手,所以如果有任何遗漏,请告诉我。请在回复中具体说明。谢谢。

该代码由单元测试运行器调用。它使用 RTTI 查找名称以 'Test' 开头的已发布方法。从表面上看,这似乎是一个 DUnit 测试用例。

运行程序需要一个不接受任何参数的过程,并按原样调用该方法。另一方面,您提供了一种确实需要参数的方法。未提供的参数。因此运行时错误。

现在,在您的代码中某处您说您正在调用这样的方法:

TestCompareListBoxToFile('Save');

但这不是调用测试的方式。测试由使用 RTTI 的运行器调用。如果您也尝试调用该函数,那就错了。

您必须这样声明您的方法:

procedure TestCompareListBoxToFile;

您可能需要返回单元测试框架的文档和示例,了解如何设计您的测试用例以便能够接受参数。事实上,在这样做之前,我建议您直接回到基础并确保您完全理解运行器如何发现您的测试然后运行它们。