The 64K limit is for display, not storage. The storage limit is 1 billion characters.
If you don't want to display it, what do you want to do with it? Print it? Copy and paste it into another document? Just store it?
In FileMaker Pro I parse small pieces of information from it into various fields. So I want to run scripts on it. But I don't need to see it. But the scripts won't work for me if the fields with the source code aren't on the referenced layout.
David, I think Go has a problem editing or selecting text in fields containing more than 64K not displaying them:
"An error message appears if users try to edit or select text in a field that exceeds 64,000 characters. The text is properly displayed and readable in FileMaker Go, but editing beyond 64,000 characters can only be done in FileMaker Pro."
That's a shame. Maybe the next version will have a higher limit.
I think whether or not you can manipulate the data depends on the script steps your using. You actually never need to store the 64K+ data in one field to begin with. You're pulling this from a Web Viewer? Load it into variables and split it out from there.
I was using Insert from Url script step. I can't find a similar function that I could load into the set variable script step. Do variables have that much capacity for text?
I'm not that familiar with this problem, but could you set the field with Insert and then set a variable from that field to manipulate it?
Another option may be to use a Web Viewer instead of Insert from URL to grab the content. And GetLayoutObjectAttribute on the Web Viewer to grab the contents in chunks.
The contents are quite lengthy. How does one grab a chunk?
By using a function like Middle().
For example, this will grab the first 10,000 characters of the source:
Middle ( GetLayoutObjectAttribute ( "Web.Viewer" ; "content" ) ; 1 ; 10000 )
There are text functions for this, like Middle. For example, the following let statement outputs the value between <name> and </name> when the variable for $loopcount is set, just update "data::your_field" to point to the field containing your data...
occur = $loopcount ;
start_point = "<name>" ;
end_point = "</name>" ;
html = data::your_field ;
start_length = Length ( start_point );
start_at = Position ( html ; start_point ; 1 ; occur ) ;
end_at = Position (html ; end_point ; start_at ; 1 ) ;
length = end_at - ( start_at + start_length ) ;
fin = "" ];
Middle ( html ; start_at + start_length ; length )
The character count is about 180,000. So I could divide the text out into three different fields and work off them.
Middle ( GetLayoutObjectAttribute ( "Child" ; "content" ) ; 1 ; 64000 )
Middle ( GetLayoutObjectAttribute ( "Child" ; "content" ) ; 2 ; 64000 )
Middle ( GetLayoutObjectAttribute ( "Child" ; "content" ) ; 3 ; 64000 )
I thought this would work. But it seems to be returning the same text each time. I'm particularly interested in the last 64000 characters.
Left( GetLayoutObjectAttribute ( "Child" ; "content" ) ; 64000 )
Middle ( GetLayoutObjectAttribute ( "Child" ; "content" ) ; 64001 ; 64000 )
Middle ( GetLayoutObjectAttribute ( "Child" ; "content" ) ; 128001 ; 64000 )
The first number is your starting point. So you want:
Middle ( GetLayoutObjectAttribute ( "Child" ; "content" ) ; 128000 ; 64000 )