Page 1 of 1
Coding query
Posted: 18 Aug 2012 17:47
by MartinA
strName = fhGetItemText(pi,'INDI.CENS[year=1911].SOUR[1]>OBJE[1]>TITL')
works fine.
So does
strCens='INDI.CENS[year=1911].SOUR[1]>OBJE[1]>TITL'
strName = fhGetItemText(pi,strCens)
But
strCens=''INDI.CENS[year=1911].SOUR[1]>OBJE[1]>TITL''
strName = fhGetItemText(pi,strCens)
does not.
Hence nor does
strCens=''INDI.CENS[year='..strDate..'].SOUR[1]>OBJE[1]>TITL''.
strName = fhGetItemText(pi,strCens)
where strDate is a user input.
Is there a way of doing this, i.e. having a user input date in the fhGetItemText function?
Martin
ID:6444
Coding query
Posted: 18 Aug 2012 18:23
by tatewise
In the
How to Write Plugins help, see the
Introduction to Lua > Lua Quick Guide sub-section on
STRINGS.
Also see
Lua 5.1 Reference Manual very near the beginning under
2.1 - Lexical Conventions it defines
Literal strings.
'INDI.CENS[year=1911].SOUR[1]>OBJE[1]>TITL' is a text string using single quote delimiters.
'INDI.CENS[year=1911].SOUR[1]>OBJE[1]>TITL' is an identical text string using double quotes.
INDI.CENS[year=1911].SOUR[1]>OBJE[1]>TITL is the actual text string in both cases.
''INDI.CENS[year=1911].SOUR[1]>OBJE[1]>TITL'' defines a different text string:-
'INDI.CENS[year=1911].SOUR[1]>OBJE[1]>TITL' as it has a single quote character at front and back.
(This is a technique for including single quote chars in a text string).
c.f.
''INDI.CENS[year=1911].SOUR[1]>OBJE[1]>TITL'' defines
'INDI.CENS[year=1911].SOUR[1]>OBJE[1]>TITL'
(This is a technique for including double quote chars in a text string).
The following will all work OK providing that
strYear is a four digit string:-
Use single quotes
strName = fhGetItemText(pi,'INDI.CENS[year='..strYear..'].SOUR[1]>OBJE[1]>TITL')
or use double quotes
strName = fhGetItemText(pi,'INDI.CENS[year='..strYear..'].SOUR[1]>OBJE[1]>TITL')
or even single quotes and double quotes
strName = fhGetItemText(pi,'INDI.CENS[year='..strYear..'].SOUR[1]>OBJE[1]>TITL')
or single quotes in a variable
strCens='INDI.CENS[year='..strYear..'].SOUR[1]>OBJE[1]>TITL'
strName = fhGetItemText(pi,strCens)
or double quotes in a variable
strCens='INDI.CENS[year='..strYear..'].SOUR[1]>OBJE[1]>TITL'
strName = fhGetItemText(pi,strCens)
(Any number of digits in
strYear would also be syntactically OK, but there are no Census years before 1790).
Coding query
Posted: 19 Aug 2012 08:56
by MartinA
Right, thanks Mike.
I understand that now. I'll give them a try although I thought I'd already tried at least one of those.
Thanks again.
Martin
Coding query
Posted: 19 Aug 2012 10:25
by Jane
Don't forget you can use the debug to check the value of your data reference string, if you build it as a variable before use.
Coding query
Posted: 19 Aug 2012 12:16
by MartinA
Yes, thanks Jane. I'm getting there, but it's a fairly steep learning curve from when I played around with VB years ago. The main problem was with strings that had accidental spaces at the beginning. I only found them by checking string length against the output where it wasn't obvious.
I finally have a working version that reads all the files (census images) that I have stored in a given census date folder. It then reads all the multimedia that FH holds for the same year and picks out the names that have a file not linked in.
It also showed up some anomalies in my file naming system which helped rationalise things.
As I said previously, I don't think this is worth uploading, because any other user would have to edit it to match their filepaths.
Thanks for the help,
Martin