binary option(gvim的utf-8的无bom乱码问题)
本文目录
gvim的utf-8的无bom乱码问题
set encoding=utf-8set fileencoding=utf-8set fileencodings=ucs-bom,utf-8,gbk,cp936,gb2312,big5,euc-jp,euc-kr,latin1let &termencoding=&encodinglanguage messages zh_CN.utf-8
这是我的vimrc编码相关配置,我使用中没有遇到过任何乱码问题,可以参考下。
vb 如何实现文件拖动到窗体时将该文件打开
’先把form的OLEDropMode属性设置为1,然后复制下面代码运行,拖拽一个xls文件到form(电脑的有office组件)Option ExplicitPrivate Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" (ByVal hWnd As Long, ByVal lpOperation As String, ByVal lpFile As String, ByVal lpParameters As String, ByVal lpDirectory As String, ByVal nShowCmd As Long) As LongPrivate Sub Form_OLEDragDrop(Data As DataObject, Effect As Long, Button As Integer, Shift As Integer, X As Single, Y As Single) If LCase(Right(Data.Files(1), 4)) = ".xls" Then ShellExecute Me.hWnd, "Open", Data.Files(1), "", App.Path, 1 Else MsgBox "非xls文件:" & Data.Files(1) End IfEnd Sub
winsock通讯
不知道你的winsock 是udp还是tcpip协议
这里给你一个我写的实例 我是用的udp 这个发送了一段数据不一定接收就正确 所以我做了校验
’以下是发送文件的
Option Explicit
Dim GetFileNum As Integer, LenFile As Long, SendByte() As Byte ’发送的包
Private Sub Command1_Click()
On Error Resume Next
Command1.Enabled = False
GetFileNum = FreeFile ’取得未使用的文件号
LenFile = FileLen(Text1.Text) ’获得需传送的文件的长度
If Text2.Text = "" Or Right(Left(Text2.Text, 2), 1) 《》 ":" Then Text2.Text = Text1.Text
Winsock0.SendData "#SEND STA#" & LenFile & "//" & Text2.Text
Wt 0.5
Open Text1.Text For Binary As #GetFileNum ’打开需传送的文件
Call TCPSendFile(Winsock0, GetFileNum, SplitFile) ’传送文件
Me.Caption = Now
Ti.Enabled = True
End Sub
Private Sub Command2_Click()
Unload Me
End Sub
Private Sub Form_Load()
Dim A As String
On Error Resume Next
Command2.Top = -2000
Winsock0.RemoteHost = IPX ’服务器ip
Winsock0.RemotePort = FilePort
End Sub
Private Function SplitFile() As Long ’拆包’为了清晰,下面分别用两个子过程来完成计算这次还可以传多少个字节的数据和传送数据
On Error Resume Next
Dim GetCount As Long
If LenFile 》= 4000 Then ’计算出这次可发送的字节数
GetCount = 4000
LenFile = LenFile - GetCount
Else
GetCount = LenFile
LenFile = LenFile - GetCount
End If
SplitFile = GetCount
End Function
Private Sub TCPSendFile(objWinSock As Winsock, FileNumber As Integer, SendLen As Long)
On Error Resume Next
Dim FileByte() As Byte, I As Long, j As Long, Temp As String * 4
ReDim SendByte(0)
ReDim FileByte(SendLen - 1)
Temp = SendLen + 7
SendByte = Temp ’把长度负值给包头
Get #FileNumber, , FileByte ’读取文件
ReDim Preserve SendByte(SendLen + 7) ’把包头+到文件头
For I = 0 To UBound(FileByte)
SendByte(I + 7) = FileByte(I)
’DoEvents
Next
Winsock0.SendData SendByte
End Sub
Private Sub Form_Unload(Cancel As Integer)
On Error Resume Next
Winsock0.Close
Err.Clear
End Sub
Private Sub TEnd_Timer()
On Error Resume Next
Winsock0.SendData "#END#"
Err.Clear
End Sub
Private Sub Ti_Timer()
On Error Resume Next
Winsock0.SendData "#ERR#"
End Sub
Private Sub Winsock0_DataArrival(ByVal bytesTotal As Long)
On Error Resume Next
Dim S As String
Winsock0.GetData S
Select Case S
Case "ok" ’成功继续发送
If LenFile = 0 Then ’发送完成
If S 《》 "#SEND END#" Then Winsock0.SendData "#SEND END#"
Me.Caption = "文件上传成功!"
Command1.Enabled = True
Ti.Enabled = False
TEnd.Enabled = True
Exit Sub
Else
Me.Caption = "文件上传完成:"
End If
Call TCPSendFile(Winsock0, GetFileNum, SplitFile)
Case "#END#"
TEnd.Enabled = False
FMain.TiF.Enabled = True
Case "no" ’不成功重发上一个包
Winsock0.SendData SendByte
End Select
End Sub
’以下是接收文件的
Option Explicit
Dim FOK As Boolean, Fs As Long, FileNumber As Integer, LenFile As Long ’文件的长度
Private Sub Command1_Click()
Unload Me
End Sub
Private Sub Command2_Click()
On Error Resume Next
Dim A As String
Me.Caption = "开始下载"
If Dir(Text2.Text) 《》 "" And ChV.Value = 0 Then
If MsgBox("文件已经存在,覆盖吗?", vbCritical + vbYesNo) = vbYes Then Kill Text2.Text Else Exit Sub
Else
Kill Text2.Text
End If
If Text2.Text = "" Then Text2.Text = Text1.Text
’Command2.Enabled = False
If Ch.Value = 0 Then A = "#DOW#" Else A = "#DOV#"
FMain.Wsk.SendData A & Text1.Text
Wt 1
FMain.Wsk.SendData "#DOE#" & Text2.Text
End Sub
Private Sub Form_Load()
Dim A As String
’FMain.Ts.Enabled = True
On Error Resume Next
If FMain.Cb.Text = "本地组" Or FMain.Cb.Text = "全部组" Then
Me.Caption = "请重选下载用户"
Else
Command1.Top = -2000
Winsock0.LocalPort = FilePort
Winsock0.Bind
End If
End Sub
Private Sub Form_Unload(Cancel As Integer)
On Error Resume Next
Winsock0.Close
Err.Clear
End Sub
Private Sub La_Click()
CDL.FileName = ""
CDL.ShowOpen
Text2.Text = CDL.FileName
End Sub
Private Sub Winsock0_DataArrival(ByVal bytesTotal As Long)
On Error Resume Next
Dim FileByte() As Byte, A As String, MendByte() As Byte, I As Long, J As Long, Temp As String, W As String
Winsock0.GetData FileByte, vbArray + vbByte ’接收类型为:字节数组
J = UBound(FileByte) ’获得包长
For I = 0 To 7 Step 2 ’合并包头
Temp = Temp & Chr(FileByte(I))
Next
For I = 0 To 9 ’文件发送结束标记
A = A & Chr(FileByte(I))
Next
If A = "#ERR#" Then Winsock0.SendData "no"
If A = "#END#" Then
For I = 0 To Len(FMain.TIn.Text)
If I 《 100 Then
W = Left(Right(FMain.TIn.Text, I), 1)
If W = "!" Then
W = Left(Right(FMain.TIn.Text, I + 4), 5)
Exit For
End If
Else
Exit For
End If
Next I
If W 《》 "下载完成!" Then
FOK = False
Me.Caption = "下载完成!"
FMain.TIn.Text = FMain.TIn.Text & "" & "下载完成!(" & Fs & "《=" & LenFile & ")" & vbCrLf
Command2.Enabled = True
End If
Else
If Val(Temp) = J Then ’比较长度看丢包没有
ReDim MendByte(J - 8)
For I = 0 To J - 8 ’提出包头
MendByte(I) = FileByte(I + 7)
Next
Fs = Fs + UBound(FileByte) - 7
Put #FileNumber, , MendByte ’写文件
Winsock0.SendData "ok" ’发送继续发送的请求
Me.Caption = "文件下载完成:"
Else
If Left(A, 10) = "#SEND STA#" Then
A = ""
For I = 10 To UBound(FileByte) ’文件发送结束标记
A = A & Chr(FileByte(I))
Next
LenFile = Val(Left(A, InStr(A, "//") - 1))
For I = 0 To Len(Text2.Text)
A = Left(Right(Text2.Text, I), 1)
If A = "\" Then Exit For
Next
If Dir(Left(Text2.Text, Len(Text2.Text) - I + 1), vbDirectory) = "" Then MkDir Left(Text2.Text, Len(Text2.Text) - I + 1)
’"#SEND STA#" & FileLen(Text1.Text) & "//" & Text2.Text
FileNumber = FreeFile ’取得未使用的文件号
Fs = 0
Open Text2.Text For Binary As #FileNumber ’打开文件
Else
If A 《》 "#SEND END#" Then
Winsock0.SendData "no" ’出现丢包,请求重发
Else
Winsock0.SendData "#END#" ’发送继续发送的请求
Close #FileNumber
Reset
If FOK = False Then
FOK = True
Me.Caption = "下载完成!"
FMain.TIn.Text = FMain.TIn.Text & "" & "下载完成!(" & Fs & "《=" & LenFile & ")" & vbCrLf
Command2.Enabled = True
Else
FOK = False
End If
End If
End If
End If
End If
End Sub
VB 如何去掉文件头部指定的字节数
新建并打开一个文件夹,在新建的文件夹里创建两个 文本文档 文件,分别粘贴保存指定内容,并按要求命名文件。最后双击“工程1.vbp”这个文件即可!第一个粘贴以下内容(不要等号分隔线),保存,并命名为 工程1.vbpType=ExeReference=*\G{00020430-0000-0000-C000-000000000046}#2.0#0#C:\WINDOWS\system32\stdole2.tlb#OLE AutomationForm=Form1.frmObject={F9043C88-F6F2-101A-A3C9-08002B2F49FB}#1.2#0; COMDLG32.OCXStartup="Form1"HelpFile=""Command32=""Name="工程1"HelpContextID="0"CompatibleMode="0"MajorVer=1MinorVer=0RevisionVer=0AutoIncrementVer=0ServerSupportFiles=0VersionCompanyName="FREE"CompilationType=0OptimizationType=0FavorPentiumPro(tm)=0CodeViewDebugInfo=0NoAliasing=0BoundsCheck=0OverflowCheck=0FlPointCheck=0FDIVCheck=0UnroundedFP=0StartMode=0Unattended=0Retained=0ThreadPerObject=0MaxNumberOfThreads=1AutoRefresh=1======================================第二个粘贴以下内容(不要等号分隔线),保存并命名为 Form1.frmVERSION 5.00Object = "{F9043C88-F6F2-101A-A3C9-08002B2F49FB}#1.2#0"; "COMDLG32.OCX"Begin VB.Form Form1 BorderStyle = 4 ’Fixed ToolWindow Caption = "Form1" ClientHeight = 3120 ClientLeft = 45 ClientTop = 360 ClientWidth = 4680 LinkTopic = "Form1" MaxButton = 0 ’False MinButton = 0 ’False ScaleHeight = 3120 ScaleWidth = 4680 ShowInTaskbar = 0 ’False StartUpPosition = 3 ’窗口缺省 Begin VB.OptionButton Option2 Caption = "擦除" Height = 375 Left = 1440 TabIndex = 9 Top = 1800 Width = 1215 End Begin VB.OptionButton Option1 Caption = "剪掉" Height = 375 Left = 0 TabIndex = 8 Top = 1800 Value = -1 ’True Width = 1215 End Begin MSComDlg.CommonDialog CDL Left = 2880 Top = 2160 _ExtentX = 847 _ExtentY = 847 _Version = 393216 End Begin VB.CommandButton Command3 Caption = "打开文件" Height = 615 Left = 2880 TabIndex = 7 Top = 0 Width = 1695 End Begin VB.CommandButton Command2 Caption = "取消" Height = 615 Left = 2880 TabIndex = 5 Top = 1440 Width = 1695 End Begin VB.CommandButton Command1 Caption = "执行" Height = 615 Left = 2880 TabIndex = 4 Top = 720 Width = 1695 End Begin VB.TextBox Text2 Height = 375 Left = 0 TabIndex = 3 Text = "0" Top = 1080 Width = 2775 End Begin VB.TextBox Text1 Height = 375 Left = 0 TabIndex = 2 Text = "0" Top = 360 Width = 2775 End Begin VB.Label Label4 Caption = "去除方式:" Height = 495 Left = 0 TabIndex = 10 Top = 1560 Width = 2775 End Begin VB.Label Label3 BorderStyle = 1 ’Fixed Single Caption = "准备就绪" Height = 375 Left = 0 TabIndex = 6 Top = 2760 Width = 4695 End Begin VB.Label Label2 Caption = "去除的字节数:" Height = 495 Left = 0 TabIndex = 1 Top = 840 Width = 2775 End Begin VB.Label Label1 Caption = "从第几个字节开始去除:" Height = 375 Left = 0 TabIndex = 0 Top = 120 Width = 2655 EndEndAttribute VB_Name = "Form1"Attribute VB_GlobalNameSpace = FalseAttribute VB_Creatable = FalseAttribute VB_PredeclaredId = TrueAttribute VB_Exposed = FalsePrivate Doing As Boolean ’是否正在处理Private FName As String ’将要处理的文件名及路径Private Sub Command1_Click() Dim FNum As Long, Fnum2 As Long Dim FLen As Long Dim Dat() As Byte Dim PathGet() As Byte Dim NewFile As String Dim ChukLen As Long Dim Start As Long Dim Cuts As Long Dim i As Long, j As Long, Abyte As Byte Start = Val(Text1) Cuts = Val(Text2) If Start 《 1 Or Cuts 《 1 Or FName = "" Then Exit Sub Command3.Enabled = False Command1.Enabled = False PathGet = StrConv(FName, vbFromUnicode) FNum = UBound(PathGet) For i = UBound(PathGet) To 0 Step -1 If PathGet(i) = Asc("\") Then ReDim Preserve PathGet(0 To UBound(PathGet) + 4) For j = 0 To FNum - i PathGet(UBound(PathGet) - j) = PathGet(FNum - j) Next PathGet(i + 1) = Asc("P") PathGet(i + 2) = Asc("i") PathGet(i + 3) = Asc("k") PathGet(i + 4) = Asc("_") NewFile = StrConv(PathGet, vbUnicode) MsgBox "新的文件为:" & vbNewLine & NewFile Exit For End If Next FNum = FreeFile Open FName For Binary As FNum FLen = LOF(FNum) If Start + Cuts 》 FLen Then MsgBox "超出文件尾!" Close FNum Exit Sub End If Fnum2 = FreeFile Open NewFile For Binary As Fnum2 Start = Start - 1 Doing = True i = Start Do While i 》 0 If i 《= 1024 Then ReDim Dat(i - 1) Get FNum, , Dat Put Fnum2, , Dat ChukLen = ChukLen + i i = 0 Label3 = Int(ChukLen / FLen * 100) & "%" If Doing Then GoTo Last DoEvents Else ReDim Dat(1023) Get FNum, , Dat Put Fnum2, , Dat i = i - 1024 ChukLen = ChukLen + 1024 Label3 = Int(ChukLen / FLen * 100) & "%" If Doing Then GoTo Last DoEvents End If Loop If Option2 Then i = Cuts Do While i 》 0 If i 《= 1024 Then ReDim Dat(i - 1) Put Fnum2, , Dat i = 0 ChukLen = ChukLen + i Label3 = Int(ChukLen / FLen * 100) & "%" If Doing Then GoTo Last DoEvents Else ReDim Dat(1023) Put Fnum2, , Dat i = i - 1024 ChukLen = ChukLen + 1024 Label3 = Int(ChukLen / FLen * 100) & "%" If Doing Then GoTo Last DoEvents End If Loop End If Get FNum, Start + Cuts, Abyte i = FLen - Start - Cuts Do While i 》 0 If i 《= 1024 Then ReDim Dat(i - 1) Get FNum, , Dat Put Fnum2, , Dat i = 0 ChukLen = ChukLen + i Label3 = Int(ChukLen / FLen * 100) & "%" If Doing Then GoTo Last DoEvents Else ReDim Dat(1023) Get FNum, , Dat Put Fnum2, , Dat i = i - 1024 ChukLen = ChukLen + 1024 Label3 = Int(ChukLen / FLen * 100) & "%" If Doing Then GoTo Last DoEvents End If Loop Close FNum Close Fnum2 Doing = False Command1.Enabled = True Exit SubLast: Close FNum Close Fnum2 Doing = False Command1.Enabled = True On Error Resume Next Kill NewFileEnd SubPrivate Sub Command2_Click() Command3.Enabled = True Command1.Enabled = False Command2.Enabled = False Doing = TrueEnd SubPrivate Sub Command3_Click() CDL.CancelError = False CDL.ShowOpen If CDL.FileName = "" Then Exit Sub FName = CDL.FileName Command1.Enabled = True Command2.Enabled = True Command3.Enabled = False Doing = FalseEnd SubPrivate Sub Form_Load() Doing = False Command1.Enabled = False Command2.Enabled = False End Sub=================================================
更多文章:
intp型人格(INTP逻辑学家型人格有什么特点这类人与什么性格的人更容易成为朋友)
2024年7月23日 21:51
solve函数matlab(向您请教matlab中solve函数的解方程使用方法)
2024年6月11日 05:03
format factory 高级版(formatfactory 格式工厂是什么软件)
2024年7月19日 16:10
2008r2系统(如何使用u深度u盘安装原版win2008r2服务器系统)
2024年8月12日 03:05
wordpress下载插件(为什么wordpress安装插件和主题都失败)
2024年6月29日 02:17
用c语言100以内所有素数的和(c语言求100以内素数的和)
2024年3月30日 02:30
python怎么写脚本(linux python 脚本怎么写)
2024年7月22日 09:42
target标签怎么用(html中标签的target属性中的_top和_parent有什么用 最好举例说明)
2024年7月9日 13:05
strlen用不了(国三c语言上机 字符串一类的问题为什么有时用strlen函数但有时却不用)
2024年7月24日 05:10
数据库设计入门经典(数据库设计解决方案入门经典的本书读者对象)
2024年7月16日 00:56
python3教程app(python3 uiautomator2 (二) 、操作app)
2024年8月15日 05:45
怎么将多个html代码整合到一起(怎么将多个html页面做成一个文件)
2024年7月9日 09:49
css div不换行(CSS+DIV,窗口缩小后,DIV块会换行,如下例:如何让黄块在窗口缩小后不转行)
2024年8月14日 05:05
正则表达式匹配字符串c(如何使用正则表达式匹配C语言的变量名定义规则)
2024年7月1日 16:28
滑块游戏哪个游戏好玩(和小朋友一起玩华容道游戏,说一说你有什么发现)
2024年7月3日 00:00