毕业设计(论文)-基于VB的网络数据传输.doc

上传人:韩长文 文档编号:3280822 上传时间:2019-08-07 格式:DOC 页数:41 大小:1.10MB
返回 下载 相关 举报
毕业设计(论文)-基于VB的网络数据传输.doc_第1页
第1页 / 共41页
毕业设计(论文)-基于VB的网络数据传输.doc_第2页
第2页 / 共41页
毕业设计(论文)-基于VB的网络数据传输.doc_第3页
第3页 / 共41页
毕业设计(论文)-基于VB的网络数据传输.doc_第4页
第4页 / 共41页
毕业设计(论文)-基于VB的网络数据传输.doc_第5页
第5页 / 共41页
点击查看更多>>
资源描述

《毕业设计(论文)-基于VB的网络数据传输.doc》由会员分享,可在线阅读,更多相关《毕业设计(论文)-基于VB的网络数据传输.doc(41页珍藏版)》请在三一文库上搜索。

1、毕业设计说明书(200 8届)基于VB的网络数据传输学生姓名 学 号 系 别 信息与电子系 专业班级 计算机0402 指导教师 完成日期 2008年5月20日 基于VB的网络数据传输摘要 随着Internet的普及和工业自动化的迅速发展,网络已深入家庭、办公室、工厂、自动化控制领域。人们在各个地方都可通过互联网来交换信息,因而网络数据传输就显得尤为的重要。在VB中就提供了支持数据传输的控件,如:Winsock控件和MSComm控件等。通过程序开发和控件的使用, 可实现网络的数据通信,满足网络用户对数据通信和数据交换的需求。在本文中介绍了利用Winsock控件编程实现C/S模式的数据传输;同时在

2、RS-232串口通信中使用MSCOMM控件编程来模拟实现对受控方的相关操作。关键词 WinSock控件;客户端/服务器模式;网络数据传输;串口通信;MSCOMM控件NETWORK DATA TRANSMISSIONOF BASED ON THE VISUAL BASICABSTRACTWith the popularity of Internet and the rapid development of industrial automation, Network has penetrated into home, office, factory, automation fields. Peo

3、ple in various places accessible through the Internet to exchange informations ,So data transmission in the network is particularly important. However it Provided controls of supporting data transmission in the visual basic,like Winsock and MSComm control and so on. Through the design of procedures

4、and the use of controls, Can realize the data communications in the network,and meet the Demand of data communications and data exchange for internet users. In this article, will introduce to the use of Winsock control programming C / S mode data transmission; at the same time, in the RS-232 serial

5、communication through the MSCOMM control programs to simulate the realization of the relevant operation.KEY WORDS Winsock control; client/server mode; network data transmission; serial communication; MSCOMM control目 录中文摘要2英文摘要3第一章 绪论51.1 数据传输及通信概述51.2 课题选择71.3 论文结构7第二章 概述82.1 Winsock控件简述92.1.1 Winso

6、ck控件介绍92.1.2 Winsock控件重要属性、方法、和事件92.2 RS-232串口通信概述122.2.1 RS-232串口通信简述122.2.2 MSComm控件重要属性、方法和事件12第三章 需求分析143.1 功能需求153.2 性能需求15第四章 总体设计154.1 功能模块图154.2 C/S模型时序图164.3 客户端、服务器界面设计17第五章 详细设计215.1 构架模型215.2 通信协议215.3 动态添加客户端225.4 树型目录结构的实现235.5 文件传输模块33第六章 典型问题分析386.1 动态添加、删除客户端问题386.2 文件传送和接收问题386.3 文

7、件夹传输问题386.4 各种命令标志的接收处理问题39第七章 网络数据传输的应用417.1 网络数据传输的应用417.2 网络数据传输与RS-232串口通信结合应用41第八章 设计心得及软件不足438.1 设计心得438.2 软件不足43致 谢44参考文献45附 录46第一章 绪论1.1数据传输及通信概述1. 数据通信方式按传输方向分有:(1) 单工通信:在单工信道上信息只能在一个方向传送。(2) 半双工通信:在半双工信道上,通信的双方可交替发送和接收信息。(3) 全双工通信:一种可以同时进行双向信息传送的通信方式。按同步方式分:(1) 异步传输:把各个字符分开传输,字符之间插入同步信息。其优

8、点是简单,但由于起止位和检验位的加入会引入20%30%的开销,传输的速率也不高。(2) 同步传输:发送方在发送数据之前先发送一串同步字符SYNC。2交换方式:(1) 线路交换:交换的特点是建立连接需要等待较长的时间。特点:连接建立后通路是专用的。不再有传输延迟,这种交换方式适合于传输大量的数据。在传输少量信息时效率不高。(2) 报文交换:特点:不建立专用链路。线路利用率较高。电子邮件系统(例如E-Mail)适合采用报文交换方式。(3) 分组交换:有两种方式:数据报:类似于报文交换。引入分组拆装设备PAD(Packet Assembly and Disassembly device)。虚电路:类

9、似于电路交换。 虚电路与线路交换的区别:逻辑连接并不意味着别的通信不能使用这条线路。它仍然具有线路共享的优点。虚电路与数据报的区别:虚电路意味着可靠的通信,它涉及更多的技术,需要更在的开销。没有数据报方式灵活,效率不如数据报方式高。虚电路适合于交互式通信,数据报方式更适合于单向地传送短信息。虚电路可以是暂时的,即会话开始建立,会话结束拆除,这叫虚呼叫;也可以是永久的,即通信双方一开机就自动建立,直到一方(或同时)关机才拆除。这叫永久虚电路。 分组交换的特点:数据包有固定的长度。采用固定的、短的分组相对于报文交换是一个重要的优点。除了交换结点的存储缓冲区可以不些外,也带来了传播时延的减少,分组交

10、换也意味着按分组纠错:发现错误只需重发出错的分组,使通信效率提高。1.2 课题选择随着Internet的普及和工业自动化的迅速发展,网络已深入家庭、办公室、工厂、自动化控制领域。人们在各个地点都可通过互联网来交换信息。因而网络数据传输就显得尤为的重要。鉴于对网络数据传输的必要性和重要性的考虑,我选择了基于VB的网络数据传输来作为毕业设计的课题。其意义在于网络数据传输相对与整个互联网络来说有着至关重要的作用,缺失数据传输、数据交换,那每一台计算机只能是孤立的存在,因而这一领域有待我们去开拓、研究,其中有许多求知部分有待去填补。1.3 论文结构本论文介绍了网络数据的必要性与实际应用,重点从WINS

11、OCK控件进行分析设计,详细介绍了基于VB语言进行C/S模式的设计。全文分为九个章节。第一章 绪论。主要阐述了网络数据传输的时代背景和现实需求。第二章 概述。从大体上阐述了基于VB语言来实现网络数据的传输方式方法和可用的途径。第三章 需求分析。叙述了设计的功能需求和性能需求,明确了软件的主题方向。第四章 总体设计。本章主要介绍软件设计的总体功能模块图,C/S模式的时序图以及软件设计的服务器端和客户端的相关界面的简介。第五章 详细设计。本章分六个小节,分别从构架模型、通信协议、动态添加客户端、树型目录结构的显示、文件传输以及主要功能模块的代码分析来阐述整个设计的详细情况。第六章 典型问题分析。本

12、章主要针对在设计过程中所涉及到的一些难点问题的分析,分四个小节阐述了四个方面值得研究讨论的问题。第七章 网络数据传输的应用。本章主要是叙述了网络数据传输的相应的实际应用,并将本设计与实际应用相结合。在本章第二小节中具体结合RS-232串口通信实现对模拟设备的相关状态数据的接收,以达到远程对设备的控制的目的。第八章 设计心得及软件不足。本章主要论述了在完成整个软件过程中的一些心得体会以及本软件尚存的不足之处。第九章 致谢。第二章 概 述Visual Basic 是Microsoft 公司开发的Windows 应用程序开发工具,Visual 可视化的,是一种开发图形户界面(GUI)的方法.使得非计

13、算机专业的人也可以开发出专业的Windows软件. Visual Basic继承了BASIC语言简单易学的优点,又增加了许多新的功能,它采用面向对象与事件驱动的程序设计思想,使编程变得更加方便,快捷.使用Visual Basic既可以开发个人或小组使用的小型工具,又可以开发多媒体软件,数据库应用程序,网络应用程序等大型软件.是国内外最流行的程序设计语言之一.基于Visual Basic这种操作简便、功能强大的优点,结合网络实际情况和需要,研究开发基于Visual Basic的网络数据传输的软件。在本文中简单介绍了网络数据传输的相关协议,如TCP/IP协议和UDP协议;在实现过程中用到的核心控件

14、,如Winsock控件和MSComm控件;介绍了利用Winsock控件实现客户端和服务器之间的通信原理;利用MSComm控件来模拟对设备的监控,通过两台模拟机实现各个状态信息读取及相关操作,从另一方面(即RS-232串口通信)来体现数据传输。2.1 Winsock控件简述2.1.1 Winsock控件介绍 WINSOCK即Windows Socket,是微软公司对Socket编程接口的集成。WINSOCK控件用于Windows Socket接口简化成易于使用的Visual Basic内部接口,从而避免通过访问DLL来到如Windows Socket函数,和其他控件一样,有着使用方便的特点。但是

15、WINSOCK控件并不能完全取代Socket函数,它使用IP协议,并支持TCP和UDP协议,但是支持程度偏低,像多播和广播等特性无法支持,不过在仅仅需要基本的网络数据通信的前提下,Windows控件仍然是最好的选择。2.1.2 Winsock控件重要属性、方法、和事件(1) 属性Protocol:通过Protocol属性可以设置WinSock控件连接远程计算机使用的协议。可选的协议是TCP和UDP,对应的VB中常量分别是sckTCPProtocol和sckUDPProtocol,Winsock控件默认协议是TCP。注意:虽然可以在运行时设置协议,但必须在连接未建立或断开连接后。SocketHa

16、ndle:SocketHandle返回当前socket连接的句柄,这是只读属性。RemoteHostIP:返回远程计算机的IP地址。在客户端,当使用了控件的Connect方法后,远程计算机的IP地址就赋给了RemoteHostIP属性,而在服务器端,当ConnectRequest事件后,远程计算机(客户端)的IP地址就赋给了这个属性。如果使用的是UDP协议那么当DataArrival事件后,发送UDP报文的计算机的IP才赋给了这个属性。ByteReceived:返回当前接收缓冲区中的字节数。State:用于返回当前WinSock控件的状态。如表2-1所示。表2-1 返回WinSock控件当前的

17、状态常数值描述sckClosed0缺省值,关闭SckOpen1打开SckListening2侦听sckConnectionPending3连接挂起sckResolvingHost4识别主机sckHostResolved5已识别主机sckConnecting6正在连接sckConnected7已连接sckClosing8同级人员正在关闭连接sckError9错误(2) 方法Bind:用Bind方法可以把一个端口号固定为本控件使用,使得别的应用程序能再使用这个端口。Listen:只在使用TCP协议时有用。它将应用程序置于监听检测状态。Connect:当本地计算机希望和远程计算机建立连接时,就可以调

18、用Connect方法。Accept:当服务器接收到客户端的连接请求后,服务器有权决定是否接受客户端的请求。SendData:当连接建立后,要发送数据就可以调用SendData方法,该方法只有一个参数,就是要发送的数据。GetData:当本地计算机接收到远程计算机的数据时,数据存放在缓冲区中,要从缓冲区中取出数据,可以使用GetData方法。PeekData:和GetData方法类似,但PeekData在取得数据后并不把缓冲区清空。(3) 事件ConnectRequest:当本地计算机接收到远程计算机发送的连接请求时,控件的ConnectRequest事件将会被触发。SendProgress:当

19、一端的计算机正在向另一端的计算机发送数据时,SendProgress事件将被触发。SendProgress事件记录了当前状态下已发送的字节数和剩余字节数。SendComplete:当所有数据发送完成时,被触发。DataArrival:当建立连接后,接受到了新数据就会触发这个事件。注意:如果在接受到新数据前,缓冲区中非空,就不会触发这个事件。Error:当在工作中发生任何错误都会触发这个事件。2.2 RS-232串口通信概述2.2.1 RS-232串口通信简述串行通信端口(Serial Communication Port)在系统控制的范围中一直占据着及其重要的地位,它不仅没有因为时代的进步而遭

20、淘汰,反而在规格上越来越完善,应用也越来越广泛。现在,串行通信端口(RS-232)是计算机上的标准配置,用途上则以连接调制解调器来传输数据最为常见,如图2-1所示为串口外观。当然,它的重要性还不只如此。RS-232串行通信端口是每台计算机上的必要-配备,通常有COM1和COM2两个端口。一般计算机将COM1端口以9引脚的接头接出,而以25脚的接头将COM2端口接出。新一代的计算机均以9引脚接头接出所有的RS-232通信端口。图2-1 串口外观图2.2.2 MSComm控件重要属性、方法和事件不同于其他控件,MSComm只有一个事件即OnComm事件,所有可能发生的状况(错误或引发通信事件)都集

21、中在这个事件中处理,通过对这些状况的处理来实现各种控制和传输,如下表列的即为MSComm控件的OnComm事件中所含的各种可能出现的事件状况:表2-1 MSComm控件属性属性描述CommPort设置并返回通讯端口号Settings字符串的形式设置并返回波特率、奇偶校验、数据位、停止PortOpen设置并返回通讯端口的状态。也可以打开和关闭端口Input从接收缓冲区返回和删除字符Output向传输缓冲区写一个字符串IuBufferCount用于返回在接收缓冲区中的字符数InputMode设置或返回Input属性取回的数据类型表2-2 MSComm控件事件事件描述comEventBreak收到中

22、断信号comEventCDTO载波检测超时comEventCTSTOCTS信号超时comEventDSRTODSR信号超时comEventFrame发送框架发生错误comEventOverrun数据遗失comEventRxOver接收缓冲区满溢comEventRxParity极性错误comEventTxFull发送缓冲区已满comEventDCB连接时发生非预期错误comEvCDCD线的状态发生变化comEvCTSCTS线的状态发生变化comEvDSRDSR线的状态发生变化comEvRingRing Indicator 变化comEvReceiveRThreshold#of chars第三章

23、需求分析3.1 功能需求1. 动态添加客户端:服务器端能够实现与多个客户端之间建立连接并进行通信。2. 客户端树型目录结构显示:服务器可以显示客户端的树型目录结构,能够方面的抓取客户端机器上的任何文件。3. 字符和字符串的传输:可以与客户端之间进行简单的消息通信,双方可以交互信息。4. 各种格式的文件传输:对于不同格式的文件如视频、音频、常用文件word,excel,txt等等,可以实现传输操作。5. 文件夹的传输:除了单个文件实现传输以外,还需要实现对整个文件夹的传输。6. 单个发送和群发:对于消息可以指定发送也可以群发消息,同时也可以实现对服务器端某个文件指定客户端发送也可以群发给所有连接

24、成功发客户端。3.2 性能需求1. 稳定性在程序设计中应当考虑到各种可能发生的情况,进而避免常规或者一些低级错误。一旦发生任何错误或突发事件,系统要能够正常运行甚至及时纠错,不至于瘫痪而使得软件无法运行下去。那么在设计对于一些不常规的输入和操作均作了相应的限制,从某种程度上提升了软件的稳定性。2. 易用性本程序仅仅是一个雏形,容易上手,操作简单,使用过程一目了然。相关命令标志处理和临时处理均使用文件,操作起来比较简便。 第四章 总体设计4.1 功能模块图图4-1 C/S模式总体功能模块4.2 C/S模型时序图图4-2面向连接的C/S模型时序图4.3 客户端、服务器界面设计图4-3 服务器主界面

25、图4-4 服务器端带消息窗口界面图4-5 客户端主界面第五章 详细设计5.1 构架模型图5-1 C/S 模型构架图5.2 通信协议在开始编程之前首先应当对客户端和服务器之间的通信协议进行定义,以便双方在通信过程中可以方便的识别彼此的通信指令和标志。1.服务器端通信协议定义如表5-1所示:表5-1 服务器端标志命令标志命令标志解释Read读取驱动盘符标志信息Fl_Pa_为读取当前选中目录的当下的所有子目录,即展开选中目录Opt_pa传输单个文件标志信息Ins_Tr确认传输标志Accept接收数据完毕标志MESG消息传输标志Stop断开连接标志Optpa传输文件夹标志信息2. 客户端通信协议定义如

26、下:表5-2 服务器端标志命令标志命令标志解释Fl_Dir压缩文件夹的长度标志,后跟某压缩文件夹的长度,同时初始化作好接收准备MESG客户端信息标志Fl_Len单个文件长度标志,同时初始化文件名,用以接收Pause与客户端断开连接标志RE_DIR、RE_FLE在显示数形目录结构时目录中的文件夹和文件标志5.3 动态添加客户端单个客户端与服务器通过winsock控件实现通信以后,必须结合实际情况实现多个客户端与服务器之间的数据通信,这就涉及到服务器需要有动态添加客户端的能力,与请求连接的客户端建立彼此间连接。在设计中我采用winsock数组来实现服务器端的动态添加功能,winsock(0)设计为

27、服务器端一直保持监听客户端连接请求的控件,如果监听到有客户端的连接请求,首先查找数组中是否存在空闲的winsock(x),如果存在,则使用该winsock(x)与之建立连接,反之加载一个新的winsock数组控件与之建立连接。一旦与客户端建立连接成功后,服务器将把该winsock的数组下标发送给该客户端,如服务器端是使用winsock(2)与客户端建立连接,则将索引2发送给客户端,此时该客户端就作为“2号客户端”,同时在服务器端的listbox客户端状态列表中作为2号客户端显示5.4 树型目录结构的实现树型目录结构的显示是这个设计中的一个特点,总体是模仿微软的资源管理器,当然外观效果还不是很完

28、善,其中目录中“+”符号以及空格是目录之间区分上下级的一个关键标志,如上级目录和当下的文件夹子目录之间相差一个空格,而“+”“-”符号主要是对目录展开和收起起到一个指示作用。该功能设计的总体思路如下:当服务器端选种“客户端状态”列表中连接成功的客户端时,向该客户端发送命令标志,要求回传其磁盘驱动列表信息如C盘,D盘等;如果服务器端继续点选某磁盘驱动,则向客户端发送该磁盘路径,要求返回该磁盘当下所有的文件夹和文件信息,返回后,在该磁盘当下显示文件夹目录,并在“文档”列表中显示该磁盘驱动下的文件名,依次类推,可逐级显示目录信息;如果某级目录已经展开,那么起前将显示“-”符号,再次点击该目录时,将收

29、起该目录(即删除该目录下的所有信息),此时其前面将显示“+”符号。对于具体实现,如图5-2所示。以下是客户端根据服务器端指定的目录路径进行相应的查找,并返回该目录下的子目录和文件名称。图 5-2 客户端根据指定目录查找子目录和文件主流程服务器端查看客户端的树形目录,模拟实现本机上的资源管理器来抓取客户端上的某些文件。在实现过程中考虑到目录的深浅,如果初始化就将客户端的所有目录全部显示在列表中,会带来不必要的麻烦,所以采取的方法是服务器端点选某级目录就向客户端发送读区该级目录的命令,以达到减少时间复杂度和空间复杂度的目的,具体实现流程如图5-3所示。图5-3 服务器端查看树形目录主流程5.5 文

30、件传输模块文件传输的实现主要是在客户端处理,客户端接收到服务器端的文件传输的指令后,采取相应的处理。文件传输主要分两种情况来处理: 1. 单个文件传输理论上单个文件传输相对于整个文件夹的传输要简单的多,服务器端发送指令:Winsock1(ClientIndex).SendData Opt_pa & Label2.Caption,其中Opt_pa为单个文件传输的标志,Label2.Caption为该文件在客户端的绝对路径。客户端分离信息后,根据文件路径取得该文件的长度,先向服务器端发送该文件的长度Winsock1.SendData Fl_Len & LenFile1,目的是为了在文件传输过程中能

31、够判断该文件是否传输完毕。服务器端回送一个Ins_Tr的确认标志后,客户端开始对该文件进行传输。对文件的传输的具体实现,需要考虑几种情况,对于小型文件可以直接利用WINSOCK传输,但是对于大型文件或视频文件的传输必须采用分割技术来实现,基于以上的考虑,无论是大型文件还是小型的文件的传输首先判断其长度是否大于65535,如果小于则直接传输,否则对该文件进行分块传输(以8K为一个传输块),数据块传输完毕后,还必须考虑所剩下的数据,如果存在剩余的数据也要进行传输。2. 整个文件夹的传输按照常理来说,对于文件夹的传输其实就是对文件的循环传输,原理是:根据服务器端给定的文件夹路径Winsock1(Cl

32、ientIndex).SendData Optpa & Label2.Caption,其中Optpa为文件夹传输标志,Label2.Caption为文件夹的绝对路径,客户端分离路径后首先查找该文件夹下的所有子文件夹和文件的名称,保存在文件中传输到服务器端,在服务器端建立该文件夹及其包含的所有子目录和文件名称,然后客户端循环传输文件。上述中理论上可以实现整个文件夹的传输,但是明显实现起来比较复杂,比如该文件夹下所嵌套的子文件夹比较深,所包含的文件也比较多,那么在传输过程中所要考虑的问题也就非常的复杂,要考虑同级目录中的文件传输和下级文件的传输。经过多次试验后,找到一种替代方法,同样可以是实现整个

33、文件夹的传输,但在原理上有区别于上面的传输途径:主要是利用微软rar.exe和unrar.exe可以简单的实现文件夹的传输。起原理是客户端分离文件夹路径后,调用rar.exe对该文件夹进行压缩处理,这样一来无论文件夹下嵌套有多深,包含了多少个文件,一并作打包处理,然后传输给服务器端;服务器端完全接收该压缩文件到指定路径下,对该压缩文件进行解压缩处理,以此来实现对整个文件夹的传输。无论是单个文件还是整个文件夹的传输,都使用了如图5.4.1-3 所示的流程来传输。5.6 主要功能实现代码分析 1. 服务器端动态添加客户端实现代码:Private Sub Winsock1_ConnectionReq

34、uest(Index As Integer, ByVal requestID As Long) If Index = 0 Then intMax = FindOpenWinsock 判断列表中是否有存在已断开的winsock控件 Winsock1(intMax).Accept requestID If FindOpenWinsockFlag = 0 Then 无空闲的winsock控件 List3.AddItem intMax & 号客户端连接成功 Else 有空闲控件 List3.RemoveItem intMax - 1 List3.AddItem intMax & 号客户端连接成功, i

35、ntMax - 1 FindOpenWinsockFlag = 0 End If Winsock1(intMax).SendData Cli_ID & Trim(str(intMax) Call RefreshCombox 刷新combox列表 End IfEnd SubPublic Function FindOpenWinsock() As Integer Static LocalPorts As Integer For x = 0 To Winsock1.UBound If Winsock1(x).State = 0 Then 数组中在空闲的winsock元素 FindOpenWinsoc

36、k = x FindOpenWinsockFlag = 1 Exit Function End If Next x Load Winsock1(Winsock1.UBound + 1) 不存在直接加载控件元素 LocalPorts = LocalPorts + 1 Winsock1(Winsock1.UBound).LocalPort = Winsock1(Winsock1.UBound - 1).LocalPort + LocalPorts FindOpenWinsock = Winsock1.UBoundEnd Function2. 文件传输模块代码: Public Sub transfe

37、r() 核心模块,用以传输 Dim FreeF As Integer Dim LenFile As Long 文件的长度 Dim bytData() As Byte 存放数据的数组 Dim ipos As Long Const imax = 65535 FreeF = FreeFile 获得空闲的文件号 Open filename For Binary As #FreeF 打开文件 DoEvents LenFile = LOF(FreeF) 获得文件长度If LenFile = (LenFile - imax) 发送整块数据的循环 ReDim bytData(1 To imax) Get #F

38、reeF, ipos + 1, bytData Winsock1.SendData bytDataipos = ipos + imax 移动iPos,使它指向下来要读的数据 LoopReDim bytData(1 To LenFile - ipos) 发送剩下的不够一个数据块的数据 Get #FreeF, ipos + 1, bytData Winsock1.SendData bytData Close #FreeFEnd Sub 这里要注意的是,必须检查文件有没有剩下的数据,如果文件大小正好等于数据块大小的整数倍,那么就没有剩下的数据了。3. 服务器端目录展开和收起 Private Sub

39、List1_Click()Dim p As IntegerFor p = 0 To List1.ListCount 1 If List1.Selected(p) = True Then If judge(p) 0 Then 判断有无子目录 ,不等于 0为有子目录 Call delete(p) 删除该目录下的所有子目录,达到收起的效果 Label2.Caption = Else 等于 0为无子目录 IndexValue = p Winsock1(ClientIndex).SendData Fl_Pa_ & filepath & space_num & str(spa) spa = 0 发送该目录

40、的完整路径和空格数到客户端读取 Call modify(p, -) 修改该目录的“+”号为“-” Label2.Caption = filepath End If Exit For End IfNext pEnd SubPublic Function judge(x As Integer) As Integer 判断当前选中项是否含有子目录 Dim p1 As Integer, p2 As Integer p1 = Len(List1.List(x) - Len(Trim(List1.List(x) 当前项的空格数 p2 = Len(List1.List(x + 1) - Len(Trim(L

41、ist1.List(x + 1) 当前项的下一项的空格数 If p1 - p2 = 0 Or p1 - p2 = 1 Then 表示无子目录 judge = 0 p1 - p2 = 1为目录最后一项与其下一项的空格数的情况 End If p1 - p2 = 0为同级目录的空格数的情况 If p2 - p1 = 1 Then p2 - p1 = 1为当前目录含有下级目录的空格数的情况 judge = -1 End If If p1 0 And p2 = 0 Then judge = 0 表示无子目录 ; End IfEnd Function 4. 客户端对目录的查找 Public Sub FileDir(MyPath As String, spnum As Integer) 查找文件夹 If DirFlag = 0 Then If dir(D:dir.txt) Then Kill D:dir.txt End If Open D:dir.txt For Output As #11 Else Open D:dir.txt For Append As #11 End If If Right(MyPath, 1) Then MyPath = MyPath & End If

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 研究报告 > 信息产业


经营许可证编号:宁ICP备18001539号-1