注册 登录
编程论坛 VB6论坛

本人新手,求教各位大神 text1 输入数据保存为TXT以后的检测问题!

you157827715 发布于 2021-08-03 16:44, 1374 次点击
  以下是我的程序和数据, 我想在 TEXT1 每次输入数据时,每次检测输入的数据在上次输入保存的txt文件里面有没有重复的数据,如果有重复,程序提示!
  如下:
只检测txt 文件下的 每一行的前12个数据 如: "210004022221"
   

求高手解答!





只有本站会员才能查看附件,请 登录
只有本站会员才能查看附件,请 登录
5 回复
#2
风吹过b2021-08-03 19:11
打开这个文件,全部读到内存,按行分解后。
每次输入后,与每一行的前12个字符比较,相同,则提示。

#3
apull2021-08-03 19:28
读取一行字符串,用split空格分隔成一个6元素数组,在与数组的第1,2个元素比较
#4
约定的童话2021-08-04 07:29
加个二维码更完美了
#5
you1578277152021-08-04 08:08
回复 2楼 风吹过b
谢谢给的思路,可是我还是不是很理解,麻烦能不能给段代码参考下,我新手刚学,不是很懂!麻烦了!文件读出来我会!就是检测这块
#6
风吹过b2021-08-04 22:36
检测,分二种情况
一、整个文件直接读在一个字符串里,那么我们使用查找字符串的办法。
if instr(1,text1.text,StrFileS) >0 then  '表示找到
这种方法,要求每行的其他部位不会出现这种类型的字符,如果会出现,那么就要再加字符判断
如 if instr(1,vbcrlf & text1.text,StrFileS)>0 then           '加上换行符后找到,说明字符出现某行的开始部分,也就是第1节
这种方法会漏掉第一行可能会存在的问题,所以要单独再比较一下第一行,解决的办法就是 strfiles 前面再附加一个 vbcrlf ,变成
if instr(1,vbcrlf & text1.text,vbcrlf & StrFileS)>0 then

二、已分解成每一行了
那先预处理一下,只保留前12个字符好了。
for i=0 to ubound(SFSF)
   if len(sfsf(i))>12 then  sfsf(i)=left(sfsf(i),12)
next i
然后在比较时,通过循环比较
fsYN = flash
for i=0 to ubound(sfsf)
  if fsfs(i)=text1.text then
    fsyn=true
    exit for
  end if
next i
if fsyn then  '找到重复

else      '未找到

end if





1