廣告廣告
  加入我的最愛 設為首頁 風格修改
首頁 首尾
 手機版   訂閱   地圖  簡體 
您是第 7546 個閱讀者
 
發表文章 發表投票 回覆文章
  可列印版   加為IE收藏   收藏主題   上一主題 | 下一主題   
三仙 會員卡
個人頭像
個人文章 個人相簿 個人日記 個人地圖
頭銜:以馬內利 以馬內利
版主
級別: 版主 該用戶目前不上站
版區: 程式設計
推文 x17 鮮花 x370
分享: 轉寄此文章 Facebook Plurk Twitter 複製連結到剪貼簿 轉換為繁體 轉換為簡體 載入圖片
推文 x0
[.Net][教學] VB.NET 使用 ListBox 存入隨機且不重覆的資料  (FindString 方法)
 請參考ebolaman大的 "其實有另外一種方法更簡單,用類似 ListBox 的變數 (VB6 中叫做 Collection)......"

在下用 2008把它實做一次與大家分享
感覺說明的部份比程式碼還多
[ 此文章被三仙在2010-08-12 21:46 ..

訪客只能看到部份內容,免費 加入會員 或由臉書 Google 可以看到全部內容



[ 此文章被三仙在2010-08-14 03:58重新編輯 ]


挖出答案的難度,取決提問的深度!
獻花 x1 回到頂端 [樓 主] From:台灣中華電信 | Posted:2010-08-12 21:46 |
ebolaman 手機 會員卡
個人文章 個人相簿 個人日記 個人地圖
特殊貢獻獎

級別: 副版主 該用戶目前不上站
版區: 程式設計
推文 x38 鮮花 x458
分享: 轉寄此文章 Facebook Plurk Twitter 複製連結到剪貼簿 轉換為繁體 轉換為簡體 載入圖片

哦哦,差不多就是這種意思~表情  
這樣從資料數 0 到全部加滿,速度會從快到慢
我也來貼一下我的寫法~(不過我的是 VB6 ...),這樣就顛倒過來是從慢到快
不知哪種速度比較快呢?




譬如 25 RndSeedS 是 "/1/2/3/4/5......./25/"
第一個亂數位置(RndN) 譬如 4 就用 UserInstr 找到第 4 個 斜線的位置,結果取出來就是 "4"
第二個亂數位置譬如 5 但是取出來就是 6 了因為 RndSeedS 經過上一次取出已經變成  "/1/2/3/5/6/7..../25/"  (4 不見了)

最後 RndSeedS 就剩下例如  "/19/" 亂數位置肯定是 1 就取到 19
這時 RndSeedS 就變成 "/" 取光光了~


底下需要 3 個元件:
TextBox  名稱 TB1
ListBox 名稱 LB1
CommandButton 名稱 CMD_Proc


複製程式
Option Explicit

Dim RndSeedS As String

Private Sub CMD_Proc_Click()

Dim RndN As Long, Ct As Long, i As Long, k1 As Long, k2 As Long
Dim tempS As String

Dim LastTimer As Double

LastTimer = Timer

'------- Ini. Var. & Obj. -------
Ct = Val(TB1.Text)
 If Ct <= 0 Then Exit Sub

LB1.Clear

'------- Ini. Randomized Seed --------
RndSeedS = "/"
For i = 1 To Ct
  RndSeedS = RndSeedS & i & "/"
Next i

'------ Start Proc. > Select Rnd Num In RndSeedS Then Delete -------

Do
  RndN = Fix((Ct) * Rnd + 1) 'Find Pos. of Slash
  k1 = UserInstr(RndN) '/x/  < 1st slash
  k2 = InStr(k1 + 1, RndSeedS, "/") '/x/   < 2nd slash
  
    tempS = Mid(RndSeedS, k1 + 1, k2 - k1 - 1)
    RndSeedS = Left(RndSeedS, k1) & Right(RndSeedS, Len(RndSeedS) - k2)
    
      LB1.AddItem tempS
  
  Ct = Ct - 1
Loop While Ct <> 0

'-------- Show The Time ------
LastTimer = Timer - LastTimer
'Label_C(1).Caption = "Time : " & Format(LastTimer, "0.0000") & " s"


End Sub

Public Function UserInstr(ByVal Ti As Long) As Long 'Find String (Instr) In RndSeedS Continuously

Dim m As Long

m = 0
Do
  
  Ti = Ti - 1
  
  m = InStr(m + 1, RndSeedS, "/")
  If m = 0 Then UserInstr = Len(RndSeedS): Exit Function
  If Ti = 0 Then UserInstr = m: Exit Function
Loop

End Function





我也來附上我的小程式,也來玩玩看吧,我做了一個 Scan 功能(好像有點無聊..):


本帖包含附件
zip Rnd Practice.rar   (2022-06-09 14:16 / 13 KB)   下載次數:14


[ 此文章被ebolaman在2010-08-14 10:56重新編輯 ]

此文章被評分,最近評分記錄
財富:50 (by 三仙) | 理由: ^^ 因為您的參與,讓程式設計更容易!!


My BOINC stats :

獻花 x2 回到頂端 [1 樓] From:台灣台灣寬頻 | Posted:2010-08-13 16:13 |
三仙 會員卡
個人頭像
個人文章 個人相簿 個人日記 個人地圖
頭銜:以馬內利 以馬內利
版主
級別: 版主 該用戶目前不上站
版區: 程式設計
推文 x17 鮮花 x370
分享: 轉寄此文章 Facebook Plurk Twitter 複製連結到剪貼簿 轉換為繁體 轉換為簡體 載入圖片

下面是引用 ebolaman 於 2010-08-13 16:13 發表的 : 到引言文
我做了一個 Scan 功能(好像有點無聊..)
.......


這個不錯表情
寫程式就是這樣好玩
想什麼就寫什麼


挖出答案的難度,取決提問的深度!
獻花 x0 回到頂端 [2 樓] From:台灣中華電信 | Posted:2010-08-14 18:59 |

首頁  發表文章 發表投票 回覆文章
Powered by PHPWind v1.3.6
Copyright © 2003-04 PHPWind
Processed in 0.097156 second(s),query:16 Gzip disabled
本站由 瀛睿律師事務所 擔任常年法律顧問 | 免責聲明 | 本網站已依台灣網站內容分級規定處理 | 連絡我們 | 訪客留言