不要追求绝对的公平,红尘之中没有公平而言,人活一世,难得糊涂。                                           it is no use doing what you like, you have got to like what you do.

Robot中的文件操作的总结

上一篇 / 下一篇  2007-01-15 17:24:56 / 个人分类:Robot技术

Rational Robot中文件操作
'b'P@#i2z0Ax4C0
*l,|C5Y&v)f#yI&`0Rational Robot中提供了一个文件操作命令,语法如下:51Testing软件测试网u/S1k,G3uu;H(i
Open filename$ [For mode] [Access access] [lock] As [#] filenumber% [Len = reclen]51Testing软件测试网*fz\ kRoB} f
这里我们把它的语法分为两部分,因为这个文件操作命令有两种文件操作模式,一种是顺序文件,一种是随机文件。51Testing软件测试网H*QnSd"Z q

_!q$Sgp,n0下边是对顺序文件操作的语法:
KvO8~6c3R}0Open filename$ [  For [Input |Output |Append] As [#]filenumber [Len = buffersize]51Testing软件测试网jCL%@%Q5u4?,Zt
参数说明:51Testing软件测试网9t#s5\'d*G
说明:
2qoi nr$C$n }-r051Testing软件测试网N:p BU)X+T
  (1)参数filename$表示要打开的文件名,文件名可以包含有驱动器和目录51Testing软件测试网&D-kgt ra8z.P~
51Testing软件测试网q q'Gr&|
  (2)Input Output 和Append用于设置顺序文件的打开方式。其中,Input表示从打开的文件中读取数据。以这种方式打开文件时,文件必须存在,否则会产生错误。 Output表示向打开的文件中写入数据。以这种方式打开文件时,文件中原有的数据将被覆盖,新的数据将从文件开始写入。如果文件不存在,则创建一个新文 件。Append表示向打开的文件中添加数据。以这种方式打开时,文件中原有的数据将被保留,新的数据将从文件为开始添加。如果文件不存在,则创建一个新 文件。
&f#S9k2w%Gv _051Testing软件测试网a yC-O.\u9k
  (3)As[#]filenumber 子句用于为打开的文件指定文件号.对文件进行读写操作时,要用文件号表示该文件.文件号是介于1~511之间的整数,既可以是数字,又可以是变量.也可以省略不用.
{ `CX6uHbN051Testing软件测试网j8`h9\j B*{,h@
  (4)当在文件与程序之间拷贝数据时,Len=buffersize子句指定缓冲区的字符数.51Testing软件测试网Ycd+iV l9?U

3{!e@k&aa,N0例子:
*h Wu)X!lT0Open “c:\test.dat" For Output As 1
!a^UK4Q D1{ Z0Open “c:\test.dat" For Output As 151Testing软件测试网xk Bbl
  //这两句代码在c盘所在目录下创建了一个名为test.dat的文本文件,分配文件号为1.51Testing软件测试网rc+w(h1GqY
Open “c:\test.dat"  For Input As [#]filenumber  //这条语句是从文本文件中读取数据.
9s}Twb'DEp0Open App.Path + "\test.dat" For Append As [#]filenumber   
8W/G:NW~OoBhn;DQ0                                           //这条语句则是向文本文件中添加数据
FB5k;sD uC8D\0
:va:t[+r1\0随机文件的操作:
?"s nI2Nc0  操作随机文件之前,首先必须定义用于保存数据项的记录类型.该记录是用户自定义数据类型,他们是随机文件中存储数据的基本结构.例如:51Testing软件测试网}-p9Z'Q_

zN%u Da.B*LP0Type Student
6VUu.fh+q0 No As Integer
-{"zg;E _ChD0 Name As String * 2051Testing软件测试网&Z9o1S{7de1g5D!q5[^
 age As Integer
u#~L_&sN\-P0End Type51Testing软件测试网-g6kf2oCZ(b
51Testing软件测试网kk+[_,b'w,~.|+hD
Dim Stud As Student ‘定义一个可以存放学生材料的变量51Testing软件测试网 p/D5j&t7}CU]
  随机文件中,所有的数据都将保存到若干个结构为Student类型的记录中, 而从随机文件中读出的数据则可以存放到变量Stud中.之后我们就可以打开并读写文件了.
rkI QU`&L051Testing软件测试网5LI2u [a3u$EZ%bQ:w
随机文件的操作语法格式:51Testing软件测试网\E RuIt(VF
Open filename For Random as [#]filenumber Len = Reclength
Y$`"_tN/LhEK0  说明:
k#K R5Q^H9qV fHK0  (1)参数filename 和filenumber 分别表示文件名或文件号.51Testing软件测试网gE9lX](y8}
  (2)关键字Random 表示打开的是随机文件51Testing软件测试网.fB:V_a5CRHu3P
  (3)Len子句用于设置记录长度,长度由参数Reclength指定.Reclength的值必须大于0,而且必须与定义的记录结构的长度一致.计 算记录长度的方法是将记录结构中每个元素的长度相加.例如前面声明的Student的长度应该是2+20+2=24字节.
-B'u;s:z LK*f0打开一个记录类型为Student 的随机文件的方法是:
~!g j;v,DP"mjS0Open "c:\Student.txt " For Random As #1 Len = 2551Testing软件测试网6\hUWHHj

h7iM}.A'M3y/[0这里还有一种文件操作方式二进制文件,下边是他的语法格式:
`Z^.SI,jo%Q0Open pathname For Binary As [#]filenumber51Testing软件测试网 RvT8R-P
  说明:51Testing软件测试网5C Oyk Ok,n
  (1) 参数filename 和filenumber 分别表示文件名或文件号.
n_%N ~In0  (2)关键字Binary 表示打开的是二进制文件
$~3t2JE[f-A0  (3)对于二进制文件,不能指定字节长度.每个打开的二进制文件都有一个自己的指针,文件指针是一个数字值,指向下一次读写操作的文件中的位置.二进制文件中的每个”位置”对应一个数据字节,因此,有n个字节的文件,就有1到n个位置.51Testing软件测试网 M5q\e.H,|

1PG O0M+mOmW6}0  我们可以用Seek()函数返回当前的文件指针位置(即下一个要读写的字节 );用Loc()函数返回上一次读写的字节位置,除非用Seek语句移动了指针,Loc()返回值总比Seek()的小1.我们来看下面的例子:
*I*Nq`U!fkM0Open “路径:\student.txt” for Binary as #1    该语句用二进制的方式打开了student.txt文件.51Testing软件测试网ak`p|? G9O+C&`e

V/^2]l6s0不同文件类型的操作:51Testing软件测试网)e2e6|V)B8~2U
51Testing软件测试网 N Qk#RWil
一)读文件51Testing软件测试网$di'cQ/xn
  1、顺序文件
k Q(u HDg1ll;W b?8J0  顺序文件的读取有三种方式:
(d*a/a(rl,LvP7zQb0  (1)Line Input # 语句51Testing软件测试网6n.R(Rp p[k E{
  该语句从打开的顺序文件中读取一行数据。这里的一行指的是从当前指针位置开始到回车符或回车换行符之间的所有数据。Line Input # 语句的语法格式如下:51Testing软件测试网`I}"Ipk1q2dyu
       Line Input # 文件号,变量号51Testing软件测试网&G#g Hx6p+uV6S%h
  说明:“文件号”是打开文件时所用的文件号;“变量号”使用来存放读出数据的一个或多个变量,如果有多个变量,中间用空格分割开。Input# 语句为参数列表中的每一个变量读取文件的一个域,并将读出的域存入变量中。该语句只能顺序的从第一个域开始,直到读取想要的域。51Testing软件测试网mS'P"t L J`}M"c
  请看下面代码:51Testing软件测试网&N/M dd bP;b M
51Testing软件测试网;Pgz&AN)l9fV
   Dim strLine As String51Testing软件测试网9\e-z5sC"AC
   Dim VarValue as String51Testing软件测试网"IC'z@*T(Nkh q
   51Testing软件测试网,i.hwJ.AO{+J/q
    Open "c:\test.txt" For Input As #1
Tk%p+U0C0    Do Until EOF(1)
+T&C0]+L Cn0     Line Input #1, strLine
Z{*x1q-A.K$s0    VarValue = VarValue  + strLine51Testing软件测试网Sh5U/ev ^8h
Loop
5C2\NP{4l0
H!]8ee CN:NVWT*WvL0fa0Close #151Testing软件测试网r D4NLX\b

;}8b,oyl8_*L!o0  此段代码逐行读取一个文件到一个变量字符串中。
9e3Zo2o m3L051Testing软件测试网`X}"Pv6j$X$I
  (2)Input函数
:N)A)}.gk051Testing软件测试网ASW/QmZ
  此函数可以从顺序文件中一次读取指定长度的字符串。具体地说,就是从文件的当前位置开始,读取指定个数的字符,然后将他们返回。Input函数可以读取包括换行符,回车符,空格符等在内的各种字符。下面是它的语法格式:51Testing软件测试网Zb&{0Wof$Ds0rwv

+p(B$q O1M,Z"vS0  变量 = Input(串长度,文件号)51Testing软件测试网XLE-M}x&T

\7[k`o4Y&])me}f0  例如,要从一个打开文件中读取12个字符并复制到变量file中,我们可以这样写:
M4P!d@oW(_\051Testing软件测试网;}4q S} o0Y9Y*s
file = Input(12,filenum)
IztX i3_051Testing软件测试网?m{"a6C
  如果要将整个文件复制到变量,请使用InputB函数将字节从文件复制到变量。由于InputB函数返回一个ASCII字符串,因此,必须用StrCopy函数将ASCII字符串转换为Unicode字符串。代码如下:51Testing软件测试网p!Dn&q*p b:V-{&Ul4r
51Testing软件测试网 C2z^r0k jo
file = StrCopy (Input (LOF(filenanum),filenum),vbUnicode)51Testing软件测试网L'UO K)P_3A
51Testing软件测试网v7tY `ca
  (3)Input # 语句51Testing软件测试网e-WtM~'@
  Input #语句可以从文件中同时向多个变量内读入数据,而且读入的数据可以是不同类型的。 
j&C K%S ?;[K0  下面使它的语法格式:
7AL"K(C8b@ o#x0
*\4Q:Yl4iFj [0Input # 文件号,变量列表
rWuz@!^u051Testing软件测试网Q6o:K J(N4S
  例如,我们要在文件student.txt中写入数据,下面是代码:51Testing软件测试网.{ { kZT~

4mcxy4E;A.~0Open "student.txt" For Output As #filenum51Testing软件测试网 p$V X6[H,u q

p T"b+X M$P#B!S^0Write #filenum, "张三", "初一年级", 1451Testing软件测试网T3]r"S5y-o v8ty&F^
Write #filenum, "李四", "职业高中", 18
.vl pd/{#h0
rK,?}X*OMU2d }/C0Dim name As String, nianji As String, age As Integer51Testing软件测试网 CCg{n-g{.t:^
Dim name1 As String, nianji1 As String, age1 As Integer51Testing软件测试网Q+E3X-{VY7[(j1Y
Open "student.txt" For Input As #filenum51Testing软件测试网 GAG C/n}V?
Input #filenum, name, nianji, age
-mq`H/bA%L3R \&Z0Input #filenum, name1, nianji1, age151Testing软件测试网kv!ZE~d(c l
Close #filenum51Testing软件测试网 @ L&G^fH]sL
51Testing软件测试网+} |e{rt#e
  执行结果:51Testing软件测试网r5mUd5s7`%_

T1t*gN`,]0name=”张三” ,nianji = “初一年级” ,age =1451Testing软件测试网 Tuh7_5e
51Testing软件测试网Q^ I+dv [
name=”李四” ,nianji = “职业高中” ,age =18  51Testing软件测试网/qe'`'o,R6WWZ e
51Testing软件测试网+K(kQ1CzO @sY3?
  2、随机文件
[ @}he9^P"_J0
p(z5x#y5N bm0  读取随机文件是可以使用Get # 语句,数据从文件的一个指定记录中读出后,存入一个用户自定义的变量中.51Testing软件测试网)P0q(Wvm!h

3X-T,SFi0E'az0  语法格式: Get # FileNum ,[RecNum],UserType51Testing软件测试网9BFz5@J a

+s*KN4Trx4{cQ0  说明:51Testing软件测试网$[L+W1ZaZ+za

@5mk;Ay,c1e*Aqv0  (1)FileNum 是要打开的文件号;RecNum是要读取的记录号,若省略,则读取下一个记录51Testing软件测试网"l{jM!vZ n?
51Testing软件测试网6~]zt L? @~
  (2)UserType 是一个用来存放读出数据的用户自定义的数据类型变量.51Testing软件测试网:OSJLjw%PnT9p

Fnr@b*g4Fd0  下面是一个例子:
a/xEHnV.@$p'Z051Testing软件测试网p#A.K!?C"m&^
Get # 1,5,Student  
+Rz)^'Tk*_L z!b;d051Testing软件测试网4BxO:M`
  该语句读取文件号为1的文件中的第5条记录.
s&PPn ~I+o0
~`6z g/EJ#m4J0  3、二进制文件
Z;_VE c4f$w5u0
V'C2ww_ OD2?0  读写二进制文件的方法和读写随机文件的方法基本相同,下面是相关的语句格式及其说明:51Testing软件测试网Kn:QMS&k)F }

%{&GR{!U$B(@0  格式: Get [#]fileNumber ,[Pos], Var51Testing软件测试网 V j&Q;K MB
51Testing软件测试网K"Y5{ t2n1p_Qw^
  功能: 用二进制方式,从文件的中指定的位置开始读取,所给变量长度的数据
j0h[:D aD(o5S0
5x"]u8ig o@;\0  说明:51Testing软件测试网J,^5nX3m;{$p2O
51Testing软件测试网jRf|}5t T9@"r/H
  (1)FileNumber是以二进制方式打开的文件号.51Testing软件测试网0_,F"Ram:E#H8M
51Testing软件测试网U:z$~] }
  (2)Pos用来指定读写操作发生时的字节位置,若省略,则使用当前文件指针位置.51Testing软件测试网M5r,d3i ym+_V

E,v9or7Ez%MEr0  (3)Var是用来存放读出的数据的变量.该语句会自动根据var变量包含的字节长度读取适当的文件,如果Var是一个可变长度的字符串变量,则传送 的字节数等于Var中目前的字节数.对于文件长度的判断我们可以使用Lof()函数,Eof()函数检查文件的结尾位置.
#V"gH['S4g'U)j051Testing软件测试网$H{7o7a~kA5gf*f"S
  下面的代码复制studert.txt文件到student1.txt文件中
H*zb|[0
O^7Wv&Y0Dim ar As String * 1, i As Integer51Testing软件测试网 wga7GE
Open "c:\student.txt" For Binary As #151Testing软件测试网EFRh SRW"T
Open "c:\student2.txt" For Binary As #2
)M#o0cx0w2B8@0For i = 1 To LOF(1)
;m lep!f z.sBjE0 Get #1, , ar
-U M5h8LC)V0 Put #2, , ar
vyp4NAS0Next i
h{)Po(C y9_C G:o051Testing软件测试网3kMRV[;L
Close #1, #251Testing软件测试网#nt-D2R!` |
二)写文件51Testing软件测试网Gz w[M0i9V
  1、 顺序文件
g1\2u1~3?9x7DJ$[0  写顺序文件我们可以用Write # 和Print #语句向一个已经打开的文件中写入数据.
Z'?0s+P4j0  下面是他们的格式和说明:
:Q+@.j5ui n_v0
HX4TI%tkA0  Print # 的语法格式:
j? s~ ^t;P051Testing软件测试网 NS)gS8zb
  Print # 文件号,变量列表
qFlVS1U051Testing软件测试网6_\2ghD
  例如,将文本框中的文本写到文件中,代码如下:
Q-~$N4U0?051Testing软件测试网ffc |7{(w*s)N
Open "file.txt" For Output As #filenum
"B4^)m|*K$h051Testing软件测试网s*q3n C'OoUTxI
Input #filenum, text1.text51Testing软件测试网Z9_ xsP? d

Muh~?X5`4U#C @0  Write # 语句的语法格式:
&} p5^,v CYc(T1K!x051Testing软件测试网j#[+_9Pd.@+fT
Write # 文件号,变量列表51Testing软件测试网;V5[9Hq%~$A6~
51Testing软件测试网ZSWz6TqM9gE
  说明:用Write # 语句写入的信息便于以后用Input #语句来读取数据,因为Write #语句自动将写入到文件中的信息用逗号分开,并为字符串数据加上双引号.例如:51Testing软件测试网 X-lzd9R[t
51Testing软件测试网3{0j G/F2]co
Open "student.txt" For Output As #filenum
};Ob&u0Qpwfd8b0
gLnxo\ w W0Write #filenum, "张三", "初一年级", 14
iTT'^y|3qqW0Write #filenum, "李四", "职业高中", 1851Testing软件测试网 U{d6R`c"A_EW
51Testing软件测试网 H9M D'II)S;i-t1S*n
  2、 随机文件
a/t(hi%O)T0ON"H0
n(Y ]6Nu$E$d0  向随机文件中写入数据,使用Put #语句.语法格式如下:51Testing软件测试网|A:YL-w*S]2|3|*u$o*f
51Testing软件测试网hN(|0X t7Z!QI
Put [#] FileNum ,[RecNum],UserType
-n+bYx&Zi6\8l2]0
+f;Ywdp/nN P%d/x0  说明:
3Mu V%Gf&I0
'wg |&p*G{0  (1) FileNum 是要打开的文件号;RecNum是要写入的记录号,若省略,则再上一次用Get 和Put语句所读写过的记录的后一条记录中写入,如果没有执行过Get 和Put语句,就从第一条记录开始
1va0m_.WxDuu0
t.{{*iX5^L0  (2)UserType 是包含要写入数据的用户自定义的数据类型变量.例如:我们向前面的student.txt文件中的第5个记录写入数据,可用这些语句:51Testing软件测试网q-M3`,P_]i
51Testing软件测试网?,K1_'nYH
stud.No = 0301
RO!kYwX(a]K[R0stud.Name = “王武”
t*p myUVfC!C0stud.Age =20
+klO'Vj"A;]hK]0Put #1 ,5,stud
C6p,B*@3aAt051Testing软件测试网r Qlg GB Q
  如果要插入的数据不只一两条的话,首先要确定文件和每条记录的长度,这样就可以计算出文件中究竟有多少条记录.我们可以用Lof()函数返回文件的长度,Len()函数返回每个记录的长度,计算文件中的记录个数可以用文件的长度除以给个记录的长度.示例如下:
-iA4ta%pZfo(r051Testing软件测试网5cw%m1H'{&p;YH
Nextrec= (Lof(1)\Len(UserType))+151Testing软件测试网o-~%eKy+c%j
51Testing软件测试网}V5iH0S`Wv:f
Put #1,Nextrec,UserType
%zP'M f(gg4j051Testing软件测试网*^Z$hbu"H"h rR ?
  3、二进制文件
!A"K|q+EA#J+a5qE Q051Testing软件测试网F4M$T [a:V@9A
  下面是以二进制方式写入文件的语句格式及其说明:51Testing软件测试网 LGg+m(U4w$}
51Testing软件测试网i4A+O1z0j*uA
  格式:51Testing软件测试网8L~s {,z4@:fP
51Testing软件测试网*fk2e7kxN[a6i
Put [#]fileNumber ,[Pos], Var51Testing软件测试网 g ~|@TN8h
51Testing软件测试网(kvS0G\:U,C,EI&_XC
  功能: 用二进制方式,从文件的中指定的位置开始写入,所给变量长度的数据
0b$d ON.e*L,A051Testing软件测试网&fmwE.A;o
  说明:
5x w]ng @%u}(j+Zz0
| y#~vK"P4_0  (1)FileNumber是以二进制方式打开的文件号.51Testing软件测试网3M'f'Ow0@BN

'M],eT D0  (2)Pos用来指定写操作发生时的字节位置,若省略,则使用当前文件指针位置.
U?T&UL,`D x0
Cue lT Z/R%\0  (3)Var是用来存放写入的数据的变量.该语句会自动根据var变量包含的字节长度写入文件,如果Var是一个可变长度的字符串变量,则传送的字节数等于Var中目前的字节数.
rMC eJ051Testing软件测试网s(S G4`UrD{
  使用方法可参考二进制文件的读操作.
;tAIJ6f V!rh*q0
.Y,J1o Wgx0l4l0我们在进行系统自动化功能测试的时候,需要Robot从外部文本文件中读入到变量中,类似于实现数据池(datapool)的功能,这时可以通过对文件操 作的几个语句来实现,其中 Open 语句能够对文件输入/输出,LOF函数返回一个 Long型值,表示用 Open 语句打开的文件的大小,该大小以字节为单位。Input函数从文件中读入数据,而Print函数则把数据写到文件中。下边是个代码例子51Testing软件测试网*`[/sd7` B a!u|
 Sub Main51Testing软件测试网Ml3[`W:J
       Dim Result as Integer51Testing软件测试网CsnowK
       Dim filename as String51Testing软件测试网)w,eA}&hMtM
       Dim VarValue as Strng 51Testing软件测试网3gp t T,G+@H
          51Testing软件测试网C^d6QI*N
      filename="c:\myext.txt"51Testing软件测试网Vw'j3S1l6` \`(H-^ o
  Open filename For Input As #151Testing软件测试网6Fi A&pS A|
    VarValue = Input$(Lof(1),#1)51Testing软件测试网6Fy @{;~bK.s1N,W
  Close #151Testing软件测试网)\qXy%^*q#g
   End Sub51Testing软件测试网d9_+mj F$[7?:x#L

5kg2Z#W]-H7V Q^/e0那么如何把变量写回文本文件呢?下边是个例子程序:51Testing软件测试网Iec*t)P8JLgt

GOJ!EYzQb,b4G0Sub Main
5Ia%Tm$u"^L:yGk0       Dim Result as Integer
\ `)~ }i[A0       Dim filename as String
JTW0n"z8j1y0       Dim VarValue as Strng 51Testing软件测试网5Go+|p.olrA

;kPJn*s4B+?&n$kp8T0        VarValue = “这是一个测试”51Testing软件测试网g\'C]/AV$K
51Testing软件测试网*A N/N9gy
   filename="c:\myext.txt"51Testing软件测试网/Q"`u ['Q(sK f w-m
   on error resume next51Testing软件测试网f'TIkK`|B?7p
   open "c:\file.txt" for output as #1
'?ZS%} CsCv.K0   print #1,varValue51Testing软件测试网ZO!ML } F
   close #1
@3{8e9t5nq051Testing软件测试网0vrX7@[r
end sub
9WOZ[j+WM0

TAG: Robot技术

 

评分:0

我来说两句

Open Toolbar