DELPHI DLL对象的引出,该如何解决

DELPHI DLL对象的引出
Delphi(Pascal) code
unit StringConvertImp;
{$DEFINE STRINGCONVERTLIB}

interface
uses SysUtils;
{$I StrConvert.inc}

function InitStrConvert(APrepend, AAppend: String): TStringConvert; stdcall;

implementation

constructor TStringConvert.Create(APrepend, AAppend: String);
begin
  inherited Create;
  FPrepend := APrepend;
  FAppend  := AAppend;
end;

destructor TStringConvert.Destroy;
begin
  inherited Destroy;
end;

function TStringConvert.ConvertString(AConvertType: TConvertType; AString: String): String;
begin
  case AConvertType of
    ctUpper: Result := Format('%s%s%s', [FPrepend, UpperCase(AString), FAppend]);
    ctLower: Result := Format('%s%s%s', [FPrepend, LowerCase(AString), FAppend]);
  end;
end;

function InitStrConvert(APrepend, AAppend: String): TStringConvert;
begin
  Result := TStringConvert.Create(APrepend, AAppend);
end;

end.


Delphi(Pascal) code
type

  TConvertType = (ctUpper, ctLower);

  TStringConvert = class(TObject)
{$IFDEF STRINGCONVERTLIB}
  private
    FPrepend: String;
    FAppend : String;
{$ENDIF}
  public
    function ConvertString(AConvertType: TConvertType; AString: String): String;
      virtual; stdcall; {$IFNDEF STRINGCONVERTLIB} abstract; {$ENDIF}
{$IFDEF STRINGCONVERTLIB}
    constructor Create(APrepend, AAppend: String);
    destructor Destroy; override;
{$ENDIF}
  end;

{ For any application using this class, STRINGCONVERTLIB is not defined and
  therefore, the class definition will be equivalent to:

  TStringConvert = class(TObject)
  public
    function ConvertString(AConvertType: TConvertType; AString: String): String;
      virtual; stdcall; abstract;
  end;
}


StrConvert.inc,里面包含很多编译条件语句,总是不能理解,谁能告诉我?
能不能改成
Delphi(Pascal) code
type

  TConvertType = (ctUpper, ctLower);

  TStringConvert = class(TObject)
{$IFDEF STRINGCONVERTLIB}
  private
    FPrepend: String;
    FAppend : String;

  public
    function ConvertString(AConvertType: TConvertType; AString: String): String;virtual; stdcall;  abstract; 
    constructor Create(APrepend, AAppend: String);
    destructor Destroy; override;
{$ENDIF}
  end;

{ For any application using this class, STRINGCONVERTLIB is not defined and
  therefore, the class definition will be equivalent to:

  TStringConvert = class(TObject)
  public
    function ConvertString(AConvertType: TConvertType; AString: String): String;
      virtual; stdcall; abstract;
  end;
}



------解决方案--------------------
http://blog.donews.com/doijoy/archive/2004/12/01/189341.aspx
------解决方案--------------------
StrConvert.inc
inc一般用来定义编译头文件