<!DOCTYPE html><html><head><meta charset="UTF-8"><style type="text/css">body { font-family: Monaco, Courier New, monospace; font-size: 12px; height: 100%; margin: 0px; margin-left: 5px; margin-top: 5px; } p { margin: 0; margin-left: 5px; } .ql-font-monospace { font-family: Monaco, Courier New, monospace; } .ql-font-sans { font-family: Helvetica, Arial, sans-serif; } .ql-font-serif { font-family: Georgia, Times New Roman, serif; } .ql-size-tiny { font-size: 0.6em; } .ql-size-small { font-size: 0.85em; } .ql-size-normal { font-size: 1.0em; } .ql-size-large { font-size: 1.4em; } .ql-size-big { font-size: 2.0em; } .ql-size-huge { font-size: 2.5em; } .ql-direction-rtl { direction: rtl; text-align: inherit; } .ql-align-center { text-align: center; } .ql-align-justify { text-align: justify; } .ql-align-right { text-align: right; }</style></head><body><p>On 13 Mar 2019, at 21:55, Jon Ogden via Nug <nug@xojousers.com> wrote:</p><p><br></p><p>>> On Mar 13, 2019, at 2:40 PM, npalardy@airenet.com wrote:</p><p><br></p><p>>> There are a lot of good things in the "new framework" and where possible</p><p>>> they'll be moved to be the new underpinnings of the the framework</p><p>>></p><p>></p><p>> I agree. But some things like Xojo.Timer.CallLater have some serious bugs</p><p>> that would suddenly pop up and cause crashes (particularly an iterating over a</p><p>> dictionary error). Then other things like the Xojo.Net.TCPSockets were half</p><p>> developed. Never had a .listen method. Again had to read into a memory</p><p>> block.</p><p>></p><p>> I went and started to move things to Auto and Text and now regret it. A pain</p><p>> to change it back. I’ve been burned multiple times by the ToText method where</p><p>> I have data in a string that doesn’t translate to Text and an exception gets</p><p>> thrown.</p><p><br></p><p>This was another thing it took me a long time to figure out how to make work, which also pushed me towards doing things in a memoryblock at the bottom. It's all very well getting exceptions because the text you have is illegal UTF8 but that's hardly my fault if that's what the other end sent me while at the same time swearing up and down that it *is* UTF8. Fortunately I found the lossy conversion flag.</p><p><br></p><p>Trouble with doing all that stuff with memoryblocks was, though, that I had to write my own methods for base64 decode and quoted-printable decode. Still, it's been fun.</p><p><br></p><p>If your string is supposed to be UTF8 but you're not sure, I have a nice little method which will convert it to Text while at the same time ensuring that any non-UTF8 is replaced with the Unicode replacement character (U+FFFD).</p><p><br></p><br><br>-- <br>Cheers -- Tim</body></html>