<?xml version="1.0" encoding="UTF-8"?><!-- generator="wordpress/2.3.3" -->
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	>
<channel>
	<title>Comments on: FileMaker Dictionary Functions</title>
	<link>http://sixfriedrice.com/wp/filemaker-dictionary-functions/</link>
	<description>smart business solutions</description>
	<pubDate>Thu, 04 Dec 2008 21:52:15 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.3.3</generator>
		<item>
		<title>By: Tom Elliott</title>
		<link>http://sixfriedrice.com/wp/filemaker-dictionary-functions/#comment-1351</link>
		<dc:creator>Tom Elliott</dc:creator>
		<pubDate>Sun, 16 Nov 2008 21:52:04 +0000</pubDate>
		<guid>http://sixfriedrice.com/wp/filemaker-dictionary-functions/#comment-1351</guid>
		<description>Jesse

I guess I took the view that "gibberish&#60;: ..." is not a valid dictionary but, yes, I can see that it could be viewed otherwise.

cheers

Tom</description>
		<content:encoded><![CDATA[<p>Jesse</p>
<p>I guess I took the view that &#8220;gibberish&lt;: &#8230;&#8221; is not a valid dictionary but, yes, I can see that it could be viewed otherwise.</p>
<p>cheers</p>
<p>Tom</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Jesse Antunes</title>
		<link>http://sixfriedrice.com/wp/filemaker-dictionary-functions/#comment-1347</link>
		<dc:creator>Jesse Antunes</dc:creator>
		<pubDate>Sun, 16 Nov 2008 02:20:30 +0000</pubDate>
		<guid>http://sixfriedrice.com/wp/filemaker-dictionary-functions/#comment-1347</guid>
		<description>@Tom -

I'm glad you enjoyed our stuff!

Your function works fine in the vast majority of cases and quite frankly is ridiculously cleaner.  The only problem would be if there were gibberish in front of the dictionary information like this:

gibberish&lt;:first_key:=

Your function wouldn't be able to figure out the first key.  It's probably a safe assumption that this is an outlier or even that this shouldn't be a valid dictionary.  I figured I would cover the case if I could.</description>
		<content:encoded><![CDATA[<p>@Tom -</p>
<p>I&#8217;m glad you enjoyed our stuff!</p>
<p>Your function works fine in the vast majority of cases and quite frankly is ridiculously cleaner.  The only problem would be if there were gibberish in front of the dictionary information like this:</p>
<p>gibberish<:first_key:=</p>
<p>Your function wouldn&#8217;t be able to figure out the first key.  It&#8217;s probably a safe assumption that this is an outlier or even that this shouldn&#8217;t be a valid dictionary.  I figured I would cover the case if I could.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Tom Elliott</title>
		<link>http://sixfriedrice.com/wp/filemaker-dictionary-functions/#comment-1346</link>
		<dc:creator>Tom Elliott</dc:creator>
		<pubDate>Sun, 16 Nov 2008 01:51:51 +0000</pubDate>
		<guid>http://sixfriedrice.com/wp/filemaker-dictionary-functions/#comment-1346</guid>
		<description>Geoff &#38; Jesse

I love all these dictionary Cfs but it seems to me that the formula for DictFirst() is unnecessariiy complicated. Of course I may be missing something, but the following seems to do what's necessary:

  Let (
	nameLength = Position ( dict ; ":=" ; 3 ; 1 ) - 3 ;
	If ( Left ( dict ; 2 ) = "&lt;:" ; Middle ( dict ; 3 ; nameLength ) )
	)

Having said that, this is all awesome stuff

cheers

Tom</description>
		<content:encoded><![CDATA[<p>Geoff &amp; Jesse</p>
<p>I love all these dictionary Cfs but it seems to me that the formula for DictFirst() is unnecessariiy complicated. Of course I may be missing something, but the following seems to do what&#8217;s necessary:</p>
<p>  Let (<br />
	nameLength = Position ( dict ; &#8220;:=&#8221; ; 3 ; 1 ) - 3 ;<br />
	If ( Left ( dict ; 2 ) = &#8220;<:&#8221; ; Middle ( dict ; 3 ; nameLength ) )<br />
	)</p>
<p>Having said that, this is all awesome stuff</p>
<p>cheers</p>
<p>Tom</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Thomas Seidler</title>
		<link>http://sixfriedrice.com/wp/filemaker-dictionary-functions/#comment-1235</link>
		<dc:creator>Thomas Seidler</dc:creator>
		<pubDate>Sat, 28 Jun 2008 22:56:20 +0000</pubDate>
		<guid>http://sixfriedrice.com/wp/filemaker-dictionary-functions/#comment-1235</guid>
		<description>&#38; i reckon you did  because for simple PatternCount, Position and such two characters are MUCH easier to find. Do a Position("&#60;" etc and it would find it in all the escaped sections too: "\&#60;name...". But find "&#60;:" and you can be guaranteed they are the markers/delimiters as the others will have been escaped "\&#60;\:". So i think i agree with u guys, it is simplest and fastest to be &#60;: or some such combination of two chars.</description>
		<content:encoded><![CDATA[<p>&amp; i reckon you did  because for simple PatternCount, Position and such two characters are MUCH easier to find. Do a Position(&#8221;&lt;&#8221; etc and it would find it in all the escaped sections too: &#8220;\&lt;name&#8230;&#8221;. But find &#8220;&lt;:&#8221; and you can be guaranteed they are the markers/delimiters as the others will have been escaped &#8220;\&lt;\:&#8221;. So i think i agree with u guys, it is simplest and fastest to be &lt;: or some such combination of two chars.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Thomas Seidler</title>
		<link>http://sixfriedrice.com/wp/filemaker-dictionary-functions/#comment-1234</link>
		<dc:creator>Thomas Seidler</dc:creator>
		<pubDate>Sat, 28 Jun 2008 22:47:58 +0000</pubDate>
		<guid>http://sixfriedrice.com/wp/filemaker-dictionary-functions/#comment-1234</guid>
		<description>@Chris - done now, so don't worry (and re-uploaded wiki-basic for those interested, btw got nice Apple theme…). One custom function for the 'Log field' to cover all manual entry - very nice. Liked the nightwing stuff. Scuse my ecletic hobbies there for all to see… and the Christian fundamentalist at play

@Geoff - yes indeed # #P are the way to go, even speedier… ! love it! :)  – i'm so glad to have the time to look around and clock these methods b4 even beginning to build my system [the wiki-basic is just a test db/documenting tool]

blessings, t</description>
		<content:encoded><![CDATA[<p>@Chris - done now, so don&#8217;t worry (and re-uploaded wiki-basic for those interested, btw got nice Apple theme…). One custom function for the &#8216;Log field&#8217; to cover all manual entry - very nice. Liked the nightwing stuff. Scuse my ecletic hobbies there for all to see… and the Christian fundamentalist at play</p>
<p>@Geoff - yes indeed # #P are the way to go, even speedier… ! love it! <img src='http://sixfriedrice.com/wp/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  – i&#8217;m so glad to have the time to look around and clock these methods b4 even beginning to build my system [the wiki-basic is just a test db/documenting tool]</p>
<p>blessings, t</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Thomas Seidler</title>
		<link>http://sixfriedrice.com/wp/filemaker-dictionary-functions/#comment-1233</link>
		<dc:creator>Thomas Seidler</dc:creator>
		<pubDate>Sat, 28 Jun 2008 17:41:45 +0000</pubDate>
		<guid>http://sixfriedrice.com/wp/filemaker-dictionary-functions/#comment-1233</guid>
		<description>@Chris Wack, would love your example file if available, am trying to build my own atm… but saving time good, i couldn't find you on the google…!</description>
		<content:encoded><![CDATA[<p>@Chris Wack, would love your example file if available, am trying to build my own atm… but saving time good, i couldn&#8217;t find you on the google…!</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Geoff Coffey</title>
		<link>http://sixfriedrice.com/wp/filemaker-dictionary-functions/#comment-1231</link>
		<dc:creator>Geoff Coffey</dc:creator>
		<pubDate>Thu, 26 Jun 2008 17:09:10 +0000</pubDate>
		<guid>http://sixfriedrice.com/wp/filemaker-dictionary-functions/#comment-1231</guid>
		<description>@Thomas:

Thanks for the link. We'll check it out. I agree that from a pure code standpoint, having a central function for escape and unescape would be better. But a design goal here was minimizing interdependencies. We copy these functions into existing files all the time, and since FileMaker &lt;strong&gt;still can't copy/paste custom functions (grrr...)&lt;/strong&gt; we wanted to make them as easy to move as possible.

As it is, you can get the meat of things with just &lt;code&gt;#&lt;/code&gt;, &lt;code&gt;#P&lt;/code&gt; and &lt;code&gt;#R&lt;/code&gt;, which is only three bounces in to/out of the custom function dialog box. If we ever get the power to copy/paste CFs easily, we'll almost certainly make these smarter along those lines.

As for &lt;code&gt;DictAdd&lt;/code&gt;, I completely agree. I never use it because it is easy to just append using &lt;code&gt;#&lt;/code&gt; instead. &lt;code&gt;DictReplace&lt;/code&gt; is special though. It takes care to *remove* the existing value before appending, so you can change a value from one thing to another. This isn't a super-common need, but I've found it useful a time or two.

I just realized, by the way, that I'm using our names for these functions and not the names in the article. For the sake of general interest, I'll leave them there. In our systems, we use these names:

* &lt;code&gt;DictSet&lt;/code&gt; is called &lt;code&gt;#&lt;/code&gt;
* &lt;code&gt;GetParameter&lt;/code&gt; is called &lt;code&gt;#P&lt;/code&gt;

This just saves loads of typing since we use these functions in almost every script call. So to pass a "name" of "geoff" to a script, the param looks like this:

&lt;pre&gt;&lt;code&gt;#("name", "geoff")&lt;/pre&gt;&lt;/code&gt;

And to get that param in a script we do:

&lt;pre&gt;&lt;code&gt;#P("name")&lt;/code&gt;&lt;/pre&gt;

It looks a little crazy at first, but once you get used to it, it is nicely concise. I think when Jesse wrote this article he didn't want to foist our wacky symbols on the world.

Anyway, all good stuff. At this point I'm rambling again :)

Geoff</description>
		<content:encoded><![CDATA[<p>@Thomas:</p>
<p>Thanks for the link. We&#8217;ll check it out. I agree that from a pure code standpoint, having a central function for escape and unescape would be better. But a design goal here was minimizing interdependencies. We copy these functions into existing files all the time, and since FileMaker <strong>still can&#8217;t copy/paste custom functions (grrr&#8230;)</strong> we wanted to make them as easy to move as possible.</p>
<p>As it is, you can get the meat of things with just <code>#</code>, <code>#P</code> and <code>#R</code>, which is only three bounces in to/out of the custom function dialog box. If we ever get the power to copy/paste CFs easily, we&#8217;ll almost certainly make these smarter along those lines.</p>
<p>As for <code>DictAdd</code>, I completely agree. I never use it because it is easy to just append using <code>#</code> instead. <code>DictReplace</code> is special though. It takes care to *remove* the existing value before appending, so you can change a value from one thing to another. This isn&#8217;t a super-common need, but I&#8217;ve found it useful a time or two.</p>
<p>I just realized, by the way, that I&#8217;m using our names for these functions and not the names in the article. For the sake of general interest, I&#8217;ll leave them there. In our systems, we use these names:</p>
<p>* <code>DictSet</code> is called <code>#</code><br />
* <code>GetParameter</code> is called <code>#P</code></p>
<p>This just saves loads of typing since we use these functions in almost every script call. So to pass a &#8220;name&#8221; of &#8220;geoff&#8221; to a script, the param looks like this:</p>
<pre><code>#("name", "geoff")</code></pre>
<p>And to get that param in a script we do:</p>
<pre><code>#P("name")</code></pre>
<p>It looks a little crazy at first, but once you get used to it, it is nicely concise. I think when Jesse wrote this article he didn&#8217;t want to foist our wacky symbols on the world.</p>
<p>Anyway, all good stuff. At this point I&#8217;m rambling again <img src='http://sixfriedrice.com/wp/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>Geoff</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Geoff Coffey</title>
		<link>http://sixfriedrice.com/wp/filemaker-dictionary-functions/#comment-1230</link>
		<dc:creator>Geoff Coffey</dc:creator>
		<pubDate>Thu, 26 Jun 2008 16:57:13 +0000</pubDate>
		<guid>http://sixfriedrice.com/wp/filemaker-dictionary-functions/#comment-1230</guid>
		<description>@Raphael:

Thank you for the correction, and for the compliment. I have fixed the article to use the "dict" function parameter correctly.

Thanks,

Geoff</description>
		<content:encoded><![CDATA[<p>@Raphael:</p>
<p>Thank you for the correction, and for the compliment. I have fixed the article to use the &#8220;dict&#8221; function parameter correctly.</p>
<p>Thanks,</p>
<p>Geoff</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Raphael Pearce</title>
		<link>http://sixfriedrice.com/wp/filemaker-dictionary-functions/#comment-1228</link>
		<dc:creator>Raphael Pearce</dc:creator>
		<pubDate>Wed, 25 Jun 2008 07:52:53 +0000</pubDate>
		<guid>http://sixfriedrice.com/wp/filemaker-dictionary-functions/#comment-1228</guid>
		<description>Just noticed an error in your DictFirst function. The definition is using "value" instead of "dict" as the input variable.

Oh, and this blog is like totally awesome!</description>
		<content:encoded><![CDATA[<p>Just noticed an error in your DictFirst function. The definition is using &#8220;value&#8221; instead of &#8220;dict&#8221; as the input variable.</p>
<p>Oh, and this blog is like totally awesome!</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Thomas Seidler</title>
		<link>http://sixfriedrice.com/wp/filemaker-dictionary-functions/#comment-1226</link>
		<dc:creator>Thomas Seidler</dc:creator>
		<pubDate>Fri, 20 Jun 2008 17:03:56 +0000</pubDate>
		<guid>http://sixfriedrice.com/wp/filemaker-dictionary-functions/#comment-1226</guid>
		<description>Cheers Geoff. Loved implementing your stuff. Oh, recursive functions with multiple parameters, no problemo now. Changed FMP power. Mildly rewrote some of the functions - implemented Michele's nice suggestion of DictEscape &#38; DictUnescape - which would potentially allow the rapid change to XML format - only one (well, two) place(s) to change…

Am just playing about with FMP9 now, i figured i needed a file to help plan development for thegoodbook.co.uk's systems. And that it would be good experience to build some sort of hierarchical documenting method to do so in FMP9. So done it. Good fun. Very underdeveloped, but will do the job. I have plans for it!! ;)  Anyway, if you want to see the implementation or borrow a pre-made simple hierarchy document structure file (only now suited to one hrchy) here it is: http://www.harmlesswise.com/download/wiki-basic.fp7 

I didn't bother with DictReplace/DictAdd - just one DictSet - this seems to be fine by your logic…? Maybe there is a subtle distinction i hadn't seen?

Anyways many thanks for this stuff, i don't think one could develop nearly as rapidly w/o such a system. FMP should include it in structure in future. Amongst other things!

gratefully, t</description>
		<content:encoded><![CDATA[<p>Cheers Geoff. Loved implementing your stuff. Oh, recursive functions with multiple parameters, no problemo now. Changed FMP power. Mildly rewrote some of the functions - implemented Michele&#8217;s nice suggestion of DictEscape &amp; DictUnescape - which would potentially allow the rapid change to XML format - only one (well, two) place(s) to change…</p>
<p>Am just playing about with FMP9 now, i figured i needed a file to help plan development for thegoodbook.co.uk&#8217;s systems. And that it would be good experience to build some sort of hierarchical documenting method to do so in FMP9. So done it. Good fun. Very underdeveloped, but will do the job. I have plans for it!! <img src='http://sixfriedrice.com/wp/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' />  Anyway, if you want to see the implementation or borrow a pre-made simple hierarchy document structure file (only now suited to one hrchy) here it is: <a href="http://www.harmlesswise.com/download/wiki-basic.fp7" rel="nofollow">http://www.harmlesswise.com/download/wiki-basic.fp7</a> </p>
<p>I didn&#8217;t bother with DictReplace/DictAdd - just one DictSet - this seems to be fine by your logic…? Maybe there is a subtle distinction i hadn&#8217;t seen?</p>
<p>Anyways many thanks for this stuff, i don&#8217;t think one could develop nearly as rapidly w/o such a system. FMP should include it in structure in future. Amongst other things!</p>
<p>gratefully, t</p>
]]></content:encoded>
	</item>
</channel>
</rss>
