簡體   English   中英

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;

您可能需要返回單元測試框架的文檔和示例,並學習如何設計測試用例以能夠接受參數。 實際上,甚至在這樣做之前,我建議您直接回到基礎知識,並確保您完全了解跑步者如何發現您的測試然后進行測試。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM