博文

FSO对象模型在VB中的应用 (2006-04-11 22:24:00)

摘要:FSO对象模型在VB中的应用
从 Visual Basic 的第一版至今,VB中有关文件的处理都是通过使用 Open 、Write以及其它一些相关的语句和函数来实现的。随着软件技术的不断发展,加上面向对象编程概念的日臻成熟,这些文件操作语句已经不能适应软件不断增加的复杂程度的需要了。因此,从VB6.0开始,微软提出了一个全新的文件系统对象FSO。
一、简介
文件系统对象FSO的英文全称是File System Object ,这种对象模型提出了有别于传统的文件操作语句处理文件和文件夹的方法。通过采用object.method这种在面向对象编程中广泛使用的语法,将一系列操作文件和文件夹的动作通过调用对象本身的属性直接实现。
FSO 对象模型不仅可以象使用传统文件操作语句那样实现文件的创建、改变、移动和删除,而且可以检测是否存在指定的文件夹,如果存在,那么,这个文件夹又位于磁盘上的什么位置。更令人高兴的是FSO 对象模型还可以获取关于文件和文件夹的信息,如名称、创建日期或最近修改日期等以及当前系统中使用的驱动器的信息,如驱动器的种类是CD-ROM还是可移动磁盘,当前磁盘的剩余空间还有多少。而以前要获取这些信息必须通过调用Windows API函数集中的相应函数才能实现。
FSO对象模型包含在Scripting 类型库 (Scrrun.Dll)中,它同时包含了Drive、Folder、File、FileSystemObject和TextStream五个对象。其中Drive用来收集驱动器的信息,如可用磁盘空间或驱动器的类型;Folder用于创建、删除或移动文件夹,同时可以进行向系统查询文件夹的路径等操作;File的基本操作和Folder基本相同,所不同的是Files的操作主要是针对磁盘上的文件进行的;FileSystemObject是FSO对象模型中最主要对象,它提供了一套完整的可用于创建、删除文件和文件夹,收集驱动器、文件夹、文件相关信息的方法。需要注意的是,FSO对象模型提供的方法是冗余的,也就是说在实际使用中,FSO对象模型中包含的不同对象的不同方法进行的却是同样的操作,而且FileSystemObject对象的方法直接作用于其余对象,所以在后面的文章中并没有单独提到FileSystemObject对象,千万不要以为没有提到就不重要......

阅读全文(1868) | 评论:0

在VB中使用WinSock控件传送文件(2006-04-11 20:38:00)

摘要:在VB中使用WinSock控件传送文件

传送文件对于网络编程来说是基本的功能,比如远程控制软件。在编制一个软件时,我从网上下了很多传文件的程序,这些程序提供的传文件功能根本就不能用。传文本还可以,传二进制文件根本就不行。因此,作为一个基本的功能模块,有必要单独介绍一下。
    首先,在VB中要传送字符串,你可以这样写:
Dim strData As String
strData = "Test"
Winsock1.SendData strData
    但是如果你传送的二进制文件,你还能用String变量来存放吗?从理论上分析是不行的,我也做了实验,确实是不行的。文件虽然可以传,但是接受的文件和发送的不一样,原因可能是二进制文件里可以有任何"字符",但是不是所有的字符都可以放在String变量里。
    除了String类型的变量,VB中其他类型的变量都只有几个字节长,难道一次只能发几个字节吗?那样岂不是要累死机器了!其实,情况没有那么悲观,我们完全可以使用数组来解决这个问题,就是使用byte数组。把要传送的文件都读到数组里,然后发送出去。程序如下:


FileName 为要传送的文件名,WinS为发送文件的WinSock控件。这是一个发送端的程序。
Public Sub SendFile(FileName As String, WinS As Winsock)
Dim FreeF As Integer '空闲的文件号
Dim LenFile As Long '文件的长度
Dim bytData() As Byte '存放数据的数组
FreeF = FreeFile '获得空闲的文件号
Open FileName For B......

阅读全文(5100) | 评论:1

Visual Basic文件操作全攻略(2006-04-11 20:34:00)

摘要:Visual Basic文件操作全攻略 天涯孤舟 发表于 2006-3-12 5:03:00 无论是大的操作系统还是单一功能的应用软件,在大多数时候我们都需要打开一些文件,或者保存一些数据,所以文件操作是编程的基本功之一。   文件操作的内容包括目录、文件夹和文件,使用Visual Basic可以利用多种方法实现文件操作。在这个专题中我全面介绍了Visual Basic操作文件的方法:控件、命令、Windows API。    利用Visual Basic命令操作文件    利用Visual Basic常用控件操作文件    利用VB控件操作目录和文件夹    VB中操作目录的Winodws API小结 利用Visual Basic命令操作文件 一 打开和关闭文件    1、顺序文件    打开顺序文件,我们可以使用Open语句。它的格式如下: Open pathname For [Input |Output |Append] As [#]filenumber [Len = buffersize]    说明:    (1)参数pathname 表示要打开的文件名,文件名可以包含有驱动器和目录    (2)Input Output 和Append用于设置顺序文件的打开方式。其中,Input表示从打开的文件中读取数据。以这种方式打开文件时,文件必须存在,否则会产生错误。Output表示向打开的文件中写入数据。以这种方式打开文件时,文件中原有的数据将被覆盖,新的数据将从文件开始写入。如果文件不存在,则创建一个新文件。Append表示向打开的文件中添加数据。以这种方式打开时,文件中原有的数据将被保留,新的数据将从文件为开始添加。如果文件不存在,则创建一个新文件。    (3)As[#]filenumber 子句用于为打开的文件指定文件号.对文件进行读写操作时,要用文件号表示该文件.文件号是介于1~511之间的整数,既可以是数字,又可以是变量.也可以省略不用.    (4)当在文件与程序之间拷贝数据时,Len=buffersize子句指定缓冲区的字符数.    例如: Open App.Path + "\test.dat" For Output As 1 Open App.Path + "\......

阅读全文(10691) | 评论:0

VB中文件操作的两种方式(2006-04-11 20:18:00)

摘要:文本文件的操作 此种方式是以行为单位进行读取的基本单位,主要应用的方法和函数有Open,Close,Line Input,FreeFile,EOF等。下面先简述其功能然后结合代码示例进行说明。 Open:顾名思义,它的作用是打开文件,换而言之打开某个文件就是获得某个的控制权,一般情况下当文件处于打开状态时只有打开者才能对它进行操作。打开文件时要指定一个整数作为文件号,以后的操作都是针对这个代号进行的,而不是针对文件名。文件号也叫句柄,在程序中一个文件号只能指向一个文件,不能出现两个文件同时具有相同句柄的情况。 Close:关闭文件,即释放文件的控制权。 Line Input:以行为单位取得文件内容,以行为单位是指从当前位置开始到下一个换行符为止的内容。换行符是Chr(13) & Chr(10)两个字节组成,VB中已定义了常量vbCrLf,可直接使用。要注意的是Line Input读取一行时会把行尾的换行符去掉,因此我们在读取每行内容时要记得补上换行符才能保持得到的内容与文件一致。 FreeFile:得到空闲的文件号,用这个函数取得文件号可以避免文件号的冲突。 例如: Dim strFileName As String '文件名 Dim lngHandle As Long '文件句柄 Dim strAll As String '所读取的文本文件的所有内容 Dim strLine As String '在循环中存放每行的内容 strFileName = "c:\.txt" '获得文件的句柄 lngHandle = FreeFile() 'For后面的参数表示以何种方式打开文件,Input是读取,Output是覆盖写入,Append是追加写入 Open strFileName For Input As lngHandle   '循环直到文件尾 Do While Not EOF(lngHan......

阅读全文(4316) | 评论:0

怎样用VB读取/改写二进制文件。(2006-04-11 19:50:00)

摘要: Open 语句 能够对文件输入/输出 (I/O)。 语法 Open pathname For mode [Access access] [lock] As [#]filenumber [Len=reclength] Open 语句的语法具有以下几个部分: 部分 描述 pathname 必要。字符串表达式,指定文件名,该文件名可能还包括目录、文件夹及驱动器。 mode 必要。关键字,指定文件方式,有 Append、Binary、Input、Output、或 Random 方式。如果未指定方式,则以 Random 访问方式打开文件。 access 可选。关键字,说明打开的文件可以进行的操作,有 Read、Write、或 Read Write 操作。 lock 可选。关键字,说明限定于其它进程打开的文件的操作,有 Shared、Lock Read、Lock Write、和 Lock Read Write 操作。 filenumber 必要。一个有效的文件号,范围在 1 到 511 之间。使用 FreeFile 函数可得到下一个可用的文件号。 reclength 可选。小于或等于 32,767(字节)的一个数。对于用随机访问方式打开的文件,该值就是记录长度。对于顺序文件,该值就是缓冲字符数。 说明 对文件做任何 I/O 操作之前都必须先打开文件。Open 语句分配一个缓冲区供文件进行 I/O 之用,并决定缓冲区所使用的访问方式。 如果 pathname 指定的文件不存在,那么,在用 Append、Binary、Output、或 Random 方式打开文件时,可以建立这一文件。 如果文件已由其它进程打开,而且不允许指定的访问类型,则 Open 操作失败,而且会有错误发生。 如果 mode 是 Binary 方式,则 Len 子句会被忽略掉。 重要 在 Binary、Input 和 Random 方式下可以用不同的文件号打开同一文件,而不必先将该文件关闭。在 Append 和 Output 方式下,如果要用不同的文件号打开同一文件,则必须在打开文件之前先关闭该文件。 Get 语句 将一个已打开的磁盘文件读入一个变量之中。 ......

阅读全文(12872) | 评论:3

文件语句使用讲座(2006-04-11 07:07:00)

摘要:文件语句使用讲座

   在qb中学习完基本的语句后,最最值得大家认真学习的内容就是有关文件的部分了,
QB的文件操作在所有编程语言中是最方便、最简单、最强大的,而且和底成DOS中断很配合,学了以后在vb中也可以使用!
   我看到初学者有个误区,以为文件操作最难,实际上,这个放在最后一章,并不是最难,在我看来所有的都一样难,也都一样简单,最难的是书上没有讲的,可能写教材的人也不知道如何用(这个应该不可能),这个才难!

相关知识(充实中....)
文件的扩展名对与qb来说无所谓,都可以用open语句打开

一、体验建立一个文件
初步练习生成一个文件
OPEN "TEMP.TXT" FOR OUTPUT AS #1  '打开,建立一个名字为temp.txt的文件,文件号为1
PRINT #1,"这是一个测试文件"        '往1号文件里写
CLOSE #1                          '关闭1号文件(只有关闭以后,内容才真正的写进去)

你可以在WIN下用记事本打开TEMP.TXT 这个文件,就会看到你刚刚输入的数!
如果你不会用记事本,就请用下面的代码

OPEN "TEMP.TXT" FOR OUTPUT AS #1
PRINT #1,"这是一个测试文件"
CLOSE #1
SHELL "NOTEPAD temp.TXT"   '调用记事本
这时就能看到你生成的文件了!
SHELL 可以调用外部的命令、程序 。  这个NOTEPAD实际上就是WINDOWS的记事本程序
二、有关文件语句的用法

OPEN 语句 的用法

阅读全文(3088) | 评论:0

在VB5.0中使用和操作MATLAB(2006-04-10 20:00:00)

摘要: 在VB5.0中使用和操作MATLAB   作者:肖志权    文章来源:    点击数: 224    更新时间:2006-3-7 摘 要 本文介绍在VB5.0中利用ActiveX自动化技术使用和操作MATLAB的方法。它以VB作为自动化控制器。MATLAB作为自动化服务器,在使用VB进行Windows编程中,充分发挥MATLAB在系统分析。仿真等方面的优势。
关键词 Visual Basic MATLAB ActiveX自动化 一、前言   MATLAB自1984年由美国MathWorks公司推向市场以来,已成为国际公认的最优秀的科技应用 软件。它具有强大的数值、符号计算,离线和在线计算,矩阵计算能力,计算结果和编程可视化,界面友好,语言自然,是功能强大的计算辅助解决具体工程问题的标准软件。
  Microsoft公司推出的Visual Basic(简称VB)是目前被广泛使用的,开发应用程序的可视化 开发工具。由于它功能强大,易学易用,越来越多的人将它作为开发Windows应用程序的工具。
  本文介绍在VB中使用MATLAB的方法,尽可能发挥其各自的优势,而且编程简单。 二、基本原理   MATLAB也是支持ActiveX自动化技术的软件,能够被任何可作为ActiveX利制程序的Microsoft Programs所控制,包括Excel Access, Visual Basic, Visual C++.利用这一特性,用户可以 非常方便地在自已的程序中使用MATLAB,包括执行MATLAB命令,使用其功能丰富的工具箱(Toolbox),向MATLAB输入数据,获取结果(数据,图形)。这样既能用VB编出漂亮的Windows程 序,又能同时获得MATLAB在工程辅助设计,仿真等方面的功能。 三、ActiveX自动化   ActiveX自动化是ActiveX的一个协议,它允许应有用程序或组件控制另一个应用程序或组件 的运行。它包括自动化服务器和自动化控制器。
  MATLAB可以认为是自动化服务器,可以由其它应用程序编程驱动,自动化服务器定义的......

阅读全文(6476) | 评论:1

应用VB4.0实现工业控制的实时曲线和历史曲线(2006-04-10 19:51:00)

摘要: 应用VB4.0实现工业控制的实时曲线和历史曲线
关键词: 文章  
在大型的工业现场控制中,一般用DCS(集散控制系统)来实现过程控制。在DCS中,实时曲线可显示该控制点的当前趋势,以监测该点在现场工况变化的情况下的控制稳定性,历史曲线可观察过去一段时间内某一点的变化趋势,并供工艺人员分析工艺流程的稳定性和故障原因。然而在小型的工业控制中,由于控制规模小,控制回路少,因此可用PC机就能完成整个过程控制,在实时曲线和历史曲线方面,可用VB4.0就能实现,并可与大型的DCS相媲美。
[实时曲线]
实时曲线反映的是现场数据的实时性和当前趋势,因此在实现时需显示曲线的动态变化,参考DCS,当前点在曲线的最右端显示,而整个曲线动态地向左移动。

具体实现如下:
1、选择需要显示的窗体Form1,加入图片框Picture1,根据实际需要设置图片的大小并移到合适的位置,并在图片的外面画好量程----时间坐标系;
2、 在全局模块中定义位块传输API函数BitBlt( )和全局变量:
Declare Function BitBlt Lib "GDI32" (ByVal hDestDC AS Long,ByVal X As Long,ByVal Y As Long,ByVal nWidth As Long,ByVal nHeight As Long,ByVal hSrcDC As Long,ByVal xSrc As Long,ByVal ySrc As Long,ByVal DrawStyleAs Long) As Long
Gobal S As Long `量程
Gobal L As Long `上一次的纵坐标值
Gobal T As Integer `上一次时间值(分)
3、 Private Sub Form1_Load()
Picture1.AutoRedraw = False `曲线不重画
Picture1.ScaleMode = 3 `以象素方式(Pixel)
L = -1 `设置初值
S = 400
T = -1
End Sub
4、根据现场数据采集的采样频率,设置定时器......

阅读全文(4814) | 评论:0

实时曲线的绘制和保存(2006-04-10 19:44:00)

摘要:来源: CSDN
阅读:5967 次
日期:2004-7-30 在VB中绘制实时曲线是比较难的,一般要应用第三方控件或是Windows API函数来完成,但是如果你对实时曲线的要求不是很高,只要能表示出当前的一般情况的话,我们可以直接应用VB提供给我们的空间来完成.
       原则上讲,直接在Form里绘制曲线都是可以的,MSDN上面很多例程就是直接在Form里面绘制图形的,Form作为绘制图形的容器,不过一般应用中Form中不可避免的会有很多其他控件,所以我们选择PictureBox作为绘制曲线的容器.
       实时曲线的绘制一般借助于Timer控件来完成,使用Timer控件,定期将串口或是其他仪器中监测到的数据送往PictureBox1,而曲线的绘制一般画成折线图,采用PictureBox1的Line方法绘制.具体实现如下:
       1.选择需要显示的窗体Picture1,加入图片框Picture1,根据实际需要设置图片的大小并移到合适的位置,并在图片的外面画好量程----时间坐标系;然后加上Timer控件以及两个CommandButton,界面就基本设置好了.
     2.建立坐标系,根据Picture1的大小和高度设置画出坐标系的X轴和Y轴:
Picture1 .ScaleMode = 1  ‘以VB的基本单位作为建立坐标轴以及绘制图形的单位;
Picture1.Refresh
Picture1.CurrentX = Picture1.ScaleLeft +100
Picture1.CurrentY = Picture1.ScaleTop
Picture1.Print  Picture1.ScaleHeight - 100
Picture1.Line(Picture1.ScaleLeft+100,Picture1.ScaleTop+100)-(Picture1.ScaleLeft+100, Pi......

阅读全文(2788) | 评论:0

VB绘制实时曲线(2006-04-10 19:34:00)

摘要:VB中实时曲线的绘制
在工控制软件中,实时曲线的绘制用途非常的广泛,它可以很直观的显示出监控数据的变化值和变化趋势。在VB中实现曲线的绘制有很多种方法,本文介绍一种非常简单的方法来实现实时曲线的绘制。
在VB中实现实时曲线的绘制,要利用VB的PictureBox(图像)控件,和画线函数line(x1,y1)-(x2,y2)。PictureBox控件,可以作为一个“容器”,在它的里面可以包含很多的对象。也可以执行很多VB的内部函数。
要实现实时曲线的绘制,肯定要有外部实时数据的输入,这里假设是有一个数据从计算机的串口输入 定义该数据变量为DataFromCom。实时曲线反映的就是该数据。
打开VB6.0中文版,新建一个项目和窗体,修改窗体的属性,将“Heigh”修改为:8000,“Width”修改为在窗体中放如一个PictureBox控件。然后重新定义PictureBox控件的一些基本属性,在VB中选中PictureBox控件,直接在它的属性框中,修改一些属性参数。“名称”改为Pic。 “AutoRedraw”改为:True。“BackColor”改为:&H00004000&(墨绿色背景颜色)。”Heigh”改为:5000。“Width”改为:8000。如图1所示:

然后要重新定义PictureBox控件的坐标系。图像框的默认坐标系,是从左上角开始的,不符合我们的画线要求。修改坐标系的目的是让曲线从图像框的左边正中间,开始画线。修改图像框的坐标系,这里定义一个过程PicScale(),代码如下:
Private Sub PicScale(picX As PictureBox)
picX.Scale (0, PicX.ScaleHeight)-(picX.ScaleWidth, -PicX.ScaleHeight)
End Sub
一般的实时曲线显示的时候在屏幕的正中间有一条基准线,这里也要画出这条基准线,用一个过程PicMidleLine()来实现,代码如下:
Private Sub PicMidleLine( picX As PictureBox)
picX.Line (0, 0)-(picX.ScaleWidth, 0), vbGreen '画出中线
End Sub<......

阅读全文(12092) | 评论:4