0

私は QBasic を学んでいて、ドキュメントでユーザー定義型のサンプルコードを見つけました。この例では、ユーザー定義型内に文字列要素があり、その文字列には長さが定義されていません。

ただし、この例では、コンパイラが「Expected STRING * on...」という例外をスローします。文字列の長さを定義するテストケース:

TYPE Person
    name AS STRING * 4
END TYPE

DIM Matheus AS Person:
Matheus.name = "Matheus":

PRINT Matheus.name:

「Math」、予想される「Matheus」をログに記録します。この文字列に任意の範囲を許可する方法はありますか?

注:QB64コンパイラを使用しています

4

1 に答える 1

2

いいえ、QB64 でも可変長文字列を使用する方法はありません。この機能が提供されているので、この機能が必要な場合は、FreeBASIC を調べることができます。

TYPE指定されたフィールドを持つレコード タイプを作成し、レコードは固定長です。OPEN ... FOR RANDOM仕様を見てください:

OPEN Filename$ FOR RANDOM AS #1 [LEN = recordlength%]
  • recordlength%変数またはステートメントLENの を取得することによって決定されます。TYPEFIELD
  • ステートメントでレコード長が使用されていない場合OPEN、デフォルトのレコード サイズは、最後のレコードを除いて 128 バイトです。
  • レコード長は 32767 を超えることはできません。超えないとエラーが発生します。

TYPE動的にサイズ変更される文字列を含むことを意図したものではありません。これにより、開発者はレコード サイズを小さく保つことができます。たとえば、アドレス帳がある場合、人の名前が大きすぎないようにする必要があります。そうしないと、アドレス帳がメモリに収まらなくなります。

QB64 はその制約を取り除きませんでした。元の目標は互換性を維持することだったので、おそらく古い QBASIC コードとの互換性を維持するためです。

于 2016-11-03T06:25:55.720 に答える