以下代码主要是
 virtual CMaterial* Copy();
 CMaterial(CMaterial *pMaterial);
 virtual ~CMaterial();
 virtual ~CTypeset();
  virtual ~CTypeset(); list<CMaterial*> m_MaterialList;virtual void Add(CMaterial *pMaterial); virtual void SetStatus(list<CMaterial*> *pList, BOOL bUsed);
 virtual double Typeset(double dStatrX,double dStatrY,double dStatrHei,double dStatrWid,
  list<CMaterial*> *pList);这几个涵数我不知道怎么翻译?
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
#pragma warning(disable:4786)
#pragma warning(disable:4251)
#include <list>
#include <string>
using namespace std;#ifdef TYPESETLIB_EXPORTS
#define TYPESETLIB_API __declspec(dllexport)
#else
#define TYPESETLIB_API __declspec(dllimport)
#endif
TYPESETLIB_API void TestTypeset(HDC dc);class TYPESETLIB_API CMaterial  
{
public:
 virtual CMaterial* Copy();
 virtual void SetUsed(BOOL bUsed);
 virtual void Rotated();
 virtual void SetSize(double dWidth,double dHeight);
 virtual double GetArea(){ return m_dHeight*m_dWidth; }
 CMaterial();
 CMaterial(CMaterial *pMaterial);
 CMaterial(double dWidth,double dHeight);
 virtual ~CMaterial();
 double m_dHeight,m_dWidth;
 double m_dX,m_dY;
 BOOL m_bUsed;
 BOOL m_bSeletcted;
 BOOL m_bRotated;
 int m_iIndex;
 
};
class TYPESETLIB_API CTypeset  
{
public:
 virtual double Go();
 virtual void Add(CMaterial *pMaterial);
 CTypeset();
 virtual ~CTypeset();
 list<CMaterial*> m_MaterialList;
 CMaterial m_Desktop;
protected:
 virtual void SetStatus(list<CMaterial*> *pList, BOOL bUsed);
 virtual double Typeset(double dStatrX,double dStatrY,double dStatrHei,double dStatrWid,
  list<CMaterial*> *pList);
 virtual void Sort();
 virtual void Clear();
 int m_iCurIndex;
};
#endif // !defined(AFX_TYPESET_H__46213FAE_D2D6_42A6

解决方案 »

  1.   

    不可能全直接翻译过来的,因为有模版类
    大致是这样的。那么
     virtual CMaterial* Copy();//这个是普通的虚函数
     function Copy:^CMaterial;virtual;
     
     CMaterial(CMaterial *pMaterial);//这个是构造函数,但是要注意Pascal好像不支持多重构造函数(就是说要用不同的名字的构造函数,可以参考TCustomForm的代码)
     Constructor Create(var pMaterial:CMaterial);或Constructor CreateNew(var pMaterial); virtual ~CMaterial(); //这些都是析构函数
     virtual ~CTypeset(); //这些都是析构函数
     virtual ~CTypeset(); //这些都是析构函数
     
     destructor Destroy();override;
     
     list<CMaterial*> m_MaterialList;
     TList m_MaterialList;
      //这个改的多了,TList是保存TObject的,要想保存自己的东西得处理一下,没办法,模版类是C++独有的virtual void Add(CMaterial *pMaterial);
    function Add(var Material:CMaterial):^CMaterial;virtual;virtual void SetStatus(list<CMaterial*> *pList, BOOL bUsed);
    procedure SetStatus(var List:TList;bUsed:boolean);virtual;virtual double Typeset(double dStatrX,double dStatrY,double dStatrHei,double dStatrWid,
      list<CMaterial*> *pList);
    fuction Typeset(dStatrX,dStatrY,dStatrHei,dStatrWid:double;var List:TList):double;这里面把函数参数表里面的指针都用引用调用代替了,其实就是类似C++ 的引用(CMaterial &p),在函数体里面用变量名就可以了。如果觉得不合适,改成指针也一样。推荐你别改了,实际没意义,改动太大