Now we create a child DBF that keeps where symbols are used from:
used.dbf get populated with more than 12.300 records !!!
dbfs.prg
Code: Select all | Expand
#include "FiveWin.ch"
extern DBFCDX
function Main()
local aLines := HB_ATokens( MemoRead( "fivehg.txt" ), Chr( 10 ) )
local cLine, n
DbCreate( "files.dbf", { { "name", "c", 80, 0 } } )
DbCreate( "symbols.dbf", { { "name", "c", 80, 0 },;
{ "filename", "c", 80, 0 } } )
DbCreate( "used.dbf", { { "name", "c", 80, 0 },;
{ "filename", "c", 80, 0 } } )
USE files VIA "DBFCDX"
INDEX ON files->name TAG name
USE symbols NEW VIA "DBFCDX"
INDEX ON symbols->name TAG name
INDEX ON symbols->filename TAG filename
USE used NEW VIA "DBFCDX"
INDEX ON used->name TAG name
INDEX ON used->filename TAG filename
for n = 1 to Len( aLines )
cLine = aLines[ n ]
if ".o" $ cLine
files->( DbAppend() )
files->name := StrTran( AllTrim( cLine ), ".o:", ".prg" )
else
if SubStr( cLine, 10, 1 ) == "T"
symbols->( DbAppend() )
if "HB_FUN_" $ cLine
symbols->name := SubStr( cLine, At( "HB_FUN_", cLine ) + 7 ) + "()"
else
symbols->name := SubStr( cLine, 12 ) + "()"
endif
symbols->filename := files->name
endif
if SubStr( cLine, 10, 1 ) == "U"
used->( DbAppend() )
if "HB_FUN_" $ cLine
used->name := SubStr( cLine, At( "HB_FUN_", cLine ) + 7 ) + "()"
else
used->name := SubStr( cLine, 12 ) + "()"
endif
used->filename := files->name
endif
endif
next
SELECT symbols
GO TOP
XBROWSER AUTOSORT
return nil