广告广告
  加入我的最爱 设为首页 风格修改
首页 首尾
 手机版   订阅   地图  繁体 
您是第 7582 个阅读者
 
发表文章 发表投票 回覆文章
  可列印版   加为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.066978 second(s),query:16 Gzip disabled
本站由 瀛睿律师事务所 担任常年法律顾问 | 免责声明 | 本网站已依台湾网站内容分级规定处理 | 连络我们 | 访客留言