//不知道这个有不有用 //Delphi 6 开发人员指南//函数单元{ Copyright ?2001 Delphi 6 Developer's Guide Xavier Pacheco and Steve Teixeira }unit StringConvertImp; {$DEFINE STRINGCONVERTLIB}interface uses SysUtils; {$I StrConvert.inc}function InitStrConvert(APrepend, AAppend: String): TStringConvert; stdcall;implementationconstructor 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. //调用单元{ Copyright ?2001 Delphi 6 Developer's Guide Xavier Pacheco and Steve Teixeira }unit MainFrm;interfaceuses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls;{$I strconvert.inc}type TMainForm = class(TForm) btnUpper: TButton; edtConvertStr: TEdit; btnLower: TButton; procedure btnUpperClick(Sender: TObject); procedure btnLowerClick(Sender: TObject); private public end;var MainForm: TMainForm;function InitStrConvert(APrepend, AAppend: String): TStringConvert; stdcall; external 'STRINGCONVERTLIB.DLL';implementation{$R *.DFM}procedure TMainForm.btnUpperClick(Sender: TObject); var ConvStr: String; FStrConvert: TStringConvert; begin FStrConvert := InitStrConvert('Upper ', ' end'); try ConvStr := edtConvertStr.Text; if ConvStr <> EmptyStr then edtConvertStr.Text := FStrConvert.ConvertString(ctUpper, ConvStr); finally FStrConvert.Free; end; end;procedure TMainForm.btnLowerClick(Sender: TObject); var ConvStr: String; FStrConvert: TStringConvert; begin FStrConvert := InitStrConvert('Lower ', ' end'); try ConvStr := edtConvertStr.Text; if ConvStr <> EmptyStr then edtConvertStr.Text := FStrConvert.ConvertString(ctLower, ConvStr); finally FStrConvert.Free; end; end;end.
// StrConvert.inc 文件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; }
//Delphi 6 开发人员指南//函数单元{ Copyright ?2001 Delphi 6 Developer's Guide Xavier Pacheco
and Steve Teixeira }unit StringConvertImp;
{$DEFINE STRINGCONVERTLIB}interface
uses SysUtils;
{$I StrConvert.inc}function InitStrConvert(APrepend, AAppend: String): TStringConvert; stdcall;implementationconstructor 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.
//调用单元{ Copyright ?2001 Delphi 6 Developer's Guide Xavier Pacheco
and Steve Teixeira }unit MainFrm;interfaceuses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls;{$I strconvert.inc}type
TMainForm = class(TForm)
btnUpper: TButton;
edtConvertStr: TEdit;
btnLower: TButton;
procedure btnUpperClick(Sender: TObject);
procedure btnLowerClick(Sender: TObject);
private
public
end;var
MainForm: TMainForm;function InitStrConvert(APrepend, AAppend: String): TStringConvert; stdcall;
external 'STRINGCONVERTLIB.DLL';implementation{$R *.DFM}procedure TMainForm.btnUpperClick(Sender: TObject);
var
ConvStr: String;
FStrConvert: TStringConvert;
begin
FStrConvert := InitStrConvert('Upper ', ' end');
try
ConvStr := edtConvertStr.Text;
if ConvStr <> EmptyStr then
edtConvertStr.Text := FStrConvert.ConvertString(ctUpper, ConvStr);
finally
FStrConvert.Free;
end;
end;procedure TMainForm.btnLowerClick(Sender: TObject);
var
ConvStr: String;
FStrConvert: TStringConvert;
begin
FStrConvert := InitStrConvert('Lower ', ' end');
try
ConvStr := edtConvertStr.Text;
if ConvStr <> EmptyStr then
edtConvertStr.Text := FStrConvert.ConvertString(ctLower, ConvStr);
finally
FStrConvert.Free;
end;
end;end.
{$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;
}
能不能说具体些?TO: lmj2003(雁不归)
刘艺的那本《Delphi面向对象编程思想》例子我看看了,确实有用,
可是我想用VC封装一个DLL,接口是个类,我在Delphi里声明这个类,就可以用类里的函数。不知道VC能不能把类给传出来。??????
里面有,好好看一下。
没有钱买,在网上下载了例子看了一下,好像没有提到怎么在VC里封装,
Delphi 里可以直接声明 这样的函数,
function CarObj:ICar;
begin
Result:=TCar.create;
end;VC好像不行。。TO: ffwin()
应该可以,可是怎样实现啊?