everyone 发表于 2009-10-23 22:01:15

【求助】老马帮看看这个文本怎么读,

<p>如下面这两个文本,一个是转换的,一个是未经转换的,我想读出未经转换的 <font face="Verdana">G1P648-01A1</font> 和<font face="Verdana">G1P648.1</font> ,该怎么读,我用一般的读文本方法,读不出来,有空帮我看看,谢谢了</p>
<p>这个是刚刚上传的文件</p>
<p></p>
<p>读出这个的方法我已经找到了,你帮我分析下转换的方法,谢谢</p>
<p>&nbsp;</p>
<p><font face="Verdana">Option Explicit</font></p>
<p><font face="Verdana">Public Sub Main()</font></p>
<p><font face="Verdana">&nbsp;&nbsp;&nbsp; Dim strFile As String<br/>&nbsp;&nbsp;&nbsp; Dim strBuf As String<br/>&nbsp;&nbsp;&nbsp; Dim strOut As String<br/>&nbsp;&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp; ' 这里写的是我的磁盘路径<br/>&nbsp;&nbsp;&nbsp; ' 你要按你实际的路径和文件名来写<br/>&nbsp;&nbsp;&nbsp; strFile = "C:\tskmap\G1P648.1\map_0001.dat"<br/>&nbsp;&nbsp;&nbsp; strBuf = Space(16)<br/>&nbsp;&nbsp;&nbsp; Open strFile For Binary As #1<br/>&nbsp;&nbsp;&nbsp; Get #1, 61, strBuf<br/>&nbsp;&nbsp;&nbsp; strOut = Trim$(strBuf)<br/>&nbsp;&nbsp;&nbsp; MsgBox strOut, 64, "读取文本"<br/>&nbsp;&nbsp;&nbsp; Get #1, 83, strBuf<br/>&nbsp;&nbsp;&nbsp; strOut = Trim$(strBuf)<br/>&nbsp;&nbsp;&nbsp; MsgBox strOut, 64, "读取文本"<br/>&nbsp;&nbsp;&nbsp; Close</font></p>
<p><font face="Verdana">End Sub</font></p>
<p>&nbsp;</p>
[此贴子已经被作者于2009-10-24 8:47:41编辑过]

everyone 发表于 2009-10-24 14:22:40

<p>这里还有另外一种,一起帮我看看是怎么回事。谢谢了</p>
<p><br/></p>

马大哈 发表于 2009-10-24 17:43:32

<p>看起来所有文件都是有固定60字节的文件头,以及40字节的你要的数据区域组成的.</p>
<p>&nbsp;</p>
<p>那要读这个就比较简单了:</p>
<p>&nbsp;</p>
<div class="msgheader">QUOTE:</div><div class="msgborder">
<p><font face="Verdana">Public Function GetStr(ByVal filename As String) As String()<br/>&nbsp;&nbsp;&nbsp; Dim Buff As String, Buff2() As String, Buff3() As String<br/>&nbsp;&nbsp;&nbsp; Dim I As Long, J As Long</font></p>
<p><font face="Verdana">&nbsp;&nbsp;&nbsp; Open filename For Binary As #1<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Buff = Space(39)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Get #1, 61, Buff<br/>&nbsp;&nbsp;&nbsp; Close #1</font></p>
<p><font face="Verdana">&nbsp;&nbsp;&nbsp; Buff2() = Split(Buff, Chr(0))<br/>&nbsp;&nbsp;&nbsp; ReDim Buff3(1)</font></p>
<p><font face="Verdana">&nbsp;&nbsp;&nbsp; For I = 0 To UBound(Buff2)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Buff2(I) = Trim(Buff2(I))<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; If Len(Buff2(I)) &gt; 3 Then<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Buff3(J) = Right(Buff2(I), Len(Buff2(I)) - J)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; J = J + 1<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; If J = 2 Then Exit For<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; End If<br/>&nbsp;&nbsp;&nbsp; Next<br/>&nbsp;&nbsp;&nbsp; GetStr = Buff3<br/>End Function</font></p></div>
<p>传入文件名,输出就是一个数组,元素0是第一个字符串,元素1是第二个字符串.</p>
<p>&nbsp;</p>
<p>例:</p>
<p>&nbsp;</p>
<p><font face="Verdana">debug.print &nbsp;GetStr("010.2SXF35075.110")(1)<br/></font></p>
<p><font face="Verdana">返回:&nbsp; 2SXF35075.1</font></p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>

everyone 发表于 2009-10-24 18:36:57

<p>谢谢马哥哈,</p>
<p>1楼上是我上午传的新的文件,里面还有转换软件,你帮我看下,能不能作出和软件转换的一样的效果,谢谢了</p>

马大哈 发表于 2009-10-24 20:24:08

<p>无法运行.</p>
<p>&nbsp;</p>
<p>两种格式的文件,后者好说,前者需要去解析内容,没有文档说明的情况下比较麻烦.</p>

everyone 发表于 2009-10-24 20:35:25

<p>果真是不好读啊,只有放弃了</p>
<p>谢谢马哥了</p>

马大哈 发表于 2009-10-23 23:53:02

多上传几个转换前的文件,我看看文件格式是怎么样的.
页: [1]
查看完整版本: 【求助】老马帮看看这个文本怎么读,