「ShortStrings」は「Ansi」文字列です。これは、Delphi以前のコードの下位互換性のためにのみ使用できるためです。
st: string[3];
Delphi 2009以降、常に現在のAnsiコードページ/文字セットを使用して固定長の「短い文字列」を作成します。
しかし、そのような短い文字列は、いわゆると同じではありませんAnsiString。短い文字列のコードページはありません。短い文字列の参照カウントがないため。
コードページAnsiStringは、固定長ではなく可変長であり、参照カウントされる型に対してのみ存在するため、で定義される短い文字列よりも完全に多様な型ですstring[...]。
設計上、宣言を単に混合Short Stringして 型指定することはできません。AnsiStringどちらも「文字列」と呼ばれますが、さまざまなタイプがあります。
これがのマッピングですShort String
st[0] = length(st)
st[1] = 1st char (if any) in st
st[2] = 2nd char (if any) in st
st[3] = 3rd (if any) in st
AnsiStringまたはUnicodeStringタイプのメモリマッピングは次のとおりです。
st = nil if st=''
st = PAnsiChar if st<>''
PSt: PAnsiCharレイアウトは次のとおりです。
PWord(PSt-12)^ = code page
PWord(PSt-10)^ = reference count
PInteger(PSt-8)^ = reference count
PInteger(PSt-4)^ = length(st) in AnsiChar or UnicodeChar count
PAnsiChar(PSt) / PWideChar(PSt) = Ansi or Unicode text stored in st, finished by a #0 char (AnsiChar or UnicodeChar)
したがって、AnsiStringとUnicodeStringタイプの間にいくつかの類似点がある場合、short stringタイプは完全に多様であり、希望どおりに混合することはできません。