DELPHI DLL对象的引出,该如何解决
DELPHI DLL对象的引出
StrConvert.inc,里面包含很多编译条件语句,总是不能理解,谁能告诉我?
能不能改成
------解决方案--------------------
http://blog.donews.com/doijoy/archive/2004/12/01/189341.aspx
------解决方案--------------------
StrConvert.inc
inc一般用来定义编译头文件
- 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一般用来定义编译头文件