Date of update: 15.05.2011

XTRA dmmFTS for fulltext searching

write us
Novelties
Web feeds
Links of Interest

List of functions

new     Initialization of the XTRA library dmmFTS.x32
ftsRegistration   Registration of the XTRA dmmFTS.x32
ftsErrorMsg   Information about an error announcement for the XTRA dmmFTS.x32
ftsIsNoError   Test made to show whether an error occured during work with the XTRA
ftsErrorDialog   A preselection giving choice to show the dialogue window with error statement
ftsErrorLog   A preselection giving choice to save errors to log file
ftsOpenIndex   Opening of the fulltext index for fulltext searching
ftsCloseIndex   Closure and end of your work with the fulltext index
ftsVersion   Information about a version number of the XTRA dmmFTS.x32
ftsIndexerName   Information about the name of indexer that built the fulltext index
ftsIndexerVersion   Information about the version of indexer that built the fulltext index
ftsIndexCreated   Information about the date and time of the fulltext indexer creation
ftsMaxRecordCount   Maximal number of searched documents setting
ftsRankMode   Definition of calculation of the rank value
ftsSearch   The fulltext searching itself
ftsWords   Creation of the list of searched words
ftsOrder   Searched documents database ordering
ftsBof   A test to find out whether the actual record is the first one in the database of searched documents
ftsEof   A test to find out whether the actual record is the last one in the database of searched documents
ftsFirst  

A jump on the first record in the database of searched documents

ftsPrior   A jump on the previous record in the database of searched documents
ftsNext   A jump on the next record in the database of searched documents
ftsLast   A jump on the last record in the database of searched documents
ftsMoveBy   A jump n records ahead in the database of searched documents
ftsFind   Shift on the record with a concrete id value of the identificator
ftsRecordCount   Information about number of found documents in the database of searched documents
ftsRecordNo   Information about record number of the actual record in the database of searched documents
ftsInsertBookmark   Placement of a bookmark on a certain record in the database
ftsGoToBookmark   A jump on an already create bookmark in the database
ftsGetBookmarks   Information about what boomarks are setted
ftsDeleteBookmark   Bookmark deletion
ftsClearBookmarks   All bookmarks deletion
ftsDocument   Information about the actual record from the database of searched documents
ftsGetFieldByName   Value of item of the found documents, that is defined by its name.
ftsGetFieldByNumber   Value of item of the found documents, that is defined by its order in the database.

Description of functions
-----------------------------------------------------------------------------------------------------------------------------------------------------------

new

We have to initiate dmmFTS.x32 before the first use.

Example - Director
global doc
openXlib the pathName&"dmmFTS.x32"
doc=new(xtra "dmmFTS")

If the library dmmFTS.x32 is located in the XTRA folder, it is enough to command
global doc
doc=new(xtra "dmmFTS")

Example - Authorware
doc:=NewObject("dmmFTS")

-----------------------------------------------------------------------------------------------------------------------------------------------------------

void=ftsRegistration
( name: string, code:string)
This function has to be called before the first use of the XTRA dmmFTS.x32 immediately after initialization. Unless the right registration name and number are inserted an announcement "this is a demo version" will appear after initialization of the application and only the first 10 searched documents will be screened, another announcement "demo version" will appear for the rest.

Parametres
Type of name is string, for the demo version name = "dmm".
Type of code is string, for the demo version code= "demo". The chain for commercial version is unique.
To register the user will receive parameters code and name.

Very important
For safety reasons incorrect parameters can be only inserterted 3 times in the function registration. If you insert incorrect parameters name and code more times the registration is blocked and the XTRA will not work. You will be informed about it by a dialogue window. In this case you´ve got to restart Director or Authorware.

Note: Parameters name="dmm" and code="demo" are not considered as incorrect.

Example - Director
global doc
doc.ftsRegistration("dmm", "demo")

Example - Authorware
CallObject(doc; "ftsRegistration"; "dmm"; "demo")

-----------------------------------------------------------------------------------------------------------------------------------------------------------

string=ftsErrorMsg()
The function gives text of the error that occured during your work with dmmFTS. If an operation goes smoothly an empty chain is given.

Parametres
There are no parametres in this function.

Example - Director
global doc
doc.ftsOpenIndex(the pathName&"dmm.fts")
error=doc.ftsErrorMsg()
if error="" then ftsDoc=doc.ftsSearch("demo and score")

Example - Authorware
error:=CallObject(doc; "ftsErrorMsg")

-----------------------------------------------------------------------------------------------------------------------------------------------------------

boolean=ftsIsNoError()
The function gives back true, if no error occured during an operation. If an error occurs the function gives back false.

Parametres
There are no parametres in this function.

Example - Director
global doc
doc.ftsOpenIndex(the pathName&"data.fts")
if doc.ftsIsNoError() then
  ....
end if

Example - Authorware
error:=CallObject( doc; "ftsIsNoError")

-----------------------------------------------------------------------------------------------------------------------------------------------------------

void=ftsErrorDialog(dialog: boolean)
Using this function we can set whether a dialogue window, showing error statement appears at the moment of an error or not. This setting only functions in Autor mode and it simplifies the application debugging. If you decide not to set the dialogue window you can check the errors using the function ftsErrorMsg().

Parametres
Dialog is the only parameter of the function, whose type is boolean. If the value is true, the dialogue window with error statement is opened with every error in the XTRA. For the parameter value false the window is not shown. Default setting is dialog=false.

Example - Director
global doc
doc.ftsErrorDialog(true)

Example - Authorware
CallObject(doc; "ftsErrorDialog"; true)

-----------------------------------------------------------------------------------------------------------------------------------------------------------

void=ftsErrorLog(logFile: string, logSave: boolean)
Using this function we can set whether an error is saved to text log file at the time of the error or not. This setting only functions in Autor mode and it simplifies the application debugging.

Parametres
The function has two parametres. The parameter logFile represents name of the log file that we want to save the errors to. Type of the logSave parametre is boolean. If its value is true, every error in the XTRA is saved to log file. If its value is false nothing will be saved. Default setting is logSave=false.

Example - Director
global doc
doc.ftsErrorLog(the pathName&"log.txt", true)

Example - Authorware
CallObject(doc; ftsErrorLog; FileLocation ^ "log.txt"; true)

-----------------------------------------------------------------------------------------------------------------------------------------------------------

void=ftsOpenIndex(file:string)
The function opens a fulltext index fts for the fulltext searching. Unless the fulltext index is open, it is not possible to use the fulltext searching.

Parametres
Type of file is string and one inserts here the name of an fts including the path.

Example - Director
global doc
doc.ftsOpenIndex(the pathName&"data.fts")

Example - Authorware
CallObject(doc; "ftsOpenIndex"; FileLocation ^ "data.fts")

-----------------------------------------------------------------------------------------------------------------------------------------------------------

void=ftsCloseIndex()
This function closes and fineshes your work with the fulltext indexer.

Parametry
There are no parametres in this function.

Example - Director
global doc
doc.ftsCloseIndex()

Example - Authorware
CallObject(doc; "ftsCloseIndex")

-----------------------------------------------------------------------------------------------------------------------------------------------------------

string=ftsVersion()
The function gives XTRA dmmFTS.x32 version number.

Parametres
There are no parametres in this function.

Example - Director
global doc
version=doc.ftsVersion()

Example - Authorware
version:=CallObject(doc; "ftsVersion")

-----------------------------------------------------------------------------------------------------------------------------------------------------------

string=ftsIndexerName()
The function gives name of the indexer that has built the fulltext index file.

Parametres
There are no parametres in this function.

Example - Director
global doc
indexerName=doc.ftsIndexerName()

Example - Authorware
indexerName:=CallObject(doc; "ftsIndexerName")

-----------------------------------------------------------------------------------------------------------------------------------------------------------

string=ftsIndexerVersion()
The function gives version of the indexer that has built the fulltext index file.

Parametres
There are no parametres in this function.

Example - Director
indexerVersion=doc.ftsIndexerVersion()

Example - Authorware
indexerVersion:=CallObject(doc; "ftsIndexerVersion")

-----------------------------------------------------------------------------------------------------------------------------------------------------------

string=ftsIndexCreated()
The function gives date and time of fulltext index building.

Parametres
There are no parametres in this function.

Example - Director
global doc
dateTime=doc.ftsIndexCreated()

Example - Authorware
dateTime:=CallObject(doc; "ftsIndexCreated")

-----------------------------------------------------------------------------------------------------------------------------------------------------------

void=ftsMaxRecordCount(max: integer)
The function sets the maximum number of searched documents. This limitation has to be used because sometimes the result is too many documents, which bear irrelevant information. Their Rang is too little.

Parametres
Type of max is integer and it represents the maximum number of documents, that we want to find.

Example - Director
global doc
doc.ftsMaxRecordCount(50)

Example - Authorware
CallObject(doc; "ftsMaxRecordCount" ; 50)

-----------------------------------------------------------------------------------------------------------------------------------------------------------

void=ftsRankMode(type: symbol)
The function sets how the value rank will be calculated. If we want to find out the value rank we have to take into consideration that the calculation will take certain time and the reply can thus be slower.

Parametres
The only parameter is type, whose type is symbol and it means the following:

Type=#rankNone   Rank is not calculated, it is not possible to order the database using the value rank of found documents in the function ftsOrder. The fulltext search is very fast though.
Type=#rankCount   In the database of found documents rank gives number of words in the document.
Type=#rankPercent   In the database of found documents rank gives percentage of found words. So the record with the highest rank value has 100% etc.

Note
Defaultly set value in the XTRA is Type=#rankCount.

Example - Director
global doc
doc.ftsRankMode(#rankNone)

Example - Authorware
CallObject(doc; "ftsRankMode"; #rankNone)

-----------------------------------------------------------------------------------------------------------------------------------------------------------

void=ftsSearch(condition: string)
This functions makes the fulltext searching itself. After initialization of the ftsSearch function the database of searched documents is filled. We can work in this database using the function ftsFirst, ftsPrior, ftsNext, ftsLast and ftsMoveBy. We can read values from this database using the function ftsDocument.

Parametres
The easiest fulltext searching is an insertion of a single word. Avanced searching is to search a chain of words, incomplete words etc. Overview of logical operators, that can be used for the searching, as well as examples of use can be found in the table below.

Operator AND
Text word 1 AND word 2
Example spring AND summer (spring AND summer)
"spring" AND "summer"
spring AND summer AND autumn
Meaning The function ftsSearch finds the texts where both (all) inserted words are present
Operator OR
Text word 1 OR word 2
Example spring OR summer
(spring OR summer)
"spring" OR "summer"
Meaning The function ftsSearch finds the texts where either one or both (all) inserted words are present (at least one inserted word). It is useful to use this operator for example for Synonyms searching, for example "picture OR image"
Operator NOT
Text

word 1 NOT word 2

Example spring NOT summer
(spring NOT summer)
"spring" NOT "summer"
Meaning The function ftsSearch finds the texts where the first inserted word is present unlike the other one. AND NOT excludes an undesirable word so that the choice is more specified.
Operator NEAR
Text word 1 NEAR word 2
Example spring NEAR summer
(spring NEAR summer)
"spring" NEAR "summer"
Meaning The function ftsSearch finds the texts where both words are present and furthermore they both are located near each other (for example up to 8 words). This type of searching expects a certain continuity among these words, which also specifies the choice.
Operator LIKE
Text LIKE word
Example LIKE spring
Meaning This functions makes the choice broader, as the similar words are searched too,
which enables us to:
• exclude errors made by bad typing or bad knowledge of spelling (e.g. for foreign words)
• include relative or interrelated words
Operator *
Text word*
Example sprin*
Meaning Masking of the rest of a word. The function ftsSearch finds the texts where words begining with a chosen chain of lettres are present. It for, example, finds the words begining with 5 certain letters, such as, for example, spring, sprinkle,sprint etc.
Operator ?
Text

word?
word??

Example sprin?
spri??
Meaning The function ftsSearch finds the texts where words begining with a chosen chain of lettres are present and they also end with as many letteres as question marks. By defining "sprin?" we can find, for example, words spring or sprint but we never find sprinkle as the maximum number of letteres is set to be 6.
Operator PHRASE
Text "multiword term"
Example "National theatre"
Meaning The function ftsSearch finds the texts where a complete phrase in quotation marks is included. It, for example, doesn´t find theatre or national, it only finds the complete term "national theatre".

Note
If terms like AND, NOT, OR, NEAR, LIKE etc. are included in the searched text, they have to be a part of a phrase in quation marks or else they are considered as logical operators. For example, by typing "black" and "white" all the text where both, black and white are present, are found. On the other hand, by typing "Black and white" only documents with this combination are found.


Example - Director
global doc
doc.ftsSearch("dir* and Macrom* and XTRA")

Example - Authorware
CallObject(doc; "ftsSearch"; "dir* and Macrom* and XTRA")

-----------------------------------------------------------------------------------------------------------------------------------------------------------

list=ftsWords()
The function gives a list of found words. For example del* is in accordance with delphi, delphin, delete etc. The searched words are given in Abstract Data Types format, in [word1, word2, word3, .. ]shape. The words are in ascending alphabetical order. The given words can be used to mark the searched words in the searched documents.

Parametres
There are no parametres in this function.

Example - Director
global doc
words=doc.ftsWords()

Example - Authorware
words:=CallObject(doc; "words")

-----------------------------------------------------------------------------------------------------------------------------------------------------------

void=ftsOrder(type: symbol, sort: symbol)
The function orders the searched document database.

Parametres
There are two parametres: Type of both, type and sort, is symbol and they mean the following:
Sort=#asc, the documents are in ascending order
Sort=#desc, the documents are in descending order

Parameter depends on the used indexer:
Indexer Type
dmmFTSIndexer Type=#rank, the searched documents are ordered depending on frequency of occurence of searched words
Type=#memberName, the searched documents are ordered depending on the item memberName
Type=#size, the searched documents are ordered depending on size
dmmFTSIndexerFile

Type=#rank, the searched documents are ordered depending on frequency of occurence
of searched words
Type=#title, the searched documents are ordered depending on the item title
Type=#size, the searched documents are ordered depending on size
Type=#date, the searched documents are ordered depending on the date of creation

dmmFTSIndexerMDB Type=#rank, the searched documents are ordered depending on frequency of occurence
of searched words
Type=#title, the searched documents are ordered depending on the item title
Type=#size, the searched documents are ordered depending on size

Note
The values are automatically set to Type=#rank a Sort=#desc. It means that the documents with the highest frequency of searched words and beeing in the best accordance with options chosen in ftsSearch go first

Example - Director
global doc
doc.ftsOrder(#memberName, #asc)

Example - Authorware
CallObject(doc; "ftsOrder"; #memberName; #asc)

-----------------------------------------------------------------------------------------------------------------------------------------------------------

boolean=ftsBof()
The function gives true in case the actual record is the first record in the searched document database.
Otherwise it gives false.

Parametres
There are no parametres in this function.

Example - Director
global doc
if not doc.ftsBof() then
      ftsDoc=doc.ftsDocument()
end if

Example - Authorware
s:=CallObject(doc; "ftsBof")

-----------------------------------------------------------------------------------------------------------------------------------------------------------

boolean=ftsEof()
The function gives true in case the actual record is the last record in the searched document database.
Otherwise it gives false.

Parametres
There are no parametres in this function.

Example - Director
global doc
if not doc.ftsEof() then
      ftsDoc=doc.ftsDocument()
end if

Example - Authorware
s:=CallObject(doc; "ftsEof")

-----------------------------------------------------------------------------------------------------------------------------------------------------------

void=ftsFirst()

The function sets the first record in the searched document database to be the actual record.

Parametres
There are no parametres in this function.

Example - Director
global doc
doc.ftsFirst()

Example - Authorware
CallObject(doc; "ftsFirst")

-----------------------------------------------------------------------------------------------------------------------------------------------------------

void=ftsPrior()
The function sets the previous record in the searched document database to be the actual record.

Parametres
There are no parametres in this function.

Example - Director
global doc
doc.ftsPrior()

Example - Authorware
CallObject(doc; "ftsPrior")

-----------------------------------------------------------------------------------------------------------------------------------------------------------

void=ftsNext()
The function sets the next record in the searched document database to be the actual record.

Parametres
There are no parametres in this function.

Example - Director
global doc
doc.ftsNext()

Example - Authorware
CallObject(doc; "ftsNext")

-----------------------------------------------------------------------------------------------------------------------------------------------------------

void=ftsLast()
The function sets the last record in the searched document database to be the actual record.

Parametres
There are no parametres in this function.

Example - Director
global doc
doc.ftsLast()

Example - Authorware
CallObject(doc; "ftsLast")

-----------------------------------------------------------------------------------------------------------------------------------------------------------

void=ftsMoveBy(distance:integer)
The function jumps n records ahead or back in the searched document database.

Parametres
The only parameter is distance. The distance represents how many records in the database we want to move ahead or back. If the distance is >0, we move ahead if it is<0,we go back.
Example - Director
global doc
doc.ftsMoveBy(17)
doc.ftsMoveBy(-2)

Example - Authorware
CallObject(doc; ftsMoveBy"; 17)
CallObject(doc; ftsMoveBy"; -2)

-----------------------------------------------------------------------------------------------------------------------------------------------------------

boolean=ftsFind(id:integer)
The function jumps on the record in the database that is defined definitely by the id identificator. If the record can be found, the functions gives true. Otherwise it gives false.

Parametres
The parameter of the function is id, whose type is integer. Id of the appropriate record in the database is given by the function ftsDocument().

Example - Director
global doc
doc.ftsFind(7)

Example - Authorware
CallObject(doc; ftsFind"; 7)

-----------------------------------------------------------------------------------------------------------------------------------------------------------

integer=ftsRecordCount()
The function gives number of records in searched document database.

Parametres
There are no parametres in this function.

Example - Director
global doc
count=doc.ftsRecordCount()

Example - Authorware
count:=CallObject(doc; "RecordCount")

-----------------------------------------------------------------------------------------------------------------------------------------------------------

integer=ftsRecordNo()
The function gives the serial number of the actual record in the searched document database.

Parametres
There are no parametres in this function.

Example - Director
global doc
number=doc.ftsRecordNo()

Example - Authorware
number:=CallObject(doc; "ftsRecordNo")

-----------------------------------------------------------------------------------------------------------------------------------------------------------

void=ftsInsertBookmark(name: string)
The function creates and sets bookmark for the actual record of the database. In an application we can create a list of such bookmarks and then visit records that seemed somehow interesting to us.

Parametres
The parameter of the function is name, which represents name of the bookmark. This name must be unique. If we insert an already existing name, the exisiting bookmark will be rewritten.

Example - Director
global doc
doc.ftsInsertBookmark("test1")

Example - Authorware
CallObject(doc; "ftsInsertBookmark"; "test1")

-----------------------------------------------------------------------------------------------------------------------------------------------------------

void=ftsGoToBookmark(name: string)
The function sets as actual record the record that is represented by the given bookmark.

Parametres
The parameter of the function is name, which represents name of the bookmark.

Example - Director
global doc
doc.ftsGoToBookmark("test1")

Example - Authorware
CallObject(doc; "ftsGoToBookmark"; "test1")

-----------------------------------------------------------------------------------------------------------------------------------------------------------

void=ftsGetBookmarks()
The function gives a list of defined bookmarks in the Abstract Data Types format ["name1", "name2", "name3", ....]

Parametres
There are no parametres in this function.

Example - Director
global doc
listBookmarks=doc.ftsGetBookmarks()

Example - Authorware
listBookmarks:=CallObject(doc; "ftsGetBookmarks")

-----------------------------------------------------------------------------------------------------------------------------------------------------------

void=ftsDeleteBookmark(name: string)
The function deletes a bookmark of the given name.

Parametres
The parameter of the function is name, which represents name of the bookmark.

Example - Director
global doc
doc.ftsDeleteBookmark("test1")

Example - Authorware
CallObject(doc; "ftsDeleteBookmark"; "test1")

-----------------------------------------------------------------------------------------------------------------------------------------------------------

void=ftsClearBookmarks()
The functions deletes all created bookmarks.

Parametres
There are no parametres in this function.

Example - Director
global doc
doc.ftsClearBookmarks()

Example - Authorware
CallObject(doc; "ftsClearBookmarks")

-----------------------------------------------------------------------------------------------------------------------------------------------------------

list=ftsDocument()
The function gives values of the actual record from the database of searched documents. Format of the values is Abstract Data Types. The way in which the dates are given depends on the used indexer.

Indexer dmmFTSIndexer (Cast member of the Text, Field type in Macromedia Director)
Format [#id: id, #memberName: "memberName", #castName: "castName", #rank: rank, #size: size]
Description The identificator is saved in id. The identificator defines the function definitely. This identificator is unique for every record. In memberName there is a name cast member, in castName there is name cast, in rank there is the value rank of the actual cast member and in size there is the size of the document.
Example [#id: 7, #memberName: "Text abc", #castName: "Internal", #rank: 7, #size: 220]
Indexer dmmFTSIndexerFile (html, rvf, rtf, txt documents)
Format [#id: id, #title: "title", #link: "link", # type: "type", #rank: rank, #size: size]
Description The identificator is saved in id. The identificator defines the function definitely. This identificator is unique for every record. In title there is name of the document, in link there is relative path to the document, in type there is type of the document, e.g.. html, rvf, rtf, txt. In rank there is the value rank of the actual document and in size there is the size of the document.
Example [#id: 7, #title:"Director", #link:"data\abc.html", # type:"html", #rank: 2, #size: 220]
Indexer dmmFTSIndexerMDB (database Access - mdb)
Format [#id: id, #title: "title", #link: "link", #rank: rank, #size: size]
Description

The identificator is saved in id. The identificator defines the function definitely. This identificator is unique for every record. In title there is contents of the item from the mdb database that we, when creating the fulltext index, defined as "Title field". In link there contents of the item defiend as "Index field". Link is a connection to the original mdb database that was indexed. In rank there is a value of the actual record of the database and in size there is size of the document.

Example [#id: 7, #title: "Access", #link: "227", #rank: 2, #size: 127]

Note
The size is only derivated from the text and it doesn´t include pictures´and tables´size.

Parametres
There are no parametres in this function.

Example - Director
global doc
ftsDoc=doc.ftsDocument()
put ftsDoc.memberName
put ftsDoc.castName
put ftsDoc.rank
put ftsDoc.size

Example - Authorware
ftsDoc:=CallObject(doc; "ftsDocument")
memberName:=ValueAtIndex(ftsDoc; 1)
castName:=ValueAtIndex(ftsDoc; 2)
rank:=ValueAtIndex(ftsDoc; 3)
size:=ValueAtIndex(ftsDoc; 4)

-----------------------------------------------------------------------------------------------------------------------------------------------------------

value=ftsGetFieldByName(fieldName: string)
The function returns value of the item of the database of the found documents, that is defined by its name.
The function returns the value in the format that the appropriate item in the databse is defined in.

Parametres
Parameter of the function is fieldName whose type is string and we insert here name of the item defined in the database. Description of the individual items is the same as in the function ftsDocument.

Indexer dmmFTSIndexer (Cast member of the Text, Field type in Macromedia Director)
fieldName id, memberName, castName, rank, size
Indexer dmmFTSIndexerFile (html, rvf, rtf, txt documents)
fieldName id, title, link, rank, size, type
Indexer dmmFTSIndexerMDB (database Access - mdb)
fieldName id, title, link, rank, size

Example - Director
global doc
id=doc.ftsGetFieldByName("id")
title=doc.ftsGetFieldByName("title")
link=doc.ftsGetFieldByName("link")

Example - Authorware
id:=CallObject(doc; "ftsGetFieldByName"; "id")
title:=CallObject(doc; "ftsGetFieldByName"; "title")
link:=CallObject(doc; "ftsGetFieldByName"; "link")

-----------------------------------------------------------------------------------------------------------------------------------------------------------

value=ftsGetFieldByNumber(fieldNo: string)
The function returns value of the item in the database of found documents, that is defined by its order in the database. The function returns the value in the format that the defined item has in the database.

Parametres
The function has a parameter being fieldNo whose type is integer and we insert here order of the item in the database. Description of individual items is identical as in the function ftsDocument.

Indexer dmmFTSIndexer (Cast member of the Text, Field type in Macromedia Director)
fieldNo id=1, memberName=2, castName=3, rank=4, size=5
Indexer dmmFTSIndexerFile (html, rvf, rtf, txt documents)
fieldNo id=1, title=2, link=3, rank=4, size=5, type=6
Indexer dmmFTSIndexerMDB (database Access - mdb)
fieldNo id=1, title=2, link=3, rank=4, size=5

Example - Director
global doc
id=doc.ftsGetFieldByNumber(1)
title=doc.ftsGetFieldByNumber(2)
link=doc.ftsGetFieldByNumber(3)

Example - Authorware
id:=CallObject(doc; "ftsGetFieldByNumber"; 1)
title:=CallObject(doc; "ftsGetFieldByNumber"; 2)
link:=CallObject(doc; "ftsGetFieldByNumber"; 3)




© 1992-2010 Studio dmm, all rights reserved