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;