Se eu fosse Caxias, deixava só para mim esta reliquia, mas gosto de compartilhar conhecimento para agregar valor pessoal.
Me sinto valorizado em poder auxiliar pessoas e poder fornecer boas ferramentas.
Além de XML, Excel, HTML e Word coloco aqui a disposição o codigo para obter PDF diretamente de seu aplicativo sem WinDrivers.
Devo lembrar que a mesma trabalha usando a LIB PDF do Harbour e dificilmente será aplicável ao Clipper.
Primeiro é necessário o arquiv Header:
Código: Selecionar todos
#include "fileio.ch"
#include "common.ch"
#define CRLF chr(13)+chr(10)
#define NORMAL 0
#define BOLD 1
#define ITALIC 2
#define BOLDITALIC 3
#define BOOKLEVEL 1
#define BOOKTITLE 2
#define BOOKPARENT 3
#define BOOKPREV 4
#define BOOKNEXT 5
#define BOOKFIRST 6
#define BOOKLAST 7
#define BOOKCOUNT 8
#define BOOKPAGE 9
#define BOOKCOORD 10
#define FONTNAME 1 // font name
#define FONTSIZE 2 // font size
#define LPI 3 // lines per inch
#define PAGESIZE 4 // page size
#define PAGEORIENT 5 // page orientation
#define PAGEX 6
#define PAGEY 7
#define REPORTWIDTH 8 // report width
#define REPORTPAGE 9 // report page
#define REPORTLINE 10 // report line
#define FONTNAMEPREV 11 // prev font name
#define FONTSIZEPREV 12 // prev font size
#define PAGEBUFFER 13 // page buffer
#define REPORTOBJ 14 // current obj
#define DOCLEN 15 // document length
#define TYPE1 16 // array of type 1 fonts
#define MARGINS 17 // recalc margins ?
#define HEADEREDIT 18 // edit header ?
#define NEXTOBJ 19 // next obj
#define PDFTOP 20 // top row
#define PDFLEFT 21 // left & right margin in mm
#define PDFBOTTOM 22 // bottom row
#define HANDLE 23 // handle
#define PAGES 24 // array of pages
#define REFS 25 // array of references
#define BOOKMARK 26 // array of bookmarks
#define HEADER 27 // array of headers
#define FONTS 28 // array of report fonts
#define IMAGES 29 // array of report images
#define PAGEIMAGES 30 // array of current page images
#define PAGEFONTS 31 // array of current page fonts
#define FONTWIDTH 32 // array of fonts width's
#define OPTIMIZE 33 // optimized ?
#define PARAMLEN 33 // number of report elements
#define ALIGN_LEFT 1
#define ALIGN_CENTER 2
#define ALIGN_RIGHT 3
#define ALIGN_JUSTIFY 4
#define IMAGE_WIDTH 1
#define IMAGE_HEIGHT 2
#define IMAGE_XRES 3
#define IMAGE_YRES 4
#define IMAGE_BITS 5
#define IMAGE_FROM 6
#define IMAGE_LENGTH 7
#define IMAGE_SPACE 8
#define BYTE 1
#define ASCII 2
#define SHORT 3
#define LONG 4
#define RATIONAL 5
#define SBYTE 6
#define UNDEFINED 7
#define SSHORT 8
#define SLONG 9
#define SRATIONAL 10
#define FLOAT 11
#define DOUBLE 12
#define pdf_ALICEBLUE "F0F8FF"
#define pdf_ANTIQUEWHITE "FAEBD7"
#define pdf_AQUA "00FFFF"
#define pdf_AQUAMARINE "7FFFD4"
#define pdf_AZURE "F0FFFF"
#define pdf_BEIGE "F5F5DC"
#define pdf_BISQUE "FFE4C4"
#define pdf_BLACK "000000"
#define pdf_BLANCHEDALMOND "FFEBCD"
#define pdf_BLUE "0000FF"
#define pdf_BLUEVIOLET "8A2BE2"
#define pdf_BROWN "A52A2A"
#define pdf_BURLYWOOD "DEB887"
#define pdf_CADETBLUE "5F9EA0"
#define pdf_CHARTREUSE "7FFF00"
#define pdf_CHOCOLATE "D2691E"
#define pdf_CORAL "FF7F50"
#define pdf_CORNFLOWERBLUE "6495ED"
#define pdf_CORNSILK "FFF8DC"
#define pdf_CRIMSON "DC143C"
#define pdf_CYAN "00FFFF"
#define pdf_DARKBLUE "00008B"
#define pdf_DARKCYAN "008B8B"
#define pdf_DARKGOLDENROD "B8860B"
#define pdf_DARKGRAY "A9A9A9"
#define pdf_DARKGREEN "006400"
#define pdf_DARKKHAKI "BDB76B"
#define pdf_DARKMAGENTA "8B008B"
#define pdf_DARKOLIVEGREEN "556B2F"
#define pdf_DARKORANGE "FF8C00"
#define pdf_DARKORCHID "9932CC"
#define pdf_DARKRED "8B0000"
#define pdf_DARKSALMON "E9967A"
#define pdf_DARKSEAGREEN "8FBC8F"
#define pdf_DARKSLATEBLUE "483D8B"
#define pdf_DARKSLATEGRAY "2F4F4F"
#define pdf_DARKTURQUOISE "00CED1"
#define pdf_DARKVIOLET "9400D3"
#define pdf_DEEPPINK "FF1493"
#define pdf_DEEPSKYBLUE "00BFFF"
#define pdf_DIMGRAY "696969"
#define pdf_DODGERBLUE "1E90FF"
#define pdf_FIREBRICK "B22222"
#define pdf_FLORALWHITE "FFFAF0"
#define pdf_FORESTGREEN "228B22"
#define pdf_FUCHSIA "FF00FF"
#define pdf_GAINSBORO "DCDCDC"
#define pdf_GHOSTWHITE "F8F8FF"
#define pdf_GOLD "FFD700"
#define pdf_GOLDENROD "DAA520"
#define pdf_GRAY "808080"
#define pdf_GREEN "008000"
#define pdf_GREENYELLOW "ADFF2F"
#define pdf_HONEYDEW "F0FFF0"
#define pdf_HOTPINK "FF69B4"
#define pdf_INDIANRED "CD5C5C"
#define pdf_INDIGO "4B0082"
#define pdf_IVORY "FFFFF0"
#define pdf_KHAKI "F0E68C"
#define pdf_LAVENDER "E6E6FA"
#define pdf_LAVENDERBLUSH "FFF0F5"
#define pdf_LAWNGREEN "7CFC00"
#define pdf_LEMONCHIFFON "FFFACD"
#define pdf_LIGHTBLUE "ADD8E6"
#define pdf_LIGHTCORAL "F08080"
#define pdf_LIGHTCYAN "E0FFFF"
#define pdf_LIGHTGOLDENRODYELLOW "FAFAD2"
#define pdf_LIGHTGREEN "90EE90"
#define pdf_LIGHTGREY "D3D3D3"
#define pdf_LIGHTPINK "FFB6C1"
#define pdf_LIGHTSALMON "FFA07A"
#define pdf_LIGHTSEAGREEN "20B2AA"
#define pdf_LIGHTSKYBLUE "87CEFA"
#define pdf_LIGHTSLATEGRAY "778899"
#define pdf_LIGHTSTEELBLUE "B0C4DE"
#define pdf_LIGHTYELLOW "FFFFE0"
#define pdf_LIME "00FF00"
#define pdf_LIMEGREEN "32CD32"
#define pdf_LINEN "FAF0E6"
#define pdf_MAGENTA "FF00FF"
#define pdf_MAROON "800000"
#define pdf_MEDIUMAQUAMARINE "66CDAA"
#define pdf_MEDIUMBLUE "0000CD"
#define pdf_MEDIUMORCHID "BA55D3"
#define pdf_MEDIUMPURPLE "9370DB"
#define pdf_MEDIUMSEAGREEN "3CB371"
#define pdf_MEDIUMSLATEBLUE "7B68EE"
#define pdf_MEDIUMSPRINGGREEN "00FA9A"
#define pdf_MEDIUMTURQUOISE "48D1CC"
#define pdf_MEDIUMVIOLETRED "C71585"
#define pdf_MIDNIGHTBLUE "191970"
#define pdf_MINTCREAM "F5FFFA"
#define pdf_MISTYROSE "FFE4E1"
#define pdf_MOCCASIN "FFE4B5"
#define pdf_NAVAJOWHITE "FFDEAD"
#define pdf_NAVY "000080"
#define pdf_OLDLACE "FDF5E6"
#define pdf_OLIVE "808000"
#define pdf_OLIVEDRAB "6B8E23"
#define pdf_ORANGE "FFA500"
#define pdf_ORANGERED "FF4500"
#define pdf_ORCHID "DA70D6"
#define pdf_PALEGOLDENROD "EEE8AA"
#define pdf_PALEGREEN "98FB98"
#define pdf_PALETURQUOISE "AFEEEE"
#define pdf_PALEVIOLETRED "DB7093"
#define pdf_PAPAYAWHIP "FFEFD5"
#define pdf_PEACHPUFF "FFDAB9"
#define pdf_PERU "CD853F"
#define pdf_PINK "FFC0CB"
#define pdf_PLUM "DDADDD"
#define pdf_POWDERBLUE "B0E0E6"
#define pdf_PURPLE "800080"
#define pdf_RED "FF0000"
#define pdf_ROSYBROWN "BC8F8F"
#define pdf_ROYALBLUE "4169E1"
#define pdf_SADDLEBROWN "8B4513"
#define pdf_SALMON "FA8072"
#define pdf_SANDYBROWN "F4A460"
#define pdf_SEAGREEN "2E8B57"
#define pdf_SEASHELL "FFF5EE"
#define pdf_SIENNA "A0522D"
#define pdf_SILVER "C0C0C0"
#define pdf_SKYBLUE "87CEEB"
#define pdf_SLATEBLUE "6A5ACD"
#define pdf_SLATEGRAY "708090"
#define pdf_SNOW "FFFAFA"
#define pdf_SPRINGGREEN "00FF7F"
#define pdf_STEELBLUE "4682B4"
#define pdf_TAN "D2B48C"
#define pdf_TEAL "008080"
#define pdf_THISTLE "D8BFD8"
#define pdf_TOMATO "FF6347"
#define pdf_TURQUOISE "40E0D0"
#define pdf_VIOLET "EE82EE"
#define pdf_WHEAT "F5DEB3"
#define pdf_WHITE "FFFFFF"
#define pdf_WHITESMOKE "F5F5F5"
#define pdf_YELLOW "FFFF00"
#define pdf_YELLOWGREEN "9ACD32"
Código: Selecionar todos
#include "minigui.ch"
#include "pdf.ch"
memvar aReport
procedure main()
local cRun, nWidth, nTab, nI, nJ, nK, nCol, nRow, aStyle, aFonts
local nTop, nLeft, nBottom, nRight
local aColor := { ;
"FF0000", "8B0000", "800000", "FF4500", "D2691E", "B8860B", "FF8C00", "FFA500", "DAA520", "808000", "FFD700", "FFFF00", "ADFF2F", "9ACD32", "7FFF00", "7CFC00", "00FF00", "32CD32", "008000", "006400",;
"66CDAA", "7FFFD4", "87CEFA", "87CEEB", "F0F8FF", "E0FFFF", "B0C4DE", "B0E0E6", "AFEEEE", "ADD8E6", "8FBC8F", "90EE90", "98FB98", "00FA9A", "00FF7F", "3CB371", "2E8B57", "228B22", "556B2F", "6B8E23",;
"5F9EA0", "40E0D0", "48D1CC", "00CED1", "20B2AA", "008B8B", "008080", "2F4F4F", "00BFFF", "00FFFF", "00FFFF", "0000FF", "0000CD", "00008B", "000080", "1E90FF", "4169E1", "4682B4", "6495ED", "7B68EE",;
"C71585", "FF1493", "FF00FF", "FF00FF", "9370DB", "DDADDD", "DB7093", "FF69B4", "DA70D6", "EE82EE", "BA55D3", "9932CC", "8A2BE2", "9400D3", "8B008B", "800080", "4B0082", "191970", "483D8B", "6A5ACD",;
"DC143C", "B22222", "A52A2A", "CD5C5C", "FA8072", "E9967A", "FFA07A", "F5DEB3", "FFDEAD", "EEE8AA", "FFDAB9", "FFE4C4", "FFEFD5", "FFE4E1", "FFE4B5", "D2B48C", "DEB887", "F0E68C", "BDB76B", "F4A460",;
"FDF5E6", "FFF8DC", "FAF0E6", "FAFAD2", "FFFACD", "FFEBCD", "FFFFE0", "FAEBD7", "FFF5EE", "FFF0F5", "D8BFD8", "FFC0CB", "FFB6C1", "BC8F8F", "F08080", "FF7F50", "FF6347", "8B4513", "A0522D", "CD853F",;
"FFFAFA", "FFFFF0", "E6E6FA", "FFFAF0", "F8F8FF", "F0FFF0", "F5F5DC", "F0FFFF", "F5FFFA", "708090", "778899", "F5F5F5", "DCDCDC", "D3D3D3", "C0C0C0", "A9A9A9", "808080", "696969", "000000", "FFFFFF"}
set date format "YYYY/MM/DD" // important for save/load array function!!!
aStyle := { "Normal", "Bold", "Italic", "BoldItalic" }
aFonts := { { "Times", .t., .t., .t., .t. },;
{ "Helvetica", .t., .t., .t., .t. },;
{ "Courier", .t., .t., .t., .t. } }
pdfOpen('test.pdf', 200, .t.)
pdfEditOnHeader()
pdfImage( 'color.tif', 0, 0, "M" ) // file, row, col, units, height, width
pdfEditOffHeader()
pdfSaveHeader('test.hea')
pdfCloseHeader()
pdfBookOpen()
/*
pdfCreateHeader( "letter_portrait_6.hea", "LETTER", "P", 6 )
pdfCreateHeader( "letter_portrait_8.hea", "LETTER", "P", 8 )
pdfCreateHeader( "letter_landscape_6.hea", "LETTER", "L", 6 )
pdfCreateHeader( "letter_landscape_8.hea", "LETTER", "L", 8 )
pdfCreateHeader( "legal_portrait_6.hea", "LEGAL", "P", 6 )
pdfCreateHeader( "legal_portrait_8.hea", "LEGAL", "P", 8 )
pdfCreateHeader( "legal_landscape_6.hea", "LEGAL", "L", 6 )
pdfCreateHeader( "legal_landscape_8.hea", "LEGAL", "L", 8 )
*/
pdfNewPage( "LETTER", "P", 6 )
pdfBookAdd( "Grids & Borders", 1, aReport[ REPORTPAGE ], 0 )
pdfBookAdd( "Simple Grid", 2, aReport[ REPORTPAGE ], 0 )
for nI := 0 to 792 step 36
pdfBox( nI, 0, nI, 612, 0.01, , "D" )
next
for nI := 0 to 612 step 36
pdfBox( 0, nI, 792, nI, 0.01, , "D" )
next
pdfNewPage( "LETTER", "P", 6 )
pdfBookAdd( "10 dots border ", 2, aReport[ REPORTPAGE ], 0 )
pdfBox( 0, 0, 792, 612, 10, , "D" )
pdfNewPage( "LETTER", "P", 6 )
pdfBookAdd( "Boxes", 1, aReport[ REPORTPAGE ], 0 )
pdfBookAdd( "Boxes", 2, aReport[ REPORTPAGE ], 0 )
nRow := 85
nCol := 85
pdfBox( nRow , ( nCol * 2 ) , ( nRow * 3 ) , ( nCol * 4 ) , 1.00, 15, "D" )
pdfBox( nRow + 10, ( nCol * 2 ) + 10, ( nRow * 3 ) + 10, ( nCol * 4 ) + 10, 0.50, 25, "D" )
pdfBox( nRow + 20, ( nCol * 2 ) + 20, ( nRow * 3 ) + 20, ( nCol * 4 ) + 20, 0.25, 35, "D" )
pdfBox( nRow + 30, ( nCol * 2 ) + 30, ( nRow * 3 ) + 30, ( nCol * 4 ) + 30, 0.15, 45, "D" )
pdfBox( nRow + 40, ( nCol * 2 ) + 40, ( nRow * 3 ) + 40, ( nCol * 4 ) + 40, 0.10, 55, "D" )
pdfBox( nRow + 50, ( nCol * 2 ) + 50, ( nRow * 3 ) + 50, ( nCol * 4 ) + 50, 0.05, 65, "D" )
pdfBox( nRow + 60, ( nCol * 2 ) + 60, ( nRow * 3 ) + 60, ( nCol * 4 ) + 60, 0.01, 75, "D" )
pdfBox( nRow + 70, ( nCol * 2 ) + 70, ( nRow * 3 ) + 70, ( nCol * 4 ) + 70, 0.01, 85, "D" )
pdfBox( nRow + 80, ( nCol * 2 ) + 80, ( nRow * 3 ) + 80, ( nCol * 4 ) + 80, 0.01, 95, "D" )
pdfBox( nRow + 90, ( nCol * 2 ) + 90, ( nRow * 3 ) + 90, ( nCol * 4 ) + 90, 0.01, 100, "D" )
/*
nRow := 12
nCol := 120
for nI := 1 to 6
nRow += 10
nCol += 10
pdfBox( nCol, nRow, nCol + 10, nRow + 10, 0.5, nI, "M" )
next
for nI := 0 to 20 step 10
nRow += 10
nCol += 10
pdfBox( nCol, nRow, nCol + 10, nRow + 10, 0.5, nI,"M" )
next
for nI := 30 to 100 step 10
nRow += 10
nCol -= 10
pdfBox( nCol, nRow, nCol + 10, nRow + 10, 0.5, nI,"M" )
next
*/
for nI := 1 to 7
nRow := 150 + nI * 10
for nJ := 1 to 20
nCol := nJ * 10 - 3
pdfBox( nRow, nCol, nRow + 10, nCol + 10, 0.01, nI * 10,"M", chr(253) + chr( cton( substr( aColor[ ( nI - 1 ) * 20 + nJ ], 1, 2 ), 16) ) + chr( cton( substr( aColor[ ( nI - 1 ) * 20 + nJ ], 3, 2 ), 16) ) + chr( cton( substr( aColor[ ( nI - 1 ) * 20 + nJ ], 5, 2 ), 16) ) )
next
next
pdfNewPage( "LETTER", "P", 6 )
pdfBookAdd( "Color Boxes ", 2, aReport[ REPORTPAGE ], 0 )
for nI := 1 to 140
nTop := ( nI - 1 ) * 2.4
nLeft := ( nI - 1 ) * 2.1
nBottom := aReport[ PAGEY ] - ( nI - 1 ) * 2.47
nRight := aReport[ PAGEX ] - ( nI - 1 ) * 2.18
pdfBox1( nTop, nLeft, nBottom, nRight, 10, chr( cton( substr( aColor[ nI ], 1, 2 ), 16) ) + chr( cton( substr( aColor[ nI ], 3, 2 ), 16) ) + chr( cton( substr( aColor[ nI ], 5, 2 ), 16) ))
next
pdfNewPage( "LETTER", "P", 6 )
pdfBox1( 0, 0, 100, 200, 10, chr(0) + chr(255) + chr(0), chr(255) + chr(255) + chr(0) )
pdfBookAdd( "Memos", 1, aReport[ REPORTPAGE ], 0 )
pdfBookAdd( "Different Styles & Colors", 2, aReport[ REPORTPAGE ], 0 )
nWidth := 90
nTab := 0
pdfText( memoread('test.txt'), 28, 107.95, nWidth, nTab, 3, 'M', chr(253) + chr(0) + chr(0) + chr(255) )//, pdfTextCount( memoread('test.txt'), 28, 107.95, nWidth, nTab, 3, 'M' )
pdfText( memoread('test.txt'), 58, 107.95, nWidth, nTab, 2, 'M', chr(253) + chr(0) + chr(255) + chr(0) )//, pdfTextCount( memoread('test.txt'), 58, 107.95, nWidth, nTab, 2, 'M' )
pdfText( memoread('test.txt'), 88, 107.95, nWidth, nTab, 1, 'M', chr(253) + chr(255) + chr(0) + chr(0) )//, pdfTextCount( memoread('test.txt'), 88, 107.95, nWidth, nTab, 1, 'M' )
pdfText( memoread('test.txt'), 118, 107.95 - nWidth / 2, nWidth, nTab, 4, 'M', chr(253) + chr(255) + chr(255) + chr(0) )//, pdfTextCount( memoread('test.txt'), 118, 107.95 - nWidth / 2, nWidth, nTab, 4, 'M' )
pdfText( memoread('test.txt'), 34, 100, nWidth, nTab, 3, 'R', chr(253) + chr(0) + chr(128) + chr(128) )//, pdfTextCount( memoread('test.txt'), 33, 100, nWidth, nTab, 3, 'R' )
pdfText( memoread('test.txt'), 41, 100, nWidth, nTab, 2, 'R', chr(253) + chr(0) + chr(191) + chr(255) )//, pdfTextCount( memoread('test.txt'), 40, 100, nWidth, nTab, 2, 'R' )
pdfText( memoread('test.txt'), 48, 100, nWidth, nTab, 1, 'R', chr(253) + chr(244) + chr(164) + chr(96) )//, pdfTextCount( memoread('test.txt'), 47, 100, nWidth, nTab, 1, 'R' )
pdfText( memoread('test.txt'), 55, 35, nWidth, nTab, 4, 'R', chr(253) + chr(0) + chr(0) + chr(0) )//, pdfTextCount( memoread('test.txt'), 54, 35, nWidth, nTab, 4, 'R' )
pdfNewPage( "LETTER", "P", 6 )
pdfBookAdd( "Fonts", 1, aReport[ REPORTPAGE ], 0 )
pdfBookAdd( "Different Styles", 2, aReport[ REPORTPAGE ], 0 )
nK := 6
for nI := 1 to len( aFonts )
++nK
for nJ := 1 to 4
if aFonts[ nI ][ nJ + 1 ]
pdfSetFont( aFonts[ nI ][ 1 ], nJ - 1, aReport[ FONTSIZE ] )
pdfRJust("This is a test for " + aFonts[ nI ][ 1 ] + " " + aStyle[ nJ ], nK++, aReport[ REPORTWIDTH ], "R")
endif
next
pdfRJust(pdfUnderline("Underline"), nK++, aReport[ REPORTWIDTH ], "R")
pdfRJust(pdfReverse("Test"), nK, aReport[ REPORTWIDTH ], "R")
next
pdfNewPage( "LETTER", "P", 6 )
pdfBookAdd( "Pictures", 1, aReport[ REPORTPAGE ], 0 )
pdfBookAdd( "TIFF", 2, aReport[ REPORTPAGE ], 0 )
pdfImage( 'color.tif', 0, 0, "M" ) // file, row, col, units, height, width
pdfRJust(pdfUnderline("TIFF"), nK++, aReport[ REPORTWIDTH ], "R")
pdfNewPage( "LETTER", "P", 6 )
pdfBookAdd( "JPEG", 2, aReport[ REPORTPAGE ], 0 )
pdfImage( 'color.jpg', 0, 0, "M" ) // file, row, col, units, height, width
pdfRJust(pdfUnderline("JPEG"), nK++, aReport[ REPORTWIDTH ], "R")
pdfOpenHeader('test.hea')
pdfNewPage( "LETTER", "P", 6 )
pdfBookAdd( "Headers", 1, aReport[ REPORTPAGE ], 0 )
pdfBookAdd( "Picture Header Page 8", 2, aReport[ REPORTPAGE ], 0 )
// version 0.01
pdfAtSay( chr(253) + chr(255) + chr(0) + chr(0) + 'Red Sample of header repeating on pages 8-10', 1, 20, "R" )
pdfNewPage( "LETTER", "P", 6 )
pdfBookAdd( "Picture Header Page 9", 2, aReport[ REPORTPAGE ], 0 )
// version 0.01
pdfAtSay( chr(253) + chr(0) + chr(255) + chr(0) + 'Green Sample of header repeating on pages 8-10', 1, 20, "R" )
pdfNewPage( "LETTER", "P", 6 )
pdfBookAdd( "Picture Header Page 10", 2, aReport[ REPORTPAGE ], 0 )
// version 0.01
pdfAtSay( chr(253) + chr(0) + chr(0) + chr(255) + 'Blue Sample of header repeating on pages 8-10', 1, 20, "R" )
pdfClose()
IF !pdfFilePrint( "test.pdf" ) // print .pdf file WITHOUT opening acrobat
msgstop("Error running Acrobat Reader.")
ENDIF
return
static function cton( cString, nBase ) // this function called only used in pdf_demo.prg
local cTemp, nI, cChar := "", n := 0, nLen
nLen := len( cString )
cTemp := ""
for nI := nLen to 1 step -1
cTemp += substr( cString, nI, 1 )
next
cTemp = upper( cTemp )
for nI = 1 to nLen
cChar = substr( cTemp, nI, 1 )
if .not. IsDigit( cChar )
n = n + ((Asc( cChar ) - 65) + 10) * ( nBase ^ ( nI - 1 ) )
else
n = n + (( nBase ^ ( nI - 1 )) * val( cChar ))
endif
next
return n
#include "errorsys.prg"
email: irochinha@itelefonica.com.br
Thats folk.


