So I needed to find two things to get to the desired result:
- A way to determine the platform type
- A location where to store temporary files (platform dependent)
- Here's the final code snippet
A way to determine the platform type
All I could find was the getGuiType() function which returns- 1 for Windows
- 3 for MacOS
- 4 for Unix
and a repeated comment that this function exists for downward compatibility without explaining what the current approach should be.
A location where to store temporary files (platform dependent)
For MacOS and Unix systems /tmp is the obvious place to store temporary files (/var/tmp would probably also ok, even better a user specific dir like /var/tmp/$USER but one would need to ensure first that it really exists and is writable).On Windows that is a little more complex but the environment variable TEMP seems to be set for all users (different though for each user) and thus a good choice.
Code snippet
' This code creates a temporary file called 'data.lst' ' with a path which works for each OS Dim sUrl As String Dim sFile As String sFile = "/data.lst" If GetGuiType = 1 Then sUrl = "file:" + Environ("TEMP") + sFile Else sUrl = "file:///tmp" + sFile End If ' Now create some data and store them into the temp file Dim myData() 'Array to store some data ' Fill myData with contents assuming there are n data points ' ReDim myData(n) ' myData(0) = ... ' myData(1) = ... ' ... ' Call function SaveDataToFile from the OpenOffice.org Macros library 'Tools -> UCB' SaveDataToFile(sUrl,myData())
A safer approach would be to use an environment variable (e.g. TEMP) for any OS, check whether this env var exists and the value is a writable directory and then use it but safer means (as almost always) more coding. /tmp was invented for the lazy :-)
No comments:
Post a Comment