VB6 文件传输互发代码
- 格式:doc
- 大小:43.50 KB
- 文档页数:8
vb6 sendmessage用法
在VB6中,SendMessage函数可以用于向窗口发送消息。
具体用法如下:
1. 在VB6的代码模块中声明SendMessage函数的引用:
```vb
Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hWnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long
```
2. 使用SendMessage函数向窗口发送消息:
```vb
Private Sub SendMessageDemo()
Dim hWnd As Long
Dim msg As Long
Dim wParam As Long
Dim lParam As Long
' 获取目标窗口句柄
' hWnd = ...
' 设置消息和参数
msg = WM_USER + 1
wParam = 0
lParam = 12345
' 发送消息
SendMessage hWnd, msg, wParam, ByVal lParam
End Sub
```
在上面的示例中,`hWnd`代表目标窗口的句柄,可以通过调用FindWindow或者其他Windows API函数获取。
`msg`代表要发送的消息,`wParam`和`lParam`是消息的参数。
需要根据具体的需求设置不同的消息和参数,可以参考Windows API文档来查看特定消息的值和参数的使用方法。
vb6 sub传递参数在VB6中,可以使用Sub过程来传递参数。
以下是在VB6中详细精确地传递参数的方法:1. 通过值传递参数:在Sub过程的参数列表中声明参数,并在调用Sub过程时传递参数的值。
在Sub过程内部,可以使用参数的值进行操作,但不会影响传递给参数的原始值。
示例代码如下:vbSub MySub(ByVal num As Integer)' 使用传递的参数进行操作MsgBox "传递的参数值为:" & numEnd SubSub Main()Dim x As Integerx = 10' 调用Sub过程并传递参数的值MySub xEnd Sub2. 通过引用传递参数:在Sub过程的参数列表中声明参数,并在调用Sub过程时传递参数的引用。
在Sub过程内部,对参数的任何更改都会影响传递给参数的原始值。
示例代码如下:vbSub MySub(ByRef num As Integer)' 修改传递的参数值num = num + 10End SubSub Main()Dim x As Integerx = 10' 调用Sub过程并传递参数的引用MySub x' 输出修改后的参数值MsgBox "修改后的参数值为:" & xEnd Sub在上述示例代码中,通过值传递参数的Sub过程将显示传递的参数值为10。
而通过引用传递参数的Sub过程将修改传递的参数值,并在调用Sub过程后显示修改后的参数值为20。
需要注意的是,VB6中的Sub过程只能传递参数,而不能返回值。
如果需要返回值,可以使用Function过程。
vb6 sub传递参数如何在VB6中传递参数到子程序(Sub)中。
步骤一:了解子程序(Sub)和参数的概念在VB6中,子程序(Sub)是一段独立的代码块,用于执行特定的功能操作。
子程序通常会接受输入参数,并根据参数的值进行相应的处理。
参数是一种特殊的变量,它允许在调用子程序时向其传递数据。
步骤二:声明子程序(Sub)在VB6中,使用Sub语句来声明一个子程序。
具体的声明语法如下:Sub SubName(parameters)' 子程序的代码块End Sub其中,SubName是子程序的名称,它可以由字母、数字和下划线组成,但不能以数字开头。
parameters是传递给子程序的参数列表。
步骤三:传递参数到子程序(Sub)在调用子程序(Sub)之前,我们需要先定义并传递参数。
参数可以是任何数据类型,如整数、字符串等。
传递参数到子程序(Sub)的方式有两种:按值传递和按引用传递。
1. 按值传递:在子程序(Sub)声明中,参数前不加ByRef关键字。
按值传递意味着在调用子程序(Sub)时,传递给参数的是变量的值本身。
例如,我们定义一个名为AddNumbers的子程序,该子程序接受两个整数参数,并返回它们的和。
具体的代码如下:Sub AddNumbers(ByVal a As Integer, ByVal b As Integer) Dim sum As Integersum = a + bMsgBox "The sum of " & a & " and " & b & " is " & sumEnd Sub在主程序中调用该子程序,并传递参数:Private Sub Command1_Click()Dim num1, num2 As Integernum1 = 10num2 = 20AddNumbers num1, num2End Sub运行上述代码后,会弹出一个消息框,显示两个数值的和。
vb6中copyfile用法VB6中CopyFile用法简介CopyFile函数是VB6中用于复制文件的一个重要函数。
它可以将一个文件从一个位置复制到另一个位置,同时还可以指定是否覆盖已存在的文件。
使用语法Public Declare Function CopyFile Lib "kernel32" Alias "CopyFileA" (ByVal lpExistingFileName As String, ByVa l lpNewFileName As String, ByVal bFailIfExists As Long) As Long参数说明: - lpExistingFileName:被复制的文件的路径和文件名。
- lpNewFileName:新文件的路径和文件名。
- bFailIfExists:指示如果目标文件已存在时是否覆盖。
0表示覆盖,非0表示不覆盖。
示例用法基本用法Dim sourceFile As StringDim destinationFile As StringsourceFile = "C:\Temp\"destinationFile = "C:\Temp\"CopyFile sourceFile, destinationFile, 0上述代码将把C:\Temp\文件复制到C:\Temp\。
覆盖已存在文件Dim sourceFile As StringDim destinationFile As StringsourceFile = "C:\Temp\"destinationFile = "C:\Temp\"CopyFile sourceFile, destinationFile, 1上述代码将把C:\Temp\文件复制到C:\Temp\,如果``已存在,则会被覆盖。
VB6基于TCP协议实现局域⽹内⽂件夹传送刚刚拿到这个需求时,为了实现⽅便(传送⽂件已经实现,传送⽂件夹采取压缩的话也只需传送⼀个⽂件),计划采取的实现⽅法是:调⽤压缩组件,将⽂件夹压缩成⼀个⽂件,传送到另⼀端;在接收时,解压缩此⽂件得到⽂件夹。
由此带来的问题是:没有⼀个免费的压缩⽂件夹的组件。
于是想到的策略是:⽤shell程序调⽤dos下的arj.exe压缩。
但是由于arj是dos⼯具,有⼀个⽂件名的问题:⽂件名长度超过8位(中⽂4位),就会⾃动截断。
针对这个问题:⼜想了⼀种很笨的解决办法:将传送前,遍历⽂件夹,记录所有⽂件和⽂件夹名,传送时附带传过去,接收端接收完⽂件,解压缩后,修改⽂件名。
经过这么⼀折腾,由⼀个问题带来很多的头痛的问题。
(陷⼊了怪圈)。
后来经过仔细考虑,觉得⽤上述⽅法传送⽂件夹,有很多的隐患。
⼀:如果⽂件夹很⼤或⽂件很多,发送前的压缩操作需要很长时间,⽤户可操作性太差;⼆:由于要压缩⽂件夹,就需要保存,删除临时⽂件,如果处理不得当,会错删⽂件;三:⽤arj需要修改⽂件和⽂件夹名字,改名算法如果不健壮同样是⼀个隐患。
综合考虑了以后,决定修改传送算法。
基本思路是:既然传送⼀个⽂件已经实现,传送⽂件夹的话,⽆⾮是在⼀个连接过程多进⾏⼏次传送⽂件的过程。
详细⽅法描述:发送⽂件夹之前,⾸先遍历⽂件夹,保存每个⼦⽂件夹和⽂件信息(包括⽂件相对于选中的⽂件夹的路径,⽂件⼤⼩,⽂件名);传送之前,先发送传送请求,附带待传送⽂件夹的总体信息(⽂件夹名和⽂件夹总⽂件⼤⼩),接收端收到请求信息后,保存这些信息,选择保存路径,并发送确认标志符。
发送端收到确认标志符,⾸先传送单个⽂件的信息(单个⽂件的⼤⼩,⽂件名);接收端收到后,保存单个⽂件⼤⼩,在本地创建⽂件,发送请求发送⽂件内容标志符。
发送端收到后开始发送⽂件体;接收端开始接收⽂件体,当保存单个⽂件⼤⼩和接收到的数据相等时,请求发送第⼆个⽂件的⽂件信息,依次下去。
VB6httppost发送与返回内容处理今天帮同事做另一家公司的Web系统数据对接,我方发送请求,对方返回一些数据,用的是客户端用的是VB6,代码记录如下:[vb] view plain copy1.Dim postData As String2.Dim url As String3.4.url = "http://111.11.11.11/services/getQuickInfoService"5.postData = TextContent.Text6.7.'--- post8.Dim HttpClient As Object9.10.Set HttpClient = CreateObject("Microsoft.XMLHTTP")11.HttpClient.Open "POST", url, False12.HttpClient.setRequestHeader "Content-Type", "text/xml; charset=UTF-8"13.HttpClient.Send pvToByteArray(postData)14.15.Do While HttpClient.readyState <> 416.DoEvents17.Loop18.19.TextResponse.Text = HttpClient.responseText20.21.22.MsgBox "发送完毕"下面是发送内容的编码部分:[vb] view plain copy1.' 下面是两个转换函数2.3.Private Function pvToByteArray(sText As String) As Byte()4.pvToByteArray = GB2312ToUTF8(sText)5.6.End Function7.8.Public Function GB2312ToUTF8(strIn As String, Optional B yVal ReturnValueType As VbVarType = vbString) As Variant9.Dim adoStream As Object10.11.Set adoStream = CreateObject("ADODB.Stream")12.adoStream.Charset = "utf-8"13.adoStream.Type = 2 'adTypeText14.adoStream.Open15.adoStream.WriteText strIn16.adoStream.Position = 017.adoStream.Type = 1 'adTypeBinary18.GB2312ToUTF8 = adoStream.Read()19.adoStream.Close20.21.If ReturnValueType = vbString Then GB2312ToUTF8 = Mid(GB2312T oUTF8, 1)22.23.End Function效果:VB6比较老了,没有Java和C#那么完备,也没什么插件可以实现特定功能,但任然可以用原始的语句写出很多功能。
VB6.0文件操作详细攻略文件:存储在外部介质上数据的集合。
按名存取1. 记录由若干个相互关联的数据项组成。
例如,由学生的学习成绩信息组成的记录:2. 文件及其种类文件是记录的集合(1) 顺序文件按顺序依次把记录写入文件;按顺序依次把记录读出来。
(2) 随机文件随机文件可以直接访问文件中的任意一个记录。
记录长度相同根据记录号访问(1) ASCII码文件数据是以ASCII码进行编码储存的。
(2) 二进制文件(Binary File)数据是以二进制格式进行编码保存的。
6.2 顺序文件1. 打开文件Open "文件名" [For 模式] [Access 操作类型] [锁定] As [#]文件号 [Len=记录长度](1) 模式OUTPUT:写操作INPUT:读操作APPEND:追加到文件未尾(2) 操作类型READ:只读WRITE:只能写READWRITE:读写皆可(3) 锁定:用于多进程环境,是否允许其他进程对打开的文件进行操作Shared(缺省):共享Lock Read:禁止其他进程对该打开的文件进行读操作Lock Write:禁止其他进程对该打开的文件进行写操作Lock Read Write:禁止其他进程对该打开的文件进行读写操作(4) 文件号1~511,可以用FreeFile函数获得下一个可利用的文件号。
(5) 记录长度小于或等于32767的整数。
它指定数据缓冲区的大小。
例如,打开C:\VB\SCORE,供写入数据,指定文件号为#1。
命令:OPEN "C:\VB\SCORE" FOR OUTPUT AS #12. 写入命令Print #文件号,[输出列表]输出列表的意义同Print方法。
保存文本框假定文本框的名称为txtTest,文件名为TEST.DAT。
方法1:把整个文本框的内容一次性地写入文件。
Open "TEST.DAT" For Output As #1Print #1, txtTest.TextClose #1方法2:把整个文本框的内容一个字符一个字符地写入文件。
基于VB6.0的双机文件传送系统
曹金华;王宜怀
【期刊名称】《计算机应用研究》
【年(卷),期】2000(017)004
【摘要】在Visual Basic 6.0环境下,利用MSComm控件开发的双机文件传送系统,着重阐述了MSComm控件用于文件传送的使用要点以及相关设计方法,探讨了MSComm控件应用于文件传送中的特殊问题.
【总页数】3页(P53-54,60)
【作者】曹金华;王宜怀
【作者单位】苏州大学计算机工程系,苏州,215006;苏州大学计算机工程系,苏州,215006
【正文语种】中文
【中图分类】TP3
【相关文献】
1.基于VB6.0的双机远程通信 [J], 唐建雄
2.基于嵌入式系统的X-MODEM协议下的文件传送 [J], 李帅;聂慧饶;马浩;张文增
3.基于嵌入式系统的X—MODEM协议下的文件传送 [J], 李帅;聂慧饶;马浩;张文增
4.基于代理的异步安全文件传送系统的实现 [J], 毕岱君;陈文博
5.基于双机联合故障检测的双机热备系统可靠性和安全性研究 [J], 覃庆努;魏学业;于蓉蓉;吴小进
因版权原因,仅展示原文概要,查看原文内容请购买。
vb6编程代码大全Time 返回系统时钟的当前时间。
Date 返回系统时钟的当前日期。
Now 返回代表当前日期和时间的编码值。
该函数经常用作其它系统时钟函数的参数。
Hour(Time) 返回指定时间的小时部分(0到23)。
Minute(Time) 返回指定时间的分钟部分(0到59)。
Second(Time) 返回指定时间的秒部分(0到59)。
Day(Date) 返回月份中的日期数(1到31)。
Month(Date) 返回日期中的月份(1到12)。
Year(Date) 返回日期中的年度。
Weekday(Date) 返回日期中代表一周中的星期几。
Abs(n) 返回n的绝对值。
Atn(n) 返回n的反正切值,以弧度为单位。
Cos(n) 返回n的余弦值,以弧度为单位。
Exp(n) 返回e的n次方。
Rnd(n) 产生0到1之间的一个随机数。
Sgn(n) n小于0时返回-1,n等于0时返回0,n大于0时返回1。
Sin(n) 返回n的正弦值,以弧度为单位。
Sqr(n) 返回n的平方根。
Str(n) 把数值值转换成字符串。
Tan(n) 返回n的正切值,以弧度为单位。
Val(n) 把字符串转换为数值值。
Int(n) 返回数字的整数部分。
8.4-->9Fix(n) 返回数字的整数部分。
8.4-->8以上函数在VB6和VBScript中都适用,在。
NET里面要在前面加上相应的命名空间,如System.Math.Cos(),Microsoft.VisualBasic.Hour()。
数据类型转换函数:转换函数将表达式转换成CBool BooleanCByte ByteCCur Currency '只在VB7.0以下有效CDate DateCDbl DoubleCInt IntegerCLng LongCSng SingleCStr StringCVar Variant ‘只在VB7.0以下有效CVErr Error '只在VB7.0以下有效若想了解Visual Basic正在使用哪种变量类型,可使用VarType 函数。
用VB6.0编写手机短信发送,因为手机短消息的发送是以PDU串的形式发送出去的,中文字符以Unicode码来表示,所以在发送中文短消息之前必须首先将中文字符转换为Unicode码,下面的函数将实< br/>因为手机短消息的发送是以PDU串的形式发送出去的,中文字符以Unicode码来表示,所以在发送中文短消息之前必须首先将中文字符转换为Unicode码,下面的函数将实现这个功能。
这个函数主要应用到VB自带的一个格式转换函数:ChrW()将中文转换为Unicode 码。
PublicFunctionchg(rmsgAsString)AsStringDimtepAsStringDimtempAsStringDimiAsIntegerDimbAsIntegertep=rmsgi=Len(tep)b=i/4Ifi=b*4Thenb=b-1tep=Left(tep,b*4)Elsetep=Left(tep,b*4)EndIfchg=""Fori=1Tobtemp="&H"&Mid(tep,(i-1)*4 1,4)chg=chg&ChrW(CInt(Val(temp)))NextiEndFunction同上,为了发送以PDU模式发送短消息,必须将手机号码和对方手机号码也转换为PDU 格式,下面的函数就是为了实现这种转换:PublicFunctiontelc(numAsString)AsStringDimtlAsIntegerDimltem,rtem,ttemAsStringDimtiAsIntegerttem=""tl=Len(num)Iftl<>11Andtl<>13ThenMsgBox"wrongnumber."&tlExitFunctionEndIfIftl=11Thentl=tl 2num="86"&numEndIfForti=1TotlStep2ltem=Mid(num,ti,1)rtem=Mid(num,ti 1,1)Ifti=tlThenrtem="F"ttem=ttem&rtem<emNexttitelc=ttemEndFunction手机号码有两种表示方法:11位和13位(带国家码86),一般手机发送时都是以13位形式表示的,所以以上的函数还有一个功能是自动将11位格式手机号码转换为13位形式,然后再转换为PDU串。
浅谈在VB中实现文件传输的技巧Winsock即Windows Sockets规范的简称,是目前昀流行的网络通信应用程序接口之一。
所谓Socket,通常也称作“套接字”,用于描述IP地址和端口,是一个通信链的句柄。
应用程序通常通过“套接字”向网络发出请求或者应答网络请求。
Socket是网络上运行的两个程序间双向通讯的一端,它既可以接受请求,也可以发送请求,利用它可以较为方便的编写网络上数据的传递。
Winsock控件可以与远程计算机建立连接,并通过用户数据报协议UDP或者传输控制协议TCP进行数据交换,这两种协议都可以用来创建客户与服务器应用程序。
与Timer控件和CommandDialog控件类似,Winsock控件在运行时是不可见的。
在使用Winsock控件时,首先需要考虑使用什么协议。
可以使用的协议包括UDP和TCP。
两种协议之间的重要区别在于它们的连接状态:TCP协议控件是基于连接的协议,可以将它同电话系统相比。
在开始数据传输之前,用户必须先建立连接。
UDP协议是一种无连接协议,两台计算机之间的传输类似于传递邮件:消息从一台计算机发送到另一台计算机,但是两者之间没有明确的连接。
到底选择哪一种协议通常是由需要创建的应用程序决定的。
本文以 TCP为例介绍文件传输。
TCP协议的全名为“传输控制协议(transfer control protocol)”,这是一种在Internet上使用的主要协议。
因此,当您使用TCP协议连接两个网络上的设备时,将可以在它们之间交换希望交换的数据。
同时,如果您开发的应用程序属于主从式应用架构应用系统时,将必须要知道应用系统主机的ip地址(利用 RemoteHost属于取得)以及连接端口号(利用remoteport属于取得)。
在这些数据完全备齐之后,您才可以进行进一步的调用、连接。
因此,如果正在建立主机端应用程序时,必须指定本机,必须指定本机(执行应用程序所在的计算机)所用的连接端口号(localport属于),接着将 Winsock控件设置为“监听(listen)”,即可等候远程客户端进行调用与连接。
附录打包和发布应用程序在创建Visual Basic 应用程序后,您可能希望将该程序发布给其他人。
您可以将使用Visual Basic 创建的任何应用程序自由地发布给使用Microsoft Windows 的任何人。
可以通过磁盘、CD、网络、或者intranet 以及Internet这些途径来发布应用程序。
下面以实例57为例介绍打包和展开应用程序。
一、使用向导进行打包1.启动打包和展开向导Visual Basic 的打包和展开向导使您能够轻松地为应用程序创建必需的.cab文件以及安装程序。
与其它向导一样,打包和展开向导将提示您输入相应信息,以便创建您所需要的准确配置。
要从Visual Basic 中启动打包和展开向导,请按照以下步骤执行:(1)打开想要使用向导来打包或展开的工程。
注意如果您正在使用一个工程组,或已加载了多个工程,则在启动该向导之前,请确保当前的工程就是您要打包或展开的工程。
(2)如果必要,请使用“外接程序管理器”来加载打包和展开向导:从“外接程序”菜单中选择“外接程序管理器”,从该列表中选择“打包和展开向导”,然后单击“确定”,如图1所示。
图1 外接程序管理器(3)从“外接程序”菜单中选择“打包和展开向导”来启动该向导,如图2所示。
打包和展开向导提供了三个选项:“打包”选项帮助您将一个工程的文件打包为一个可以展开的.cab 文件,而且在某些情况下还要创建一个安装程序来安装该.cab 文件。
向导确定需要打包的文件,并引导您作出所必需的选择,以便为您的工程创建一个或多个 .cab 文件。
“展开”选项帮助您将打好包的应用程序传送到适当的发布媒体,例如软盘、网络共享、或Web 站点。
“管理脚本”选项让您可以查看和操作以前使用打包和展开向导时所保存的脚本。
每次使用该向导时,都会保存一个包含您所做的所有选择的脚本。
在以后的过程中,如果您想使用相似的设置值以及做出与原来相同的选择,就可以重新使用这些脚本。
[VB学习]VB6.0中怎么复制、移动文件?转自:[url]/question/10741489.html[/url]有两种方法可以实现,第一使用API函数代码如下:Option Explicit'声明移动文件的API函数Private Declare Function MoveFile Lib "kernel32" Alias "MoveFileA" (ByVal lpExistingFileName As String, ByVal lpNewFileName As String) As LongPrivate Sub Command1_Click()Dim str1 As String'存放原始路径Dim str2 As String'要复制的路径str1 = "c:\123\"str2 = "c:\456\123.exe"str1 = str1 + "123.exe"'倘若原始文件不存在If Dir(str1) = "" ThenMsgBox "原始文件未找到!", vbOKOnly + vbExclamationExit SubEnd If'移动文件MoveFile str1, str2MsgBox "文件移动成功!", vbOKOnly + vbInformationEnd Sub首先你要先在c盘下面建立123和456这两个文件。
++++++++++++++++++++++++++++++++=第二种方法,使用VB自身的函数实现,代码稍有变动,具体如下:Option ExplicitPrivate Sub Command1_Click()Dim str1 As String'存放原始路径Dim str2 As String'要复制的路径str1 = "c:\123\"str2 = "c:\456\123.exe"str1 = str1 + "123.exe"'倘若原始文件不存在If Dir(str1) = "" ThenMsgBox "原始文件未找到!", vbOKOnly + vbExclamation Exit SubEnd IfFileCopy str1, str2 'FileCopy是复制文件的函数Kill str1 '复制好了,删除原始文件!MsgBox "文件移动成功!", vbOKOnly + vbInformation End Sub。
收稿日期:2004-11-08 作者简介:冯中毅(1971—),甘肃白银人,兰州师范高等专科学校计算机系讲师,主要从事多媒体技术,计算机教育应用研究。
VB 程序设计中串行通信的两种传输模式冯中毅 董海棠(兰州师范高等专科学校,甘肃兰州 730070)(兰州交通大学,甘肃兰州 730070) 摘 要:在Visual Basic 程序设计中,串行通信有两种传输模式,在文本模式下,字符变量只能处理ASCII 码0至127的文本字符,而在二进制模式下传输数据就可以解决ASCII 码中传送超过128的字符时所存在的问题。
在实际开发应用中,采用了Visual Basic6.0中的MSComm 控件对两种传输模式进行实现。
当传输的数据中包含文件、控制字符以及数量较大的数值数据时,应该采用二进制模式;当传输的数据中包含的是指令及可见字符,数值数据也比较少时,可采用文本模式。
关键词:VB6.0;串行通信;传输模式中图分类号:TP311 文献标识码:A 文章编号:1008-9020(2005)02-022-02 1 问题的提出在计算机与外部设备的串行通信中,所传输的数据有两种格式:文本数据格式和二进制数据格式。
因而对应的传输模式也有两种:字符模式和字节模式。
即在两种方式下,分别把数据以文本和二进制数据的形式传输。
计算机与单片机之间实现串行通信的方法很多,而VB6.0中的MSComm 控件以其简洁易用而得到了越来越广泛的应用。
通过对该控件的InputMode 属性的设置,就可选择以何种方式发送和取回接收缓冲区中的数据。
计算机中字符最常用的表示方法是ASCII 码。
如果以8个bit 表示一个字符,那么就有256种组合,也即ASCII 码表上的256个字符。
而西文字符一般是以单7位一个字节来表示的,最多有128种组合,对应于ASCII 码表中的可见字符。
而128至256间的字符是不可见字符。
对于英文字母来说,只需ASCII 码的前128个字符就够了,但是对于中文等多语种支持来说,ASCII 码就不够用了。
vb6的字符串编码在VB6(Visual Basic 6)中,字符串编码是指确定如何用字节表示文本的过程。
VB6使用的默认字符串编码是ANSI(ASCII)编码。
然而,为了处理国际化和多语言文本,VB6还提供了其他几种常见的字符串编码方法。
本文将介绍VB6中常用的字符串编码方法和如何在程序中正确地使用它们。
1. ANSI编码:在VB6中,默认字符串编码为ANSI(ASCII)。
这种编码使用一个字节表示一个字符,包括英文字符、数字以及一些特殊字符。
它在处理英文文本和一些西方语言时效果良好,但不能正确地处理非西方语言字符。
2. Unicode编码:Unicode是一种字符编码标准,它用4个字节表示一个字符,可以表示几乎所有的语言和符号。
在VB6中,Unicode编码使用的是UTF-16(16位Unicode转换格式)。
使用Unicode编码时,一个字符会占用两个字节的存储空间。
在VB6中,可以使用StrConv函数将字符串从ANSI编码转换为Unicode编码:Dim str As StringDim unicodeStr As Stringstr = "Hello"unicodeStr = StrConv(str, vbUnicode)3. UTF-8编码:UTF-8是一种变长编码方式,可以用来表示Unicode字符集中的所有字符。
它使用1到6个字节表示一个字符,根据字符的不同而变化。
UTF-8编码在互联网上广泛使用,它能够正确地表示多种语言的字符。
在VB6中,可以使用ADODB.Stream对象将字符串从ANSI编码转换为UTF-8编码:Dim str As StringDim utf8Str As StringDim stream As Objectstr = "Hello"Set stream = CreateObject("ADODB.Stream")stream.Openstream.Type = 2 'adTypeTextstream.Charset = "utf-8"stream.WriteText strstream.Position = 0utf8Str = stream.ReadText4. Base64编码:Base64编码是一种用64个字符(A-Z,a-z,0-9,+和/)表示二进制数据的方法。
☆在V B中实现文件上传☆V isual Basic 作为一个集应用程序开发、测试、查错功能于一体的集成式开发环境,越来越受到程序员的青睐。
笔者在开发某数据库维护系统的过程中,选择了V B5.0作为开发平台,U nix作为服务器端操作系统,Informix 作为服务器数据库。
问题的出现在开发该维护系统的过程中,注意到Informix 数据库的字段类型C L O B 填入数据时需要函数FILETOC L OB("FILENAME","SERVER") , 其中的"FILENAME"需要指出文件路径和文件名称。
然而,在维护过程中此文件是在客户端执行的,这样就要求即时将文件传输到服务器端。
解决办法1. F TP传输工具我们首先使用F TP传输工具,用VB5.0中SHELL 命令调用DO S批处理文件来实现传输的需要。
Shell调用格式:Shell(pathname[,w indow sty le])例子:Shell("c:\w indow s\upload.bat")批处理文件upload.bat 的内容:c:\w indow s\ftp hostnameusernamepassw ordsend c:\zrh\upload.txt upload.txtby e该命令实现了文件"upload.txt"的传输要求。
在使用完毕之后, 再调用命令把该文件删除。
例子:Shell("c:\w indow s\del_up.bat")批处理文件del_up.bat 的内容:c:\w indow s\ftp hostnameusernamepassw orddele upload.txtby e这样,文件"upload.txt"被删除。
但是,另一个问题出现了。
由于Shell 函数的运行机制是与其它程序同步执行,也就是说,当调用Shell 函数的子程序还没有执行完毕之前,Shell函数后面的语句已经执行。
VB6 文件传输互发代码大| 中| 小[2006/03/04 10:56 | 分类: .Net | by NetFetch ]Visual Basic 6.0 文件发送端'********************版权信息********************'*隶属工程: FileTran1'*模块名称: frmMain'*模块描述: 发送文件'*成员个数: 11'*代码行数: 101'*声明行数: 16'*创建时间: 2006-02-21 14:22:29(创建人:MysticBoy)'*修改时间: 2006-02-21 14:22:29(修改人:MysticBoy)'*代码说明: 该模块负责发送文件。
'* 您需要向窗体内添加一个名为ws的winsock控件。
'*版权说明: 版权所有(c) ?-2006 Mysticsoft.'* 保留所有权'***********************************************Dim cState As String '当前状态Dim cmd As String '传输协议的命令Dim e As ErrObject ' 错误对象'********************成员[Command2_Click]说明信息******************** '*代码编辑: 2006-02-21 14:49:04'*成员类型: 对象[Command2]的[Click]事件'*HelpCtID: 0'*成员描述:'*功能说明: 测试发送一个文件。
'******************************************************************** Private Sub Command2_Click()SendFile \"E:影视&音乐韩国辣妹4th WhyKiller(boby vox).mpg\", \"127.0.0.1\"'发送文件'E:影视&音乐韩国辣妹4th WhyKiller(boby vox).mpg'MsgBox \"OK\"End Sub'********************成员[SendFile]说明信息********************'*代码编辑: 2006-02-21 14:49:04'*成员类型: 公有方法'*HelpCtID: 0'*成员描述: 发送文件'*输入参数: 参数名称说明'* FileName 要发送的完整文件名及其路径'* R emoteHost 接受文件的主机'* R emotePort [此参数可选] 接受文件的主机侦听的端口。
总结一下VB6的文件操作,省得要用的时候又到处查找。
一、文件类型1、顺序文件(文本文件):以ASCII码形式存放的文件。
似乎还有Unicode码存放的,有没有BCD码的呢?2、随机访问文件:这种文件格式很有特点:文件中存放若干条等长的单元(也可以说是记录);每个单元包含同类型、等数量、等长度的数据项;文件中,除了字符串以ASCII码存放之外,其它都以二进制形式直接存放,节省存储空间。
这种文件类型非常适合存储需要和软件交互的数据,如结构体数据、类数据等。
这也是VB特有的文件访问方式。
3、二进制文件:以二进制形式存放,PE程序文件一般都是这个类型。
二、操作方法1、顺序文件打开:Open 文件名For Input | Output | Append As [#]文件号Input打开读入,文件不存在报错。
Output打开覆盖写入,文件不存在则创建。
Append打开追加写入,文件不存在则创建。
读:Line Input #文件号, 字符串变量读一行数据存入字符串变量,数据包括空格、Tab、等,不包括回车符和换行符,所以要显示文件的换行效果,要手动添加回车符和换行符(vbCrLf)Input #文件号, 变量1[, | ;] [变量2]...这种方式可以存入多个变量,而且变量类型不限于字符串型。
写:Print #文件号, 参数1[, | ;] [参数2]...将各参数逐个写入文件。
参数间用逗号隔开时,文件中相应插入多个空格;用分号隔开时,插入一个空格。
可以用Spc(n)、Tab(n)等进行排版。
Write #文件号, 参数1[, | ;] [参数2]...这种写入方式将自动添加界定符,对不同参数的类型加以界定。
2、随机访问文件打开:Open 文件名[For Random] As [#]文件号Len = 记录长度 For Random可以省略,文件不存在则创建,读写都是这种打开方式。
Len是文件中记录的一条长度,用以识别记录的开始与结束,经常用Len(记录名)来获取长度。
VB6 文件传输互发代码大| 中| 小[2006/03/04 10:56 | 分类: .Net | by NetFetch ]Visual Basic 6.0 文件发送端'********************版权信息********************'*隶属工程: FileTran1'*模块名称: frmMain'*模块描述: 发送文件'*成员个数: 11'*代码行数: 101'*声明行数: 16'*创建时间: 2006-02-21 14:22:29(创建人:MysticBoy)'*修改时间: 2006-02-21 14:22:29(修改人:MysticBoy)'*代码说明: 该模块负责发送文件。
'* 您需要向窗体内添加一个名为ws的winsock控件。
'*版权说明: 版权所有(c) ?-2006 Mysticsoft.'* 保留所有权'***********************************************Dim cState As String '当前状态Dim cmd As String '传输协议的命令Dim e As ErrObject ' 错误对象'********************成员[Command2_Click]说明信息******************** '*代码编辑: 2006-02-21 14:49:04'*成员类型: 对象[Command2]的[Click]事件'*HelpCtID: 0'*成员描述:'*功能说明: 测试发送一个文件。
'******************************************************************** Private Sub Command2_Click()SendFile \"E:影视&音乐韩国辣妹4th WhyKiller(boby vox).mpg\", \"127.0.0.1\"'发送文件'E:影视&音乐韩国辣妹4th WhyKiller(boby vox).mpg'MsgBox \"OK\"End Sub'********************成员[SendFile]说明信息********************'*代码编辑: 2006-02-21 14:49:04'*成员类型: 公有方法'*HelpCtID: 0'*成员描述: 发送文件'*输入参数: 参数名称说明'* FileName 要发送的完整文件名及其路径'* R emoteHost 接受文件的主机'* R emotePort [此参数可选] 接受文件的主机侦听的端口。
'*功能说明: <在此键入说明>'**************************************************************Public Function SendFile(FileName As String, RemoteHost As String, Optional RemotePort As Long = 1123) As BooleanIf ws.State <> 0 Then ws.Close '如果状态不为0说明正在使用,为发送当前文件,强制关闭,避免错误ws.Connect R emoteHost, RemotePort '连接到远程主机,该主机接受文件.DoEvents '释放CPU时间If Waiting(\"ok\") = False Then '等待接受机回应.如果连接,在连接事件中设置状态'ok\"SendFile = False '如果等待超时,那么返回,并退出Exit FunctionElse'连接成功。
这里您可以提示用户连接成功End Ifws.SendData \"file\" '请求发送文件DoEvents '这对于VB6来说,这是发送数据后,程序必须做的,如果不释放,真正的发送将在CPU空闲时If Waiting(\"filename\") = False Then '等待接受机要求文件名SendFile = False '如果等待失败,退出Exit FunctionEnd If'服务器要求文件名''''''''Dim Fnx() As StringFnx = Split(FileName, \"\") '按照路径分隔符,分割路径Dim Fnam As StringFnam = Fnx(UBound(Fnx)) '然后取数组中最后一个索引的值,该值即文件名ws.SendData Fnam '发送文件名。
DoEvents '这对于VB6来说,这是发送数据后,程序必须做的,如果不释放,真正的发送将在CPU空闲时If Waiting(\"filedata\") = False Then '等待接受机请求文件数据的命令SendFile = False '如果等待失败,退出。
Exit FunctionEnd IfDim fn As LongDim cFileName As Stringfn = FreeFile '为打开要发送的文件准备一个有效的文件句柄Dim bArys() As Byte '为要发送的文件准备内存。
ReDim bArys(FileLen(FileName) - 1) '按文件大小准备内存,注意:这里必须减一Open FileName For Binary As #fnGet #fn, , bArys '读取文件到数组中Close #fnws.SendData bArys '发送该数组。
DoEvents '这对于VB6来说,这是发送数据后,程序必须做的,如果不释放,真正的发送将在CPU空闲时cState = \"sendok\" '然后设置状态为发送完成。
DoEvents '释放CPU事件。
以便开始发送。
Waiting \"end\" '等待发送结束。
End Function'********************成员[Waiting]说明信息********************'*代码编辑: 2006-02-21 14:49:00'*成员类型: 公有方法'*HelpCtID: 0'*成员描述:'*输入参数: 参数名称说明'* txt 要等待的状态文本内容。
'* tmout [此参数可选] 超时'*功能说明: <在此键入说明>'************************************************************* Function Waiting(txt As String, Optional tmout As Long = 30) As BooleanDim sn As Singlesn = TimerDo Until cState = txt '一直等到状态为指定字符串时退出循环If tmout > 0 Then '如果设置的超时大于0If Timer - sn > tmout Then '开始等待的时间到目前为止的时间长超过超时时间时 Waiting = False '等待失败。
Exi t Function '退出函数End IfEnd IfDoEvents '释放cpu,因为我们不能霸道,因为这是个多任务的平台。
LoopWaiting = True '等待成功时返回。
End Function'********************成员[ws_Connect]说明信息********************'*代码编辑: 2006-02-21 14:49:04'*成员类型: 对象[ws]的[Connect]事件'*HelpCtID: 0'*成员描述: '如果连接成功设置状态为\"ok\"'*功能说明: '如果连接成功设置状态为\"ok\"'**************************************************************** Private Sub ws_Connect()cState = \"ok\" '如果连接成功设置状态为\"ok\"End Sub'********************成员[ws_DataArrival]说明信息******************** '*代码编辑: 2006-02-21 14:49:04'*成员类型: 对象[ws]的[DataArrival]事件'*HelpCtID: 0'*成员描述: 接受'*输入参数: 参数名称说明'* bytesTotal 接受到的数据大小'*功能说明:'********************************************************************Private Sub ws_DataArrival(ByVal bytesTotal As Long)Dim dat As Stringws.GetData dat, , bytesTotalcState = dat '接受到数据后立即设置状态信息。
以便Waiting结束等待End Sub'********************成员[ws_Error]说明信息********************'*代码编辑: 2006-02-21 14:49:04'*成员类型: 对象[ws]的[Error]事件'*HelpCtID: 0'*成员描述:'*输入参数: 参数名称说明'* Number '错误代码'* Description '错误描述'* Scode '错误的源代码标记'* Source'错误来源'* HelpFile'帮助文件'* HelpContext'帮助内容'* CancelDisplay'是否显示'*功能说明:'**************************************************************Private Sub ws_Error(ByVal Number As Integer, Description As String, ByVal Scode As Long, ByVal Source As String, ByVal HelpFile As String, ByVal HelpContext As Long, CancelDisplay As Boolean)e.Number = Number '如果发生意外错误。