请帮忙!我需要这个转换来为Delphi编写一些C头的包装器.
举个例子:
function pushfstring(fmt: PAnsiChar): PAnsiChar; cdecl; varargs; external;
...
function PushString(fmt: AnsiString; const args: array of const): AnsiString;
begin
Result := AnsiString(pushfstring(PAnsiString(fmt), args)); // it's incorrect :/
end;
Run Code Online (Sandbox Code Playgroud)
如何将"const of const"转换为"varargs"?
编辑:函数PushString实际上在记录中(我给出了一个简化的例子),我没有直接访问pushfstring.直接呼叫被排除在外.
编辑2:我为Delphi编写了LUA库的单元,这个案例对我来说非常重要.
指定并提供事情的所有细节 - 我在C中有这个功能:
LUA_API const char *(lua_pushfstring) (lua_State *L, const char *fmt, ...);Run Code Online (Sandbox Code Playgroud)
在Delphi中我有这样的东西:
LuaLibrary.pas
{...}
interface
{...}
function lua_pushfstring(L: lua_State; fmt: PAnsiChar): PAnsiChar; cdecl; varargs;
implementation
{...}
function lua_pushfstring; external 'lua.dll'; // or from OMF *.obj file by $LRun Code Online (Sandbox Code Playgroud)
dtxLua.pas
uses LuaLibrary;
{...} …Run Code Online (Sandbox Code Playgroud) 如何在Delphi记录中提取有关方法的RTTI信息?是否可以使用新的Rtti装置?