{"id":2003,"date":"2026-09-05T18:11:11","date_gmt":"2026-09-05T18:11:11","guid":{"rendered":"https:\/\/clarionsharp.com\/blog\/?p=2003"},"modified":"2026-09-05T18:11:11","modified_gmt":"2026-09-05T18:11:11","slug":"clarion-unicode-preview-refreshed-beta-build-14258","status":"publish","type":"post","link":"https:\/\/clarionsharp.com\/blog\/clarion-unicode-preview-refreshed-beta-build-14258\/","title":{"rendered":"Clarion Unicode preview \u2014 refreshed beta build (14258)"},"content":{"rendered":"\n<style>\n.ustring-wp3 { --u-fg:#1c1917; --u-muted:#6b6560; --u-line:#e2dcd3; --u-card:#fff; --u-soft:#fef3c7; --u-accent:#b45309; --u-bg:#f7f5f1; --u-link:#0b5cad; font-family:system-ui,-apple-system,\"Segoe UI\",sans-serif; color:var(--u-fg); line-height:1.55; max-width:1080px; margin:0 auto; }\n@media (prefers-color-scheme: dark) {\n  .ustring-wp3 { --u-fg:#f5f5f4; --u-muted:#a8a29e; --u-line:#3f3a36; --u-card:#1c1917; --u-soft:#422006; --u-accent:#fbbf24; --u-bg:#121110; --u-link:#7dd3fc; }\n}\n.ustring-wp3 * { box-sizing:border-box; }\n.ustring-wp3 .uw-hero { background:linear-gradient(135deg,#1e2a4a 0%,#283a5e 45%,#431407 100%); color:#fafaf9; border-radius:14px; padding:1.75rem 1.5rem 1.5rem; margin:0 0 1.25rem; }\n.ustring-wp3 .uw-eyebrow { display:inline-block; font-size:.72rem; letter-spacing:.12em; text-transform:uppercase; color:#fbbf24; font-weight:700; margin-bottom:.55rem; }\n.ustring-wp3 .uw-hero h2 { margin:0 0 .65rem; font-size:clamp(1.45rem,3.5vw,2rem); line-height:1.2; letter-spacing:-.02em; color:#fafaf9; }\n.ustring-wp3 .uw-hero p { margin:0; color:#e7e5e4; font-size:1.05rem; max-width:42rem; }\n.ustring-wp3 .uw-pills { display:flex; flex-wrap:wrap; gap:.4rem; margin-top:1rem; }\n.ustring-wp3 .uw-pill { display:inline-block; padding:.3rem .7rem; border-radius:999px; background:rgba(255,255,255,.08); border:1px solid rgba(255,255,255,.12); color:#fafaf9; font-size:.82rem; }\n.ustring-wp3 .uw-pill strong { color:#fde68a; font-weight:650; }\n.ustring-wp3 .uw-lead { color:var(--u-muted); margin:0 0 1.1rem; font-size:1rem; }\n.ustring-wp3 .uw-grid { display:grid; grid-template-columns:repeat(auto-fit,minmax(230px,1fr)); gap:.85rem; margin:0 0 1.5rem; }\n.ustring-wp3 .uw-card { background:var(--u-card); border:1px solid var(--u-line); border-radius:14px; padding:1rem 1.05rem 1.1rem; }\n.ustring-wp3 .uw-icon { width:2rem; height:2rem; border-radius:10px; display:grid; place-items:center; background:var(--u-soft); color:var(--u-accent); font-weight:700; margin-bottom:.55rem; font-size:1rem; }\n.ustring-wp3 .uw-card h3 { margin:0 0 .35rem; font-size:1rem; letter-spacing:-.01em; color:var(--u-fg); }\n.ustring-wp3 .uw-card p { margin:0; color:var(--u-muted); font-size:.92rem; line-height:1.5; }\n.ustring-wp3 code { font-family:Consolas,\"Cascadia Mono\",ui-monospace,monospace; font-size:.88em; background:var(--u-bg); border:1px solid var(--u-line); border-radius:5px; padding:.05em .3em; color:var(--u-fg); }\n.ustring-wp3 .uw-cta { background:var(--u-card); border:1px solid var(--u-line); border-left:4px solid var(--u-accent); border-radius:12px; padding:1rem 1.15rem; }\n.ustring-wp3 .uw-cta p { margin:0 0 .65rem; color:var(--u-muted); }\n.ustring-wp3 .uw-cta p:last-child { margin:0; }\n.ustring-wp3 .uw-btn { display:inline; background:none; color:var(--u-link) !important; text-decoration:underline !important; font-weight:650; padding:0; border-radius:0; margin-top:.15rem; }\n.ustring-wp3 .uw-btn:hover { color:var(--u-accent) !important; text-decoration:underline !important; }\n.ustring-wp3 .uw-note { font-size:.88rem; color:var(--u-muted); margin-top:.75rem; }\n<\/style>\n\n<div class=\"ustring-wp3\">\n  <div class=\"uw-hero\">\n    <div class=\"uw-eyebrow\">Clarion \u00b7 Unicode Preview \u00b7 Beta Refresh<\/div>\n    <h2>Refresh build 14258 \u2014 the designers keep your Unicode, the fixes from four beta threads, and the wide path family<\/h2>\n    <p>\n      A shorter drop, built from the beta forum. The Window and Report Designers accept every\n      <code>U''<\/code> spelling and no longer rewrite it into a raw glyph; the Window Previewer\n      can keep the generated program; DROP lists and COMBOs take a wide <code>FROM<\/code> at\n      runtime; <code>INSTRING()<\/code> searches backwards from past the end; <code>FILEDIALOG()<\/code>\n      opens on a Unicode folder; and the porting notes for <code>SIZE()<\/code> are in the help.\n      Threads 47, 54, 57 and 60, closed. Already testing? Everything below is new since build 14234.\n    <\/p>\n    <div class=\"uw-pills\">\n      <span class=\"uw-pill\"><strong>IDE<\/strong> U&#8221; hex literals in the designers \u00b7 ANSI files keep U&#8221; \u00b7 Save Preview Program<\/span>\n      <span class=\"uw-pill\"><strong>Runtime<\/strong> DROP\/COMBO wide FROM \u00b7 INSTRING \u00b7 FILEDIALOG<\/span>\n      <span class=\"uw-pill\"><strong>Help<\/strong> SIZE() porting notes \u00b7 INSTRING start rule<\/span>\n    <\/div>\n  <\/div>\n\n  <p class=\"uw-lead\">\n    Highlights of this drop \u2014 then the full tester guide, whose\n    <em>&#8220;What&#8217;s new&#8221;<\/em> section and dated <em>&#8220;beta refresh&#8221;<\/em> markers flag\n    exactly what changed since you last read it.\n  <\/p>\n\n  <div class=\"uw-grid\">\n    <article class=\"uw-card\">\n      <div class=\"uw-icon\">\u270e<\/div>\n      <h3>Designers: every U&#8221; spelling works, and your Unicode stays Unicode<\/h3>\n      <p>\n        The Window and Report Designer parse <code>U'&lt;26DDh&gt;'<\/code>, <code>U'&lt;1F600h&gt;'<\/code> and <code>{n}<\/code> repeats exactly like the compiler \u2014 build 14234 refused a window with a hex literal. And a designer opened from an ANSI .clw now writes wide text back as a <code>U''<\/code> literal (decimal units) instead of a raw glyph that forced the save-as-UTF-8 prompt; UTF-8 sources keep the glyph as before.\n      <\/p>\n    <\/article>\n\n    <article class=\"uw-card\">\n      <div class=\"uw-icon\">\u2637<\/div>\n      <h3>DROP lists and COMBOs: a runtime wide FROM<\/h3>\n      <p>\n        <code>?List{PROP:From} = U'&hellip;'<\/code> on a <code>LIST,DROP()<\/code> or a <code>COMBO<\/code> keeps its characters \u2014 in 14234 that one property took the narrow path, so a declared <code>FROM(U'&hellip;')<\/code> worked and the runtime write showed <code>?<\/code>. Reminder for continued FROM strings: put <code>U<\/code> on every piece.\n      <\/p>\n    <\/article>\n\n    <article class=\"uw-card\">\n      <div class=\"uw-icon\">\u0192<\/div>\n      <h3>INSTRING backwards from past the end, and two porting notes<\/h3>\n      <p>\n        <code>INSTRING(sub, s, -1, SIZE(s))<\/code> now finds the last match on a CSTRING or USTRING (those push only their used length, so a start past the end returned 0). Porting notes in the help: <code>SIZE()<\/code> of a USTRING is bytes, so a Windows API&#8217;s <em>character<\/em> count is <code>SIZE(v)\/SIZE(v[1])<\/code> \u2014 right for every string type \u2014 never <code>SIZE(v)<\/code>.\n      <\/p>\n    <\/article>\n\n    <article class=\"uw-card\">\n      <div class=\"uw-icon\">\u25ad<\/div>\n      <h3>Window Previewer: Save Preview Program<\/h3>\n      <p>\n        A second checkable item in the Window menu, under Unicode Preview: latched on, the generated preview program, its project and exe move into <code>.WinPreview\\<\/code> in the project folder with the injection include beside them, so File \u25b8 Open builds and runs it as-is; a preview that fails to compile still keeps its source. Both latches are menu items only \u2014 the toolbar keeps just the Preview button.\n      <\/p>\n    <\/article>\n\n    <article class=\"uw-card\">\n      <div class=\"uw-icon\">\u2302<\/div>\n      <h3>FILEDIALOG positioned; the \u201cInternal error 01\u201d dialog is gone<\/h3>\n      <p>\n        <code>FILEDIALOG()<\/code> with <code>FILE:Directory<\/code> and a USTRING start folder opens with the selection on that folder even when its name is outside the Windows codepage. The \u201cOutput corrupted stack, wsldebug.cpp line 412\u201d dialog was the release diagnostic logger misfiring; it now logs to <code>C120LOG.TXT<\/code> and carries on, so what you see next is the real fault.\n      <\/p>\n    <\/article>\n\n    <article class=\"uw-card\">\n      <div class=\"uw-icon\">\\<\/div>\n      <h3>PATH, SETPATH, LONGPATH and SHORTPATH are wide<\/h3>\n      <p>\n        A USTRING folder or file name is resolved in its exact characters and the result comes back wide, so a folder whose name lies outside the Windows codepage can be entered with <code>SETPATH<\/code> and read back with <code>PATH()<\/code> (the earlier drop best-fit it to <code>?<\/code> and <code>SETPATH<\/code> failed with error 3). The no-argument forms return the current directory exactly; a STRING argument or receiver gets the same bytes as always. With <code>EXISTS<\/code>, <code>COPY<\/code>\/<code>RENAME<\/code>\/<code>REMOVE<\/code>, <code>DIRECTORY<\/code> and <code>FILEDIALOG<\/code> already wide, only <code>RUN<\/code> remains in the file-name family.\n      <\/p>\n    <\/article>\n\n    <article class=\"uw-card\">\n      <div class=\"uw-icon\">?<\/div>\n      <h3>F1 help, current for this drop<\/h3>\n      <p>\n        The IDE help (ClarionHelp.chm) carries the INSTRING start rule with a <code>SIZE(cstring)<\/code> example, the USTRING porting note, the previewer&#8217;s second latch, and a USTRING note on each of the PATH, SETPATH, LONGPATH and SHORTPATH topics.\n      <\/p>\n    <\/article>\n\n  <\/div>\n\n  <div class=\"uw-cta\">\n    <p>\n      <strong style=\"color:var(--u-fg)\">Full tester guide<\/strong> \u2014\n      mental model, conversion rules, DCT import table, screen controls, reports, blobs,\n      SQL \/ SQLite \/ text drivers \/ TopSpeedW \/ Memory \/ IP, recipes, and what to focus\n      on when testing. The guide&#8217;s <em>&#8220;What&#8217;s new&#8221;<\/em> section lists everything in this\n      drop; changes are also flagged inline with dated <em>&#8220;beta refresh&#8221;<\/em> notes.\n    <\/p>\n    <!-- >>> confirm these URLs match the deployed static docs <<< -->\n    <a class=\"uw-btn\" href=\"https:\/\/softvelocity.com\/docs\/Clarion-Unicode-Tester-Guide.html\" target=\"_blank\" rel=\"noopener\">Open the full Unicode Tester Guide<\/a>\n    <p style=\"margin:.85rem 0 .35rem; color:var(--u-muted)\">\n      <strong style=\"color:var(--u-fg)\">Report tool authors<\/strong> \u2014\n      the wide generator surface has shipped (<code>IReportGeneratorW<\/code> \u2014 six\n      methods, opt-in, zero break for existing implementors). Format detection, the\n      EMF record set, transition paths per integration style:\n    <\/p>\n    <a class=\"uw-btn\" href=\"https:\/\/softvelocity.com\/docs\/Clarion-Unicode-EMF-Transition-Note.html\" target=\"_blank\" rel=\"noopener\">EMF Page Files \u2014 Transition Note<\/a>\n    <p class=\"uw-note\">\n      Standalone pages (best full-width). Everything described there is implemented unless marked as a known limitation \u2014\n      different behavior is exactly what we want to hear about.\n    <\/p>\n  <\/div>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>Clarion \u00b7 Unicode Preview \u00b7 Beta Refresh Refresh build 14258 \u2014 the designers keep your Unicode, the fixes from four beta threads, and the wide path family A shorter drop, built from the beta forum. The Window and Report Designers accept every U&#8221; spelling and no longer rewrite it into a raw glyph; the Window &hellip; <a href=\"https:\/\/clarionsharp.com\/blog\/clarion-unicode-preview-refreshed-beta-build-14258\/\" class=\"more-link\">Continue reading <span class=\"screen-reader-text\">Clarion Unicode preview \u2014 refreshed beta build (14258)<\/span> <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[43,5],"tags":[45,54,49],"class_list":["post-2003","post","type-post","status-publish","format-standard","hentry","category-clarion-12","category-clarionnews","tag-clarion-12","tag-clarion-beta-refresh-unicode","tag-ustring"],"_links":{"self":[{"href":"https:\/\/clarionsharp.com\/blog\/wp-json\/wp\/v2\/posts\/2003","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/clarionsharp.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/clarionsharp.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/clarionsharp.com\/blog\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/clarionsharp.com\/blog\/wp-json\/wp\/v2\/comments?post=2003"}],"version-history":[{"count":1,"href":"https:\/\/clarionsharp.com\/blog\/wp-json\/wp\/v2\/posts\/2003\/revisions"}],"predecessor-version":[{"id":2004,"href":"https:\/\/clarionsharp.com\/blog\/wp-json\/wp\/v2\/posts\/2003\/revisions\/2004"}],"wp:attachment":[{"href":"https:\/\/clarionsharp.com\/blog\/wp-json\/wp\/v2\/media?parent=2003"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/clarionsharp.com\/blog\/wp-json\/wp\/v2\/categories?post=2003"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/clarionsharp.com\/blog\/wp-json\/wp\/v2\/tags?post=2003"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}