新聞中心
vb.net求幫助 要用redim語句
寫的比較粗糙,參考一下吧
成都創(chuàng)新互聯(lián)公司2013年至今,是專業(yè)互聯(lián)網(wǎng)技術(shù)服務(wù)公司,擁有項(xiàng)目做網(wǎng)站、網(wǎng)站制作網(wǎng)站策劃,項(xiàng)目實(shí)施與項(xiàng)目整合能力。我們以讓每一個(gè)夢(mèng)想脫穎而出為使命,1280元宜豐做網(wǎng)站,已為上家服務(wù),為宜豐各地企業(yè)和個(gè)人服務(wù),聯(lián)系電話:18982081108
Sub Main()
Dim numArr() As Double
Dim count As Integer = 1
Dim num As Double
Dim sumNum As Double = 0
Dim aveNum As Double
Dim flag As Integer = 0
While (True)
Console.Write("請(qǐng)輸入第{0}個(gè)數(shù):", count)
ReDim Preserve numArr(count - 1)
num = Convert.ToDouble(Console.ReadLine())
If num = 0 Then
Exit While
End If
numArr(count - 1) = num
count += 1
End While
If count 1 Then
Dim cha As Double
Dim minCha As Double = Double.MaxValue
For i As Integer = 0 To count - 1
sumNum += numArr(i)
Next
aveNum = sumNum / (count - 1)
For i As Integer = 0 To count - 1
cha = Math.Abs(aveNum - numArr(i))
If minCha = cha Then
minCha = cha
flag = i + 1
End If
Next
End If
Console.WriteLine("總共輸入{0}個(gè)正數(shù),平均值為{1}", count - 1, aveNum)
Console.WriteLine("最接近平均值的是第{0}個(gè)正數(shù),值為{1}", flag, numArr(flag - 1))
Console.ReadKey()
End Sub
在VB.NET中,使用Redim語句重新定義一個(gè)數(shù)組是,需要注意什么問題
1. 前提一定要聲明一個(gè)數(shù)組,不需要賦值或者標(biāo)明維數(shù),例如dim a() as integer
2. 如果使用redim重新定義一個(gè)數(shù)組,數(shù)組里數(shù)據(jù)全部被初始化,要保留原有數(shù)據(jù)加上preserve
3 redim只能修改數(shù)據(jù)最后的維數(shù),不能改變數(shù)組類型
4 redim 不能夠全局聲明
如何通過netlink發(fā)送數(shù)據(jù)?
不知道你的winsock?是udp還是tcpip協(xié)議
這里給你一個(gè)我寫的實(shí)例?我是用的udp?這個(gè)發(fā)送了一段數(shù)據(jù)不一定接收就正確?所以我做了校驗(yàn)
'以下是發(fā)送文件的
Option?Explicit
Dim?GetFileNum?As?Integer,?LenFile?As?Long,?SendByte()?As?Byte?'發(fā)送的包
Private?Sub?Command1_Click()
On?Error?Resume?Next
Command1.Enabled?=?False
GetFileNum?=?FreeFile?'取得未使用的文件號(hào)
LenFile?=?FileLen(Text1.Text)?'獲得需傳送的文件的長(zhǎng)度
If?Text2.Text?=?""?Or?Right(Left(Text2.Text,?2),?1)??":"?Then?Text2.Text?=?Text1.Text
Winsock0.SendData?"#SEND?STA#"??LenFile??"http://"??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?'服務(wù)器ip
Winsock0.RemotePort?=?FilePort
End?Sub
Private?Function?SplitFile()?As?Long?'拆包'為了清晰,下面分別用兩個(gè)子過程來完成計(jì)算這次還可以傳多少個(gè)字節(jié)的數(shù)據(jù)和傳送數(shù)據(jù)
On?Error?Resume?Next
Dim?GetCount?As?Long
If?LenFile?=?4000?Then?'計(jì)算出這次可發(fā)送的字節(jié)數(shù)
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?'把長(zhǎng)度負(fù)值給包頭
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"?'成功繼續(xù)發(fā)送
If?LenFile?=?0?Then?'發(fā)送完成
? 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?=?"文件上傳完成:["??Left((FileLen(Text1.Text)?-?LenFile)?/?FileLen(Text1.Text)?*?100,?4)??"%]"
End?If
Call?TCPSendFile(Winsock0,?GetFileNum,?SplitFile)
Case?"#END#"
TEnd.Enabled?=?False
FMain.TiF.Enabled?=?True
Case?"no"?'不成功重發(fā)上一個(gè)包
Winsock0.SendData?SendByte
End?Select
End?Sub
'以下是接收文件的
Option?Explicit
Dim?FOK?As?Boolean,?Fs?As?Long,?FileNumber?As?Integer,?LenFile?As?Long? '文件的長(zhǎng)度
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("文件已經(jīng)存在,覆蓋嗎?",?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?=?"請(qǐng)重選下載用戶[“組”不能正確下載]"
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?'接收類型為:字節(jié)數(shù)組
J?=?UBound(FileByte)?'獲得包長(zhǎng)
For?I?=?0?To?7?Step?2?'合并包頭
Temp?=?Temp??Chr(FileByte(I))
Next
For?I?=?0?To?9?'文件發(fā)送結(jié)束標(biāo)記
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?=?"下載完成!["??Text2.Text??"]"
? FMain.TIn.Text?=?FMain.TIn.Text??"["??Now??"]"??"下載完成!("??Fs??"="??LenFile??")"??vbCrLf
? Command2.Enabled?=?True
End?If
Else
If?Val(Temp)?=?J?Then?'比較長(zhǎng)度看丟包沒有
? 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"?'發(fā)送繼續(xù)發(fā)送的請(qǐng)求
? Me.Caption?=?"文件下載完成:["??Left(Fs?/?LenFile?*?100,?4)??"%]"
Else
? If?Left(A,?10)?=?"#SEND?STA#"?Then
? ? ? A?=?""
? ? ? For?I?=?10?To?UBound(FileByte)?'文件發(fā)送結(jié)束標(biāo)記
? ? ? ? ? A?=?A??Chr(FileByte(I))
? ? ? Next
? ? ? LenFile?=?Val(Left(A,?InStr(A,?"http://")?-?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)??"http://"??Text2.Text
? ? ? FileNumber?=?FreeFile?'取得未使用的文件號(hào)
? ? ? Fs?=?0
? ? ? Open?Text2.Text?For?Binary?As?#FileNumber?'打開文件
? Else
? ? ? If?A??"#SEND?END#"?Then
? ? ? ? ? Winsock0.SendData?"no"?'出現(xiàn)丟包,請(qǐng)求重發(fā)
? ? ? Else
? ? ? ? ? Winsock0.SendData?"#END#"?'發(fā)送繼續(xù)發(fā)送的請(qǐng)求
? ? ? ? ? Close?#FileNumber
? ? ? ? ? Reset
? ? ? ? ? If?FOK?=?False?Then
? ? ? ? ? ? ? FOK?=?True
? ? ? ? ? ? ? Me.Caption?=?"下載完成!["??Text2.Text??"]"
? ? ? ? ? ? ? FMain.TIn.Text?=?FMain.TIn.Text??"["??Now??"]"??"下載完成!("??Fs??"="??LenFile??")"??vbCrLf
? ? ? ? ? ? ? Command2.Enabled?=?True
? ? ? ? ? Else
? ? ? ? ? ? ? FOK?=?False
? ? ? ? ? End?If
? ? ? End?If
? End?If
End?If
End?If
End?Sub
VB.NET ReDim
滿意答案是什么大的?。這個(gè)哪有錯(cuò)?。。。
Dim array() As Integer = {1, 2, 3, 4, 5, 6} 這個(gè)表示定義一個(gè)數(shù)組。。并賦值。。
redim 重新定義了,這個(gè)時(shí)候8個(gè)值都是為0了。
所以,array(3)為0.
網(wǎng)頁題目:關(guān)于redimvb.net的信息
網(wǎng)站地址:http://fisionsoft.com.cn/article/heceoj.html