Extracting the indexed words from a field
The Text property of the Field object gives you direct access to the entire text of a field, indexed and unindexed words alike. If you want to get just the indexed words (and numbers and dates) from a field, there is no IndexedText property built in to Cardbox, but you can construct a macro that does the same thing.
The IndexedText function
Function IndexedText(fld) Dim x x=fld.TextWithIndex x=Replace(x,vbLf," ") x=Split(x," ") Dim i,n,nFound For i=LBound(x) To UBound(x) n=CountStars(x(i)) If (n AND 1) Then x(nFound)=Mid(x(i),n\2+2) : nFound=nFound+1 End If Next Dim y() Redim y(nFound-1) For i=0 to nFound-1 : y(i)=x(i) : Next IndexedText=Join(y," ") End Function Function CountStars(str) Dim i,n n=Len(str) For i=1 To n If Mid(str,i,1)<>"*" Then CountStars=i-1 : Exit Function Next CountStars=n End Function
This function is quite complex because it deals with every possible case and has been optimised to work fast with large fields; but essentially it uses the TextWithIndex property to get field data along with indexing information, then looks at each word and keeps only those that are marked as being indexed.
Testing the macro
You can test the macro by adding a line such as the following:
where you should replace FLDNAME with the name of the field whose indexed words you want to extract.