我朋友在軍中
要用到四角號碼
四角號碼如:
一1000
乙1771
丁1020
七4071
乃1722
九4001
了1720
二1010
人8000
入8000
八8000
几7721
刀1722
刁1712
力4002
匕2171
十4000
卜2300
又7740
三1010
享用VB寫出對照的方法
例如我打"一"就會出現"1000"
或者是我打"1000"就會出現"一"
不過四角號碼有一萬三千多字該怎ㄇ處理
2005-11-30 12:23:17 · 5 個解答 · 發問者 小線條 3 in 電腦與網際網路 ➔ 程式設計
p.s有誰願意幫我寫程式ㄋ~因為資料庫我不會用
2005-11-30 17:29:46 · update #1
以下是程式碼 你要做一個COMMAND1 TEXT1.TEXT TEXT2.TEXT
我剛好有四角號碼的對照文字檔
你應該也有四角號碼對照檔吧
那個資料格式用COMMAND1來執行處理
四角號碼檔要和程式放一起
就可轉換成現在程式用的資料格式
這程式已經測試過 沒問題 只是很簡陋而已
你自己改漂亮點就好了
至於13000筆資料的查詢速度
極快 因為四角號碼對照的文字檔才101K
搜尋速度大概才不到1秒吧
我的CPU是 P4 2.0G
以下是程式部份 當然 文字說明部份不要COPY進去
Dim CHARTON(14000, 2) As String
Dim NUM_CONT As Integer
這個Command1_Click()是用來把資料分解成循序檔
兩欄資料 第一個是字元 第二個是四角號碼
第一次用完就沒用了
只是把資料作成雙引號格式
例如 "一","1000"
注意!!!!
一開始只COPY COMMAND1的程式部份 先執行
然後這COMMAND1的程式部份就可以刪掉了
只用一次!!!
之後再把後面的COPY進去 執行就可以了
Private Sub Command1_Click()
FILE_NAME = App.Path & "/FOUR CORN.txt"
Open FILE_NAME For Input As #1
Do While Not EOF(1)
Input #1, aaa
NUM_CONT = NUM_CONT + 1
CHARTON(NUM_CONT, 1) = Mid$(aaa, 1, 1)
CHARTON(NUM_CONT, 2) = Mid$(aaa, 2, 4)
Loop
Close #1
FILE_NAME = App.Path & "/FOUR CORN1.txt"
Open FILE_NAME For Append As #1
For i = 1 To NUM_CONT
Write #1, CHARTON(i, 1),CHARTON(i, 2)
Next i
Close #1
End Sub
這個Form_Load()用來載入新完成的資料檔
並且讀到陣列裡去
記得要先處理完資料再將以下的部份放進去
Private Sub Form_Load()
FILE_NAME = App.Path & "/FOUR CORN1.txt"
Open FILE_NAME For Input As #1
Do While Not EOF(1)
Input #1, aaa, bbb
NUM_CONT = NUM_CONT + 1
CHARTON(NUM_CONT, 1) = aaa
CHARTON(NUM_CONT, 2) = bbb
Loop
Close #1
End Sub
當text1.text輸入文字並且按下ENTER時
就開始做陣列的資料比對
若有找到 就會在text2.text顯示對應的四角號碼
Private Sub Text1_KeyPress(KeyAscii As Integer)
If KeyAscii = 13 Then
charttt = Trim(Text1.Text)
For i = 1 To NUM_CONT
If charttt = CHARTON(i, 1) Then
Text2.Text = CHARTON(i, 2) <--修改過了
Exit For
End if
Next i
End If
End Sub
當text2.text輸入四角號碼並且按下ENTER時
就開始做陣列的資料比對
若有找到 就會在text1.text顯示對應的文字
Private Sub Text2_KeyPress(KeyAscii As Integer)
If KeyAscii = 13 Then
Text1.Text = ""
charNUM = Trim(Text2.Text)
For i = 1 To NUM_CONT
If charNUM = CHARTON(i, 2) Then
Text1.Text = Text1.Text & " " & CHARTON(i, 1)
End If
Next i
End If
End Sub
...恩 這樣有重複的文字應該就可以顯示了
如果再加入這個
Private Sub Text1_Click()
Text1.Text = ""
Text2.Text = ""
End Sub
Private Sub Text2_Click()
Text1.Text = ""
Text2.Text = ""
End Sub
輸入就更方便了
2005-12-01 01:26:30 補充:
如果你沒有四角號碼對照表的檔案
再跟我拿吧
2005-11-30 19:12:42 · answer #1 · answered by ? 5 · 0⤊ 0⤋
(A)先到這裡:http://schoolcatalog.school.net.hk/hktla/misc/four_con.txt下載四角號碼,然後將它另存新檔在跟你專案相同路徑底下,檔名為four_con.txt
(B)專案須引用Microsoft DAO 3.51 Object Library(個人認為DAO執行搜尋的速度比ADO快)
(C)建立1個TextBox跟CommandButton,把Code貼上企,執行時在TextBox輸入單字或四角號碼既可.PS:先聲明我不知道上述網址之資料是否有誤!!
Dim Db As Database
Private Sub Command1_Click()
Dim S As String, Re As Recordset
S = Text1.Text
If Len(S) = 1 Then
S = "[Key]='" & S & "'"
ElseIf Len(S) = 4 And IsNumeric(S) Then
S = "[Num]='" & S & "'"
Else
Exit Sub
End If
Set Re = Db.OpenRecordset("Select * From Data.csv Where " & S)
If Re.RecordCount > 0 Then
Re.MoveFirst: S = ""
Do Until Re.EOF
S = S & Re("Key") & "→" & Re("Num") & vbCrLf
Re.MoveNext
Loop
MsgBox S
End If
Set Re = Nothing
End Sub
Private Sub Form_Load()
Dim S1 As String, Dr As String
Dr = IIf(Right(App.Path, 1) = "\", App.Path, App.Path & "\")
If Dir(Dr & "Data.csv") = "" Then
If Dir(Dr & "four_con.txt") <> "" Then
'建立Data.csv(CSV格式)資料庫
Open Dr & "four_con.txt" For Input As #1
Open Dr & "Data.csv" For Output As #2
Write #2, "Key";: Write #2, "Num"
Do Until EOF(1)
Input #1, S1
If S1 <> "" Then Write #2, Left(S1, 1);: Write #2, Right(S1, 4)
Loop
Close #1
Close #2
Else
MsgBox "找不到" & Dr & "four_con.txt" & "無法執行!!"
End
End If
End If
Set Db = OpenDatabase(Dr, False, False, "TEXT;")
Text1.MaxLength = 4
End Sub
2005-12-01 08:17:15 · answer #2 · answered by W.J.S. 7 · 0⤊ 0⤋
一萬多筆資料,又不想自己寫的話,花點錢解決吧!
2005-11-30 19:45:03 · answer #3 · answered by ? 6 · 0⤊ 0⤋
一萬三千多字......可能就要用到資料庫了,沒辦法寫死在程式裡
利用VB寫出查詢界面,運用SQL指令找出你要的資料,簡單的說,這是一支資料庫程式
2005-11-30 13:10:04 · answer #4 · answered by Anonymous · 0⤊ 0⤋
建DB吧~沒聽過有這種元件可以用
2005-11-30 13:07:41 · answer #5 · answered by 岔題與亂回文程度的能力 4 · 0⤊ 0⤋