乐筑天下

搜索
欢迎各位开发者和用户入驻本平台 尊重版权,从我做起,拒绝盗版,拒绝倒卖 签到、发布资源、邀请好友注册,可以获得银币 请注意保管好自己的密码,避免账户资金被盗
查看: 35|回复: 2

从文本文件读取?

[复制链接]

15

主题

209

帖子

121

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
163
发表于 2006-7-19 11:15:48 | 显示全部楼层 |阅读模式
Ok i'我回来了(仍在努力适应它)
我有一个关于阅读文本文件的问题
我有一个文本文件,上面有这样的行:
a-ANNO-DIMS;尺寸界线/尺寸界线、标注终止符、标注文字;不断的35;7.1.LayerCreator
(全部一行不换行)我也有这个代码[代码问题是,当我运行它时,它会在逗号#039;s#160;我怎样才能把它送到a。将该行读作一行。读这行并在分号处分开
这将是最好的选择,然后我可以为每个变量设置变量(列表是数组吗?)
无论如何,这是#160;从我编写的layercreator程序中,我可以尝试将其移植到vba
TIA
回复

使用道具 举报

170

主题

1424

帖子

8

银币

顶梁支柱

Rank: 50Rank: 50

铜币
2119
发表于 2006-7-19 11:44:08 | 显示全部楼层
时间不多,所以我希望我能做到这一点……我用了这样的东西
  1. Public Sub ReadMyFile()
  2.     Dim inputfile As String
  3.         inputfile = "C:\myfile.txt"
  4.     Dim DataFile As Integer
  5.         DataFile = FreeFile
  6.     Dim Dataline As String
  7.    
  8.     Open inputfile For Input As #DataFile
  9.         While Not EOF(DataFile)
  10.             Line Input #DataFile, Dataline
  11.                 ' now you've got the line so do your stuff here
  12.         Wend
  13.     Close #DataFile
  14. end sub
您可能想看看替换方法,用分号替换行中的逗号,反之亦然。然后可以使用split函数从行返回数组,这将用逗号替换分号
  1. replace(dataline,";",",",,,vbBinaryCompare)
然后使用该分隔符将线拆分为数组
  1. dim LineArray as variant
  2. LineArray =Split(dataline,",",,vbBinaryCompare)
回复

使用道具 举报

170

主题

1424

帖子

8

银币

顶梁支柱

Rank: 50Rank: 50

铜币
2119
发表于 2006-7-20 01:15:13 | 显示全部楼层

这里有一种方法,将每一行传递给一个函数
  1. Sub TestParse()
  2.     Dim sLine As String
  3.     Dim Thang
  4.     sLine = "A-ANNO-DIMS;Witness/extension lines, dimension terminators, dimension text;Continuous;35;7;1;LayerCreator;"
  5.     Thang = ParseLayerInfo(sLine)
  6.    
  7.     For i = 0 To UBound(Thang)
  8.         Debug.Print Thang(i)
  9.     Next
  10. End Sub
  11. Public Function ParseLayerInfo(sLine As String) As Variant
  12.     Dim Pos1 As Long, Pos2 As Long
  13.     Dim i As Integer
  14.     Dim vInfo(6) As String
  15.    
  16.     Pos1 = InStr(1, sLine, ";")
  17.     vInfo(0) = Left(sLine, Pos1 - 1)
  18.     For i = 1 To 6
  19.         Pos2 = InStr(Pos1 + 1, sLine, ";")
  20.         vInfo(i) = Mid(sLine, Pos1 + 1, (Pos2 - Pos1) - 1)
  21.         Pos1 = Pos2
  22.     Next i
  23.     ParseLayerInfo = vInfo
  24.    
  25. End Function
回复

使用道具 举报

发表回复

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

QQ|关于我们|小黑屋|乐筑天下 繁体中文

GMT+8, 2025-7-6 03:42 , Processed in 0.787333 second(s), 58 queries .

© 2020-2025 乐筑天下

联系客服 关注微信 帮助中心 下载APP 返回顶部 返回列表