home *** CD-ROM | disk | FTP | other *** search
- *****************************************************************
- * UDF2.PRG *
- * Written by Greg Martin *
- * These functions may be freely used, but may not be published. *
- *****************************************************************
-
-
-
- FUNCTION ErrorBox
- PARAMETER Output
- PRIVATE Temp, TopRow, BottomRow, Longest, LeftCol, RightCol, CList, CLoc, Screen
- IF TYPE("m->Output") == "C"
- PRIVATE String, NoOfLines, Token
- String = Output
- NoOfLines = InCount(String, ";") + 1
- DECLARE Output[NoOfLines]
- Token = ""
- FOR Temp = 1 TO NoOfLines
- FirstToken(@String, @Token, ";")
- Output[Temp] = Token
- NEXT Temp
- ENDIF
- TopRow = 12 - INT((LEN(Output)/2)) - 1
- BottomRow = TopRow + LEN(Output) + 1
- Longest = 0
- FOR Temp = 1 TO LEN(Output)
- IF LEN(Output[Temp]) > Longest
- Longest = LEN(Output[Temp])
- ENDIF
- NEXT Temp
- LeftCol = 39 - INT(Longest/2) - 2
- RightCol = LeftCol + Longest + 3
- CList = SETCOLOR()
- CLoc = SCursor()
- Screen = SAVESCR(TopRow, LeftCol, BottomRow, RightCol)
- SET COLOR TO &ERR_color
- @ TopRow, LeftCol, BottomRow, RightCol BOX "╔═╗║╝═╚║ "
- FOR Temp = 1 TO LEN(Output)
- @ TopRow + Temp, LeftCol + 2 SAY Output[Temp]
- NEXT Temp
- SET CURSOR OFF
- CLEAR TYPEAHEAD
- Temp = INKEY(0)
- SET CURSOR ON
- RESTSCR(Screen)
- RCursor(CLoc)
- SETCOLOR(CList)
- RETURN(Temp)
-
-
- FUNCTION SaveScr
- PARAMETER TopRow, LeftCol, BottomRow, RightCol
- PRIVATE Screen
- Screen = SAVESCREEN(TopRow, LeftCol, BottomRow, RightCol)
- Corners = CHR(TopRow) + CHR(LeftCol) + CHR(BottomRow) + CHR(RightCol)
- RETURN(Corners + Screen)
-
-
- FUNCTION RestScr
- PARAMETER Screen
- PRIVATE TopRow, LeftCol, BottomRow, RightCol
- TopRow = ASC(SUBSTR(Screen, 1, 1))
- LeftCol = ASC(SUBSTR(Screen, 2, 1))
- BottomRow = ASC(SUBSTR(Screen, 3, 1))
- RightCol = ASC(SUBSTR(Screen, 4, 1))
- Screen = SUBSTR(Screen, 5)
- RESTSCREEN(TopRow, LeftCol, BottomRow, RightCol, Screen)
- RETURN(.t.)
-
-
- FUNCTION SCursor
- RETURN(STR(ROW(), 2) + STR(COL(), 2))
-
-
- FUNCTION RCursor
- PARAMETER CLoc
- PRIVATE Row, Col
- Row = VAL(SUBSTR(CLoc, 1, 2))
- Col = VAL(SUBSTR(CLoc, 3, 2))
- @ Row, Col SAY ""
- RETURN("")
-
-
- FUNCTION FirstToken
- PARAMETERS String, Token, Delimiter
- PRIVATE Loc, Loc2, Temp1, Char
- IF .not. TYPE("Delimiter") == "C"
- Delimiter = " ,"
- ENDIF
- String = AllTrim(String)
- IF EMPTY(String)
- Token = ""
- String = ""
- RETURN(.f.)
- ENDIF
- Loc = 0
- FOR Temp1 = 1 TO LEN(Delimiter)
- Char = SUBSTR(Delimiter, Temp1, 1)
- IF Char $ String
- Loc2 = AT(Char, String)
- IF Loc = 0
- Loc = Loc2
- ELSE
- Loc = Min(Loc, Loc2)
- ENDIF
- ENDIF
- NEXT Temp1
- IF Loc = 0
- Token = String
- String = ""
- RETURN(.t.)
- ELSE
- Token = AllTrim(SUBSTR(String, 1, Loc - 1))
- String = AllTrim(SUBSTR(String, Loc + 1))
- RETURN(.t.)
- ENDIF
-