「文字列」の編集履歴(バックアップ)一覧はこちら

文字列」(2010/06/01 (火) 14:46:53) の最新版変更点

追加された行は緑色になります。

削除された行は赤色になります。

ここではAB4.24の文字列に付いての独自研究を紹介します。 あくまでstring.sbpといくつかの実験プログラムによって調べただけですので、 実際のところは開発者にお聞きください。 **文字列型の構造 ABの文字列は次のように成っています。 |文字列の大きさ(4バイト)|文字列データ(*Byte型)| そして文字列データの先頭アドレスをString型は持っています。 下のプログは文字列を入力し、その文字列データと長さに分解する例です。 #N88BASIC Dim a As String Dim i As DWord Dim z[345] As Byte Input a wsprintf(z, "%u", a) i=Val(z) Print MakeStr(i);"の長さ=";GetDWord(i-4) **_SYSTEM_ALLOCATED_STRING_INFO構造体 string.sbpには_SYSTEM_ALLOCATED_STRING_INFO構造体が定義さています。 すぐ後に_System_AllocatedStringInfoとして宣言されています。 これはすべての文字列を一元管理するものです。 #N88BASIC Dim a As String Dim b As String Dim c As String a = "1234567890" b = "qwerty" c = "1qaz2wsx" Dim i As DWord For i=0 To _System_AllocatedStringInfo.num-1 Print Hex$(GetDWord(_System_AllocatedStringInfo.pAddress + i*4)), MakeStr(GetDWord(_System_AllocatedStringInfo.pAddress + i*4)) Next **ZeroString関数 次のプログラムの実行結果はどうなるでしょう。 #N88BASIC Dim a As String Dim b As String a = ZeroString(10) b = "abc" + a + "xyz" Print Len(b), b 答えは 16 abc となります。 これは+演算が文字列の実際の長さを見ていないからです。 _System_StrCalc_Plus関数を見てください。

表示オプション

横に並べて表示:
変化行の前後のみ表示: