unit dsr;

interface
uses
  SysUtils, StrUtils;
  
function FTConSvr(hWnd: THandle;
                  hostAddress: PChar;
                  Server, User, Pswd, DTBase: PChar): Integer; stdcall; external 'FTClient.dll';
{
	FTConSvr 参数说明：hWnd-调用程序主窗口句柄(输入)；
			        hostAddress-通讯服务器IP地址(输入)；
			        Server-数据库服务器(输出)；
			        User-数据库登录名(输出)；
			        Pswd-数据库登录密码(输出)；
			        DTBase-数据库名(输出)。
			        调用前请先为每个输出参数分配至少16字节的存储空间。
   返回值：-1表示连接服务器失败(调用程序无需显示原因)，调用程序关闭；
   0表示本次连接成功，1表示已有连接，调用程序请继续运行。
}

//function PBDecode(Strin, StrOut: PAnsiChar; nInLen, nOutLen: Integer): Integer; stdcall; external 'FUTONGDLL.DLL';

function	ft001():Integer; stdcall; external 'FUTONGDLL.DLL';
//输出函数Ini:
//目的：初步检查是否存在用户锁，如果有存在，提示用户插入用户锁。在程序初始化时，一定要使用这段代码


function	ft002():Integer; stdcall; external 'FUTONGDLL.DLL';
//输出函数CheckKey
//目的：用狗中特定的算法验证当前的加密狗是否为授权的正确狗
//返回结果：要进行设置的值


function ft003(a :longint):longint; stdcall; external 'FUTONGDLL.DLL';
//输出函数SetValue
//目的：用来对变量进行值的设置
//参数a：要进行设置的值 
//返回结果：要进行设置的值
//例：对于原来如  x1 = x2; 的赋值方式，可改用 x1 = ft003(x2)的方式


function	ft004(s1,s2 :PAnsiChar; len :Integer) :Integer; stdcall; external 'FUTONGDLL.DLL';
//输出函数CompareString
//目的：用来对两个字符串进行比较
//参数s1：要比较的两个字符串之一
//参数s2：要比较的两个字符串之一
//参数len：要比较的长度
//返回结果：如果为0，两个字符串相等，如果为正数，s1>s2,如果为负数,s1<s2


function	ft005(s1,s2 :PAnsiChar; len :Integer) :Integer; stdcall; external 'FUTONGDLL.DLL';
//输出函数CompareStringNoCase
//目的：用来对两个字符串进行比较(忽略大小写)
//参数s1：要比较的两个字符串之一
//参数s2：要比较的两个字符串之一
//参数len：要比较的长度
//返回结果：如果为0，两个字符串相等，如果为正数，s1>s2,如果为负数,s1<s2


function	ft006(s1,s2 :PAnsiChar) :Integer; stdcall; external 'FUTONGDLL.DLL';
//输出函数Strcat
//目的：用来对两个字符串进行连接
//参数s1：要连接的两个字符串之一
//参数s2：要连接的两个字符串之一
//返回结果：返回目的字符串的长度， s1 为连接后的字符串
//相当于 s1 = s1 + s2,  s2加在s1的后面， 返回。

function	ft007(sd,s :PAnsiChar) :Integer; stdcall; external 'FUTONGDLL.DLL';
//输出函数Strcpy
//目的：对字符串进行复制
//参数sd：目的字符串
//参数s:源字符串
//返回结果：返回目的字符串的长度
//相当于 sd = s

function	ft008(p1,p2 :LongInt; exp :PAnsiChar) :Integer; stdcall; external 'FUTONGDLL.DLL';
//输出函数:Compare
//目的：用来比较两个数的大小，相当于?a>b,a<b,a=b
//参数p1：要比较的第一个数
//参数p2：要比较的第二个数
//参数c：是大于，小于或等于，即">","<","="
//返回结果：
//如果返回0，表示表达式为假，返回1表示表达式为真



//获取设置加密狗中的参数
//对加密狗的存储区进行操作时,耗时时间较长,应注意！！！！
//加密狗中存储位置说明
//允许使用的总空间160字节，其中：64字节存放数据库连接信息，分别是：
//标识		对应参数		允许存放的最大字符串长度
//   5		IP地址			15
//	 6		用户名			15
//   7		用户口令		15
//   8		DataBase		15
//	 9		标识			可用来进行特别标识,如本加密狗的信息,本机硬件信息等
// 0-4		自定义			共80字节空间，每个数字表示1节(16字节)，递增
//			注意空间不能溢出，否则引起未知错误；
//			0-4标识使用的是连续空间，当0位置的长度超过15时，
//			将覆盖1号位置的存储区域。
//			使用 0， 可用空间 80 - 1；
//				 1，		  64 - 1；
//				 2，		  48 - 1；
//........
   //[out, retval] BSTR * Value
function	ft011(outstr :PAnsiChar; Ord :Integer) :Integer; stdcall; external 'FUTONGDLL.DLL';
//输出函数GetParm
//目的：获取加密狗指定位置的字符串
//参数outstr：目的字符串
//参数Ord:标识加密狗特定地点的标志值（0-9）
//返回结果：返回目的字符串的长度

function	ft012(var instr :PAnsiChar; Ord :Integer) :Integer; stdcall; external 'FUTONGDLL.DLL';
//输出函数SetParm
//目的：在加密狗的指定位置存放字符串
//参数instr：需存放的字符串
//参数Ord:标识加密狗特定地点的标志值（0-9）
//返回结果：返回写入字符串的长度



//加解密函数
function	ft021(var instr :PAnsiChar; outstr :PAnsiChar) :Integer; stdcall; external 'FUTONGDLL.DLL';
//说明：本函数单向加密字符串instr，不能逆向解密！
//目的：获取输入字符串instr的单向加密字符串outstr
//参数instr：需加密的字符串
//参数outStr:单向加密后的密文
//返回结果：返回密文的长度

function	ft022(source,dest,key :PAnsiChar; flg :Integer) :Integer; stdcall; external 'FUTONGDLL.DLL';
function	ft023(source,dest,key :PAnsiChar; flg :Integer) :Integer; stdcall; external 'FUTONGDLL.DLL';
//说明：均为字符串加解密函数，可加解密
//目的：用指定的Key，对输入字符串source进行置换，dest为置换后的字符串
//参数source：需置换的字符串源文
//参数dest:置换后后的字符串密文
//参数key：置换采用的key,字符串
//参数flg: 为1时，进行加密，为0时进行解密
//返回结果：返回置换后字符串的长度

implementation

end.


