CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
不看会后悔的Windows XP之经验谈 简单快捷DIY实用家庭影院
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  VB >  基础类

操作文件的问题

楼主sudeping_ok()2006-07-03 15:57:33 在 VB / 基础类 提问

在一文本文件中有如下内容,  
   
  rrT0Q*   a:15321   53284   #b:45729   33452   #c:AVAIL   TIME   #END  
   
  现在我需要截取前面"rrT0Q*   "   和后面"end"部份  
  然后将   "a:15321   53284   #b:45729   33452   #c:AVAIL   TIME"   这段字符输入到程序中text1.text中。并且这部份内容的字符不定长,且在#时text1.text需要换行。  
   
  请教高手如何读取这段字符? 问题点数:50、回复次数:30Top

1 楼sudeping_ok()回复于 2006-07-03 16:07:19 得分 0

也就是说在text1.text文本框中显示内容如下:  
  a:15321   53284    
  b:45729   33452    
  c:AVAIL   TIME  
  #处换行,且不显示#Top

2 楼aspower_(敬个礼 握个手 大家都素好朋友!)回复于 2006-07-03 16:10:46 得分 0

简单  
   
  split  
   
  我去写写看Top

3 楼aspower_(敬个礼 握个手 大家都素好朋友!)回复于 2006-07-03 16:20:10 得分 0

搞定  
  Private   Function   GetKey(HTML,   Start,   Last,   i)  
        On   Error   Resume   Next  
  filearray   =   Split(HTML,   Start)  
  filearray2   =   Split(filearray(i),   Last)  
  GetKey   =   filearray2(0)  
  End   Function  
   
  Private   Sub   Command1_Click()  
  Dim   s()   As   String  
  Str1   =   "rrT0Q*   a:15321   53284   #b:45729   33452   #c:AVAIL   TIME   #END"  
  Str1   =   GetKey(Str1,   "rrT0Q*",   "#END",   1)  
  s()   =   Split(Str1,   "#")  
  For   i   =   0   To   2  
  Text1.Text   =   Text1.Text   &   vbCrLf   &   s(i)  
  Next  
   
  End   SubTop

4 楼sudeping_ok()回复于 2006-07-03 16:32:49 得分 0

Str1   =   "rrT0Q*   a:15321   53284   #b:45729   33452   #c:AVAIL   TIME   #END"  
  中a:15321   53284   #b:45729   33452   #c:AVAIL   TIME   这段字符随时都可能产生变化,且长度也有可能变化。  
  例如  
  a:427432   53284   #b:45729   3324552   #c:AVAIL   ABCDEF  
  只有头和尾的字符及字符长度不变Top

5 楼aspower_(敬个礼 握个手 大家都素好朋友!)回复于 2006-07-03 16:36:30 得分 0

我的代码就可以  
   
  spilt根据#这个符号来分割的  
   
  你试下就知道了  
   
  Str1你自己传递给他比如 str1=text2.text  
   
  我那里只是做个演示  
   
  你要还是不明白我也每办法了Top

6 楼aspower_(敬个礼 握个手 大家都素好朋友!)回复于 2006-07-03 16:47:49 得分 0

成功记得给分Top

7 楼sudeping_ok()回复于 2006-07-03 16:51:19 得分 0

你的代码基本明白,就是如何将例如:c:\1.txt的全部文本内容赋值给变量str1?Top

8 楼aspower_(敬个礼 握个手 大家都素好朋友!)回复于 2006-07-03 16:59:50 得分 0

哇靠  
   
  你你你   
   
  你也太烂了吧  
   
  open   "c:\1.txt"   for   input   as   #1  
   
  input   #1,str1  
  close   #1Top

9 楼aspower_(敬个礼 握个手 大家都素好朋友!)回复于 2006-07-03 17:00:08 得分 0

弄点分也真不容易阿Top

10 楼vansoft(Vansoft Workroom)回复于 2006-07-03 17:08:24 得分 0

簡單.  
   
  用richtextbox控件,一次加載文件.  
   
  然後用replace方法,  
  把rrT0Q*和#END替換為空,  
  再把#替換為vbcrlf,  
  最後保存一下就行。Top

11 楼aspower_(敬个礼 握个手 大家都素好朋友!)回复于 2006-07-03 17:10:00 得分 0

楼上方法也8错Top

12 楼verywzm(寒江雪)回复于 2006-07-03 18:21:04 得分 0

Private   Sub   Command1_Click()  
          Dim   a()   As   String  
          Dim   str   As   String  
          str   =   "rrT0Q*   a:15321   53284   #b:45729   33452   #c:AVAIL   TIME   #END"  
          a()   =   Split(str,   "#")  
          Text1.SelText   =   Right(a(0),   Len(a(0))   -   7)   &   vbCrLf  
          For   i   =   1   To   UBound(a)   -   1  
                  Text1.SelText   =   a(i)   &   vbCrLf     '显示数据。  
          Next  
  End   Sub  
  Top

13 楼aspower_(敬个礼 握个手 大家都素好朋友!)回复于 2006-07-03 18:33:58 得分 0

楼上每把这个给去调rrT0Q*Top

14 楼sudeping_ok()回复于 2006-07-03 19:51:33 得分 0

不知道input是个什么东东?Top

15 楼sudeping_ok()回复于 2006-07-03 19:52:08 得分 0

vb是个什么意思啊?Top

16 楼aspower_(敬个礼 握个手 大家都素好朋友!)回复于 2006-07-03 20:03:53 得分 0

...  
  那个是读取文件的  
   
  表示用于读取 如果是写入就是output   追加是appendTop

17 楼sudeping_ok()回复于 2006-07-03 21:09:43 得分 0

哈哈Top

18 楼sudeping_ok()回复于 2006-07-04 11:46:15 得分 0

open   "c:\1.txt"   for   input   as   #1  
  input   #1,str1  
  close   #1  
  只能读取文本中第一行数据,我的目的是要将整个文件内的数据全部写入到变量str1中。  
  而且这个文件中的数据大约有7-10行。Top

19 楼sudeping_ok()回复于 2006-07-04 12:03:11 得分 0

如果用  
  str1   =   input(350,#1)  
  的方法来取字符,但是该文件不定长度,所以有时在text1文本中无法将文件中的内容显示完整。Top

20 楼aspower_(敬个礼 握个手 大家都素好朋友!)回复于 2006-07-04 12:16:49 得分 0

input   #1,str1  
  怎么是读取一行  
  读取一行是  
  line   input阿Top

21 楼sudeping_ok()回复于 2006-07-04 12:31:20 得分 0

这个文件是下载下来的,其中的字符很奇怪,包含了诸如逗号,回车符等。而且文件还不定长,我用  
  open   "c:\1.txt"   for   input   as   #1  
  input   #1,str1  
  close   #1  
  试了下,在第一行回车符处就不再显示后面的了。用  
  str1   =   input(350,#1)  
  方法也试了,到是能取到350个字符,但该文件不定长,有时文件字符超过350时,显示在文本的内容就不完整了。  
  aspower大哥能否加我QQ:17015551,我把该文件发给你帮我看一下,问题出在那了?Top

22 楼verywzm(寒江雪)回复于 2006-07-04 12:33:15 得分 30

Private   Sub   Command1_Click()  
  Dim   MyChar   As   String  
  Dim   Str   As   String  
  Open   "c:\1.txt"   For   Input   As   #1       '   打开文件。  
  Do   While   Not   EOF(1)       '   循环至文件尾。  
        Input   #1,   MyChar     '   读入一行  
        Str   =   Str   &   MyChar  
   
  Loop  
  Close   #1       '   关闭文件。  
  Text1.Text   =   Str  
  End   SubTop

23 楼verywzm(寒江雪)回复于 2006-07-04 12:36:57 得分 0

测试了,单用input确实读不完,我上面的可以读完。Top

24 楼sudeping_ok()回复于 2006-07-04 13:07:46 得分 0

Do   While   Not   EOF(1)       '   循环至文件尾。  
  好注意,高!  
   
  最后请教个问题,就是我如果要从文件的第五个字符开始取值到文件尾。怎么办?  
  搞定结帖了.Top

25 楼sudeping_ok()回复于 2006-07-04 15:45:29 得分 0

谁有好办法Top

26 楼aspower_(敬个礼 握个手 大家都素好朋友!)回复于 2006-07-04 15:57:30 得分 20

input 5,#1  
   
  空操作一下指针就过去了 也可以用get但是比较麻烦  
  Private   Sub   Command1_Click()  
  Dim   MyChar   As   String  
  Dim   Str   As   String  
  Open   "c:\1.txt"   For   Input   As   #1       '   打开文件。  
  input 5,#1  
  Do   While   Not   EOF(1)       '   循环至文件尾。  
   
        Input   #1,   MyChar     '   读入一行  
        Str   =   Str   &   MyChar  
   
  Loop  
  Close   #1       '   关闭文件。  
  Text1.Text   =   Str  
  End   Sub  
  Top

27 楼verywzm(寒江雪)回复于 2006-07-04 16:15:52 得分 0

用seek函数  
   
  Private   Sub   Command1_Click()  
          Dim   MyChar   As   String  
          Dim   Str   As   String  
          Open   "c:\1.txt"   For   Input   As   #1       '   打开文件。  
          Seek   #1,   5  
          Do   While   Not   EOF(1)       '   循环至文件尾。  
                  Input   #1,   MyChar     '   读入一行  
                  Str   =   Str   &   MyChar  
   
          Loop  
          Close   #1       '   关闭文件。  
          Text1.Text   =   Str  
  End   SubTop

28 楼aspower_(敬个礼 握个手 大家都素好朋友!)回复于 2006-07-04 16:28:00 得分 0

楼上的可以  
  我的代码有错呵呵 又是想当然没调试  
   
  Private   Sub   Command1_Click()  
          Dim   MyChar   As   String  
          Dim   Str   As   String  
          Open   "c:\1.txt"   For   Input   As   #1       '   打开文件。  
    str1   =   Input(5,   #1)'空操作一下 需要注意的是这里的字符数是指真正的字符位数回车换行都要计算在内的  
          Do   While   Not   EOF(1)       '   循环至文件尾。  
                  Input   #1,   MyChar     '   读入一行  
                  Str   =   Str   &   MyChar  
   
          Loop  
          Close   #1       '   关闭文件。  
          Text1.Text   =   Str  
  End   Sub  
   
  这个代码调试过了应该没有问题了Top

29 楼verywzm(寒江雪)回复于 2006-07-04 16:29:54 得分 0

seek函数是移动文件指针的函数,好了可以结贴了Top

30 楼aspower_(敬个礼 握个手 大家都素好朋友!)回复于 2006-07-04 16:35:27 得分 0

get也可以  
  呵呵  
  get     #1,5,变量名  
  get从指定位置开始读取长度等于变量长度的数据并存放在变量中Top

相关问题

关键词

得分解答快速导航

  • 帖主:sudeping_ok
  • verywzm
  • aspower_

相关链接

  • Visual Basic类图书
  • Visual Basic类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
世纪乐知(北京)网络技术有限公司 版权所有, 京 ICP 证 020026 号
北京创新乐知广告有限公司 提供技术支持
Copyright © 2000-2007, CSDN.NET, All Rights Reserved
GongshangLogo