본문 바로가기
DELPHI(델파이)

[델파이 - DELPHI] DLL 만들기

by Jcoder 2020. 11. 19.

library RecEncryptDLL;

{ Important note about DLL memory management: ShareMem must be the

  first unit in your library's USES clause AND your project's (select

  Project-View Source) USES clause if your DLL exports any procedures or

  functions that pass strings as parameters or function results. This

  applies to all strings passed to and from your DLL--even those that

  are nested in records and classes. ShareMem is the interface unit to

  the BORLNDMM.DLL shared memory manager, which must be deployed along

  with your DLL. To avoid using BORLNDMM.DLL, pass string information

  using PChar or ShortString parameters. }

uses

  System.SysUtils,

  System.Classes,

  uEIAES in '..\..\..\..\CONTACTCENTER\01.Trunk\01.Source\01.Class\AES\uEIAES.pas',

  Seed in '..\..\..\..\CONTACTCENTER\01.Trunk\01.Source\01.Class\Seed\Seed.pas',

  SeedUtil in '..\..\..\..\CONTACTCENTER\01.Trunk\01.Source\01.Class\Seed\SeedUtil.pas',

  uLog in '..\..\01.Class\uLog.pas',

  uRecEncrypt in '..\..\..\..\CONTACTCENTER\01.Trunk\01.Source\01.Class\PlayerBase\uRecEncrypt.pas';

{$R *.res}

function GetAlgorithm(idx : integer) : TEncAlgorithm;

begin

  case idx of

    0 :

      begin

        result := _Unknown;

      end;

    1 :

      begin

        result := _SEED;

      end;

    2 :

      begin

        result := _AES128;

      end;

    3 :

      begin

        result := _AES192;

      end;

    4 :

      begin

        result := _AES256;

      end;

    5 :

      begin

        result := _AES128_CBC;

      end;

    6 :

      begin

        result := _AES192_CBC;

      end;

    7 :

      begin

        result := _AES256_CBC;

      end;

  end;

end;

function DecryptRecfile(KeyFile, sFilename : stringvar ErrMsg : string) : booleanoverloadexport;

var

  v : TRecEncrypt;

begin

  v := TRecEncrypt.Create(KeyFile);

  try

    result := v.DecryptRecfile(sFilename);

    if not result then

      ErrMsg := v.ErrMsg;

  finally

    v.Free;

  end;

end;

function DecryptRecfile(KeyFile, sFilename, sTargetname : stringvar ErrMsg : string) : booleanoverloadexport;

var

  v : TRecEncrypt;

begin

  v := TRecEncrypt.Create(KeyFile);

  try

    result := v.DecryptRecfile(sFilename, sTargetname);

    if not result then

      ErrMsg := v.ErrMsg;

  finally

    v.Free;

  end;

end;

function DecryptRecfile(KeyFile, sFilename : string; Target : TMemoryStream; var ErrMsg : string) : booleanoverloadexport;

var

  v : TRecEncrypt;

begin

  v := TRecEncrypt.Create(KeyFile);

  try

    result := v.DecryptRecfile(sFilename, Target);

    if not result then

      ErrMsg := v.ErrMsg;

  finally

    v.Free;

  end;

end;

function DecryptRecfile(KeyFile : string; src : TMemoryStream; sExt : stringvar ErrMsg : string) : booleanoverloadexport;

var

  v : TRecEncrypt;

begin

  v := TRecEncrypt.Create(KeyFile);

  try

    result := v.DecryptRecfile(src, sExt);

    if not result then

      ErrMsg := v.ErrMsg;

  finally

    v.Free;

  end;

end;

function DecryptRecfile(KeyFile : string; src : TMemoryStream; sExt : string; Target : TMemoryStream; var ErrMsg : string) : boolean;

  overloadexport;

var

  v : TRecEncrypt;

begin

  v := TRecEncrypt.Create(KeyFile);

  try

    result := v.DecryptRecfile(src, sExt, Target);

    if not result then

      ErrMsg := v.ErrMsg;

  finally

    v.Free;

  end;

end;

function DecryptRecfile(KeyFile : string; src : TMemoryStream; sExt, sTargetname : stringvar ErrMsg : string) : booleanoverloadexport;

var

  v : TRecEncrypt;

begin

  v := TRecEncrypt.Create(KeyFile);

  try

    result := v.DecryptRecfile(src, sExt, sTargetname);

    if not result then

      ErrMsg := v.ErrMsg;

  finally

    v.Free;

  end;

end;

exports

  DecryptRecfile(KeyFile : string; sFilename : stringvar ErrMsg : string)name 'Decrypt_File',

  DecryptRecfile(KeyFile : string; sFilename, sTargetname : stringvar ErrMsg : string)name 'Decrypt_FileToFile',

  DecryptRecfile(KeyFile : string; sFilename : string; Target : TMemoryStream; var ErrMsg : string)name 'Decrypt_FileToStream',

  DecryptRecfile(KeyFile : string; src : TMemoryStream; sExt : stringvar ErrMsg : string)name 'Decrypt_Stream_Ext',

  DecryptRecfile(KeyFile : string; src : TMemoryStream; sExt : string; Target : TMemoryStream; var ErrMsg : string)name 'Decrypt_Stream_ExtToStream',

  DecryptRecfile(KeyFile : string; src : TMemoryStream; sExt : string; sTargetname : stringvar ErrMsg : string)name 'Decrypt_Stream_ExtToFile';

begin

end.

 

동일한 함수를 사용할때는 NAME을 붙여야 한다.