史萊姆論壇

返回   史萊姆論壇 > 專業主討論區 > 程式語言討論區
忘記密碼?
論壇說明

歡迎您來到『史萊姆論壇』 ^___^

您目前正以訪客的身份瀏覽本論壇,訪客所擁有的權限將受到限制,您可以瀏覽本論壇大部份的版區與文章,但您將無法參與任何討論或是使用私人訊息與其他會員交流。若您希望擁有完整的使用權限,請註冊成為我們的一份子,註冊的程序十分簡單、快速,而且最重要的是--註冊是完全免費的!

請點擊這裡:『註冊成為我們的一份子!』

Google 提供的廣告


發文 回覆
 
主題工具 顯示模式
舊 2009-05-19, 10:40 PM   #1 (permalink)
註冊會員
榮譽勳章
UID - 311122
在線等級: 級別:3 | 在線時長:30小時 | 升級還需:2小時級別:3 | 在線時長:30小時 | 升級還需:2小時級別:3 | 在線時長:30小時 | 升級還需:2小時
註冊日期: 2008-10-06
文章: 65
精華: 0
現金: 124 金幣
資產: 144 金幣
預設

沒人知道怎改嗎?
kppne0931 目前離線  
送花文章: 77, 收花文章: 61 篇, 收花: 117 次
回覆時引用此帖
有 2 位會員向 kppne0931 送花:
Living (2009-05-21),magicwoo (2009-05-20)
感謝您發表一篇好文章
舊 2009-05-20, 02:40 PM   #2 (permalink)
管理版主
 
mini 的頭像
榮譽勳章
UID - 4144
在線等級: 級別:98 | 在線時長:10179小時 | 升級還需:18小時級別:98 | 在線時長:10179小時 | 升級還需:18小時級別:98 | 在線時長:10179小時 | 升級還需:18小時級別:98 | 在線時長:10179小時 | 升級還需:18小時級別:98 | 在線時長:10179小時 | 升級還需:18小時級別:98 | 在線時長:10179小時 | 升級還需:18小時級別:98 | 在線時長:10179小時 | 升級還需:18小時級別:98 | 在線時長:10179小時 | 升級還需:18小時
註冊日期: 2002-12-07
文章: 13502
精華: 0
現金: 26871 金幣
資產: 3024801 金幣
預設

第一題

PHP 語法:
Private Sub Command1_Click()
Dim sRnd As String
Dim iupperbound 
As Integer
Dim ilowerbound 
As Integer
Dim i 
As IntegerAs Integer

    lowerbound 
Asc("0"'48
    '
upperbound Asc("9"'57
    
    '
lowerbound Asc("A"'65
    upperbound = Asc("Z") '
90
    
    
For 1 To 20
        
Do
            
Int((upperbound lowerbound 1) * Rnd lowerbound)
        
Loop While 57 And 65
        sRnd 
sRnd Chr(j)
    
Next
    Me
.Caption sRnd    

End Sub 
如果你裝 VB時能把
MSDN Library Visual Studio 也安裝上去
會對你有很大的幫助

至於解說請自己按 F8步進了解
重點在
Int((upperbound - lowerbound + 1) * Rnd + lowerbound)
這個公式
及範圍須落在 >=48 及 <=90
但不可 >57 及 <65


至於第二題
可以用 Frame 的 .Enabled 這個屬性做切換
Frame1.Enabled = False 時就會不可使用(包括放在Frame1上的物件)
Frame1.Enabled = True 則相反

此帖於 2009-05-20 03:09 PM 被 mini 編輯.
mini 目前線上  
送花文章: 2055, 收花文章: 8074 篇, 收花: 26928 次
回覆時引用此帖
有 2 位會員向 mini 送花:
kppne0931 (2009-05-20),Living (2009-05-21)
感謝您發表一篇好文章
舊 2009-05-20, 06:27 PM   #3 (permalink)
註冊會員
榮譽勳章
UID - 311122
在線等級: 級別:3 | 在線時長:30小時 | 升級還需:2小時級別:3 | 在線時長:30小時 | 升級還需:2小時級別:3 | 在線時長:30小時 | 升級還需:2小時
註冊日期: 2008-10-06
文章: 65
精華: 0
現金: 124 金幣
資產: 144 金幣
預設

引用:
作者: mini 查看文章
第一題

PHP 語法:
Private Sub Command1_Click()
Dim sRnd As String
Dim iupperbound 
As Integer
Dim ilowerbound 
As Integer
Dim i 
As IntegerAs Integer

    lowerbound 
Asc("0"'48
    '
upperbound Asc("9"'57
    
    '
lowerbound Asc("A"'65
    upperbound = Asc("Z") '
90
    
    
For 1 To 20
        
Do
            
Int((upperbound lowerbound 1) * Rnd lowerbound)
        
Loop While 57 And 65
        sRnd 
sRnd Chr(j)
    
Next
    Me
.Caption sRnd    

End Sub 
如果你裝 VB時能把
MSDN Library Visual Studio 也安裝上去
會對你有很大的幫助

至於解說請自己按 F8步進了解
重點在
Int((upperbound - lowerbound + 1) * Rnd + lowerbound)
這個公式
及範圍須落在 >=48 及 <=90
但不可 >57 及 <65


至於第二題
可以用 Frame 的 .Enabled 這個屬性做切換
Frame1.Enabled = False 時就會不可使用(包括放在Frame1上的物件)
Frame1.Enabled = True 則相反
我朋友說LEN可以用 但是我不知道啥事LEN 有人可以交我一下嗎?

還有我用了大大提供的程式碼 發現...還是沒有20位....
kppne0931 目前離線  
送花文章: 77, 收花文章: 61 篇, 收花: 117 次
回覆時引用此帖
向 kppne0931 送花的會員:
Living (2009-05-21)
感謝您發表一篇好文章
舊 2009-05-20, 08:53 PM   #4 (permalink)
長老會員
 
cwvdavid 的頭像
榮譽勳章
UID - 476
在線等級: 級別:46 | 在線時長:2395小時 | 升級還需:2小時級別:46 | 在線時長:2395小時 | 升級還需:2小時級別:46 | 在線時長:2395小時 | 升級還需:2小時級別:46 | 在線時長:2395小時 | 升級還需:2小時級別:46 | 在線時長:2395小時 | 升級還需:2小時級別:46 | 在線時長:2395小時 | 升級還需:2小時
註冊日期: 2002-12-06
住址: 天與地的夾縫
文章: 3106
精華: 0
現金: 5256 金幣
資產: 2034465 金幣
預設

NewPassword(20) 可以得到 20個英文數字 + "20"
NewPassword(13) 可以得到 13個英文數字 + "13"

把倒數第2行的
NewPassword = NewPassword & len(NewPassword)
拿掉...

就ok了...

=======================

len是顯示文字長度的...

Len("AABB") 就是 4
Len("Kppne0931") 就是 9
__________________
姜太公釣魚~ 願者上鉤
cwvdavid 目前離線  
送花文章: 4036, 收花文章: 2466 篇, 收花: 10141 次
回覆時引用此帖
有 2 位會員向 cwvdavid 送花:
kppne0931 (2009-05-20),Living (2009-05-21)
感謝您發表一篇好文章
舊 2009-05-20, 10:35 PM   #5 (permalink)
註冊會員
榮譽勳章
UID - 311122
在線等級: 級別:3 | 在線時長:30小時 | 升級還需:2小時級別:3 | 在線時長:30小時 | 升級還需:2小時級別:3 | 在線時長:30小時 | 升級還需:2小時
註冊日期: 2008-10-06
文章: 65
精華: 0
現金: 124 金幣
資產: 144 金幣
預設

引用:
作者: cwvdavid 查看文章
NewPassword(20) 可以得到 20個英文數字 + "20"
NewPassword(13) 可以得到 13個英文數字 + "13"

把倒數第2行的
NewPassword = NewPassword & len(NewPassword)
拿掉...

就ok了...

=======================

len是顯示文字長度的...

Len("AABB") 就是 4
Len("Kppne0931") 就是 9
我是要設定在Command上 按下去之後Text就顯示20位隨機英數組成的字串 但是....好像無法設定上去.....

還有mini大大提供的程式碼 用上去....還是沒有每次都20位 為啥會這樣...
kppne0931 目前離線  
送花文章: 77, 收花文章: 61 篇, 收花: 117 次
回覆時引用此帖
向 kppne0931 送花的會員:
Living (2009-05-21)
感謝您發表一篇好文章
舊 2009-05-20, 10:53 PM   #6 (permalink)
長老會員
 
cwvdavid 的頭像
榮譽勳章
UID - 476
在線等級: 級別:46 | 在線時長:2395小時 | 升級還需:2小時級別:46 | 在線時長:2395小時 | 升級還需:2小時級別:46 | 在線時長:2395小時 | 升級還需:2小時級別:46 | 在線時長:2395小時 | 升級還需:2小時級別:46 | 在線時長:2395小時 | 升級還需:2小時級別:46 | 在線時長:2395小時 | 升級還需:2小時
註冊日期: 2002-12-06
住址: 天與地的夾縫
文章: 3106
精華: 0
現金: 5256 金幣
資產: 2034465 金幣
預設

有這麼的難嗎???

'放一個函數在程式碼內...
Function NewPassword(intLen)
Dim tmpSTR
Dim i
Dim tmp
Randomize
For i = 1 To intLen
tmp = Int(Rnd * (122 - 49) + 49)
if (tmp>=58 and tmp<=64) or (tmp>=91 and tmp<=96) then
i=i-1
Else
tmpSTR = Chr(tmp)
NewPassword = NewPassword & tmpSTR
End if
Next
End Function

'在Command1的Click裡面寫...
Private Sub Command1_Click()
Text3.Text = NewPassword(20)
End Sub


這樣跑不出結果嗎??
cwvdavid 目前離線  
送花文章: 4036, 收花文章: 2466 篇, 收花: 10141 次
回覆時引用此帖
有 2 位會員向 cwvdavid 送花:
kppne0931 (2009-05-21),Living (2009-05-21)
感謝您發表一篇好文章
舊 2009-05-21, 06:20 AM   #7 (permalink)
註冊會員
榮譽勳章
UID - 311122
在線等級: 級別:3 | 在線時長:30小時 | 升級還需:2小時級別:3 | 在線時長:30小時 | 升級還需:2小時級別:3 | 在線時長:30小時 | 升級還需:2小時
註冊日期: 2008-10-06
文章: 65
精華: 0
現金: 124 金幣
資產: 144 金幣
預設

引用:
作者: cwvdavid 查看文章
有這麼的難嗎???

'放一個函數在程式碼內...
Function NewPassword(intLen)
Dim tmpSTR
Dim i
Dim tmp
Randomize
For i = 1 To intLen
tmp = Int(Rnd * (122 - 49) + 49)
if (tmp>=58 and tmp<=64) or (tmp>=91 and tmp<=96) then
i=i-1
Else
tmpSTR = Chr(tmp)
NewPassword = NewPassword & tmpSTR
End if
Next
End Function

'在Command1的Click裡面寫...
Private Sub Command1_Click()
Text3.Text = NewPassword(20)
End Sub


這樣跑不出結果嗎??
快好了 剩最後問題. ..友些會有些便成英文小寫顯示 不能全部改大寫嗎?
kppne0931 目前離線  
送花文章: 77, 收花文章: 61 篇, 收花: 117 次
回覆時引用此帖
向 kppne0931 送花的會員:
Living (2009-05-21)
感謝您發表一篇好文章
舊 2009-05-21, 02:01 PM   #8 (permalink)
管理版主
 
mini 的頭像
榮譽勳章
UID - 4144
在線等級: 級別:98 | 在線時長:10179小時 | 升級還需:18小時級別:98 | 在線時長:10179小時 | 升級還需:18小時級別:98 | 在線時長:10179小時 | 升級還需:18小時級別:98 | 在線時長:10179小時 | 升級還需:18小時級別:98 | 在線時長:10179小時 | 升級還需:18小時級別:98 | 在線時長:10179小時 | 升級還需:18小時級別:98 | 在線時長:10179小時 | 升級還需:18小時級別:98 | 在線時長:10179小時 | 升級還需:18小時
註冊日期: 2002-12-07
文章: 13502
精華: 0
現金: 26871 金幣
資產: 3024801 金幣
預設

引用:
作者: kppne0931 查看文章
我朋友說LEN可以用 但是我不知道啥事LEN 有人可以交我一下嗎?

還有我用了大大提供的程式碼 發現...還是沒有20位....

有啊~

您不會是一個個數的吧
只要加個 Label1
再在程式碼最後加上
Label1.Caption = Len(sRnd)

每次運行 Label1都是 顯示20 啊
mini 目前線上  
送花文章: 2055, 收花文章: 8074 篇, 收花: 26928 次
回覆時引用此帖
有 2 位會員向 mini 送花:
kppne0931 (2009-05-21),Living (2009-05-21)
感謝您發表一篇好文章
舊 2009-05-21, 07:01 PM   #9 (permalink)
註冊會員
榮譽勳章
UID - 311122
在線等級: 級別:3 | 在線時長:30小時 | 升級還需:2小時級別:3 | 在線時長:30小時 | 升級還需:2小時級別:3 | 在線時長:30小時 | 升級還需:2小時
註冊日期: 2008-10-06
文章: 65
精華: 0
現金: 124 金幣
資產: 144 金幣
預設

引用:
作者: mini 查看文章

有啊~

您不會是一個個數的吧
只要加個 Label1
再在程式碼最後加上
Label1.Caption = Len(sRnd)

每次運行 Label1都是 顯示20 啊

我想....大大可能誤會我的意思了...我要的是 按下Command 然後再Text3產生"20個英數組成的字串" 而不是顯示"20"這個數字....
kppne0931 目前離線  
送花文章: 77, 收花文章: 61 篇, 收花: 117 次
回覆時引用此帖
向 kppne0931 送花的會員:
Living (2009-05-21)
感謝您發表一篇好文章
舊 2009-05-21, 07:42 PM   #10 (permalink)
管理版主
 
mini 的頭像
榮譽勳章
UID - 4144
在線等級: 級別:98 | 在線時長:10179小時 | 升級還需:18小時級別:98 | 在線時長:10179小時 | 升級還需:18小時級別:98 | 在線時長:10179小時 | 升級還需:18小時級別:98 | 在線時長:10179小時 | 升級還需:18小時級別:98 | 在線時長:10179小時 | 升級還需:18小時級別:98 | 在線時長:10179小時 | 升級還需:18小時級別:98 | 在線時長:10179小時 | 升級還需:18小時級別:98 | 在線時長:10179小時 | 升級還需:18小時
註冊日期: 2002-12-07
文章: 13502
精華: 0
現金: 26871 金幣
資產: 3024801 金幣
預設

引用:
作者: kppne0931 查看文章
我想....大大可能誤會我的意思了...我要的是 按下Command 然後再Text3產生"20個英數組成的字串" 而不是顯示"20"這個數字....
您也誤會了
Label1.Caption = Len(sRnd)
是為了證明 sRnd這個字串是 "20個英數" 所組成
※Len 是得到 "字串長度" 的VB保留字

如果要顯示在Text3上:
me.caption 是視窗標題
只要改成 Text3.text 就可以了

================
為了釐清目的,問一下
試著運行一次得到以下字串
NFHQ0PSN1AUQYU2XFP2I
以上字串不就是 "20個英數組成的字串" 嗎?
(還是你另有所指...?)

此帖於 2009-05-21 08:02 PM 被 mini 編輯.
mini 目前線上  
送花文章: 2055, 收花文章: 8074 篇, 收花: 26928 次
回覆時引用此帖
有 2 位會員向 mini 送花:
kppne0931 (2009-05-21),Living (2009-05-21)
感謝您發表一篇好文章
舊 2009-05-21, 09:58 PM   #11 (permalink)
超級版主
 
Living 的頭像
榮譽勳章
UID - 1966
在線等級: 級別:60 | 在線時長:3888小時 | 升級還需:77小時級別:60 | 在線時長:3888小時 | 升級還需:77小時級別:60 | 在線時長:3888小時 | 升級還需:77小時級別:60 | 在線時長:3888小時 | 升級還需:77小時級別:60 | 在線時長:3888小時 | 升級還需:77小時
註冊日期: 2002-12-06
住址: 糖城
文章: 9601
現金: 18 金幣
資產: 11727852 金幣
預設

Len()指令是return一個字串中有多少位字母

Mini大做出來的Label是幫助你去"認證"亂數變出來的字串是不是長度為20個字元
不用Len()去直接顯示出長度, 你要每次一個一個下去算也是可以
只是比較浪費時間

我們以前在寫程式時
會習慣到處加一兩行CODE去顯示一些重要的參數或數據
就像Mini教你的Len()就是一樣的道理
這一行指令對你本身的PROJECT沒有幫助
但可以方便寫程式或測試程式的人很快得知一些重要的數據

這些另外加上去的CODE通常最後會拿掉, 不會讓使用者看到或用到
__________________
經驗分享是學習的一種
請多珍惜這片學習的園地

史版啞甘部主任
Living 目前離線  
送花文章: 52690, 收花文章: 8441 篇, 收花: 61930 次
回覆時引用此帖
向 Living 送花的會員:
kppne0931 (2009-05-21)
感謝您發表一篇好文章
舊 2009-05-21, 10:01 PM   #12 (permalink)
註冊會員
榮譽勳章
UID - 311122
在線等級: 級別:3 | 在線時長:30小時 | 升級還需:2小時級別:3 | 在線時長:30小時 | 升級還需:2小時級別:3 | 在線時長:30小時 | 升級還需:2小時
註冊日期: 2008-10-06
文章: 65
精華: 0
現金: 124 金幣
資產: 144 金幣
預設

引用:
作者: mini 查看文章
您也誤會了
Label1.Caption = Len(sRnd)
是為了證明 sRnd這個字串是 "20個英數" 所組成
※Len 是得到 "字串長度" 的VB保留字

如果要顯示在Text3上:
me.caption 是視窗標題
只要改成 Text3.text 就可以了

================
為了釐清目的,問一下
試著運行一次得到以下字串
NFHQ0PSN1AUQYU2XFP2I
以上字串不就是 "20個英數組成的字串" 嗎?
(還是你另有所指...?)

感謝大大的指引....現在剩下如何輸入密碼正確時Frame才可以使用((請參照問題2)) 這部分我完全不懂 希望大大可以指引我....
kppne0931 目前離線  
送花文章: 77, 收花文章: 61 篇, 收花: 117 次
回覆時引用此帖
向 kppne0931 送花的會員:
Living (2009-05-21)
感謝您發表一篇好文章
舊 2009-05-20, 03:50 PM   #13 (permalink)
長老會員
 
cwvdavid 的頭像
榮譽勳章
UID - 476
在線等級: 級別:46 | 在線時長:2395小時 | 升級還需:2小時級別:46 | 在線時長:2395小時 | 升級還需:2小時級別:46 | 在線時長:2395小時 | 升級還需:2小時級別:46 | 在線時長:2395小時 | 升級還需:2小時級別:46 | 在線時長:2395小時 | 升級還需:2小時級別:46 | 在線時長:2395小時 | 升級還需:2小時
註冊日期: 2002-12-06
住址: 天與地的夾縫
文章: 3106
精華: 0
現金: 5256 金幣
資產: 2034465 金幣
預設

之所以沒有出現20位數...
是因為你在網路找上的範例有問題...


Rnd 本身所取得的數為 0 ~ 1之間的數值...
例如:
0.1098735
0.2729468
0.6736467

而當你把Rnd所取得的值, 乘上100000000 (1億)時,
則取得的亂數, 會是
10987353.3215734
27294681.6312982
67364675.1947425

利用Round 取整數後, 得到的值是
10987353
27294681
67364675

再利用HEX把上面的數值轉成 16進位之後,
就有可能因為數值太小, 而會發生少一位數的情況

例如:
15 對應16進位是 F (2位數 vs 1位數)
16 對應16進位是 10 (2位數 vs 2位數)
255 對應16進位是 FF (3位數 vs 2位數)
256 對應16進位是 100 (3位數 vs 3位數)

而實際取值所得到的結果...
10987353 對應16進位是 A7A759 (8位數 vs 6位數)
27294681 對應16進位是 1A07BD9 (8位數 vs 7位數)
67364675 對應16進位是 403E743 (8位數 vs 7位數)

以上例子 加起來剛好20位數,
但實際在跑亂數時,你將會遇到3個都是7位數,或3個都是6位數,
造成你跑完的結果,介於18個~21個英文數字(不可能一直都是20個英文數字的)
=============================
更慘的是,利用HEX來取英文數字, 只能取得A,B,C,D,E,F 5種英文字而已


真的是看了就不知道要怎麼改呀...............
上網找別的例子還比較快...


http://zhidao.baidu.com/question/92992772.html
這是別人寫的, 參考看看吧...
cwvdavid 目前離線  
送花文章: 4036, 收花文章: 2466 篇, 收花: 10141 次
回覆時引用此帖
有 3 位會員向 cwvdavid 送花:
kppne0931 (2009-05-20),Living (2009-05-21),sob790717b (2009-05-23)
感謝您發表一篇好文章
發文 回覆



發表規則
不可以發文
不可以回覆主題
不可以上傳附加檔案
不可以編輯您的文章

論壇啟用 BB 語法
論壇啟用 表情符號
論壇啟用 [IMG] 語法
論壇禁用 HTML 語法
Trackbacks are 禁用
Pingbacks are 禁用
Refbacks are 禁用

相似的主題
主題 主題作者 討論區 回覆 最後發表
程式 - vb6 字串轉換成網頁的字串+asp 飛行船大大 程式語言討論區 6 2009-01-27 06:12 AM
尋找VB6.0中文版 電腦狂 一般電腦疑難討論區 3 2003-10-25 01:21 PM
找尋vb6.0的程式語言軟體... supercoala 一般電腦疑難討論區 1 2003-09-21 09:08 PM
哪裡有vb6.0中文版可以下載? newangel 一般電腦疑難討論區 0 2003-08-31 02:02 PM
有關VB6.0轉變點陣圖? sammi2419 一般電腦疑難討論區 0 2003-08-27 12:53 AM


所有時間均為台北時間。現在的時間是 09:29 AM


Powered by vBulletin® 版本 3.6.8
版權所有 ©2000 - 2025, Jelsoft Enterprises Ltd.


SEO by vBSEO 3.6.1