求救阿,哪位大哥帮帮忙看看代码哪里错了?

buddydeus 2003-08-21 08:16:31
Private Sub Form_Load()
Dim K As String, iCount As Integer
Dim Word As String, Explanation As String
K = App.Path
If Right(K, 1) <> "\" Then K = K + "\"
Open K + "dic.txt" For Input As #1

iCount = 1
Do Until EOF(1)
Input #1, Word, Explanation
If idxLetter(Asc(UCase(Word)) - 65) = 0 Then idxLetter(Asc(UCase(Word)) - 65) = iCount
List1.AddItem Word
iCount = iCount + 1
Loop

End Sub

这是我程序里面的代码,我用来实现从文本文件中读取纪录,可是我的纪录超过一定大小了,就会报错“调用参数错误”,谁能帮我看看阿?我急!!!
...全文
41 18 打赏 收藏 转发到动态 举报
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
rainstormmaster 2003-08-23
  • 打赏
  • 举报
回复
一个按钮,2个listbox
Option Explicit
Dim MyenList() As String
Dim MychList() As String
Private Sub Command1_Click()
On Error GoTo myerr
Dim bytearr() As Byte
Dim s As String
Dim Myfilelen As Long
Myfilelen = FileLen(App.Path + "\dic.dat")
ReDim bytearr(Myfilelen)
Open App.Path + "\dic.dat" For Binary As #1
Get #1, , bytearr
Close #1
Dim arrtemp As Variant
s = StrConv(bytearr, vbUnicode)
arrtemp = Split(s, vbCrLf)
Dim i As Long
Dim temp As Variant
Dim k As Long
k = 0
For i = 0 To UBound(arrtemp)
temp = Split(arrtemp(i), ",")

ReDim Preserve MyenList(k)
ReDim Preserve MychList(k)
MyenList(k) = vbNullString & temp(0)
List1.AddItem MyenList(k)

MychList(k) = vbNullString & temp(1)
List2.AddItem MychList(k)
k = k + 1

Next
Exit Sub
myerr:
Exit Sub
End Sub

buddydeus 2003-08-22
  • 打赏
  • 举报
回复
Explanation,是解释,我定义的存放每个单词的解释

谢谢 pasl 了,我改了一下,果然好了,呵呵,谢谢了

下次我会注意在输入的时候不会出错了,另外在此谢谢,各位帮过我,以及为我费心了的朋友,谢谢了
Greaitm 2003-08-22
  • 打赏
  • 举报
回复
Explanation是什么?不对吧?
pasl 2003-08-22
  • 打赏
  • 举报
回复
问题不在你的程序,而是在你的Dic.txt中,具体问题有两个地方:373行的内容:
原先为:"firecracker"爆竹;鞭炮,""
应该为:"firecracker,"爆竹;鞭炮"
这样就可以了,没有任何的问题!
原因:在Input #1语句中,“,"被作为变量的分割符,“"”被用作变量的起始和终止,所以“"”应该成多出现。
buddydeus 2003-08-22
  • 打赏
  • 举报
回复
Private idxLetter(足够大的数) As long
我改成了这样还是会包同样的错
改成 line input #1,word,他说,下标越界,后面的我就不知道怎么改了,请帮帮忙,谢谢
buddydeus 2003-08-22
  • 打赏
  • 举报
回复
我的纪录是这个样子的格式:"a","1" ,原来的记录数不多也没什么问题,现在记录数多了,我就会报错:调用参数错误。我现在都急死了,8月25号要用的,现在却出这样的错误,大家帮帮我啊,谢谢了
我现在把程序源文件链接贴出来,各位有知道的,请帮我看看阿
http://www.jiehua-sh.com/buddydeus/text.zip
其中dic.dat是文本文件,我改名了不妨碍编辑的,因为我有特殊需要所以只能用文本文件的方式读取(如果用数据库早就没问题了),谢谢大家了!!!
如果能够解决,觉得分数不够的,请写出你想要得,我在加
singleship 2003-08-22
  • 打赏
  • 举报
回复
我也同意上面老兄的说法
用逐行读取的方法再加处理
132105 2003-08-22
  • 打赏
  • 举报
回复
把Input #1, Word, Explanation
改为:line input #1,word
试一下。文本文件嘛,逐行读出来不就得啦,再处理嘛。
danielinbiti 2003-08-22
  • 打赏
  • 举报
回复
如果你读入到双变量的话,数据形式差不多是下面那样的吧.
z,2
a,1
b,2
c,3
d,4
e,5
f,5
z,2
a,1
按照你的要求,直到出现了溢出还没出现你说的错误.
出错的原因可能不在这里,在另外的地方

rainstormmaster 2003-08-22
  • 打赏
  • 举报
回复
或者Private idxLetter(足够大的数) As long
rainstormmaster 2003-08-22
  • 打赏
  • 举报
回复
Private idxLetter() As Long

然后在读文件的过程中
根据需要用ReDim Preserve idxLetter(数值)重定义数组
buddydeus 2003-08-21
  • 打赏
  • 举报
回复
各位帮帮忙啊,求你们了,我8月25号要用的阿,大哥们帮帮忙
buddydeus 2003-08-21
  • 打赏
  • 举报
回复
写入的文件一定不会有错,因为我用同样的内容,只是减少点纪录数,程序就没什么问题了
buddydeus 2003-08-21
  • 打赏
  • 举报
回复
Private idxLetter(25) As Integer

idxletter是这句
danielinbiti 2003-08-21
  • 打赏
  • 举报
回复
如果单从你程序上来看,应该没错。

你看看读入的word是不是有问题?
感觉那里出问题比较可能。
AustinLei 2003-08-21
  • 打赏
  • 举报
回复
你的idxLetter是个什么函数?
buddydeus 2003-08-21
  • 打赏
  • 举报
回复
大哥还是不行啊,我看了,他报错的是If idxLetter(Asc(UCase(Word)) - 65) = 0 Then idxLetter(Asc(UCase(Word)) - 65) = iCount
这一句(黄条显示的就是这个,我不知道是不是)

请各位帮帮忙啊,我急等,谢谢
AustinLei 2003-08-21
  • 打赏
  • 举报
回复
把Integer类型改成Long试试。

7,759

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧