常见问题整理
[这个贴子最后由闰土在 2005/01/23 10:43pm 第 1 次编辑]2 b/ h/ c4 o8 M
8 }0 q1 J) d* R5 l! D, o网友[wolfman ]) V* f" ~4 v4 p0 t" s
一些常用函数
$ E9 G6 P" q. v0 dRandom
' d9 _: S& Q& j7 J3 nnumber:=Random(min, max, units) 5 \) P9 S" p3 q. Y1 w
在min与max两个数值之间 产生一个乱数 其单位为units所指定的位数
. e* e0 z/ ^9 \$ x e/ wRandom(1, 10, 1)表示从1到10之间 产生一个整数的乱数 3 X$ s1 ]' V! I+ A1 J# Z6 ~& I
Random(1, 5, 0.1)表示从1到5之间 产生一个含一位小数的乱数
/ t/ G' r2 d# J8 x9 g7 eMouseDown , o6 h3 n2 s5 I% @8 r2 z& v( ]
MouseDown
5 K* v9 s4 b" l" ?( D) P如果使用者按滑鼠的左方按键 此变数值为真
3 }0 r1 p I) y5 |# Q: J6 B- t9 pSoundPlaying
' m# Y2 X2 X- _SoundPlaying ; l' G( s$ [7 i9 [$ b: X \
本变数值为真表示目前系统正在播放声音 否则为假 + N( O$ v j$ E$ Y
MoviePlaying / M4 h# e" o6 U% `1 g6 w
MoviePlaying
5 N& Q; u' C6 m8 [# h, `8 X本变数值为真表示目前正在播映数位影片 它可以用於同步的控制 当影片正在播映时 若设定此变数给一个声音对话方块中的Start Playing When TRUE栏位 表示当影片开始播映时 就同时播放声音 结果就变成影片的配乐 可以省去重新编辑影片的时间 8 D+ R1 f( f. ^9 B+ j _
Movable
7 l# j W* B) X, E, K- tMovable@"Icon title" 7 V6 Z" Z. M0 {+ C) @# Z! ?
当指定图示中的图形可以被移动 则本变数值为真 其最主要的用法是设定图形是否可以移动 若设定其值为假 则无法移动图形 否则皆可以移动图形
6 M& p4 G8 n# IFullDate
( g1 ]7 e% Z9 S% R9 v2 y1 d+ N yFullDate
& b7 T( J7 t* E. `$ Y# s完整的日期的名称 依照使用者所设定地区的格式为准
* U% r$ Z3 l A6 }- GFullTime 3 l: ]. B# h3 @ W5 V1 w
FullTime & x. Z+ b5 f9 Y+ ?' |! t
现在的时间 可以是12小时制或是24小时制显示 依照使用者於Windows Control Panel的设定 以12小时制(4:55:56)或24小时制(16:55:56)显示时间 6 F* A- q+ b0 P' v$ T
Quit
2 {/ u1 y4 u* hQuit(options)
! Z6 V1 X- |% n( t9 w& a ]! x依照 options 来跳离执行的动作 选项有下列三种
% Y* T E7 p: m7 A+ B数字 结果
& D3 `$ W3 c* J' S9 z0 跳到程式管理员之下如果它是被主程式所乎叫 则会回到主程式中 ) ~$ I* |% `' j: a% O' c
1 跳到程式管理员之下
C9 D* d( k. w" }9 ]' l) s% W2 跳到 DOS 之下 - V3 ], x, Z9 h7 E" c
' o) e' ?' i- _5 m L" p7 X2 F. WEntryText
C* H3 A" A. SEntryText@"Icon title"
% c0 ?, l5 L7 V( z在文字输入式交谈中 使用者所输入的字 在进入交谈时 变数就会马上被更新 而且每经过一个回应也会更新它的值 : b% g7 }" o2 e3 |* v
PresetEntry M/ t; s& ?& n- q' C J" O' b& T
PresetEntry
+ U5 H% ?: A$ l- J8 Z+ x若在进入交谈之前 先给这个变数一个字串值 本变数之值会自动出现在使用者回应的文字输入区域之内 使用者可以输入其它的文字即可 或者也可以修改PresetEntry的文字 以输入日期为例 我们可以在进入交谈之前 先设定PresetEntry的值为“民国 年 月 日” 所以使用者只要填入数字即可 , B0 c; L& {6 @" E
Icontitle + a7 j$ q& f' R( ?" [
string := Icontitle(IconID)
3 R! k9 M: O2 q0 o查询某个图示编号IconID所相对应的图示名称 如果直接在同一图示上使用此变数 则可以不需要引数 而变数的内容表示此图示的名称 ; m; k" |* W# n b* {* P& u
GetLine
% R0 g- p( i p0 `7 Ustring := GetLine(string, n)
0 p; T8 @; y( M B; {8 l9 j6 m5 Istring := GetLine(string, n, m) . [0 u' j$ m {6 R% Z9 q& M
取得字串中第n行的字串 加入m引数表示取得第n行到第m行中间的字串 引数delim则表示此字元为新的隔行字元(一般的隔行字元为Return) ' n: a2 ^" V6 Y: G0 x# f
DeleteLine ' M1 C" w. q! I% m
string := DeleteLine(string, n)
) f R- A, w6 @& cstring := DeleteLine(string, n, m)
: c( d/ x! C+ m9 A0 D; k! ~string := DeleteLine(string, n, m, delim) I7 a' ^7 Y: [/ x
删除原字串之第n行子字串 若加入m引数 则表示将原字串删除第n到m行 引数delim则表示此字元为新的隔行字元(一般的隔行字元为 Return)
, _* r) `+ g+ R& cInsertLine 8 P3 Z2 {* `7 X8 }+ ^. K" M
string := InsertLine(string, n, newstring)
x- f; c$ O" `$ N! m2 cstring := InsertLine(string, n, newstring,delim)
8 F1 _' d. H! w3 T3 _将新字串插入原字串第n行之後 如果n为0 则新字串成为第一行 引数 delim则表示此字元为新的隔行字元(一般的隔行字元为 Return)
. ]9 J6 y0 n4 P" P& Q* `GetWord
2 v$ ]( O( O' z& Dstring := GetWord(n, string) - U$ {) `- J3 |% \" o* N
取得字串中第n个字 一般来说英文字以空白做为间隔 如果找不到则传回空白字串
I* I& P+ B' V) O) C+ e, xGetNumber
2 }* k; X9 l" m" w' p3 b- Rnumber := GetNumber(n, string) ) [4 }5 [" b- K9 N6 G
字串中若含有数值 此变数表示取得字串中第n个数字的数值 如果找不到则传回来的值为0 # a2 T; N; x- V8 y
LineCount
. y, I* }2 ]) @- ~7 @. {( [number := LineCount(string) - K, v$ l# N1 m' Q
number := LineCount(string, delim)
( r" z" ?8 h( J" g0 q _& S指定字串中的行数 但不包含最後的空白行 引数delim则表示此字元为新的隔行字元 一般以Return为隔行字元 利用此函数delim功能 可指定特殊字元为隔行字元 如TAB或逗点 V0 H- e2 Q+ n3 Z3 u/ I- J) x
ReadExtFile 2 C- R* X7 ], ` g
string := ReadExtFile(filename)
/ X: S8 M4 F8 z! S. x X读取指定的档案filename所有文字内容 并存成一个字串放在string变数中 但是档案的内容 必须以 ASCII 的格式建立
; U6 h& c) Z4 B! Z* I! zWriteExtFile
+ S# Y; o: _$ f8 CWriteExtFile(filename, string) 9 g8 ^0 H) E. P( S% p
number := WriteExtFile(filename, string)
, Q' b# q: H5 q) Z" v将string写到filename文字档案中 但是与AppendExtFile 不太相同的是它会将原来的文字覆盖 所以在使用WriteExtFile函数时 请特别注意 同样的 如果此文字档案不存在 则系统会自动产生档案
% o9 d- `1 W' A" W9 _: WAppendExtFile
3 G$ b5 O$ i8 yAppendExtFile(filename, string)
" i/ I X4 ~0 onumber := AppendExtFile(filename, string) , R3 z- ]* k0 l
将string加在文字档案的最後面 此函数与WriteExtFile不太相同 因为WriteExtFile会产生档案 而AppendExtFile不会产生新档案 它只是找到档案 然後在档案最後将字串加上 4 X5 i7 V) j$ d7 I* M! t
如果找不到此档案名称 则系统会自动产生此档案 这是个很特殊的功能 如果想要为新的使用者产生档案 直接使用这个功能即可
/ Z6 i+ c0 d. w) [/ U3 P% CRecordLocation + h' @9 O7 B r* N5 E8 B
RecordLocation 6 ^0 @$ N/ Q q
Authorware在执行的过程中会记录下一些系统的状态 此变数即表示系统记录Record的路径位置 当使用者使用跳跃的功能时 A3W允许记录原来的状态 这个记录的位置就是RecordLocation的位置 这个目录在安装A3W时 就会自动产生 4 _' e+ q3 m7 ~& G5 d2 R
FileLocation 7 o% N5 ]! s p
FileLocation
9 W; k4 q1 R3 Z7 I* }指出目前执行中档案的路径位置 在引号中的字串特别要注意的地方是反斜线的写法 在此地一定要多加上一个反斜线 因为这个符号在引号中有特殊的意义 + ?8 v8 W$ o# c! E" ?+ r, O# K2 k
SearchPath
0 o, G+ U7 R2 ^6 z% eSearchPath
3 {& X( `7 {2 `. p指定外部搜寻档案的路径 在File Setup指令的对话方块之中 有个栏位含有搜寻路径的位置 如果在栏位中输入搜寻路径後 SearchPath变数中的值就会与它相同 就是说变数的值即为栏位中的字串 8 ~, R* _; Z# p' G
Eval
1 } O4 c; K/ hresult := Eval(expression) : }% m7 s* _' s, G4 S8 q3 s
result := Eval(expression, decimal) k% F) K, v9 i& |
result := Eval(expression, decimal,separator) 6 W" V9 H" @. U; E( C! [ u
函数将会审视表示式expression 然後将结果值放置到result中 result将为一个表示式 若表示式有任何的问题时 系统变数EvalStatus与EvalMessage将会存放此值 若想要在表示式中放置指定值的式子时 请使用EvalAssign函数 後面的二个引数decimal与separator可用来指定小数位的分隔字元与位数 K/ C$ Y1 R% s$ O+ z% U5 [
EvalAssign
+ q; X) B. f5 [5 j$ |result := EvalAssign(expression)
5 W0 ?' I/ [' |9 D: Hresult := EvalAssign(expression, decimal)
8 H1 z% K- Q/ J/ |' B8 j( q1 Nresult := EvalAssign(expression, decimal, separator) ! f9 b: ^2 i( _- f. G- r- b
此函数与Eval大致相同 只是它主要用来做指定值之用 0 G& B$ x" v( O1 Q
Test 5 C& t6 S" P8 w3 z- @; j4 `1 J
Test(condition, true expression, false expression)
6 Z& U% k5 y9 E2 E这个指令与if...then有异曲同工之妙 condition为判断式 若此判断式为真 则执行true expression中的表示式或指令 否则执行false expression之中的表示式或指令 , y% X/ s# B. }; \ c- X
UpperCase . m8 S- o h& t
string := UpperCase(string)
- W. C% g, E( W3 d$ p将字串中所有的小写字元改为大写字元 , x& E9 G+ B7 ^- q$ \2 i& m
LowerCase
$ s) q& w' E4 Y4 z `+ z1 Kstring := LowerCase(string) 7 M6 M1 A2 [! U
将字串中所有的大写字元改成为小写字元
1 d! H; J3 M) u. vCapitalize
+ Z/ u8 H: }/ c$ s uString := Capitalize(string) 5 {% M" R, q. u( S% |
String := Capitalize(string,1)
1 Y% W) D/ p$ b6 S3 u1 o9 r) S% @将指定字串中全部或第一个字母改为大写文字
3 f% u% \1 a2 gRestart
) w c( ]# q. b9 O% _/ vRestart() + ^, ^6 \( q E
重新执行本程式
& V3 q. L, ^8 m0 x: LChecked
" @+ F* Z2 {8 _3 OChecked@"Icon title" $ O0 A4 d( d( Q# s: E
图示之中含有按钮时 若此按钮的状态为设定按钮中四种状态之一的结果时 本变数的值将为真
) m4 {0 I' L; u/ k# D0 m0 `+ nJumpFile JumpFileReturn ' c T: t. {2 U9 W# N, A# \
JumpFile("filename")
7 r$ P) q( K& M- X, C7 xJumpFile("filename", "variable1, ...")
; P* G6 x* _( w1 T+ W; q' C, ^JumpFile("filename","variable1,...","directory") 1 Z6 f7 u9 w @. \' S
JumpFileReturn("filename") + z* ^7 _2 \' R
JumpFileReturn("filename", "variable1, ...")
g/ ], K- t8 Y! W3 b+ `& {JumpFileReturn("filename","variable1,...", "directory") 7 |7 k1 N% [3 k
表示呼叫 A3W 的程式 JumpFileReturn虽然也是呼叫另外一个程式 但是系统会记得原呼叫的程式为何 当使用者离开被呼叫的程式时 就会回到原来的程式上继续执行
& o$ w$ ?1 O1 M, `; @如果想要与Quit函数配合使用 记得将Quit函数的参数设定为0
/ o& y' a: B( d# Y) ]9 T9 {4 ]第二个引数主要是给程式中间传递之用 可以指定那几个变数需要传给被呼叫的程式使用 这些变数就可以从原始的程式带到被呼叫的程式上
1 L& N; F2 _* T: ~8 k' O; {想要设定变数的名称时 有一个简便的方法 如果这些变数的名称都类似 则可以配合万用字元 * 使用 所有符合的变数都会传到新的程式中 % y$ t; g( H% _3 D6 z e
最後一个引数是设定记录record的目录 系统内定的目录为 Windows\A3w_data 可以改变这个目录 如果程式应用在网路上 使用者非常众多 这个引数就有必要存在 因为您可以指定每一个使用者一个目录 这个目会储存此位使用者所使用程式的过程 也就是记录档案会写在这个目录之中 如此当使用者开机时 就会读到自己的记录档案
$ K6 X6 G- t4 V m; z' h. EJumpOut JumpOutReturn ) q& o( m! O; `, b; N
JumpOut("program") ! Z' I: R6 K# S
JumpOut("program", "document") J6 W1 F7 ]$ }2 i3 [
JumpOutReturn("program") 9 s3 k2 L! g: o( W7 s5 w) H# E
JumpOutReturn("program", "document") ' o; t a8 S _6 W) [3 d U
这二个函数的功能与JumpFile相似 但是它们所呼叫的不是A3W程式 而是任何其它的程式 在program中所填入的就是这个程式的名称与路径位置
, O& v8 C( w/ j W( R第二个引数document则是传给新程式的文件 如果您所呼叫的是一个Word程式 就可以传给它一个文字档案 如此当Word开启後 也会同时开启这个文字档案 当呼叫程式出现错误时 可以查询IOStatus IOMessage看看到底错误在何处 / z# o/ l6 v1 b$ B! i. @/ f5 A
Round
- t7 b" Z; t1 ?7 [9 tnumber := Round(x, decimals) 9 c) ^) F0 k' }8 E+ r9 G
以decimals来指定小数位数 然後将值以四舍五入的方式传回新的值
# q! m3 I+ m9 r5 z. u$ A9 ]INT : a+ k; N3 Z7 i* |& E# ?- R2 w
number := INT(x)
5 F9 v! U" ^+ J, ^* L将x去掉小数之後传回其整数值
0 ^9 V, I% L: O2 VPi
4 T& e7 \7 o- S8 W. @Pi
: V$ K' J, n: u7 W5 T- s! s& |圆周率 3.1415926536... * N; S# Y& m7 N1 U" B0 U& J7 I
Return & |4 c) c* e8 N; {. k# ~0 y/ o5 @
Return 1 w) E6 u+ J/ t( `0 c- q ~
代表键盘上的Return字元
; l+ T4 A6 z W' mTab - ]. ^2 w! q. M z+ [' P2 v
Tab # a/ [9 P& e5 B# K
代表键盘上的Tab字元 " O6 d- P. R, c0 I& Y3 {7 e4 \
ChoiceNumber # O. t0 i. F* C7 ^/ m7 T# K- Y
ChoiceNumber@"Icon title" / t& n+ c1 A9 w& @
回应交谈图示的图示代号 图示之编号从左而右由1开始计算
+ [' P+ t* S* j1 lPressKey + s; O6 i% m- l: j7 x6 e
PressKey("keyname")
* d& \' X1 C& q8 j) q本函数执行之後就好像使用者按了keyname之键一样 ( x9 p- a& a) y; z8 I4 a
Key
! l, n4 F! i; k6 g! J- F' RKey - `% f, Q1 I; e3 p' n- o- t
使用者所按的键名(包含功能键与数字键) , v- {# V) b2 \2 M. p# i
KeyNum " V, l# I; L; R1 ~
KeyNum 9 \ U5 a1 k) x$ P# `# F
使用者所按的按键数值 Key代表的是字串 而KeyNum则为数值型式 3 Z6 v7 B5 T2 D
PathPosition 1 P9 v0 \- N# V. v6 \( q# I) ?
PathPosition@"Icon title"
7 L5 e5 l0 G- J' e( L+ [若图示中的图形有指定的移动路径 则本变数值为图形所在路径上的位置
( I2 F0 e# ~& N t' G) p" B0 l) M" NAllSelected
; C4 a7 p9 a& z6 L& u0 gAllSelected@"Icon title"
0 t. ~% y. s4 S/ e当决策图示中所有的子图示全部被选过後 本变数即为真 否则为假 ; D4 E& }, m( k( N. {6 t. m" p# q
PathCount
. n8 G6 i6 A2 ~0 Y$ uPathCount@"Icon title"
7 y. c7 D8 V9 ]; r1 a* t$ m0 R) F决策图示中的子图示数目
: T: D2 Q" @0 z0 x" H; ^3 G2 nPathSelected 5 B H# ] B. E! t, Y+ {
PathSelected@"Icon title" 1 n) O3 x' _; I# H$ `
决策图示中所分歧到子图示的位置(上一次所选到的位置) 位置以数目字表示 从左而右从数目字1算起
5 O$ p8 l/ S; [# |/ z' N9 P6 S) B/ T8 QRepCount 6 I; F% @! [7 b, W E3 l/ D
RepCount@"Icon title" ( {; J! w n: K# `1 f" a4 n
决策图示重覆执行的次数 : Q o# ^) M' D2 m( D0 `, z! i! |
SelectedEver ) [! M$ D# N8 @
SelectedEver@"Icon title" + X3 o2 V( S2 O$ p
如果变数中的图示曾被选到过 则变数为真 ( ~( ?0 m* E* r9 Q7 g7 p
ClickX ClickY
! A# C6 Z, j1 b2 M: CClickX _& j: u" w! A$ E$ f* w
ClickY
; N/ E" \: q1 G: {ClickX为使用者按下滑鼠左键时 游标所在的萤幕横座标 ClickY表示使用者按下滑鼠左键时 游标所在的萤幕纵座标 , z) ]* @& t5 N
Initialize
3 I& X6 {3 O/ n4 N, ~Initialize() 6 b) u2 |: x9 `
Initialize(variable1,..., variable10) ' _3 O t l: U/ k5 U4 t+ c; A0 t
将指定的所有变数回覆到其原来的初值 若使用指定变数 最多一次只可以使用10个变数
8 D) M' P1 o( C4 y2 O& Q4 H
W4 M) |1 T8 J- H5 ?$ z, m$ U " l. w/ D/ p, f }4 w5 A# n1 s: h
5 y6 w/ L g: j0 G8 {曾安德 编著
/ J9 j( w# o& X( H2 n- Q