See changelog 20000304 08:20

This commit is contained in:
Luiz Rafael Culik
2000-03-04 11:24:29 +00:00
parent e4fbc06b47
commit 4c558d32c4
8 changed files with 170 additions and 228 deletions

View File

@@ -1,3 +1,16 @@
20000304-08:20 GMT-3 Luiz Rafael Culik <culik@sl.conex.net>
*utils/hbdoc/genrtf.prg
*source/tools/rtf.prg
*small changes
*utils/hbdoc/genhtm.prg
*Fixed warnings reported by Andi
*doc/en/rdd.txt
*some docs changed
*doc/en/set.txt
*doc/en/browse.txt
*doc/en/string.txt
*Small formating
20000303-17:50 GMT-3 Luiz Rafael Culik <culik@sl.conex.net>
*utils/hbdoc/genrtf.prg
*small changes

View File

@@ -34,11 +34,11 @@
* [<xHeadingSeparators>], [<xColumnSeparators>],
* [<xFootingSeparators>], [<xColumnFootings>] ) --> lOk
* $ARGUMENTS$
* <nTop> coordinate for top row display. <nTop> could range from 0 to
* MAXROW(), default is 0.
* <nTop> coordinate for top row display. <nTop> could range from 0
* to MAXROW(), default is 0.
*
* <nLeft> coordinate for left column display. <nLeft> could range from
* 0 to MAXCOL(), default is 0.
* <nLeft> coordinate for left column display. <nLeft> could range
* from 0 to MAXCOL(), default is 0.
*
* <nBottom> coordinate for bottom row display. <nBottom> could range
* from 0 to MAXROW(), default is MAXROW().
@@ -131,7 +131,6 @@
* Esc - Terminate BROWSE()
* Enter - Terminate BROWSE()
*
*
* When DBEDIT() execute <xUserFunc> it pass the following arguments:
* nMode and the index of current record in <acColumns>. If <acColumns>
* is omitted, the index number is the FIELD() number of the open
@@ -140,15 +139,13 @@
* DBEDIT() nMode could be one of the following:
* ---------------------------------------------
*
*
* DE_IDLE 0 DBEDIT() is idle, all movement keys have been
* handled.
* handled.
* DE_HITTOP 1 Attempt to cursor past top of file.
* DE_HITBOTTOM 2 Attempt to cursor past bottom of file.
* DE_EMPTY 3 No records in work area, database is empty.
* DE_EXCEPT 4 Key exception.
*
*
* The user define function or code block must return a value that tell
* DBEDIT() what to do next.
*
@@ -224,30 +221,30 @@
* BROWSE() is a general purpose database browser, without any
* thinking you can browse a file using the following keys:
*
* Left - Move one column to the left (previous field)
* Right - Move one column to the right (next field)
* Up - Move up one row (previous record)
* Down - Move down one row (next record)
* Page-Up - Move to the previous screen
* Page-Down - Move to the next screen
* Ctrl Page-Up - Move to the top of the file
* Ctrl Page-Down - Move to the end of the file
* Home - Move to the leftmost visible column
* End - Move to the rightmost visible column
* Ctrl Left - Pan one column to the left
* Ctrl Right - Pan one column to the right
* Ctrl Home - Move to the leftmost column
* Ctrl End - Move to the rightmost column
* Esc - Terminate BROWSE()
* Left - Move one column to the left (previous field)
* Right - Move one column to the right (next field)
* Up - Move up one row (previous record)
* Down - Move down one row (next record)
* Page-Up - Move to the previous screen
* Page-Down - Move to the next screen
* Ctrl Page-Up - Move to the top of the file
* Ctrl Page-Down - Move to the end of the file
* Home - Move to the leftmost visible column
* End - Move to the rightmost visible column
* Ctrl Left - Pan one column to the left
* Ctrl Right - Pan one column to the right
* Ctrl Home - Move to the leftmost column
* Ctrl End - Move to the rightmost column
* Esc - Terminate BROWSE()
*
* On top of the screen you see a status line with the following
* indication:
*
* Record ###/### - Current record number / Total number of records.
* <none> - There are no records, the file is empty.
* <new> - You are in append mode at the bottom of file.
* <Deleted> - Current record is deleted.
* <bof> - You are at the top of file.
* Record ###/### - Current record number / Total number of records.
* <none> - There are no records, the file is empty.
* <new> - You are in append mode at the bottom of file.
* <Deleted> - Current record is deleted.
* <bof> - You are at the top of file.
*
* You should pass whole four valid coordinate, if less than four
* parameters are passed to BROWSE() the coordinate are default to:

View File

@@ -57,7 +57,6 @@
* 65 Share write only
* 66 Share read/write
*
*
* If there is an error in opening a file, a -1 will be returned by
* the function.Files handles may be in the range of 0 to 65535. The
* status of the SET DEFAULT TO and SET PATH TO commands has no effect

View File

@@ -1731,38 +1731,27 @@
* $SYNTAX$
* FIELDPUT(<nField>, <expAssign>) --> ValueAssigned
* $ARGUMENTS$
* <nField> is the ordinal position of the field in the current
* database file.
*
* <expAssign> is the value to assign to the given field. The data
* type of this expression must match the data type of the designated field
* variable.
* <nField> The field numeric position
*
* <expAssign> Expression to be assigned to the specified field
* $RETURNS$
* FIELDPUT() returns the value assigned to the designated field. If
* <nField> does not correspond to the position of any field in the current
* database file, FIELDPUT() returns NIL.
* <ValueAssigned> Any expression
* $DESCRIPTION$
* FIELDPUT() is a database function that assigns <expAssign> to the field
* at ordinal position <nField> in the current work area. This function
* allows you to set the value of a field using its position within the
* database file structure rather than its field name. Within generic
* database service functions this allows, among other things, the setting
* of field values without use of the macro operator.
* This function assings the value in <expAssing> to the <nField>th
* field in the current or designated work area.If the operation is
* successful,the return value of the function will be the same value
* assigned to the specified field.If the operation is not successful,
* the function will return a NIL data type
* $EXAMPLES$
* This example compares FIELDPUT() to functionally equivalent
* code that uses the macro operator to set the value of a field:
*
* // Using macro operator
* FName := FIELD(nField) // Get field name
* FIELD->&FName := FVal // Set field value
* // Using FIELDPUT()
* FIELDPUT(nField, FVal) // Set field value
* USE Tests New
* FIELDPUT(1,"Mr. Jones")
* USE
* $TESTS$
*
* $STATUS$
* R
* $COMPLIANCE$
*
* This function is CA-Clipper compatible.
* $SEEALSO$
* FIELDGET()
* $INCLUDE$
@@ -1776,88 +1765,31 @@
* $CATEGORY$
* Data Base
* $ONELINER$
* Lock an open and shared database file
* Locks a file
* $SYNTAX$
* FLOCK() --> lSuccess
* $ARGUMENTS$
*
* $RETURNS$
* FLOCK() returns true (.T.) if an attempt to lock a database file in USE
* in the current work area succeeds; otherwise, it returns false (.F.).
* For more information on file locking, refer to the Network Programming
* chapter in the Programming and Utilities guide.
*
* <lSuccess> A true (.T.) value, if the lock was successful;otherwise
* false (.F.)
* $DESCRIPTION$
* FLOCK() is a database function used in network environments to lock an
* open and shared database file, preventing other users from updating the
* file until the lock is released. Records in the locked file are
* accessible for read-only operations.
*
* FLOCK() is related to USE...EXCLUSIVE and RLOCK(). USE...EXCLUSIVE
* opens a database file so that no other user can open the same file at
* the same time and is the most restrictive locking mechanism in
* HARBOUR. RLOCK() is the least restrictive and attempts to place an
* update lock on a shared record, precluding other users from updating the
* current record. FLOCK() falls in the middle.
*
* FLOCK() is used for operations that access the entire database file.
* Typically, these are commands that update the file with a scope or a
* condition such as DELETE or REPLACE ALL. The following is a list of
* such commands:
*
* Commands that require an FLOCK()
* ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
* Command Mode
* ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
* APPEND FROM FLOCK() or USE...EXCLUSIVE
* DELETE (multiple records) FLOCK() or USE...EXCLUSIVE
* RECALL (multiple records) FLOCK() or USE...EXCLUSIVE
* REPLACE (multiple records) FLOCK() or USE...EXCLUSIVE
* UPDATE ON FLOCK() or USE...EXCLUSIVE
* ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
*
* For each invocation of FLOCK(), there is one attempt to lock the
* database file, and the result is returned as a logical value. A file
* lock fails if another user currently has a file or record lock for the
* same database file or EXCLUSIVE USE of the database file. If FLOCK() is
* successful, the file lock remains in place until you UNLOCK, CLOSE the
* DATABASE, or RLOCK().
*
* By default, FLOCK() operates on the currently selected work area as
* shown in the example below.
*
* Notes
*
* SET RELATION: HARBOUR does not automatically lock all work
* areas in the relation chain when you lock the current work area, and
* an UNLOCK has no effect on related work areas.
* This function returns a logical true (.T.0 if a file lock is
* attempted and is successfully placed on the current or designated
* database.This function will also unlock all records locks placed
* by the same network station.
* $EXAMPLES$
* This example uses FLOCK() for a batch update of prices in
* Inventory.dbf:
*
* USE Inventory NEW
* USE Tests New
* IF FLOCK()
* REPLACE ALL Inventory->Price WITH ;
* Inventory->Price * 1.1
* ELSE
* ? "File not available"
* ENDIF
*
* This example uses an aliased expression to attempt a file lock
* in an unselected work area:
*
* USE Sales NEW
* USE Customer NEW
* //
* IF !Sales->(FLOCK())
* ? "Sales is in use by another"
* SUM Tests->Ammount
* ENDIF
* USE
* $TESTS$
*
* $STATUS$
* R
* $COMPLIANCE$
*
* This function is CA-Clipper compatible
* $SEEALSO$
* RLOCK()
* $INCLUDE$
@@ -1877,76 +1809,26 @@
* $ARGUMENTS$
*
* $RETURNS$
* FOUND() returns true (.T.) if the last search command was successful;
* otherwise, it returns false (.F.).
*
* <lSuccess> A logical true (.T.) is successful;otherwise, false (.F.)
* $DESCRIPTION$
* FOUND() is a database function that determines whether a search
* operation (i.e., FIND, LOCATE, CONTINUE, SEEK, or SET RELATION)
* succeeded. When any of these commands are executed, FOUND() is set to
* true (.T.) if there is a match; otherwise, it is set to false (.F.).
*
* If the search command is LOCATE or CONTINUE, a match is the next record
* meeting the scope and condition. If the search command is FIND, SEEK or
* SET RELATION, a match is the first key in the controlling index that
* equals the search argument. If the key value equals the search
* argument, FOUND() is true (.T.); otherwise, it is false (.F.).
*
* The value of FOUND() is retained until another record movement command
* is executed. Unless the command is another search command, FOUND() is
* automatically set to false (.F.).
*
* Each work area has a FOUND() value. This means that if one work area
* has a RELATION set to a child work area, querying FOUND() in the child
* returns true (.T.) if there is a match.
*
* By default, FOUND() operates on the currently selected work area. It
* can be made to operate on an unselected work area by specifying it
* within an aliased expression (see example below).
*
* FOUND() will return false (.F.) if there is no database open in the
* current work area.
* This function is used to test if the previous SEEK,LOCATE,CONTINUE,
* or FIND operation was successful.Each wrk area has its own FOUND()
* flag,so that a FOUND() condition may be tested in unselected work
* areas by using an alias.
* $EXAMPLES$
* This example illustrates the behavior of FOUND() after a
* record movement command:
*
* USE Sales INDEX Sales
* ? INDEXKEY(0) // Result: SALESMAN
* SEEK "1000"
* ? FOUND() // Result: .F.
* SEEK "100"
* ? FOUND() // Result: .T.
* SKIP
* ? FOUND() // Result: .F.
*
* This example tests a FOUND() value in an unselected work area
* using an aliased expression:
*
* USE Sales INDEX Sales NEW
* USE Customer INDEX Customer NEW
* SET RELATION TO CustNum INTO Sales
* //
* SEEK "Smith"
* ? FOUND(), Sales->(FOUND())
*
* This code fragment processes all Customer records with the key
* value "Smith" using FOUND() to determine when the key value changes:
*
* USE Customer INDEX Customer NEW
* SEEK "Smith"
* DO WHILE FOUND()
* .
* . <statements>
* .
* SKIP
* LOCATE REST WHILE Name == "Smith"
* ENDDO
* nId:=100
* USE Tests NEW INDEX Tests
* SEEK nId
* IF FOUND()
* ? Tests->Name
* ENDIF
* USE
* $TESTS$
*
* $STATUS$
* R
* $COMPLIANCE$
*
* This function is CA-Clipper compatible
* $SEEALSO$
* EOF()
* $INCLUDE$
@@ -1960,47 +1842,29 @@
* $CATEGORY$
* Data Base
* $ONELINER$
* Return the current database file header length
* Return the length of a database file header
* $SYNTAX$
* HEADER() --> nBytes
* $ARGUMENTS$
*
* $RETURNS$
* HEADER() returns the number of bytes in the header of the current
* database file as an integer numeric value. If no database file is in
* use, HEADER() returns a zero (0).
* <nBytes> The numeric size of a database file header in bytes
* $DESCRIPTION$
* HEADER() is a database function that is used with LASTREC(), RECSIZE(),
* and DISKSPACE() to create procedures for backing up files.
* This function returns the number of bytes in the header of the
* selected database ot the database in the designated work area.
*
* By default, HEADER() operates on the currently selected work area. It
* will operate on an unselected work area if you specify it as part of an
* aliased expression (see example below).
* If used in conjunction with the LASTREC(),RECSIZE() and DISKSPACE()
* functions,this functions is capable of implementing a backup and
* restore routine.
* $EXAMPLES$
* This example determines the header size of the Sales.dbf:
*
* USE Sales NEW
* ? HEADER() // Result: 258
*
* This example defines a pseudofunction, DbfSize(), that uses
* HEADER() with RECSIZE() and LASTREC() to calculate the size of the
* current database file in bytes:
*
* #define DbfSize() ((RECSIZE() * LASTREC()) + ;
* HEADER() + 1)
*
* Later you can use DbfSize() as you would any function:
*
* USE Sales NEW
* USE Customer NEW
* ? DbfSize()
* ? Sales->(DbfSize())
* USE Tests New
* ? Header()
* $TESTS$
*
* $STATUS$
* R
* $COMPLIANCE$
*
* This function is CA-Clipper compatible
* $SEEALSO$
* DISKSPACE(),LASTREC(),RECSIZE()
* $INCLUDE$

View File

@@ -22,6 +22,8 @@
* LEFT() Documentation
* RIGHT() Documentation
* SUBSTR() Documentation
* UPPER() Documentation
* LOWER() Documentation
*
* See doc/license.txt for licensing terms.
*
@@ -715,3 +717,66 @@
* HB_ANSITOOEM()
* $END$
*/
/* $DOC$
* $FUNCNAME$
* LOWER()
* $CATEGORY$
* Strings()
* $ONELINER$
* Universally lowercases a character string expression.
* $SYNTAX$
* LOWER( <cString> ) --> cLowerString
* $ARGUMENTS$
* <cString> Any character expression.
* $RETURNS$
* <cLowerString> Lowercased value of <cString>
* $DESCRIPTION$
* This function converts any character expression passes as <cString>
* to its lowercased representation.Any nonalphabetic character withing
* <cString> will remain unchanged.
* $EXAMPLES$
* ? Lower("HARBOUR")
* ? Lower("Hello All")
* $STATUS$
* R
* $COMPLIANCE$
* This function is CA-Clipper compatible
* $PLATFORMS$
* ALL
* $SEEALSO$
* UPPER(),ISLOWER(),ISUPPER()
* $END$
*/
/* $DOC$
* $FUNCNAME$
* UPPER()
* $CATEGORY$
* Strings
* $ONELINER$
* Converts a character expression to uppercase format
* $SYNTAX$
* UPPER( <cString> ) --> cUpperString
* $ARGUMENTS$
* <cString> Any character expression.
* $RETURNS$
* <cUpperString> Uppercased value of <cString>
* $DESCRIPTION$
* This function converts all alpha characters in <cString> to upper
* case values and returns that formatted character expression.
* $EXAMPLES$
* ? UPPER("harbour")
* ? UPPER("Harbour")
* $STATUS$
* R
* $COMPLIANCE$
* This function is CA-Clipper compatible
* $PLATFORMS$
* All
* $SEEALSO$
* LOWER(),ISUPPER(),ISLOWER()
* $END$
*/

View File

@@ -51,6 +51,7 @@ CLASS TRTF
METHOD New( cFile )
METHOD WritePar( cPar )
METHOD WriteParText( cPar )
METHOD WriteParNoIndent(cPar)
METHOD WriteLink( clink )
METHOD WriteJumpLink( clink )
METHOD Close()
@@ -117,8 +118,14 @@ RETURN Self
METHOD WritePar( cPar ) CLASS TRTF
cPar:=StrTran(cPar,"{","\{")
cPar:=StrTran(cPar,"}","\}")
FWRITE( Self:nHandle, '\par \pard\cf1\f6\fs20\b0\i0\li300' + HB_OEMTOANSI(cPar )+CRLF)
FWRITE( Self:nHandle, '\par'+CRLF+ '\pard\cf1\f6\fs20\b0\i0\li300' + HB_OEMTOANSI(cPar )+CRLF)
RETURN Self
METHOD WriteParNoIndent( cPar ) CLASS TRTF
cPar:=StrTran(cPar,"{","\{")
cPar:=StrTran(cPar,"}","\}")
FWRITE( Self:nHandle, '\par'+CRLF+ '\pard\cf1\f8\fs20\b0\i0' + cPar +CRLF)
RETURN Self
METHOD WriteParText( cPar ) CLASS TRTF
cPar:=StrTran(cPar,"{","\{")
cPar:=StrTran(cPar,"}","\}")

View File

@@ -122,8 +122,8 @@ FUNCTION ProcessWww()
LOCAL lFirstPass:= .T.
LOCAL lFirstArg := .T.
LOCAL lData := .F.
LOCAL lEndDataLink := .F.
LOCAL lEndMethodLink := .F.
LOCAL lIsDataLink := .F.
LOCAL lIsMethodLink := .F.
LOCAL lMethod := .F.
LOCAL cDoc := DELIM + "DOC" + DELIM // DOC keyword
LOCAL cEnd := DELIM + "END" + DELIM // END keyword
@@ -672,7 +672,7 @@ FUNCTION ProcessWww()
ohtm:WriteText('<DD><P>')
nMode := D_DATALINK
lAddBlank := .T.
lEnddatalink := .T.
// lEnddatalink := .T.
lIsDataLink := .T.
ELSEIF AT( cDatanolink, cBuffer ) > 0
@@ -683,7 +683,7 @@ FUNCTION ProcessWww()
endif
nMode := D_NORMAL
lAddBlank := .T.
lEndDatalink:=.t.
// lEndDatalink:=.t.
ELSEIF AT( cMethodslink, cBuffer ) > 0
@@ -691,7 +691,7 @@ FUNCTION ProcessWww()
ohtm:WriteText('<DD><P>')
nMode := D_METHODLINK
lAddBlank := .T.
lEndMethodlink := .T.
// lEndMethodlink := .T.
lIsMethodLink := .T.
ELSEIF AT( cMethodsnolink, cBuffer ) > 0
@@ -703,7 +703,7 @@ FUNCTION ProcessWww()
nMode := D_NORMAL
lAddBlank := .T.
lEndMethodlink := .T.
// lEndMethodlink := .T.
ELSEIF AT( cExam, cBuffer ) > 0

View File

@@ -569,6 +569,10 @@ FUNCTION ProcessRtf()
Else
oRtf:WriteParText( " "+ ALLTRIM(cBuffer) +" ")
endif
ELSEIF StrPos(cBuffer)=12
cBuffer:=Substr(cBuffer,6)
oRtf:WriteParNoIndent(cBuffer+" ")
ELSEIF AT("<",cBuffer)> 0
nPos := AT("<",cBuffer)
if nPos>0 .and. nPos<12
@@ -784,15 +788,9 @@ func filesize(cfile)
return nretval
*/
FUNCTION ProcRtfDesc(cBuffer,lBlankLine,oRtf,lPar)
LOCAL nPos:=0
LOCAL ePos:=0
IF StrPos(cBuffer)=12
nPos := AT(" ",cBuffer)
// ePos := StrPos(cBuffer)
// ? nPos
// inkey(0)
cBuffer:=Substr(cBuffer,3)
oRtf:WritePar(cBuffer+" ")
cBuffer:=Substr(cBuffer,6)
oRtf:WriteParNoIndent(cBuffer+" ")
lPar:=.f.
ELSEIF lPar
oRtf:WritePar(cBuffer+" ")
@@ -805,7 +803,6 @@ LOCAL ePos:=0
lPar:=.T.
ELSE
oRtf:WriteParText(" "+alltrim(cBuffer))
lPar:=.F.
ENDIF
RETURN lPar