...是数据库未打开或无未指定当前库。 追加20分解决!!DLL 和日期签名...
发布网友
发布时间:2024-10-01 16:14
我来回答
共4个回答
热心网友
时间:2024-10-17 19:56
嗯。
问题其他的没有什么,主要就是出现在检测签名那个子程序里面,dll命令有问题..没有编译的话就不行。其实的话,你本来那个代码也是可以的,只要不用dll,就把dll那个子程序放到程序里面,编译后运行也没有问题。
主要就是在数据库的路径上出现问题。
本来调试运行是在系统临时文件夹里面调试,那个文件夹里面没有数据库文件,自然无法打开,所以会显示打开失败。下面我把你那个dll命令稍微的修改了一下,我想应该就可以了。
======================================================================
.版本 2
.子程序 签名检测, 整数型, 公开, 1,通过 0.未通过
.参数 签名单位, 文本型
.参数 授权的方式, 整数型, , 1.时间限制型,此时签名文件的失效时间起作用 2.次数限制型,此时签名文件的使用次数起作用
.参数 数据库路径, 文本型, , 数据库的绝对路径=.=
.参数 数据库密码, 文本型, , 打开数据库需要的密码-.-
.局部变量 当前系统日期时间, 日期时间型
.局部变量 读取的签名单位, 文本型
.局部变量 读取的授权方式, 整数型, , , 1.时间限制 2.次数限制
.局部变量 失效的时间, 日期时间型
.局部变量 使用的次数, 整数型
.局部变量 返回的数据, 整数型
当前系统日期时间 = 取现行时间 ()
打开 (数据库路径, , , , , 数据库密码, )
置当前库 (数据库路径)
到首记录 ()
读取的签名单位 = 读 (“签名单位”)
.如果 (读取的签名单位 = 签名单位) ' 查对签名单位
到首记录 ()
读取的授权方式 = 读 (“授权方式”)
.如果 (授权的方式 = 读取的授权方式) ' 检测要求的授权方式与签名文件的授权方式是否相同
.判断开始 (授权的方式 = 1)
失效的时间 = 读 (“失效时间”)
.如果 (取整 (取时间间隔 (当前系统日期时间, 失效的时间, #日)) < 0)
信息框 (“签名文件已过期!”, 0, )
返回的数据 = 0
.否则
返回的数据 = 1
.如果结束
.判断 (授权的方式 = 2)
使用的次数 = 读 (“剩余使用次数”)
.如果 (使用的次数 < 1)
信息框 (“签名文件使用次数已经为:0 !”, 0, )
返回的数据 = 0
.否则
到首记录 ()
使用的次数 = 读 (“剩余使用次数”)
写 (“剩余使用次数”, 使用的次数 - 1)
返回的数据 = 1
.如果结束
.默认
.判断结束
.否则
信息框 (“签名文件错误,授权方式不正确!”, 0, )
返回的数据 = 0
.如果结束
.否则
信息框 (“签名单位错误,请使用正确的签名授予单位的程序!”, 0, )
返回的数据 = 0
.如果结束
返回 (返回的数据)
======================================================================
热心网友
时间:2024-10-17 20:00
.否则
编辑框1.内容 = “324”
.如果结束
.如果结束
热心网友
时间:2024-10-17 19:56
先保存.e程序 再运行
热心网友
时间:2024-10-17 19:58
注意看看 打开 这个命令的第二个参数 的说明 然后在看看你的 置当前库 使用的名称
问题就很容易发现了 虽然我不是很懂这个东西 如果我猜 的 没错 你把 这里改下问题就应该 解决了 改成这个样子 置当前库 (“日期签名”)
打开 (取运行目录 () + “日期签名.edb”, , , , , “afl_dt”, )
置当前库 (取运行目录 () + “日期签名.edb”)
参数名称为“在程序中使用的别名”,数据类型为“文本型(text)”,所处语句为“打开”。注明:别名为在后面的程序中引用本数据库时可使用的另一个名称。欲引用一个已经被打开的数据库可以使用该数据库本身的名称(数据库名称为数据库文件名的无路径和后缀部分。譬如 c:\my documents\gz.edb ,其数据库名称为 gz ),也可以使用在此处所指定的别名。别名主要用作避开重复的数据库名称或者简化对长数据库名的引用。数据库名称与别名皆不区分大小写,在查找数据库时,系统将优先查找别名。如果本参数被省略,默认为没有别名。
热心网友
时间:2024-10-17 19:58
嗯。
问题其他的没有什么,主要就是出现在检测签名那个子程序里面,dll命令有问题..没有编译的话就不行。其实的话,你本来那个代码也是可以的,只要不用dll,就把dll那个子程序放到程序里面,编译后运行也没有问题。
主要就是在数据库的路径上出现问题。
本来调试运行是在系统临时文件夹里面调试,那个文件夹里面没有数据库文件,自然无法打开,所以会显示打开失败。下面我把你那个dll命令稍微的修改了一下,我想应该就可以了。
======================================================================
.版本 2
.子程序 签名检测, 整数型, 公开, 1,通过 0.未通过
.参数 签名单位, 文本型
.参数 授权的方式, 整数型, , 1.时间限制型,此时签名文件的失效时间起作用 2.次数限制型,此时签名文件的使用次数起作用
.参数 数据库路径, 文本型, , 数据库的绝对路径=.=
.参数 数据库密码, 文本型, , 打开数据库需要的密码-.-
.局部变量 当前系统日期时间, 日期时间型
.局部变量 读取的签名单位, 文本型
.局部变量 读取的授权方式, 整数型, , , 1.时间限制 2.次数限制
.局部变量 失效的时间, 日期时间型
.局部变量 使用的次数, 整数型
.局部变量 返回的数据, 整数型
当前系统日期时间 = 取现行时间 ()
打开 (数据库路径, , , , , 数据库密码, )
置当前库 (数据库路径)
到首记录 ()
读取的签名单位 = 读 (“签名单位”)
.如果 (读取的签名单位 = 签名单位) ' 查对签名单位
到首记录 ()
读取的授权方式 = 读 (“授权方式”)
.如果 (授权的方式 = 读取的授权方式) ' 检测要求的授权方式与签名文件的授权方式是否相同
.判断开始 (授权的方式 = 1)
失效的时间 = 读 (“失效时间”)
.如果 (取整 (取时间间隔 (当前系统日期时间, 失效的时间, #日)) < 0)
信息框 (“签名文件已过期!”, 0, )
返回的数据 = 0
.否则
返回的数据 = 1
.如果结束
.判断 (授权的方式 = 2)
使用的次数 = 读 (“剩余使用次数”)
.如果 (使用的次数 < 1)
信息框 (“签名文件使用次数已经为:0 !”, 0, )
返回的数据 = 0
.否则
到首记录 ()
使用的次数 = 读 (“剩余使用次数”)
写 (“剩余使用次数”, 使用的次数 - 1)
返回的数据 = 1
.如果结束
.默认
.判断结束
.否则
信息框 (“签名文件错误,授权方式不正确!”, 0, )
返回的数据 = 0
.如果结束
.否则
信息框 (“签名单位错误,请使用正确的签名授予单位的程序!”, 0, )
返回的数据 = 0
.如果结束
返回 (返回的数据)
======================================================================
热心网友
时间:2024-10-17 19:58
.否则
编辑框1.内容 = “324”
.如果结束
.如果结束
热心网友
时间:2024-10-17 19:58
先保存.e程序 再运行
热心网友
时间:2024-10-17 19:59
注意看看 打开 这个命令的第二个参数 的说明 然后在看看你的 置当前库 使用的名称
问题就很容易发现了 虽然我不是很懂这个东西 如果我猜 的 没错 你把 这里改下问题就应该 解决了 改成这个样子 置当前库 (“日期签名”)
打开 (取运行目录 () + “日期签名.edb”, , , , , “afl_dt”, )
置当前库 (取运行目录 () + “日期签名.edb”)
参数名称为“在程序中使用的别名”,数据类型为“文本型(text)”,所处语句为“打开”。注明:别名为在后面的程序中引用本数据库时可使用的另一个名称。欲引用一个已经被打开的数据库可以使用该数据库本身的名称(数据库名称为数据库文件名的无路径和后缀部分。譬如 c:\my documents\gz.edb ,其数据库名称为 gz ),也可以使用在此处所指定的别名。别名主要用作避开重复的数据库名称或者简化对长数据库名的引用。数据库名称与别名皆不区分大小写,在查找数据库时,系统将优先查找别名。如果本参数被省略,默认为没有别名。