<HTML><HEAD>
<STYLE id=eMClientCss>BLOCKQUOTE.cite {
        PADDING-LEFT: 10px; MARGIN-LEFT: 5px; BORDER-LEFT: #cccccc 1px solid; PADDING-RIGHT: 0px; MARGIN-RIGHT: 0px
}
BLOCKQUOTE.cite2 {
        PADDING-TOP: 0px; PADDING-LEFT: 10px; MARGIN-LEFT: 5px; BORDER-LEFT: #cccccc 1px solid; MARGIN-TOP: 3px; PADDING-RIGHT: 0px; MARGIN-RIGHT: 0px
}
.plain PRE {
        FONT-SIZE: 100%; FONT-FAMILY: monospace; FONT-WEIGHT: normal; FONT-STYLE: normal
}
.plain TT {
        FONT-SIZE: 100%; FONT-FAMILY: monospace; FONT-WEIGHT: normal; FONT-STYLE: normal
}
A IMG {
        BORDER-TOP: 0px; BORDER-RIGHT: 0px; BORDER-BOTTOM: 0px; BORDER-LEFT: 0px
}
.plain PRE {
        FONT-SIZE: 12pt; FONT-FAMILY: Tahoma
}
.plain TT {
        FONT-SIZE: 12pt; FONT-FAMILY: Tahoma
}
BODY {
        FONT-SIZE: 12pt; FONT-FAMILY: Tahoma
}
#xb19f5aa2853543ca9fc248e2666dfcbe DIV.gb_bb {
        BORDER-BOTTOM-COLOR: #ccc
}
#xb19f5aa2853543ca9fc248e2666dfcbe .gb_ca + .gb_la {
        DISPLAY: block
}
#xb19f5aa2853543ca9fc248e2666dfcbe .gb_g .gb_bb {
        DISPLAY: block
}
#xb19f5aa2853543ca9fc248e2666dfcbe .gb_g .gb_ga {
        DISPLAY: block
}
#xb19f5aa2853543ca9fc248e2666dfcbe .gb_ga {
        DISPLAY: block
}
#xb19f5aa2853543ca9fc248e2666dfcbe .gb_na .gb_ja {
        DISPLAY: block
}
#xb19f5aa2853543ca9fc248e2666dfcbe .gb_na .gb_la {
        DISPLAY: block
}
#xb19f5aa2853543ca9fc248e2666dfcbe .gb_ob {
        DISPLAY: block
}
#xb19f5aa2853543ca9fc248e2666dfcbe .gb_Rd .gb_lc .gb_bb {
        DISPLAY: block
}
#xb19f5aa2853543ca9fc248e2666dfcbe .gb_1a .gb_2d:before {
        DISPLAY: none
}
#xb19f5aa2853543ca9fc248e2666dfcbe .gb_Fd .gb_bb {
        DISPLAY: none
}
#xb19f5aa2853543ca9fc248e2666dfcbe .gb_ja {
        DISPLAY: none
}
#xb19f5aa2853543ca9fc248e2666dfcbe .gb_1a .gb_bb {
        MARGIN-TOP: -10px
}
#xb19f5aa2853543ca9fc248e2666dfcbe .gb_1a .gb_ga {
        MARGIN-TOP: -10px
}
#xb19f5aa2853543ca9fc248e2666dfcbe .gb_ka:active {
        TEXT-DECORATION: none; COLOR: #737373
}
#xb19f5aa2853543ca9fc248e2666dfcbe .gb_ka:visited {
        TEXT-DECORATION: none; COLOR: #737373
}
#xb19f5aa2853543ca9fc248e2666dfcbe .gb_la {
        TEXT-DECORATION: none; COLOR: #737373
}
#xb19f5aa2853543ca9fc248e2666dfcbe .gb_la:visited {
        TEXT-DECORATION: none; COLOR: #737373
}
#xb19f5aa2853543ca9fc248e2666dfcbe .gb_db:hover {
        TEXT-DECORATION: underline
}
#xb19f5aa2853543ca9fc248e2666dfcbe .gb_Eb A:active {
        TEXT-DECORATION: underline
}
#xb19f5aa2853543ca9fc248e2666dfcbe .gb_Eb A:hover {
        TEXT-DECORATION: underline
}
#xb19f5aa2853543ca9fc248e2666dfcbe .gb_la:active {
        TEXT-DECORATION: underline
}
#xb19f5aa2853543ca9fc248e2666dfcbe .gb_sa {
        PADDING-BOTTOM: 0px
}
#xb19f5aa2853543ca9fc248e2666dfcbe .gb_sa {
        PADDING-TOP: 0px
}
#xb19f5aa2853543ca9fc248e2666dfcbe .gb_ta A {
        TOP: 0px
}
#xb19f5aa2853543ca9fc248e2666dfcbe .gb_fa .gb_ea .gb_b:before {
        LEFT: -35px; TOP: -311px
}
#xb19f5aa2853543ca9fc248e2666dfcbe .gb_0a:focus {
        opacity: .85
}
#xb19f5aa2853543ca9fc248e2666dfcbe .gb_b:focus .gb_cc {
        opacity: .85
}
#xb19f5aa2853543ca9fc248e2666dfcbe .gb_ea .gb_b:focus {
        opacity: .85
}
#xb19f5aa2853543ca9fc248e2666dfcbe .gb_fa .gb_b:focus .gb_cc {
        opacity: .85
}
#xb19f5aa2853543ca9fc248e2666dfcbe .gb_fa .gb_Zd .gb_b:focus {
        opacity: .85
}
#xb19f5aa2853543ca9fc248e2666dfcbe .gb_Zd .gb_b:focus {
        opacity: .85
}
#xb19f5aa2853543ca9fc248e2666dfcbe .gb_X .gb_3a {
        opacity: 1
}
#xb19f5aa2853543ca9fc248e2666dfcbe .gb_X .gb_ea .gb_b:focus {
        opacity: 1
}
#xb19f5aa2853543ca9fc248e2666dfcbe A.gb_Ld:active {
        opacity: 1
}
#xb19f5aa2853543ca9fc248e2666dfcbe .gb_O .gb_M {
        HEIGHT: 64px; WIDTH: 64px; VERTICAL-ALIGN: top; DISPLAY: inline-block
}
#xb19f5aa2853543ca9fc248e2666dfcbe .gb_N .gb_3 {
        OVERFLOW: hidden; BACKGROUND-IMAGE: none; POSITION: relative
}
#xb19f5aa2853543ca9fc248e2666dfcbe .gb_N .gbii {
        OVERFLOW: hidden; BACKGROUND-IMAGE: none; POSITION: relative
}
#xb19f5aa2853543ca9fc248e2666dfcbe .gb_N .gbip {
        OVERFLOW: hidden; BACKGROUND-IMAGE: none; POSITION: relative
}
#xb19f5aa2853543ca9fc248e2666dfcbe .gb_N .gb_3:before {
        POSITION: absolute; CONTENT: url('//ssl.gstatic.com/gb/images/v1_8758f7bb.png')
}
#xb19f5aa2853543ca9fc248e2666dfcbe .gb_fc .gb_gc {
        VISIBILITY: visible
}
#xb19f5aa2853543ca9fc248e2666dfcbe .gb_fc .gb_hc {
        VISIBILITY: visible
}
#xb19f5aa2853543ca9fc248e2666dfcbe .gb_9 {
        POSITION: relative; TOP: 27px; VISIBILITY: hidden
}
#xb19f5aa2853543ca9fc248e2666dfcbe .gb_Ba {
        LEFT: 37px; VISIBILITY: hidden
}
#xb19f5aa2853543ca9fc248e2666dfcbe .gb_Da {
        CURSOR: default; TEXT-DECORATION: none; COLOR: #666
}
#xb19f5aa2853543ca9fc248e2666dfcbe .gb_za:focus {
        box-shadow: 0 1px 0 rgba(0,0,0,.15)
}
#xb19f5aa2853543ca9fc248e2666dfcbe .gb_1a .gb_2a {
        LINE-HEIGHT: 26px
}
#xb19f5aa2853543ca9fc248e2666dfcbe .gb_1a .gb_2a {
        FONT-SIZE: 11px; HEIGHT: auto
}
#xb19f5aa2853543ca9fc248e2666dfcbe .gb_fa .gb_za:focus {
        box-shadow: 0 1px 0 rgba(0,0,0,.15),0 1px 2px rgba(0,0,0,.2)
}
#xb19f5aa2853543ca9fc248e2666dfcbe .gb_X .gb_za:focus {
        box-shadow: 0 1px 0 rgba(0,0,0,.15),0 1px 2px rgba(0,0,0,.2)
}
#xb19f5aa2853543ca9fc248e2666dfcbe .gb_X .gb_za:hover {
        box-shadow: 0 1px 0 rgba(0,0,0,.15),0 1px 2px rgba(0,0,0,.2)
}
#xb19f5aa2853543ca9fc248e2666dfcbe .gb_7a .gb_6a {
        RIGHT: 1px; POSITION: absolute
}
#xb19f5aa2853543ca9fc248e2666dfcbe .gb_R {
        flex: 0 1 main-size
}
#xb19f5aa2853543ca9fc248e2666dfcbe .gb_0a ~ .gb_bb {
        RIGHT: 6px; LEFT: auto
}
#xb19f5aa2853543ca9fc248e2666dfcbe .gb_Eb A {
        TEXT-DECORATION: none; COLOR: #36c
}
#xb19f5aa2853543ca9fc248e2666dfcbe .gb_Hb {
        VERTICAL-ALIGN: top; DISPLAY: inline-block
}
#xb19f5aa2853543ca9fc248e2666dfcbe .gb_1a .gb_2d {
        BACKGROUND: none transparent scroll repeat 0% 0%
}
#xb19f5aa2853543ca9fc248e2666dfcbe .gb_X .gb_2d {
        BACKGROUND: none transparent scroll repeat 0% 0%
}
#xb19f5aa2853543ca9fc248e2666dfcbe .gb_db {
        WHITE-SPACE: nowrap
}
#xb19f5aa2853543ca9fc248e2666dfcbe :first-child.gb_wb + .gb_tb {
        BORDER-TOP: 0px
}
#xb19f5aa2853543ca9fc248e2666dfcbe .gb_xb .gb_vb {
        opacity: .4
}
#xb19f5aa2853543ca9fc248e2666dfcbe .gb_R {
        MARGIN-LEFT: 0px !important; MARGIN-RIGHT: 0px !important
}
#xb19f5aa2853543ca9fc248e2666dfcbe .vk-t-btn {
        BACKGROUND-REPEAT: no-repeat
}
#xb19f5aa2853543ca9fc248e2666dfcbe .gb_X .gb_ec {
        BORDER-TOP: medium none; BORDER-RIGHT: medium none; BORDER-BOTTOM: medium none; BORDER-LEFT: medium none
}
#xb19f5aa2853543ca9fc248e2666dfcbe .gb_X .gb_fc .gb_b:focus .gb_mc {
        COLOR: #404040; BACKGROUND-COLOR: #fff
}
#xb19f5aa2853543ca9fc248e2666dfcbe .gb_X .gb_fc .gb_b:hover .gb_mc {
        COLOR: #404040; BACKGROUND-COLOR: #fff
}
#xb19f5aa2853543ca9fc248e2666dfcbe .gb_X .gb_fc .gb_mc {
        COLOR: #404040; BACKGROUND-COLOR: #fff
}
#xb19f5aa2853543ca9fc248e2666dfcbe .gb_fc .gb_b:focus .gb_mc {
        BACKGROUND-COLOR: #a52714
}
#xb19f5aa2853543ca9fc248e2666dfcbe .gb_X .gb_Nc:before {
        LEFT: -35px; TOP: -1675px
}
#xb19f5aa2853543ca9fc248e2666dfcbe .gb_X .gb_oc:before {
        LEFT: -69px; TOP: 0px
}
#xb19f5aa2853543ca9fc248e2666dfcbe .gb_fa .gb_Nc:before {
        LEFT: 0px; TOP: -1921px
}
#xb19f5aa2853543ca9fc248e2666dfcbe .gb_fa .gb_oc:before {
        LEFT: -69px; TOP: -869px
}
#xb19f5aa2853543ca9fc248e2666dfcbe .gb_uc .gb_xc {
        FONT-SIZE: 11px; WHITE-SPACE: nowrap; COLOR: #ffffff; PADDING-BOTTOM: 0px; PADDING-TOP: 0px; PADDING-LEFT: 8px; MARGIN-LEFT: 16px; DISPLAY: inline-block; PADDING-RIGHT: 8px
}
#xb19f5aa2853543ca9fc248e2666dfcbe .gb_Td {
        DISPLAY: table-cell
}
#xb19f5aa2853543ca9fc248e2666dfcbe .gbqfwa {
        VERTICAL-ALIGN: top
}
#xb19f5aa2853543ca9fc248e2666dfcbe .gbqfqwc {
        HEIGHT: 100%; RIGHT: 0px; LEFT: 0px
}
#xb19f5aa2853543ca9fc248e2666dfcbe .gbqfqwf {
        BORDER-TOP-COLOR: #4285f4; BORDER-LEFT-COLOR: #4285f4; BORDER-BOTTOM-COLOR: #4285f4; BORDER-RIGHT-COLOR: #4285f4
}
#xb19f5aa2853543ca9fc248e2666dfcbe .gbqfsf {
        COLOR: #222; FONT: 16px arial,sans-serif
}
#xb19f5aa2853543ca9fc248e2666dfcbe .gb_X .gbqfqw {
        box-shadow: 0 1px 2px rgba(0,0,0,.2)
}
#xb19f5aa2853543ca9fc248e2666dfcbe .gbqfba {
        CURSOR: default !important; TEXT-DECORATION: none !important; HEIGHT: 29px; MIN-WIDTH: 54px; FONT-WEIGHT: bold; PADDING-BOTTOM: 0px; TEXT-ALIGN: center; PADDING-TOP: 0px; PADDING-LEFT: 8px; DISPLAY: inline-block; LINE-HEIGHT: 29px; PADDING-RIGHT: 8px; border-radius: 2px; -ms-user-select: none
}
#xb19f5aa2853543ca9fc248e2666dfcbe .gbqfbb {
        CURSOR: default !important; TEXT-DECORATION: none !important; HEIGHT: 29px; MIN-WIDTH: 54px; FONT-WEIGHT: bold; PADDING-BOTTOM: 0px; TEXT-ALIGN: center; PADDING-TOP: 0px; PADDING-LEFT: 8px; DISPLAY: inline-block; LINE-HEIGHT: 29px; PADDING-RIGHT: 8px; border-radius: 2px; -ms-user-select: none
}
#xb19f5aa2853543ca9fc248e2666dfcbe .gb_Fe {
        CURSOR: pointer; BORDER-TOP: #e3e3e3 1px solid; BORDER-RIGHT: #e3e3e3 1px solid; WIDTH: 54px; BORDER-BOTTOM: #e3e3e3 1px solid; PADDING-BOTTOM: 0px; PADDING-TOP: 0px; PADDING-LEFT: 8px; MARGIN: 5px; BORDER-LEFT: #e3e3e3 1px solid; LINE-HEIGHT: 27px; PADDING-RIGHT: 8px; border-radius: 2px
}
#xb19f5aa2853543ca9fc248e2666dfcbe .gb_Je {
        VERTICAL-ALIGN: middle; POSITION: relative; PADDING-BOTTOM: 0px; PADDING-TOP: 0px; PADDING-LEFT: 15px; DISPLAY: inline-block; PADDING-RIGHT: 0px
}
#xb19f5aa2853543ca9fc248e2666dfcbe .gb_le:focus {
        opacity: .55
}
#xb19f5aa2853543ca9fc248e2666dfcbe .gb_7a .gb_ac {
        OVERFLOW: hidden
}
#xb19f5aa2853543ca9fc248e2666dfcbe .gb_V .gb_He {
        OVERFLOW: hidden
}
#xb19f5aa2853543ca9fc248e2666dfcbe .gb_pe .gb_ac {
        -ms-transition: width .5s ease-in-out,min-width .5s ease-in-out,max-width .5s ease-in-out,padding .5s ease-in-out,left .5s ease-in-out; transition: width .5s ease-in-out,min-width .5s ease-in-out,max-width .5s ease-in-out,padding .5s ease-in-out,left .5s ease-in-out
}
#xb19f5aa2853543ca9fc248e2666dfcbe .gb_pe .gb_He {
        -ms-transition: width .5s ease-in-out,min-width .5s ease-in-out,max-width .5s ease-in-out,padding .5s ease-in-out,left .5s ease-in-out; transition: width .5s ease-in-out,min-width .5s ease-in-out,max-width .5s ease-in-out,padding .5s ease-in-out,left .5s ease-in-out
}
#xb19f5aa2853543ca9fc248e2666dfcbe .gb_pe .gb_me {
        -ms-transition: width .5s ease-in-out,min-width .5s ease-in-out,max-width .5s ease-in-out,padding .5s ease-in-out,left .5s ease-in-out; transition: width .5s ease-in-out,min-width .5s ease-in-out,max-width .5s ease-in-out,padding .5s ease-in-out,left .5s ease-in-out
}
#xb19f5aa2853543ca9fc248e2666dfcbe .gb_pe .gb_me:before {
        -ms-transition: width .5s ease-in-out,min-width .5s ease-in-out,max-width .5s ease-in-out,padding .5s ease-in-out,left .5s ease-in-out; transition: width .5s ease-in-out,min-width .5s ease-in-out,max-width .5s ease-in-out,padding .5s ease-in-out,left .5s ease-in-out
}
#xb19f5aa2853543ca9fc248e2666dfcbe .gb_qe {
        MIN-WIDTH: 0px !important
}
#xb19f5aa2853543ca9fc248e2666dfcbe .gb_qe .gb_ac {
        MIN-WIDTH: 0px !important
}
#xb19f5aa2853543ca9fc248e2666dfcbe .gb_W .gb_ac {
        MIN-WIDTH: 0px !important
}
#xb19f5aa2853543ca9fc248e2666dfcbe .gb_W .gb_R {
        flex: 0 0 auto; -ms-flex: 0 0 auto
}
#xb19f5aa2853543ca9fc248e2666dfcbe .ita-ppe-pgu {
        CURSOR: default; BORDER-TOP: gray 1px solid; HEIGHT: 18px; BORDER-RIGHT: gray 1px solid; WIDTH: 22px; BACKGROUND-IMAGE: url(https://ssl.gstatic.com/inputtools/images/ita_sprite5.png); BORDER-BOTTOM: gray 1px solid; FILTER: alpha(opacity=55); MARGIN: 6px -1px 0px 0px; BORDER-LEFT: gray 1px solid; DISPLAY: inline-block; BACKGROUND-COLOR: #f5f5f5; border-radius: 2px; opacity: 0.55; transition: all 0.218s; -moz-opacity: 0.55; -webkit-transition: all 0.218s; -moz-transition: all 0.218s; -o-transition: all 0.218s
}
#xb19f5aa2853543ca9fc248e2666dfcbe .ita-ppe-td {
        BORDER-TOP: medium none; BORDER-RIGHT: medium none; BORDER-BOTTOM: medium none; PADDING-BOTTOM: 0px; PADDING-TOP: 0px; PADDING-LEFT: 0px; MARGIN: 0px; BORDER-LEFT: medium none; PADDING-RIGHT: 0px
}
#xb19f5aa2853543ca9fc248e2666dfcbe .vk-btn {
        DISPLAY: inline-block; -webkit-user-select: none; -khtml-user-select: none; -moz-user-select: none
}
#xb19f5aa2853543ca9fc248e2666dfcbe .vk-btn-n {
        DISPLAY: inline-block; -webkit-user-select: none; -khtml-user-select: none; -moz-user-select: none
}
#xb19f5aa2853543ca9fc248e2666dfcbe .vk-cap {
        DISPLAY: inline-block; -webkit-user-select: none; -khtml-user-select: none; -moz-user-select: none
}
#xb19f5aa2853543ca9fc248e2666dfcbe .vk-cap-i {
        DISPLAY: inline-block; -webkit-user-select: none; -khtml-user-select: none; -moz-user-select: none
}
#xb19f5aa2853543ca9fc248e2666dfcbe .vk-t {
        DISPLAY: inline-block; -webkit-user-select: none; -khtml-user-select: none; -moz-user-select: none
}
#xb19f5aa2853543ca9fc248e2666dfcbe .vk-t-btn {
        DISPLAY: inline-block; -webkit-user-select: none; -khtml-user-select: none; -moz-user-select: none
}
#xb19f5aa2853543ca9fc248e2666dfcbe .vk-t {
        FONT-SIZE: 14px; FONT-FAMILY: arial,sans-serif; FONT-WEIGHT: normal; LINE-HEIGHT: 25px
}
#xb19f5aa2853543ca9fc248e2666dfcbe .ita-kd-icon-button-hover + .ita-kd-right {
        BORDER-LEFT: #c6c6c6 1px solid
}
#xb19f5aa2853543ca9fc248e2666dfcbe .ita-kd-mid + .ita-kd-mid {
        BORDER-LEFT: #c6c6c6 1px solid
}
#xb19f5aa2853543ca9fc248e2666dfcbe .ita-kd-mid + .ita-kd-mid {
        BORDER-LEFT: #ccc 1px solid
}
#xb19f5aa2853543ca9fc248e2666dfcbe .ita-kd-selected + .ita-kd-right {
        BORDER-LEFT: #ccc 1px solid
}
#xb19f5aa2853543ca9fc248e2666dfcbe .hover {
        BORDER-TOP: #c6c6c6 1px solid; BORDER-RIGHT: #c6c6c6 1px solid; BORDER-BOTTOM: #c6c6c6 1px solid; COLOR: #222; BORDER-LEFT: #c6c6c6 1px solid; BACKGROUND-COLOR: #f8f8f8; box-shadow: 1px 1px 1px rgba(0,0,0,0.2); -webkit-box-shadow: 1px 1px 1px rgba(0,0,0,0.2); -moz-box-shadow: 1px 1px 1px rgba(0,0,0,0.2)
}
#xb19f5aa2853543ca9fc248e2666dfcbe .ita-kd-icon-hover {
        opacity: 0.9
}
#xb19f5aa2853543ca9fc248e2666dfcbe .ita-kd-selected .ita-kd-icon-span {
        opacity: 0.9
}
#xb19f5aa2853543ca9fc248e2666dfcbe .ita-kd-selected .ita-kd-menuitem-span {
        opacity: 0.9
}
</STYLE>
</HEAD>
<BODY><SPAN id=xb19f5aa2853543ca9fc248e2666dfcbe>
<DIV>Hello,</DIV>
<DIV> </DIV>
<DIV>As happy user of mORMot (ORM framework) and FPC, I am encountering some difficulties with the (more or less recent) string changes.</DIV>
<DIV>It's hard at the moment to get string handling for Delphi and FPC lined-up.</DIV>
<DIV> </DIV>
<DIV>So, I have this (hypothetical) question !</DIV>
<DIV> </DIV>
<DIV>In the (near) future, I am still a very happy user of FPC. And mORMot. And sometimes some version of Delphi > XE2.</DIV>
<DIV>Lets say its 2017. And I am using FPC 3.2.0. Or FPC 4.0.</DIV>
<DIV> </DIV>
<DIV>What mode will I be using when writing programs/frameworks for both Delphi and FPC ?</DIV>
<DIV>* is -Mdelphiunicode the way to go ?</DIV>
<DIV>* do we have a 100% UTF8 RTL.</DIV>
<DIV>* UTF16 / UTF32 ?</DIV>
<DIV>* ......</DIV>
<DIV> </DIV>
<DIV>The question could also be: how to make a brand new start that is more or less future proof and compatible with Delphi unicode.</DIV>
<DIV> </DIV>
<DIV>The answer to this question is important for making decisions at this very right moment.</DIV>
<DIV>Some hacks are (still) needed to get strings working for the mORMot framework in both Delphi and FPC.</DIV>
<DIV>And I (we) would like make hacks that can be dismissed when using future versions of FPC.</DIV>
<DIV> </DIV>
<DIV>I know the question is a bit strange, but I would appreciate some answers, if possible.</DIV>
<DIV> </DIV>
<DIV> </DIV>
<DIV> </DIV></SPAN></BODY></HTML>