求助:如何将一个C++类转换成Delphi代码
同标题,该类是DirectShow中的一个示例,求如何将其转化成Delphi代码,万分感谢!!
- C/C++ code
// 类声明class CErrReporter : public IAMErrorLog{protected: long m_lRef; // Reference count.public: CErrReporter() { m_lRef = 0; } // IUnknown STDMETHOD(QueryInterface(REFIID, void**)); STDMETHOD_(ULONG, AddRef()); STDMETHOD_(ULONG, Release()); // IAMErrorLog STDMETHOD(LogError(LONG, BSTR, LONG, HRESULT, VARIANT*));};// 部分实现STDMETHODIMP CErrReporter::QueryInterface(REFIID riid, void **ppv){ if (ppv == NULL) return E_POINTER; *ppv = NULL; if (riid == IID_IUnknown) *ppv = static_cast<IUnknown*>(this); else if (riid == IID_IAMErrorLog) *ppv = static_cast<IAMErrorLog*>(this); else return E_NOINTERFACE; AddRef(); return S_OK;}STDMETHODIMP_(ULONG) CErrReporter::AddRef(){ return InterlockedIncrement(&m_lRef);}STDMETHODIMP_(ULONG) CErrReporter::Release(){ // Store the decremented count in a temporary // variable. ULONG uCount = InterlockedDecrement(&m_lRef); if (uCount == 0) { delete this; } // Return the temporary variable, not the member // variable, for thread safety. return uCount;}[解决办法]
那你直接按下面的定义实现LogError方法就可以了,其它的TInterfacedObject已经实现了,不用再写了:
TErrReporter = class(TInterfacedObject, IAMErrorLog)
public
function LogError(Severity: longint; const pErrorString: WideString;
ErrorCode: longint; HResult: longint; var pExtraInfo: OleVariant): HResult; stdcall;
end;
[解决办法]
学习