国家邮政局和邮储银行:一个VB的问题。

来源:百度文库 编辑:神马品牌网 时间:2024/04/29 20:57:53
题目要求在"out027.txt"文件中输出"in027.txt"的大写字母。
可这个程序为什么不行呢?
Private Sub Cmd1_Click()
Dim FileIn As String
Dim FileOut As String
Dim Ch As String
FileIn = App.Path & "\" & "in027.txt"
FileOut = App.Path & "\" & "out027.txt"
Open FileIn For Input As #1
Open FileOut For Output As #2
Do While Not EOF(1)
Input #1, Ch
If Asc(Ch) >= 65 And Asc(Ch) <= 90 Then
Print #2, Ch
End If
Loop
Close
End Sub

把读入的内容逐个判断就可以了,原程序修改如下:

Private Sub Cmd1_Click()
Dim FileIn As String
Dim FileOut As String
Dim I As Integer, Tmp1 As String, Tmp2 As String
Dim Ch As String
FileIn = App.Path & "\" & "in027.txt"
FileOut = App.Path & "\" & "out027.txt"
Open FileIn For Input As #1
Open FileOut For Output As #2
Do While Not EOF(1)
Input #1, Ch
Tmp1 = ""
For I = 1 To Len(Ch)
Tmp2 = Mid(Ch, I, 1)
If Asc(Tmp2) >= 65 And Asc(Tmp2) <= 90 Then Tmp1 = Tmp1 & Tmp2
Next
Print #2, Tmp1
Loop
Close
End Sub

修改代码如下:
Option Explicit

Dim FileIn As String
Dim FileOut As String
Dim Ch As String
Dim Ch2 As String
Dim ch1(500) As String
Dim l As Integer
Dim i As Integer

Private Sub Cmd1_Click()
Ch2 = ""
FileIn = App.Path & "\" & "in027.txt"
FileOut = App.Path & "\" & "out027.txt"
Open FileIn For Input As #1
Open FileOut For Output As #2
Do While Not EOF(1)
Input #1, Ch
l = Len(Ch)
For i = 1 To l
ch1(i) = Mid(Ch, i, 1)
If Asc(ch1(i)) >= 65 And Asc(ch1(i)) <= 90 Then
Ch2 = Ch2 + ch1(i)
End If
Next
Loop
Print #2, Ch2
Close
End Sub

VB的大小写转换这么难?!
Pascal里用Upcase语句就可以了。

INPUT #1,Ch意思是从#1文件中读取一行到字符串Ch中,而不是读一个字符。
有意思的是,在VB中对一个字符串用ASC函数不会出错,返回值是字符串的第一个字符的ASC码。
这个题建议用文件系统对象做。
现在我很忙,不然可以给个例子。有时间再说