我正在實現一個解釋器,我的解釋器將支持的功能之一就像Delphi的Format
。實際上,我正在使用SysUtils.Format
來實現我的功能。但是,我在構建函數的第二個參數array of TVarRec
時遇到了問題。如何構建一個const數組?
假設我有以下代碼。目前,我只是假設解釋代碼需要訪問哪些Delphi變量(iVar1
和iVar2
),但我仍然不知道如何將它們放入Format
要求的結構(arFormatArgs
)中。
type TFormatArgs = array of TVarRec;
procedure RunInterpretedFormatFunction;
var
iMyAge: integer;
iMyIQ: integer;
sCode: string;
sText: string;
begin
iMyAge := 5;
iMyIQ := -5;
sCode := 'Format(''My age is %d and my IQ is %d'', [iMyAge, iMyIQ])';
sText := FormatThis(sCode, iMyAge, iMyIQ);
end;
function FormatThis(sFormatCode: string; iVar1: integer; iVar2: integer): string;
var
sFormatString: string;
arFormatArgs: TFormatArgs;
begin
sFormatString := GetFormatString(sFormatCode); // I can implement this function
arFormatArgs := ConstructFormatArgs(iVar1, iVar2); // NEED HELP HERE!
result := SysUtils.Format(sFormatString, arFormatArgs);
end;
如何在Delphi(不是Assembly)中實現我的ConstructFormatArgs
函數?
您是否看到http://docwiki.embarcadero.com/CodeExamples/XE2/en/SysUtilsFormat_%28Delphi%29示例?我不確定'consructformatargs'是什麼,但是你是否嘗試用ivar1和ivar2代替結果中的arformatargs? –
嗯,我只是建議它導致它顯示'sysutils.format'的規則不知道'constructformatargs'在做什麼。我想你可以看看它,看arFormatARgs是否遵循這些規則。 –
@Sam對不起,我不認爲我可以幫忙。如果你不知道'ConstructFormatArgs'是什麼,你會如何知道它遵循規則?如果它遵守規則,那麼問題是什麼?無論如何,祝你好運,我相信有人在這個更好,然後我可以幫助。 –