PDA

View Full Version : [Q] giúp em với, huhuhu



dullard
20-03-2003, 18:18
Dim i As Integer
Dim j As Integer
Dim xet As String
Dim dem As Long
Dim gtri As Long

Private Sub Command1_Click()
dem = 0
i = 1
j = 1
gtri = Len(Text1) + Len(Text2)
For i = 1 To Len(Text1)
For j = 1 To Len(Text2)
If Right(Text1, i) = Right(Text2, j) Then
dem = dem + 1
End If
j = j + 1
Next j
Next i

gtri = gtri - dem

Select Case gtri:
Case 1: Text3 = "Forget"
Case 2: Text3 = "Perfect"
Case 3: Text3 = "Hate"
Case 4: Text3 = "Perfect"
Case 5: Text3 = "best friend"
Case 6: Text3 = "best friend"
Case 7: Text3 = "poor"
Case 8: Text3 = "wedding"
Case 9: Text3 = "intense"
Case 10: Text3 = "friend"
Case 11: Text3 = "intense"
Case 12: Text3 = "forget"
Case 13: Text3 = "perfect"
Case 14: Text3 = "intense"
Case 15: Text3 = "miserable"
Case 16: Text3 = "intense"
Case 17: Text3 = "poor"
Case 18: Text3 = "perfect"
Case 19: Text3 = "love"
Case 20: Text3 = "wedding"
End Select



End Sub
*************
đoạn code đó sao nó không chạy kìa? coi giùm em coi nó sai chỗ nào rồi, huhuhu

xbacala
20-03-2003, 18:29
Cái đoạn này anh thấy đâu có lỗi gì đâu !
Nếu không ra kết quả theo anh thấy là do chỗ Select Case gtri. Nếu biến gtri lớn hơn 20 thì rõ ràng không có kết quả gì hết !

dullard
20-03-2003, 19:04
quả là thế thật, nhưng mà em đã để gtri=gtri - dem rồi mà, có phải là do hàm For không làm việc không? khi em sửa lỗi thì thấy i=1, j=1, không tăng, không biết làm sao hơn hết

mel
20-03-2003, 20:16
Đoạn chương trình trên chạy đúng mới là ... lạ(tất nhiên là không phải lúc nào cũng sai). Có nguyên nhân sau:
1. Không thể chắc chắn là biến gtri lúc nào cũng <= 20, vì có thể 2 chuỗi nhập vào có thể khác nhau hoàn toàn, ví dụ: Text1.text="123456788012345678" và text2.text="fvsdfgjscbdm,fwefgsdjkfgdsyfs", lúc này biến đếm sẽ bằng .... zero. Khắc phục bằng cách thêm trường hợp case else nữa là xong.
2. Hàm Right không thể phát huy tác dụng. Ví dụ: với các giá trị trong 2 ô text box trên thì với i=1, j=1 thì Right(Text1,i)="8" và Right(text2,j)="s", cái này không bằng nhau-> đếm vẫn không tăng, sau đó j tăng lên bằng 3, vậy Right(text2,j)="yfs", cái này càng không thể bằng nhau-> Đếm vẫn y nguyên, cứ như vậy, cuối cùng thì đếm vẫn =zero. Khắc phục bằng cách thay bằng hàm Mid. Nói đến đây chắc bạn hiểu rồi chứ.

Tôi có cải tiến lại. Bạn xem thử nhé.
Dim i As Integer
Dim j As Integer
Dim xet As String
Dim dem As Long
Dim gtri As Long

Private Sub Command1_Click()
dem = 0
i = 1
j = 1
gtri = Len(Text1) + Len(Text2)
For i = 1 To Len(Text1) - 1
For j = 1 To Len(Text2) - 1
If Mid(Text1, Len(Text1) - i, 1) = Mid(Text2, Len(Text2) - j, 1) Then
dem = dem + 1
End If
'j = j + 1
Next j
Next i

gtri = gtri - dem

Select Case gtri:
Case 1: Text3 = "Forget"
Case 2: Text3 = "Perfect"
Case 3: Text3 = "Hate"
Case 4: Text3 = "Perfect"
Case 5: Text3 = "best friend"
Case 6: Text3 = "best friend"
Case 7: Text3 = "poor"
Case 8: Text3 = "wedding"
Case 9: Text3 = "intense"
Case 10: Text3 = "friend"
Case 11: Text3 = "intense"
Case 12: Text3 = "forget"
Case 13: Text3 = "perfect"
Case 14: Text3 = "intense"
Case 15: Text3 = "miserable"
Case 16: Text3 = "intense"
Case 17: Text3 = "poor"
Case 18: Text3 = "perfect"
Case 19: Text3 = "love"
Case 20: Text3 = "wedding"
Case else: Text3="nothing"
End Select
End Sub

White_Rose
21-03-2003, 00:20
Bài viết được gửi bởi dullard
quả là thế thật, nhưng mà em đã để gtri=gtri - dem rồi mà, có phải là do hàm For không làm việc không? khi em sửa lỗi thì thấy i=1, j=1, không tăng, không biết làm sao hơn hết Tốt hơn hết bạn cho biết làm thế nào để tính ra kết quả (làm = tay và nói bằng lời;) ) thì dễ chỉ hơn.

dullard
22-03-2003, 09:55
nó chạy rồi các bác ạ, đây là chương trình coi bói em làm chơi cho vui thôi, bỏ mới có mấy tháng mà quên sạch rồi, sau này chắc là nhờ vả các bác nhiều đấy, hehe, các bác giúp em nhé

Nicky
22-03-2003, 19:46
he..he.. đúng là mấy cô chỉ thích bói toán vớ vỉn..:D
Chúc mừng nhé!

dullard
22-03-2003, 20:54
vậy bác có đề tài nào hay hay cho em làm không? em chẳng có gì để làm nên lấy mấy cái bói toán này ra làm này,

dtt_vn
22-03-2003, 21:08
không có gì làm huh? viết một cái activex support tiếng việt là vừa rồi

dullard
22-03-2003, 21:20
nó hoạt động thế nào? cho đề bài thì cũng phải có giải thích tí tí chứ, ai biết bác muốn nó chạy lên trời hay xuống biển đâu nà

White_Rose
22-03-2003, 23:49
Mình thấy app bạn viết cũng hay đấy chứ, thỉnh thoảng mở ra giải trí cũng thư giãn.
Có điều, bạn nên tìm cái bói nào đó mà lượng dữ liệu của nó phong phú một chút (dài càng tốt), như thế có nhiều cái để tán sau khi bói hơn:)
Tiếng Việt bây giờ nên dùng .NET, support Unicode, mất công viết làm gì :D
Thân.

dtt_vn
23-03-2003, 10:16
nhưng máy của em không chạy nổi anh WR ơi. đĩa cứng còn có 150MB để run thôi

dullard
23-03-2003, 14:01
tán thành ý kiến của WR, mình sẽ thử làm hoàn chỉnh 1 bộ bói gồm nhiều phần khác nhau, hé hé, ai giúp đỡ tui tui sẽ share cho mà bói thử, ai tham gia không nào???

KEM_WALL
23-03-2003, 16:32
đúng đó, máy walls 100Mhz, 2,1 GB đĩa cứng, cài hổng nổi .net đâu

Nicky
26-03-2003, 20:08
Rồi, dullard cứ cố gắng viết đi nhé, viết là tốt bất cứ cái gì cũng tốt, nhưng cũng cố gắng tìm cái gì có ý nghĩa một chút, bói để giải trí cũng vui.
Để Nicky giải thích lại cái ý tưởng của dtt_vn. ý dtt_vn là muốn viết một ActiveX hỗ trợ Unicode và nhúng luôn bộ gõ Tiếng Việt vào đó, nếu muốn gõ Tiếng Việt vào cái ActiveX đó thì không cần dùng bất cứ một chương trình gõ Tiếng Việt nào khác. ý tưởng rất hay đó chớ...bravo..