As usual, I posted to comp.lang.xHarbour and the registered user's xHarbour newsgroup.
Within a short while, I had a most useful response from Michael Hagl as follows :-
-HB_FUN_MOUSE
Michael Hagl :
Function Mouse(x)
Return SetMouse(x)
-HB_FUN_RANDOM
CCH :
Replace with Phil Barnett's Random()
-HB_FUN_APRINT
Michael Hagl:
very dirty.
Static saSetAttrib
Function Aprint(nRow,nCol,str,attr,nLength,nStart)
Local nHighStart := At("^",str)
Local nHighEnd
Local cAttrib, nAttrib
If nHighStart > 0
cAttrib := Substr(str,nHighStart+1,1)
nAttrib := GetAttrib(cAttrib)
If Valtype(nAttrib) == "C" .and. nAttrib == "^"
nHighStart := 0
str := Left(str,nHighStart-1)+Substr(str,nHighStart+1)
Else
str := Left(str,nHighStart-1)+Substr(str,nHighStart+2)
Endif
Endif
nHighEnd := At("^N",Upper(str))
If nHighEnd > 0
str := Left(str,nHighEnd-1)+Substr(str,nHighEnd+2)
Endif
If !(nStart == Nil)
str := Substr(str,nStart)
Endif
If !(nLength == Nil)
str := Untrim(str,nLength)
Endif
DispOutAt(nRow,nCol,str,NtoColor(attr,.t.),.f.)
If nHighStart > 0
If Valtype(nAttrib) == "N"
ColorWin(nRow,nCol+nHighStart-1,nRow,nCol+nHighStart-1,nAttrib)
Elseif Valtype(nAttrib) == "C"
// ???
Endif
Endif
Return Nil
Static Function saSetAttribInit()
If saSetAttrib == Nil
saSetAttrib := {{"B","B"},;
{"R","R"},;
{"F","F"},;
{"S",S_TEXT},;
{"E",S_TEXT+12},;
{"N",S_TEXT},;
{"^","^"}}
Endif
Return Nil
Function SetAttrib(chr,nAttr)
Local nPos
saSetAttribInit()
chr := Upper(chr)
nPos := Ascan(saSetAttrib,{|x|x[1]==chr})
If nPos > 0
saSetAttrib[nPos,2] := nAttr
Else
Aadd(saSetAttrib,{chr,nAttr})
Endif
Return .t.
Local nPos
saSetAttribInit()
chr := Upper(chr)
nPos := Ascan(saSetAttrib,{|x|x[1]==chr})
If nPos > 0
Return saSetAttrib[nPos,2]
Endif
Return -1
-HB_FUN_FORM_BOD
CCH:
Added SuperLib s_foml.prg
-HB_FUN_SWPRUNCMD
Ron Pinkas
/-------------------------------------------------------------------------
FUNCTION SwpRunCmd( cCommand, nuMem, cRunPath, cTempPath )
LOCAL nAt, cArgs, cPresetDisk, cPresetDir, nRet
#ifndef DIR_SEPARATOR
#ifdef __PLATFORM__Windows
#define DIR_SEPARATOR '\'
#else
#define DIR_SEPARATOR '/'
#endif
#endif
IF Empty( cRunPath )
nAt := At( ' ', cCommand )
IF nAt > 0
cArgs := SubStr( cCommand, nAt )
cCommand := Left( cCommand, nAt - 1 )
ENDIF
nAt := RAt( DIR_SEPARATOR, cCommand )
IF nAt > 0
cRunPath := Left( cCommand, nAt )
cCommand := SubStr( cCommand, nAt + 1 ) + cArgs
ENDIF
ENDIF
IF cRunPath[2] == ':'
cPresetDisk := DiskName()
IF ! DiskChange( cRunPath[1] )
RETURN Throw( ErrorNew( "Blinker", 0, 1001, ProcName(), "Could not
switch to drive: " + cRunPath[1], HB_aParams() ) )
ENDIF
cRunPath := SubStr( cRunPath, 3 )
ENDIF
IF ! Empty( cRunPath )
cPresetDir := DIR_SEPARATOR + CurDir()
IF DirChange( cRunPath ) != 0
RETURN Throw( ErrorNew( "Blinker", 0, 1002, ProcName(), "Could not
switch to folder: " + cRunPath, HB_aParams() ) )
ENDIF
ENDIF
__Run( cCommand, @nRet )
SwpErrLev( nRet )
IF ! Empty( cPresetDisk )
IF ! DiskChange( cPresetDisk )
RETURN Throw( ErrorNew( "Blinker", 0, 1003, ProcName(), "Could not
switch back to drive: " + cPresetDisk, HB_aParams() ) )
ENDIF
ENDIF
IF ! Empty( cPresetDir )
IF DirChange( cPresetDisk ) != 0
RETURN Throw( ErrorNew( "Blinker", 0, 1004, ProcName(), "Could not
switch back to folder: " + cPresetDir, HB_aParams() ) )
ENDIF
ENDIF
RETURN nRet == 0
FUNCTION SwpErrLev( nLev )
STATIC s_nLastLev := 0
IF ValType( nLev ) == 'N'
s_nLastLev := nLev
ENDIF
RETURN s_nLastLev
//-------------------------------------------------------------------------
Michael Hagl :
/**************************************************************************
V32ShellExecute(<>,[ cVerb ],[ cParam ],[ cDir ],[ cState ],[
lModal ] )
Arguments
<> is a character string containing the path and file name to be
executed with its associated program. If this parameter is
missing,
no action is taken.
[ cVerb ] is the flag what type of action the associated program has to
take.
Default is 'open'. Windows defines default verbs as 'open',
'print',
'explore'.
[ cParam ] a character string representing parameters to be passed to
associated program. Default is empty string.
[ cDir ] optional directory path where the associated program searches for
the required components.
[ cState ] can be on of the these: Hide, Normal, Minimized, Maximized, Show.
Default is 'Normal'. This determines the state of associated
program window.
child process of the current application or the program flow
return to application immediately after invoking the associated
program. Default is FALSE means program flow returns immediately.
***************************************************************************
Function V32ShellExecute(cFile,cAction,cParam,cDir,cState,lModal)
Local nShowCmd
Default cAction To "open"
Default cParam To ""
Default cDir To ""
Default cState To "NORMAL"
If Upper(cState) == "MINIMIZED"
nShowCmd := 2
Elseif Upper(cState) == "MAXIMIZED"
nShowCmd := 3
Elseif Upper(cState) == "NOACTIVATE"
nShowCmd := 4
Elseif Upper(cState) == "SHOW"
nShowCmd := 5
Elseif Upper(cState) == "SHOWMINNOACTIVE"
nShowCmd := 7
Elseif Upper(cState) == "SHOWNA"
nShowCmd := 8
Elseif Upper(cState) == "SHOWDEFAULT"
nShowCmd := 10
Else
nShowCmd := 1
Endif
ShellExecute(0,cAction,cFile,cParam,cDir,nShowCmd)
Return .f.
Michael Hagl :
Function Attrtoa(nAttr)
Local r := NtoColor(nAttr,.t.)
Return r
-HB_FUN_FRE
CCH:
Solved by removing obsolete DOS functions
-HB_FUN_CPUTYPE
CCH:
Solved by removing obsolete DOS functions
-HB_FUN_NDPTYPE
CCH:
Solved by removing obsolete DOS functions
-HB_FUN_SOUND
CCH:
Solved by removing obsolete DOS functions
-HB_FUN_ROMDATE
CCH:
Solved by removing obsolete DOS functions
-HB_FUN_ENCRYPT
Solved by Michael Hagl :
try:
Function xEncrypt(cStr,cKey)
Return cStr ^^ cKey
//Function is from Klas Engwall ?
// but there is a Problem, when cKey is only @
Function Encrypt(cString,cKey)
local i,cNewString := ""
i := int((len(cString)/len(cKey))+1)
cKey := replicate(cKey,i)
for i := 1 to len(cString)
cNewString += chr(numxor(asc(substr(cString,i,1)),;
asc(substr(cKey,i,1))+128))
next
Return cNewString
-HB_FUN_SEED
CCH :
Made this redundant using Phil Barnet Random()
-HB_FUN_ALLKEY
CCH:
Replaced with INKEY(0)
Phew, having got rid of the unresolved external references, FAS.EXE is now a text-based Win32 Apps ! Now to test... Results in the next article.
-HB_FUN_DECRYPT
-HB_FUN_CATERR
CCH: Remove redundant PRG containing CATERR function call
-HB_FUN_MYHELP
CCH: Changed MyQuery() to Superlib Smalls()
-HB_FUN_MYQUERY
CCH: Changed MyQuery() to Superlib Smalls()
-HB_FUN_STRTOKEN
-HB_FUN_ISPRN
CCH/David Smith:
FUNCTION ISPRN(nPort)
LOCAL cPort:="LPT"+str(nPort,1)+":"
RETURN ISPRINTER(PrinterPortToName(cPort))
More to come...
No comments:
Post a Comment