Miscellaneous TD tips

From TeamDeveloperWiki

Jump to: navigation, search

This page covers miscellaneous TeamDeveloper tips.

Contents


Image:Pointer.pngHow 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:



Image:Pointer.pngHow 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:



Image:Pointer.pngHow 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 )



Image:Pointer.pngHow 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:


Personal tools