为了正常的体验网站,请在浏览器设置里面开启Javascript功能!

_文件粉碎机_的VB程序实现

2017-09-26 11页 doc 49KB 25阅读

用户头像

is_511210

暂无简介

举报
_文件粉碎机_的VB程序实现_文件粉碎机_的VB程序实现 “文件粉碎机”的VB 程序实现 *柏昌顺 摘 要 : 描 述 了 文 件 删 除 的 原 理 ,“文 件 粉 碎 机 ”的 原 理 及 其 应 用 , 并 介 绍 了 以 VB 程 序 实 现“文 件 粉 碎 机 ”的 整 个 过 程 。 :关 键 词 文 件 粉 碎 机 VB API 函 数 Dir 函 数 中 图 分 类 号 : TP311 文 献 标 识 码 B 文 章 编 号 : 1002- 2422( 2007) 04- 0009- 04 VB Pr ocedur e Rea...
_文件粉碎机_的VB程序实现
_文件粉碎机_的VB程序实现 “文件粉碎机”的VB 程序实现 *柏昌顺 摘 要 : 描 述 了 文 件 删 除 的 原 理 ,“文 件 粉 碎 机 ”的 原 理 及 其 应 用 , 并 介 绍 了 以 VB 程 序 实 现“文 件 粉 碎 机 ”的 整 个 过 程 。 :关 键 词 文 件 粉 碎 机 VB API 函 数 Dir 函 数 中 图 分 类 号 : TP311 文 献 标 识 码 B 文 章 编 号 : 1002- 2422( 2007) 04- 0009- 04 VB Pr ocedur e Realization of ″File Gr inder ″ Bai Changshun Abstr act: The paper describes the principle of document deletion、the principle of “file grinder” and its application,and pr- sents the whole process of realizing “file grinder”in VB. Keywor d: File Grinder VB API Function Dir Function ″文件粉碎机″能够将文件彻底的″添 加 文 件 ″功 能 的 设 计 2 Dialog Control 6.0 部件:从″工程″菜单 销毁的一种程序。其原理就是将需要 中 选 择 ″部件″命令,打开″部件″对话 ″添加文件″命令的功能主要是利 销毁的文件所占用的空间使用无意义 框。然后在 Microsoft Common Dialog 用 CommonDialog 控件显示″打开″对话 的符号重新填充一遍,然后再将文件 Control 6.0 部件前的复选框中打勾; 框,将待粉碎的文件加入到列表框中。 删除,从而达到完全删除文件的目的。 (3) 在 form1 窗体上依次创建一个 该功能的难点在于文件的多选(利用 ListBox, 一个 CommonDialog, 一 个 Pro- ctrl 或 shift 键的配合,一次选择多个 gressBar 及五个 Command 控件,属性 1 界 面 的 设 计 文件),及其多选后将每个文件从返 设置见表 1。完成后效果如图 1。 回的 filename 中分离出来。通常情况 (1)启动 VB,新建一个E XE 工程文件;(2)添加 Microsoft Common void CDrawBezView::OnRButtonDown(UINT nFlags, CPoint point)R 2 运行效果见图 1、图 2。 for(int j=0Uj<4Uj++)R CRect rectU rect =CRec(tBezierPoint [j].x - 3,BezierPoint [j]. y- 3,BezierPoint [j]. x+3, BezierPoint[j].y+3)U if(rect.PtInRec(tpoint))R Index=jU breakU^ ^ CView::OnRButtonDown(nFlags, point)U^ void CDrawBezView::OnMouseMove(UINT nFlags, CPoint point)R if(Index>=0&&Index<=)3R BezierPoint[Index].x=pointU .x BezierPoint[Index].y=pointU .y InvalidateU^ CView::OnMouseMove(nFlags, point)U^ void CDrawBezView::OnMouseMove(UINT nFlags, CPoint point)R if(Index>=0&&Index<=)3R BezierPoint[Index].x=pointU .x 参 考 文 献 BezierPoint[Index].y=pointU. y[1]李兰友,韩广峰,等. Visual C# 图形程序设计实例[M]. Invalidat(e)U^ 北京:工业出版社,2003- 04. CView::OnMouseMove(nFlags, point)U^ [2]王建华. Visaul C++6 编程技术内幕[M]. 北京:机械工业 void CDrawBezView::OnRButtonUp(UINT nFlags, CPoint point)R 出版社,2000- 02. Index=- 1U [3] 吕文达. 精通 C# 程序设计. 北京:清华大学出版社, CView::OnRButtonUp(nFlags, point)U ^ * 柏昌顺 浙江国际海运职业技术学院计算机教研室助教(316021) 2004- 11- 01. 收稿日期:2007- 03- 03 表 1 控 件 属 性 的 设 置 控 件属 性设 置 值 窗体 文件粉碎机 Caption Command1 Caption 添加文件 添加目录 Command2 Caption Command3 Caption 开始粉碎 清空列表 Command4 Caption Command5 Caption 退出系统 名称 Progressbar1 jdt Commanddialog1 cdlg 名称 图 1 完 成 后 的 界 面 Maxfilesize 20000(文件多选时f ilename 需要较大缓冲区) [Alias ″alias″] [([[ByVal] variable [As type] Next 下 CommonDialog 控件是只能单选的, [,[ByVal] variable [As type]]...])] End If 也就是一次只能选择一个文件。如果 3.2 Dir 函数使用说明 要实现多选,则需将 commondialog 控 Command3.Enabled = True Dir 函数返回一个 String,用以表 End Sub 的 件flags 属性设置为:cdlOFNAllow- 示一个文件名、目录名或文件夹名称, Multiselect + cdlOFNExplorer。 3 ″添 加 目 录 ″功 能 的 设 计 它必须与指定的模式或文件属性、或 另外,我们还必需掌握″打开″对 磁盘卷标相匹配。语法:Dir[(pathname ″添加目录″功能主要是用来将所 话框的返回值 filename 的格式。返回 选择目录及其子目录里的所有文件都 [, attributes])],Dir 函数的语法具有以 的 filename 是一个字符串,当仅选择 加入到待粉碎列表框中。″添加目录″ 下几个部分(见表2 ): 一个文件时返回值是文件的完整路径 功能也是本系统中的一个难点。在 VB 和文件名;如果选择的是多个文件,则 表 2 Dir 函 数 的 语 法中虽然为我们提供了 DirveListBox(驱 返回字符串的格式为:路径 文件 1 动器列表),DirListBox (目录列表), 部 分描 述FileListBox (文件列表),CommonDia- 可选参数,用来指定文件名的字符 log(通用对话框)等控件,这些控件用来 文件 2 文件 n,路径及文件名之 串表达式,可能包含目录或文件 夹、以及驱动器,如果没有找到 pathname 浏览文件及文件夹或选择文件时比较 pathname,则会返回零长度字符串 间以空格隔开。实现方法如下: 好用,但要用他们来实现添加目录的 Private Sub Command1_Click() (″″)。功能还是比较困难的。本文使用了 可选参数,常数或数值表达式,其 Dim i As Integer, z As Integer 总和用来指定文件属性,如果省 SHBrowseForFolder 和 SHGetPathFro- 略,则会返回匹配p athname 但不包 Dim path As String attributes 含属性的文件。 mIDList 两个 API 函数来显示目录选 cdlg.Flags = cdlOFNAllowMultiselect + 择对话框,另外编写了一个 findfile 过 cdlOFNExplorer 在第一次调用 Dir 函数时,必须 程实现对文件夹的遍历。该过程利用 cdlg.FileName = ″″ 指定 pathname,否则会产生错误。如果 VB 提供的一个检测文件是否存在的 cdlg.Filter = ″All Files|U.U″ 也指定了文件属性,那么就必须包括 函数 Dir 和动态数组对文件夹以广度 cdlg.ShowOpen pathname,Dir 会 返 回 匹 配 pathname 优先的顺序进行遍历。 If cdlg.FileName = ″″Then Exit Sub 的第一个文件名。若想得到其它匹配 3.1 API 函数使用说明 pathname 的文件名,再一次调用 Dir, cdlg.FileName = cdlg.FileName & Chr(0) 且不要使用参数。如果已没有合乎条 z = 1 i = InStr(z, cdlg.FileName, Chr(0)) 件的文件,则 Dir 会返回一个零长度 If i = Len(cdlg.FileName)Then 字符串 (″″)。一旦返回值为零长度字 List1.AddItem RTrim(cdlg.FileName) 使用 API 函数需要声明 DLL 过 符串,并要再次调用 Dir 时,就必须指 Else 程,在代码窗口的″声明″部分增加一个定 pathname,否则会产生错误。不必访 path = Mid(cdlg.FileName, z, i - 1) Declare 语句。如该过程返回一个值, 问到所有匹配当前 pathname 的文件 z = i + 1 应将其声明为 Function,格式如下: 名,就可以改变到一个新的 pathname Declare Function publicname Lib ″libname″ 上,但不能以递归方式来调用 Dir 函 If Right (path, 1) <> ″\″Then path = path + ″\″ 数 。 以 vbDirectory 属 性 来 调 用 Dir [Alias ″alias″] [([[ByVal] variable [As 不能连续返回子目录。 For i = z To Len(cdlg.FileName) type] [,[ByVal] variable [As type]]...])] As i = InStr(z, cdlg.FileName, Chr(0)) 3.3 实现代码如下 Type List1.AddItem path + Mid (cdlg.FileName, 如果过程没有返回值,可将其声 z, i - 1) 明为 Sub,格式如下: z = i + 1 Declare Sub publicname Lib ″libname″ Dim i, intresult As Integer 粉碎的进度。实现代码如下:' SHBrowseForFolder 函数返回值 Private Sub Command3_Click() 是指向项目(ITEM)的一个指针,有了 mypath = getPath If mypath = ″″Then Exit Function 它 , 再 用 API 函 数 SHGetPathFro- Dim i As Integer, j As Integer intresult = 2 mIDList 可获得具体的路径,如用户按 Dim filenumber As Integer ReDim mydirectory(intresult)的是″取消″按钮,则返回值为NU LL。 Dim filesize As Long mydirector(y1) = mypath If List1.ListCount = 0 Then Exit Sub Private Declare Function SHBrowseForFold- i = 1 i = MsgBox (″执行粉碎后将无法恢复,继 er _ Lib ″shell32.dll″Alias ″SHBrowseFor- Do Until mydirectory(i) = ″″ 续吗,″, 33, ″文件粉碎″) FolderA″_(lpBrowseInfo As BROWSEIN- mypath = mydirectory(i) If i = 2 Then Exit Sub FO) As Long If Right(mypath, 1) <> ″\″Then mypath For i = 0 To List1.ListCount - 1 Private Declare Function SHGetPathFro- = mypath & ″\″ SetAttr List1.List(i), vbNormal mIDList _Lib ″shell32.dll″_ myname = Dir(mypath, vbDirectory) Next i (ByVal pidl As Long, _Do While myname <> ″″ pszPath As String) As Long For i = 0 To List1.ListCount - 1 Private Type BROWSEINFO filenumber = FreeFile If myname ″.″And ″..″ <> myname <> hOwner As Long Open List1.List(i) Then For Binary As #filenumber If (GetAttr(mypath & myname) And vb- filesize = LOF(filenumber) pidlRoot As Long Directory)= vbDirectory Then mydirectorif filesize=0 then goto continue pszDisplayName As String (intresult)= mypath & myname jdt.Max = filesize lpszTitle As String intresult = intresult + 1 jdt.Min = 0 ReDim Preserve mydirectory(intresult) ulFlage As Long If filesize <= 1000000 Then lpfn As Long Else List1.AddItem mypath & myname lparam As Long Put #filenumber, , String ,(filesize, Chr End If iImage As Long ,(0)) End If End Type jdt.Value = filesize (MehWnd myname = Dir As Private Function ShowDir Else Loop _Optional Title Long, _dirpath As String, For j = 1 To filesize \ 1000000 i = i + 1 As String = ″请选择文件夹:″, _ Put #filenumber, , String(1000000, Chr ,(0)) Loop Optional flage As Long = &H1, _ jdt.Value = jdt.Value + 1000000 Optional DirID As Long) As String End Sub Private Sub Command2_Click() Next j Dim BI As BROWSEINFO Put #filenumber, , String (filesize Dim mypath As String Dim TempID As Long Mod 1000000, Chr,(0)) mypath = ShowDir(Me.hWnd, App.path) Dim TempStr As String jdt.Value = filesize Findfile mypath TempStr = String,(255, Chr,(0)) End If Command3.Enabled = True With BI jdt.Value = 0 End Sub .hOwner = MehWnd continue:Close filenumber .pidlRoot = 0 Kill List1.List(i) .lpszTitle = Title + Chr,(0) 4 ″开 始 粉 碎 ″功 能 的 设 计 Next i .ulFlage = flage 这部分的主要功能是将列表框中 MsgBox ″完成文件粉碎~″ End With 的每一个文件打开,在原文件的存储 List1.Clear TempID = SHBrowseForFolder(BI) 区域重新写入无意义的字符。本系统 Command3.Enabled = False DirID = TempID 在设计中考虑到只读文件是无法对其 End Sub If SHGetPathFromIDList (ByVal TempID, ByVal TempStr) Then 进行写入的,因此在执行粉碎前先将 所有文件的属性都改为普通文件。零 其 他 相 关 功 能 的 设 计 5 dirpath = Left ,(TempStr, InStr(TempStr, 长度的文件,我们无需进行处理,直接 Private Sub Command4_Click() Chr,(0)) - 1) 将其删除就可以了。考虑到程序执行 ShowDir = dirpath List1.Clear 效率,本系统以 1M 为单位对文件进 Else End Sub 行粉碎。对大小不足或等于1 M 的文 Private Sub Command5_Click() ShowDir = ″″ 件按文件实际大小进行粉碎,对大于 End End If 1M 的文件每次填充 1M,剩余不足 1M End Sub End Function 部分则按实际大小填充。为了直观,系 Private Sub Form_Load() Sub Findfile(getPath As String) 统中还加入一个进度条显示每个文件 Command3.Enabled = False Dim mypath As String End Sub Dim myname As String Private Sub List1_DblClick() Dim mydirector(y) As String ACCESS 带参数的查询详解 *吴险峰 总 结 了 ACCESS 中 设 计 和 实 用 带 参 数 查 询 的 方 法 , 介 绍 了 通 过 ADO 访 问 ACCESS 中 的 常 规 方 法 , 并 探 讨 了 摘 要 : ACC- ESS 中 查 询 与 存 储 过 程 的 关 系 , 以 及 以 存 储 过 程 方 式 访 问 查 询 的 方 法 。 参 数 查 询 存 储 过 程 ACCESS 关 :键 词 中 图 分 类 号 : TP311.13 文 献 标 识 码 A 文 章 编 号 : 1002- 2422( 2007) 04- 0012- 02 Clear Annotation of Quer y with Par ameter s in ACCESS Wu Xianfeng Abstr act: The paper summarizes the method of designing and using query with parameters in ACCESS,presents the common method to access ACCESS through ADO,then disucsses the relation between query and storage process in ACCE- SS,finally presents the method of accessing query in storage process. Keywor d: ACCESS Parameter Query Storage Process 1 环 境 下 的 参 数 查 询 类型,查询运行时将会报错而不能进行,这是由于jet 引擎 ACCESS 要求 TRANSFORM查询中的变量必须有确定的数据类型 。 1.1 在查询设计器中建立参数查询 查询参数中有逻辑值(是/否)时,如果不在查询窗口中 规参数在查询中,通常作为查询条件准则的一个部分,比 定参数为逻辑型(是/否),则系统会把表示逻辑值的数值 如,要根据产品的类别来列出产品清单(例一),则在查询 当成普通的数值,换而言之,只有输入- 1/0 时才能够和表中 的设计视图中,将字段列表中的[类别 ID]字段拖到查询设 的值相匹配。如果在查询窗口中规定参数为逻辑型,那么 计网格。然后在其下的″条件″单元格中,键入[a_ 类别],即建 输入非 0/0、yes/no、true/false 均能够和表中的值准确匹配。所 立了名为″a_ 类别″的参数,保存命名为[按类别查询产品]。 以在这种情况下,也应在查询参数对话框中作明确的规定, 特别注意的是,必须在用[ ]界定参数名, ACCESS 的 以避免使用时的混乱。 查询中,用[ ]来界定对象名,主要是表、查询、字段、参数等, 查询窗口的另外一个作用是,当有多个参数时,可以规 如果在[ ]中的标识符不是表、查询、字段或其他对象的名 定参数的输入顺序,在默认情况下,各参数的输入顺序是依 称,则 ACCESS 将它视作参数。其在查询设计网格中出现的位置来决定的,我们可以在查 当我们运行查询的时候,系统弹出参数输入对话框,在 询参数设置对话框中输入相关的参数,强制性的规定各参 输入框中输入实际参数值后,Access 继续处理查询,然后 数的输入顺序。 在数据表中显示查询结果。 1.3 自定义有提示信息的参数输入窗口 1.2 参数对话框的使用 参数对话框有两个主要的作用,在 ACCESS 的查询设计器中,参数不仅可以是一个普 一是指定参数的数据 通的变量,还可以是窗体、报表等容器中所包含的控件。利 类型;二是指定运行时参数的输入顺序。 必须要指定参数用这一特性,我们可以把带参数的查询和窗体、报表等结 的数据类型的两种情况是:(1) 参数 合起来,设计出有自定义提示信息的,或不同输入风格的 参数输入窗口。如按类别查询产品时,可以先创建一个命 用于交叉表查询;(2)参数的数据类型为逻辑值(是/否)。 在交叉表查询中,如果未在参数对话框中指定参数的数据 List1.RemoveItem List1.ListIndex 发过程中也对V B 的文件处理有了更 [2]Andrew S?Tanenbaum. 现代操作系 深的理解,特别是对A PI 函数,它能实 统[M] . 陈向群译. 北京:机械工业出 End Sub 现许多我们意想不到的效果。 版社,1999- 11- 01. 6 结 束 语 通过″文件粉碎机″的学习,读者能 参 考 文 献 [3]Francesco Balena.VISUAL BASIC6 编更深该地理解文件在计算机里的存在 [1] 刘圣才,李春葆. Visual Basic6 程 程技术大全[M] . 翔实翻译组译. 北形式,对大家将来在重要电子文件的 序设计导学[M]. 北京:清华大学出版 京:机械工业出版社,2000- 01- 01. 社,2002- 01. 管理中有一定的指导意义。本人在开 * 吴险峰 四川管理职业学院计算机系讲师(成都 610071),研究方向:数据库和数字图像处理 修改稿收到日期:2007- 03- 20
/
本文档为【_文件粉碎机_的VB程序实现】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
热门搜索

历史搜索

    清空历史搜索