Miscellaneous TD tips
From TeamDeveloperWiki
This page covers miscellaneous TeamDeveloper tips.
Contents |
How to get the application runtime folder
To determine from where the application was started, use the following function :
Function: PALGetRuntimeFolder
Returns
String:
Local variables
String: sDir
String: sDummy
String: sDrive
String: sFolder
Actions
! The next Vis function is from vtdos.apl
Call VisDosSplitPath( strArgArray[0], sDrive, sDir, sDummy, sDummy )
Set sFolder = sDrive || sDir
! This function will allways return the folder with an ending backslash
If SalStrRightX( sFolder, 1 ) != "\\"
Set sFolder = sFolder || "\\"
Return sFolder
The function SalFileGetCurrentDirectory is not the same !
That function returns the current folder which may change during runtime (eg when changing it programatically or a SalDlgFile function is used).
The PALGetRuntimeFolder function described here will always return the folder where the executable was initially started from.
Here you can download a sample:
How to check at runtime, if a given string is a valid window template
To check if a string representing a window template is valid, you can use SalCompileAndEvaluate.
Pass the template name to this function and check the return value (type).
For instance, if you want to check if "frmMain" is a valid template (when you pass that template to SalCreateWindowEx).
Set sTemplate = "frmMain" Set nType = SalCompileAndEvaluate( sTemplate, nError, nErrorPos, nReturn, sReturn, dtReturn, hWndReturn, TRUE, SalContextCurrent( ) )
If nType > 0 the template is valid. If it is 0 (zero) it is invalid.
Here you can download a sample:
How to flush files using SalProfile functions
It may happen when using SalSetProfileString function the contents of the file is not flushed completely to disc.
To force the files to be flushed use this:
Call SalSetProfileString( STRING_Null, STRING_Null, STRING_Null, sIniFilename )
How to start or stop windows services
An easy way to start or stop windows services (like task scheduler, messenger or event log):
Call SalLoadApp( "NET", "START <ServiceName>" ) Call SalLoadApp( "NET", "STOP <ServiceName>" ) ! ! Example to stop task scheduler : Call SalLoadApp( "NET", "STOP Schedule" )
Here you can download a sample:

