delphi如何把接口文件放在内存里

delphi如何把接口文件放在内存里,第1张

delphi把接口文件放在内存里的方法如下:

1. 加密算法要求:AES/CBC/PKCS5Padding,秘钥长度128位。

2. 获取密钥的缓存是否只应该放在内存中,在服务游橘启动后从接口拉取。禁止存放在数据库、硬盘文件、OSS等持久化存储的地方。

3. 模糊查询部分功能,如不使用,可不实现。

4. 设置密钥的过期时间,过期重新拉取。秘钥的过期时间,在获取秘钥的接口会返回的,控制权在于top服务端。秘钥获取接口 :taobao.top.secret.get5. 请回传密钥的加密、卖丛解密调用次数。具体标准:加、解密调用函数每次调用,对应的计数器(各中磨樱种类型计数器)会+1,5分钟左右同步一次。异步线程会把计数器同步到top api接口: taobao.top.sdk.feedback.upload。具体实现请参考 JAVA SDK。最好用Delphi直接调用JAVA类实现加密解密。

.设置OnClick事件

如果获得焦点的单元格所对应的字段与下拉框所对应的字段不一致 下拉前模衡框不可见 为此 设置表格的OnClick事件如码哪下

If (Grid Cells[Grid Col ]<>Company ) then

begin

ComboBox Visible := false

end

.设置OnChange事件

在OnDrawCell事件中只完成了绘制单元格和显示下拉框的工作 并不能将数据输入到表格 为此 设置下拉框的OnChange事件如下

Grid Cells[Grid Col Grid Row]:=ComboBox

Items[ComboBox ItemIndex]

这样就完成了在表格中插入下拉框的工作

在表格中显示图形字段

在程序开发中 有时需要在报表中显示一些非常规字符 例如在零件检验报表中的检测项目字段就包含了零件加工粗糙度 加工公差等非常规字符 解决该问题的一般思路是把这些非常规字符作为图形字段存储 例如SQL Server 数据库中的Image字段 但是无论是StringGrid控件还是DBGrid控件 都只能直接显示字符串 这样就产生了如何在表格控件上显示图形字段的问题

乍一看 该问题可以利用上述办法在表格中插入DBImage控件解决 但是这样需要插入与记录同等个数的控件 更麻烦的是由于OnDrawCell事件触发非常频繁 这样插入的DBImage控件会不停地试图与数据库连接 不仅增加了网络通信量 而且图形字段明显有闪烁感 影响程序的正常运行 更好的解决办法是在连接数据库时动态地慧做创建DBImage控件 利用该控件读取数据库的Image字段 并作为临时文件保存到客户机硬盘 在表格的OnDrawCell事件中读取该临时文件 完成绘制工作 该临时文件在客户退出时被删除 以下是在表格中显示图形字段的具体步骤

.保存Image字段

在执行查询时读取所有Image字段 并保存到客户机硬盘

Begin

// 略去查询语句

FileName:= d: emp //初始化临时文件路径

MyDBImage =TDBImage Create(Self)//创建DBImage

MyDBImage Parent:=self

MyDBImage DataSource:=DataSource

MyDBImage DataField = 描述 //指定为 描述 字段

Index:=

while not ClientData Eof do begin //读数据库

s:=IntToStr(Index)

FileName :=FileName+s

FileName :=FileName + bmp

//保存临时文件

MyDBImage Picture Bitmap SaveToFile(FileName ) Grid Cells[ Index]:=ClientData FieldByName( 零件编号 ) AsString

Grid Cells[ Index]:=

//填写表格

Grid Cells[ Index]:=ClientData FieldByName( 实测数据 ) AsString

ClientData Next

Index:=Index+

end

MyDBImage Destroy()//释放DBImage

end

lishixinzhi/Article/program/Delphi/201311/24772

使用CreateFile函数来判断文件是否打开,编写以下函数就可以判断文件是否已打开了,代没键码如下:\x0d\x0a\x0d\x0afunction IsFileInUse(AName: string): boolean\x0d\x0avar\x0d\x0a hFileRes: HFILE\x0d\x0abegin\x0d\x0a Result := False\x0d\x0a if not FileExists(AName) then exit\x0d\x0a hFileRes := CreateFile(PChar(AName), GENERIC_READ or GENERIC_WRITE, 0, nil, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0)\x0d\x0a Result := hFileRes = INVALID_HANDLE_VALUE\x0d\x0a if not Result then\x0d\x0aCloseHandle(hFileRes)\x0d\x0aend\x0d\x0a使用方式:\x0d\x0a if IsFileInUse('d:\test.txt') then\x0d\x0aShowMessage('文件在使用.')\x0d\x0a else\x0d\x0aShowMessage('文件没有使用.')\x0d\x0a\x0d\x0aCreateFile函数说明:\x0d\x0a\x0d\x0aHANDLE CreateFile(\x0d\x0a\x0d\x0aLPCTSTR lpFileName, //指向文件名的指针\x0d\x0a\x0d\x0aDWORD dwDesiredAccess, //访问模式(写/读)\x0d\x0a\x0d\x0aDWORD dwShareMode, //共享模式指察喊\x0d\x0a\x0d\x0aLPSECURITY_ATTRIBUTES lpSecurityAttributes, //指向安全属性的指针\x0d\x0a\x0d\x0aDWORD dwCreationDisposition, //如何创建\x0d\x0a\x0d\x0a唯野DWORD dwFlagsAndAttributes, //文件属性\x0d\x0a\x0d\x0aHANDLE hTemplateFile //用于复制文件句柄\x0d\x0a\x0d\x0a)\x0d\x0a\x0d\x0a参数列表\x0d\x0a\x0d\x0alpFileName String 要打开的文件的名字\x0d\x0a\x0d\x0adwDesiredAccess Long 如果为 GENERIC_READ 表示允许对设备进行读访问;如果为\x0d\x0aGENERIC_WRITE 表示允许对设备进行写访问(可组合使用);如果为零,表示只允许获取与一个设备有关的信息\x0d\x0a\x0d\x0adwShareMode Long, 零表示不共享; FILE_SHARE_READ 和/或 FILE_SHARE_WRITE\x0d\x0a表示允许对文件进行共享访问\x0d\x0a\x0d\x0alpSecurityAttributes SECURITY_ATTRIBUTES,\x0d\x0a指向一个SECURITY_ATTRIBUTES结构的指针,定义了文件的安全特性(如果 *** 作系统支持的话)\x0d\x0a\x0d\x0adwCreationDisposition Long,下述常数之一:\x0d\x0a\x0d\x0aCREATE_NEW 创建文件;如文件存在则会出错\x0d\x0a\x0d\x0aCREATE_ALWAYS 创建文件,会改写前一个文件\x0d\x0a\x0d\x0aOPEN_EXISTING 文件必须已经存在。由设备提出要求\x0d\x0a\x0d\x0aOPEN_ALWAYS 如文件不存在则创建它\x0d\x0a\x0d\x0aTRUNCATE_EXISTING 讲现有文件缩短为零长度\x0d\x0a\x0d\x0adwFlagsAndAttributes Long, 一个或多个下述常数\x0d\x0a\x0d\x0aFILE_ATTRIBUTE_ARCHIVE 标记归档属性\x0d\x0a\x0d\x0aFILE_ATTRIBUTE_COMPRESSED 将文件标记为已压缩,或者标记为文件在目录中的默认压缩方式\x0d\x0a\x0d\x0aFILE_ATTRIBUTE_NORMAL 默认属性\x0d\x0a\x0d\x0aFILE_ATTRIBUTE_HIDDEN 隐藏文件或目录\x0d\x0a\x0d\x0aFILE_ATTRIBUTE_READONLY 文件为只读\x0d\x0a\x0d\x0aFILE_ATTRIBUTE_SYSTEM 文件为系统文件\x0d\x0a\x0d\x0aFILE_FLAG_WRITE_THROUGH *** 作系统不得推迟对文件的写 *** 作\x0d\x0a\x0d\x0aFILE_FLAG_OVERLAPPED 允许对文件进行重叠 *** 作\x0d\x0a\x0d\x0aFILE_FLAG_NO_BUFFERING 禁止对文件进行缓冲处理。文件只能写入磁盘卷的扇区块\x0d\x0a\x0d\x0aFILE_FLAG_RANDOM_ACCESS 针对随机访问对文件缓冲进行优化\x0d\x0a\x0d\x0aFILE_FLAG_SEQUENTIAL_SCAN 针对连续访问对文件缓冲进行优化\x0d\x0a\x0d\x0aFILE_FLAG_DELETE_ON_CLOSE 关闭了上一次打开的句柄后,将文件删除。特别适合临时文件\x0d\x0a\x0d\x0a也可在Windows NT下组合使用下述常数标记:\x0d\x0a\x0d\x0aSECURITY_ANONYMOUS, SECURITY_IDENTIFICATION,\x0d\x0aSECURITY_IMPERSONATION, SECURITY_DELEGATION,\x0d\x0aSECURITY_CONTEXT_TRACKING, SECURITY_EFFECTIVE_ONLY\x0d\x0a\x0d\x0ahTemplateFile Long, 如果不为零,则指定一个文件句柄。新文件将从这个文件中复制扩展属性\x0d\x0a\x0d\x0a返回值\x0d\x0a\x0d\x0a如执行成功,则返回文件句柄。\x0d\x0a\x0d\x0aINVALID_HANDLE_VALUE表示出错,会设置GetLastError。即使函数成功,但若文件存在,且指定了CREATE_ALWAYS\x0d\x0a或 OPEN_ALWAYS,GetLastError也会设为ERROR_ALREADY_EXISTS


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/tougao/8220700.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-14
下一篇 2023-04-14

发表评论

登录后才能评论

评论列表(0条)

保存