我有一個帶有多載函式的代碼,其中一個是類方法,另一個是物件方法。在 XE7 下作業正常,嘗試在 D7 下實作相同的代碼,得到編譯器錯誤,不知道為什么。
[錯誤] testform.pas(23):對“OpenForm”的模糊多載呼叫**
unit testform;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Contnrs;
type
TFrmBase = class(TForm)
public
class function Test: TModalResult; overload;
class function OpenForm(AParamNames: array of string; AParamValues: array of Variant): TModalResult; overload;
function OpenForm(AClassName: String; AParamNames: array of string; AParamValues: array of Variant): TModalResult; overload;
end;
implementation
{$R *.dfm}
class function TFrmBase.Test: TModalResult;
begin
// here comes the error, tried without "TFrmBase.", same result
Result := TFrmBase.OpenForm([], []);
end;
class function TFrmBase.OpenForm(AParamNames: array of string; AParamValues: array of Variant): TModalResult;
begin
// do nothing
end;
function TFrmBase.OpenForm(AClassName: String; AParamNames: array of string; AParamValues: array of Variant): TModalResult;
begin
// do nothing
end;
end.
奇怪的是(至少對我來說)如果我洗掉AParamValues: array of Variant代碼,它可以編譯得很好。
為什么這個在 D7 下不起作用?我應該在這里解決什么問題?可能我錯過了一些明顯的東西。
uj5u.com熱心網友回復:
我認為您需要使您的代碼如下
class function TFrmBase.Test: TModalResult;
var
StrArr : array of string;
VarArr : array of Variant;
begin
//Fill your arrays here
Result := TFrmBase.OpenForm(StrArr, VarArr);
end;
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/522338.html
標籤:德尔福
上一篇:始終打開資料庫事務可以嗎?
