关于vb中的文件操作编程问题?必加分!急!
$$* Pro/CLfile Version Wildfire 2.0 - M080
$$-> MFGNO / MFG0002
PARTNO / MFG0002
$$-> FEATNO / 25
MACHIN / UNCX01, 1
$$-> CUTCOM_GEOMETRY_TYPE / OUTPUT_ON_CENTER
UNITS / INCHES
LOADTL / 1
$$-> CUTTER / 2.000000
$$-> CSYS / 1.0000000000, 0.0000000000, 0.0000000000, 0.0000000000, $
0.0000000000, 1.0000000000, 0.0000000000, 0.0000000000, $
0.0000000000, 0.0000000000, 1.0000000000, 0.0000000000
SPINDL / RPM, 1.000000, CLW
RAPID
GOTO / 17.0000000000, 18.0000000000, 10.0000000000
CYCLE / DRILL, DEPTH, 1.200861, IPM, 1.000000, CLEAR, 0.100000
GOTO / 17.0000000000, 18.0000000000, 0.0000000000
GOTO / 23.0000000000, 13.0000000000, 0.0000000000
GOTO / 17.0000000000, 27.0000000000, 0.0000000000
GOTO / 17.0000000000, 42.0000000000, 0.0000000000
GOTO / 17.0000000000, 48.0000000000, 0.0000000000
GOTO / 23.0000000000, 45.0000000000, 0.0000000000
GOTO / 23.0000000000, 51.0000000000, 0.0000000000
GOTO / 23.0000000000, 59.0000000000, 0.0000000000
GOTO / 23.0000000000, 65.0000000000, 0.0000000000
GOTO / 34.0000000000, 65.0000000000, 0.0000000000
GOTO / 34.0000000000, 58.0000000000, 0.0000000000
GOTO / 34.0000000000, 53.0000000000, 0.0000000000
GOTO / 34.0000000000, 47.0000000000, 0.0000000000
GOTO / 42.0000000000, 47.0000000000, 0.0000000000
GOTO / 42.0000000000, 53.0000000000, 0.0000000000
GOTO / 42.0000000000, 58.0000000000, 0.0000000000
GOTO / 42.0000000000, 65.0000000000, 0.0000000000
GOTO / 42.0000000000, 75.0000000000, 0.0000000000
GOTO / 54.0000000000, 75.0000000000, 0.0000000000
GOTO / 63.0000000000, 81.0000000000, 0.0000000000
GOTO / 68.0000000000, 81.0000000000, 0.0000000000
GOTO / 73.0000000000, 81.0000000000, 0.0000000000
GOTO / 78.0000000000, 81.0000000000, 0.0000000000
GOTO / 83.0000000000, 81.0000000000, 0.0000000000
GOTO / 83.0000000000, 73.0000000000, 0.0000000000
GOTO / 78.0000000000, 73.0000000000, 0.0000000000
GOTO / 73.0000000000, 73.0000000000, 0.0000000000
GOTO / 68.0000000000, 73.0000000000, 0.0000000000
GOTO / 63.0000000000, 73.0000000000, 0.0000000000
GOTO / 63.0000000000, 62.0000000000, 0.0000000000
GOTO / 63.0000000000, 53.0000000000, 0.0000000000
GOTO / 54.0000000000, 44.0000000000, 0.0000000000
GOTO / 54.0000000000, 32.0000000000, 0.0000000000
GOTO / 34.0000000000, 24.0000000000, 0.0000000000
GOTO / 42.0000000000, 24.0000000000, 0.0000000000
GOTO / 63.0000000000, 24.0000000000, 0.0000000000
GOTO / 63.0000000000, 32.0000000000, 0.0000000000
GOTO / 83.0000000000, 44.0000000000, 0.0000000000
GOTO / 83.0000000000, 40.0000000000, 0.0000000000
GOTO / 83.0000000000, 36.0000000000, 0.0000000000
GOTO / 83.0000000000, 32.0000000000, 0.0000000000
GOTO / 83.0000000000, 23.0000000000, 0.0000000000
以上为我要处理的文件,我用
dim str as variant
Open "。。。。。" For Input As #1
Line Input #1, str
得到的str内容就已经包括全文,可以判定全文的格式是内容全都在一行没有换行。而且它的数值不是single型,而全部是字符型(这个很麻烦)。我现在要把GOTO后面的坐标数值放入到数组中,经过运算后重新排序,生成与原文同样的格式文件。我的问题是:
如何准确地把这些字符数值放到数组如x()y()z()中,并且完成重排后把新的顺序覆盖掉原来的。
那个高手能帮助我,必加分!!
急,谢谢好心人!
问题点数:95、回复次数:5Top
1 楼of123()回复于 2006-05-03 14:39:25 得分 0
Dim strData As String
Dim strLine() As String, strField() As String
Open "。。。。。" For Input As #1
Line Input #1, strData
Close #1
strData = Mid(strData, Instr(strData, "GOTO/"))
strLine = Split(strData, "GOTO/"))
n = 0
For i = 0 To Ubound(strLine)
If strLine > "" Then
strField = Split(strLine, ",")
If Ubound(strField) >= 2 Then
Redim Preserve x(n)
Redim Preserve y(n)
Redim Preserve z(n)
x(n) = Val(strField(0))
y(n) = Val(strField(1))
z(n) = Val(strField(2))
n = n + 1
End If
End If
Next i
......Top
2 楼herrylong()回复于 2006-05-03 16:07:16 得分 0
另一半呢?我在楼上的版本上作了很多修改,总算能够提取数据了,但是后一半呢,如何把我运算出来的改变了顺序的x()y()z()数据原版原样的替换它。这位高手能不能劳神帮帮!如果顺利解决必献上分数。Top
3 楼of123()回复于 2006-05-03 16:41:19 得分 0
先把文件的前半部分读取并保存。
dim strFirstHalf as string, strSecondHalf as string
for i = 0 to ubound(x)
strSecondHalf = strSecondHalf & "GOTO/" & Format(x(i),"#0.0000000000") & "," & _
Format(y(i),"#0.0000000000") & "," & Format(z(i),"#0.0000000000")
next i
open "...." for output as #1
print #1, strFirstHalf & strSecondHalf
close #1Top
4 楼herrylong()回复于 2006-05-04 11:51:21 得分 0
不是怎么简单的,文件中goto不是全部在一起的,中间有可能夹杂另一些字符。如:
GOTO / 17.0000000000, 18.0000000000, 10.0000000000
CYCLE / DRILL, DEPTH, 1.200861, IPM, 1.000000, CLEAR, 0.100000
GOTO / 17.0000000000, 18.0000000000, 0.0000000000
这个好像有点烦。Top
5 楼vbfunner(超级糖醋五花大瘦肉)回复于 2006-05-04 23:54:30 得分 0
你的研究的格式是
goto/ ,,这个就通过先读取所有再分析;
while(eof){
if mid(str,i,4)=="goto"
i=i+4;
你的后面的数据长度好象是12位的嘛,然后根据数据长度再写一下截取数据的函数.
}
这样就可以了啊.
Top




