GSAK (Geocaching Swiss Army Knife)
Contents - Index

TextOut (function)

TextOut(sFile,sEnclose,sDelimiter)

This function is to facilitate the generation of CSV and TAB delimited text files, and is the most versatile way to do so. However, for simple CSV and TAB delimited text file generation please see File=>Export=>CSV

The usage of this function is a tad quirky, but after a description and example I hope macro users will see the power of this function.

sFile = The fully qualified path and file name of the csv/text file being created
sEnclose = Specify if each field will be enclosed with double quotes or not. This value can be "quotes" or "none". Use "quotes" to enclose every field in double quotes. This is usually required for most programs that want CSV files. Use "none" to have each field exported as is without any surrounding quotes.
sDelimiter = Field delimiter. This value can be "comma" or "tab". Each exported field will have either a comma or tab after it

In order to actually generate output through this function you must first assign values to the special system variables $_txt1 through to $_txt99. It doesn't matter what order you allocate the values but the order that goes out to the file will always be $_txt1 first, $_txt2 second, etc. After using this command all the special $_txt variables are deleted from the macro variable stack so you must make sure you set every variable again if you are looping through the file to generate the text file. This is because if you firstly created a file of 5 fields, you wouldn't want the next file you create of only 2 fields having left over data from the first generation (in effect you would get 5 fields in the second file even though you only allocated values to $_txt1 and $_txt2 for the second file)

If the file does not exist it will be created. If the file does exist, the data will be appended to the file

For example, we want to create a CSV file that has Latitude, Longitude, Cache name, and only the first character of the container size
 

Goto Position=Top
while not($_eol)
  $_txt1 = $d_latitude
  $_txt2 = $d_longitude
  $_txt3 = $d_name
  $_txt4 = left($d_container,1)
  $result = TextOut("c:\temp\data.csv","quotes","comma")
  # Just in case file permission error or something test for error
  IF Left($result,7) = "*Error*"
    Pause Msg=$result
    Cancel
  EndIf  
  Goto position=next
Endwhile
 


As this function can be a bit CPU and disk intensive you might want to add in the SHOWSTATUS command in the loop to show feedback on where the macro is up to for large databases. 

however there are some situations where some of the numeric fields need to be output without quotes where as the string fields must be output with quotes. Using the same example as before, let us say you wanted the Longitude and Latitude output without surrounding them in double quotes you would use the following code:
 

Goto Position=Top
while not($_eol)
$_txt1 = $d_latitude
$_txt2 = $d_longitude
$_txt3 = Quote($d_name)
$_txt4 = Quote(left($d_container,1))
$result = TextOut("c:\temp\data.csv","none","comma")
# Just in case file permission error or something test for error
IF Left($result,7) = "*Error*"
   Pause Msg=$result
   Cancel
EndIf  
Goto position=next
Endwhile
 


The use of none in the second parameter stops all fields from having double quotes. So for the string fields we do want surrounded by double quotes we use the  Quote function. 

Alpha List         Category List

Copyright 2004-2014 CWE Computer Services  
Privacy Policy Contact