DDG的例子
//dll
library StringConvertLib;uses
ShareMem,
SysUtils,
Classes,
StringConvertImp in 'StringConvertImp.pas';exports
InitStrConvert;
end.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.//调用
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;
//dll
library StringConvertLib;uses
ShareMem,
SysUtils,
Classes,
StringConvertImp in 'StringConvertImp.pas';exports
InitStrConvert;
end.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.//调用
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;
看看Help
我按照上面的方法导出类以后,在主程序调用类属性总是运行时错误,如下:
access violation at address xxxxxxx,read of address xxxxxxx,process stop.
怎么办呢?