User Tools

Site Tools


en:documentation:script_reference

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
en:documentation:script_reference [2014/06/15 15:44] pchen:documentation:script_reference [2017/02/22 11:19] (current) – [Formating and conversion] pch
Line 10: Line 10:
  
 The language to use is [[wp>Pascal_Script|Pascal Script]].\\ The language to use is [[wp>Pascal_Script|Pascal Script]].\\
-For a complete reference of the Object Pascal language your can read the [[http://www.freepascal.org/docs-html/ref/ref.html|Free Pascal Reference guide]]. But beware that many feature are not implemented by the script language.+For a complete reference of the Object Pascal language your can read the [[http://www.freepascal.org/docs-html/ref/ref.html|Free Pascal Reference guide]]. But beware that some feature are not implemented by the script language, for example: no pointer, no assembler, no overloading 
  
 In addition to the standard Pascal Script feature the following Skychart specific function are added. In addition to the standard Pascal Script feature the following Skychart specific function are added.
  
 +===== Main menu function =====
 +
 +Every items of the main menu can be used from the scripts.\\
 +The full list of menu items name is available from the [[http://sourceforge.net/p/skychart/code/HEAD/tree/trunk/skychart/menu.txt|menu list]].\\
 +
 +You can execute the menu action by using the Click method, or test if an option is activated by testing the Checked property.
 +
 +===== Translation string =====
 +
 +Every string translated for the main program can be used in a script.\\
 +Directly use the rsXXX constant to get the translated string.\\
 +The full list of available string is available from the [[http://sourceforge.net/p/skychart/code/HEAD/tree/trunk/skychart/u_translation.pas|source code]].\\
 +If a string is not translated for your language don't hesitate [[:en:translations#software_translation|to do it yourself]].
 +
 +===== Constants =====
 +
 +^name^value^
 +|deg2rad| degree to radian conversion constant|
 +|rad2deg| radian to degree conversion constant|
 ===== Global variables access ===== ===== Global variables access =====
  
Line 30: Line 49:
 ^varname^value^ ^varname^value^
 |Str1 .. Str10|Ten global variable for your use| |Str1 .. Str10|Ten global variable for your use|
 +
 +^function GetSL(varname:string; var strl: Tstringlist):Boolean;^^
 +|Get the global stringlist variable identified by varname||
 +^varname^value^
 +|Strl1 .. Strl10|Ten global variable for your use|
 +
 +^function SetSL(varname:string; stlr: Tstringlist):Boolean;^^
 +|Set the global stringlist variable identified by varname for later use||
 +^varname^value^
 +|Strl1 .. Strl10|Ten global variable for your use|
  
 ^function GetI(varname:string; var i: Integer):Boolean;^^ ^function GetI(varname:string; var i: Integer):Boolean;^^
Line 78: Line 107:
 |Rotator1 , Rotator2|Two ASCOM Rotator objects| |Rotator1 , Rotator2|Two ASCOM Rotator objects|
 |Variant1 .. Variant10|Ten global variable for your use| |Variant1 .. Variant10|Ten global variable for your use|
- 
  
 ===== Chart and Celestial objects ===== ===== Chart and Celestial objects =====
Line 105: Line 133:
 ^function AsteroidMark(list:TstringList):boolean;^ ^function AsteroidMark(list:TstringList):boolean;^
 |Mark the listed asteroid to the chart| |Mark the listed asteroid to the chart|
 +
 +
 +===== Coordinates conversion =====
 +
 +^Procedure Eq2Hz(var ra,de : double ; var a,h : double);^
 +|Convert Equatorial ra,de to Alt/Az a,h for the location and time of the current chart, all angle in radian|
 +
 +^Procedure Hz2Eq(var a,h : double; var ra,de : double);^
 +|Convert Alt/Az a,h to equatorial ra,de for the location and time of the current chart, all angle in radian|
 +
 +^Procedure Eq2Gal(var ra,de : double ; var l,b : double);^
 +|Convert Equatorial ra,de to Galactic l,b , all angle in radian|
 +
 +^Procedure Gal2Eq(var l,b : double; var ra,de : double);^
 +|Convert Galactic l,b to equatorial ra,de , all angle in radian|
 +
 +^Procedure Eq2Ecl(var ra,de : double ; var l,b : double);^
 +|Convert Equatorial ra,de to Ecliptic l,b with obliquity for the date of the current chart, all angle in radian |
 +
 +^Procedure Ecl2Eq(var l,b : double; var ra,de : double);^
 +|Convert Ecliptic l,b to Equatorial ra,de with obliquity for the date of the current chart, all angle in radian|
 +
  
  
Line 132: Line 182:
 ^Function Format(Const Fmt : String; const Args : Array of const) : String;^ ^Function Format(Const Fmt : String; const Args : Array of const) : String;^
 |The [[http://www.freepascal.org/docs-html/rtl/sysutils/format.html|Format]] Pascal function| |The [[http://www.freepascal.org/docs-html/rtl/sysutils/format.html|Format]] Pascal function|
 +
 +^Procedure StrtoFloatD(str:string; var defval: Double; var val: Double);^
 +|Convert a string to a floating point value. Return defval if the string is a invalid number |
  
 ^function IsNumber(str: String): boolean;^ ^function IsNumber(str: String): boolean;^
 |Return True if the string represent a valid number| |Return True if the string represent a valid number|
 +
 +^function StringReplace(str,s1,s2: String): string;^
 +|Replace all occurrence of s1 by s2 in str|
 +
 +^procedure JsonToStringlist(jsontxt:string; var SK,SV: TStringList);^
 +|Parse a JSON formated string and return two stringlist. SK contain the names and SV the corresponding values|
 +
 +
  
 ===== Dialog ===== ===== Dialog =====
Line 146: Line 207:
 ^function MsgBox(const aMsg: string):boolean;^ ^function MsgBox(const aMsg: string):boolean;^
 |A message confirmation dialog. Return True if YES is clicked.| |A message confirmation dialog. Return True if YES is clicked.|
 +
 +^Procedure ShowMessage(const aMsg: string);^
 +|Display a message.|
  
 ^function CalendarDialog(var dt: double): boolean;^ ^function CalendarDialog(var dt: double): boolean;^
Line 162: Line 226:
  
 Also see the [[script_example|example]] about how to call a function in an external library. Also see the [[script_example|example]] about how to call a function in an external library.
 +
 +===== TCP/IP client socket =====
 +
 +For all this functions **socknum** identify the socket to use. This is a number between 1 and 10, thus allowing 10 simultaneous connection to different server.
 +
 +^function TcpConnect(socknum:integer; ipaddr,port,timeout:string):boolean;^
 +|Connect to the server at ipaddr:port and set the **timeout** for the subsequent operations|
 +
 +^function TcpDisconnect(socknum:integer):boolean;^
 +|Disconnect from the server|
 +
 +^Function TcpConnected(socknum:integer) : boolean;^
 +|Return **True** if the socket is connected|
 +
 +^Function TcpRead(socknum:integer; var buf : string; termchar:string) : boolean;^
 +|Read data from the socket until the character **termchar** is encountered, typically termchar is CRLF|
 +
 +^Function TcpReadCount(socknum:integer; var buf : string; var count : integer) : boolean;^
 +|Read data from the socket until **count** character are read or **timeout** is reached|
 +
 +^Function TcpWrite(socknum:integer; var buf : string; var count : integer) : boolean;^
 +|Write data to the socket from **buf** for a length of **count**|
 +
 +^Procedure TcpPurgeBuffer(socknum:integer);^
 +|Purge all the received data currently queued in the receive buffer|
 +
 +
 +
 +
  
en/documentation/script_reference.1402839853.txt.gz · Last modified: 2015/11/06 20:34 (external edit)