Code Center for pre v5.2 Users
Version 5.2 rendered the following code redundant, by replacing them with new
internal commands. I leave them up here for those who have not yet upgraded or
for special situations.
Best way to use this page is to use your browser File - Save As function and then load
the page into Vedit to copy the code you want.
Register Usage
Register ranges included both text and numeric registers
Input Registers : 10 - 19
Output Registers : 20 - 29
Working Registers : 30 - 49
Main Temp. Buffer : 33
Secondary Temp Buffer : 34
// transfer number in a text register to a numeric register
// text register 10 holds the number to transfer
// numeric register 20 hold the transferred number
#30=buf_num // save current buffer #
buf_switch(33) // switch to temp buffer
buf_empty(ok) // empty buffer
reg_ins(10,begin) // insert t-reg 10, stay at start of buffer
#20=num_eval() // evaluate number or formula at edit position, store result in #20
buf_switch(#30) // return to original buffer
// transfer number in a numeric register to a text register
// numeric register 10 holds the number to transfer
// text register 20 hold the transferred number
#30=buf_num // save current buffer #
buf_switch(33) // switch to temp buffer
buf_empty(ok) // empty buffer
num_ins(#10,left+nocr) // insert n-reg 10, left justified, no newline characters
#31=cur_pos // save end of number file position
begin_of_file() // goto start of buffer
block_begin(cur_pos) // set block begin at start of number
block_end(#31) // set block end at end of number
reg_copy_block(20,block_begin,block_end) // copy block to t-reg 20
buf_switch(#30) // return to original buffer
// split a filename into it's name and extension parts
// designed to work whether filename has an extension or not,
// or might not be filename assigned to current buffer
// text register 10 holds the whole filename
// text register 20 holds just the name
// text register 21 holds the extension including the dot
// numeric register 20 holds the "has extension ?" flag : 0=yes 1=no
#30=buf_num // save current buffer #
buf_switch(33) // switch to temp buffer
buf_empty(ok) // empty buffer
reg_ins(10) // insert filename into temp buffer
#31=cur_pos // save file position of end of filename
begin_of_file() // goto start of file
#20=0 // set "has extension ?" flag to 0 (yes)
search(".",noerr) // search for the dot
if(return_value==0) { // if no dot, then no extension, so do ....
reg_empty(21) // ensure output t-reg 21 contains no text
#20=1 // set "has extension ?" flag to 1 (no)
#32=#31 // set #32 to #31 for following code
} else { // else there is a dot, so do ...
#32=cur_pos // save file position of dot
} // end of else
block_begin(0) // set block begin for name portion
block_end(#32) // set block end to dot position or end of name
reg_copy_block(20,block_begin,block_end) // shove name into t-reg 20
if(#20==0) { // do only if file has extension
block_begin(#32) // set block begin to dot position
block_end(#31) // set block end to end of text
reg_copy_block(21,block_begin,block_end) // shove extension into t-reg 21
} // end of if
buf_switch(#30) // return to original buffer
// split a full filespec into it's component parts of :
// drive letter, path, filename, extension
// text register 10 holds full filespec ie c:\data\letters\dearjohn.doc
// text register 20 holds drive letter ie c
// text register 21 holds path ie \data\letters
// text register 22 holds filename ie dearjohn
// text register 23 holds extension or maybe empty if none ie .doc
#30=buf_num // save current buffer
buf_switch(33) // switch to temp buffer
buf_empty(ok) // empty it
reg_ins(10) // dump in full filespec in t-reg 10
#31=cur_pos // save end of filespec position
// get extension
search(".",noerr+reverse) // do reverse search for dot
if(return_value==0) { // if no dot, then no extension, so do ...
reg_empty(23) // empty extension register
#32=#31 // set dot position to end of filespec position
} else { // else there is an extension, so do ...
#32=cur_pos // save dot position
block_begin(cur_pos) // set block begin to dot position
block_end(#31) // set block end to end of filespec position
reg_copy_block(23,block_begin,block_end) // shove extension into t-reg 23
} // end of else
// get filename
search("\",noerr+reverse) // do reverse search for a \
#33=cur_pos // save \ position
block_begin(cur_pos+1) // set block begin to start of filename
block_end(#32) // set block end to dot position
reg_copy_block(22,block_begin,block_end) // shove filename into t-reg 22
// get path
search(":",noerr+reverse) // reverse search for the drive colon
block_begin(cur_pos+1) // set block begin to start of path
block_end(#33-1) // set block end to end of path
reg_copy_block(21,block_begin,block_end) // shove path into t-reg 21
// get drive letter
begin_of_file() // goto start of buffer
block_begin(cur_pos) // set block begin at start of buffer
block_end(cur_pos+1) // set block end to next file position
reg_copy_block(20,block_begin,block_end) // shove drive letter into t-reg 20
buf_switch(#30) // switch back to original buffer #
Return to Code Center
Return to Table of Contents