NS Basic/Palm 3.0 Enhancements

January 31, 2003

© 2010 NS BASIC Corporation. All rights reserved.


以下はNS Basic 3.0での機能拡張及びバグ修正です。オンラインヘルプも以下の内容で更新されています。 日本語ハンドブックの更新版も新たに印刷されました。
  1. Palm OS 5.0 デバイス対応

    NS Basicで書かれたプログラムは新しいPalm OS 5.0を搭載したデバイス(Palm Tungsten、Sony NX シリーズ、他)上で動作します。これには新しいデバイス用にプログラムを変更する必要はありません。無料で入手可能な新しいruntimeをインストールするだけです。さらにNS Basic 2.1でコンパイルされたプログラムは、再コンパイルする必要なく動作します。

    プログラムはPOSE(Palmシミュレータ)または実機上でテストできます。

  2. 多くの処理速度が大幅に向上しました。

    変数へのアクセスの仕方を改善しました。どのデバイス上でも、最高で2倍スピードが速くなりました。これにはプログラムをバージョン3.0でコンパイルする必要があります。
  3. 新機能:SysInfoSet("HeapVariableCount",n)

    Dynamic Storeに割り当てられる数値変数の数をセットします。nは変数の数で、デフォルトは200になっています。変数へのアクセスが速くなるため、実行速度の向上をもたらします。これはコンパイルのために変数がこのエリアに追加されます。各変数はDynamic Storeのエリアから22バイト使います。デバイスのDynamic Storeの大きさは、PalmSourceのドキュメントにて確認してください。割り当てられるエリアは実際に使われる変数分だけです。SetHeapVariableCountの数値は、実際にその数の変数がある時にしか使われません。このファンクションはProgram Startupコードで呼んでください。
  4. 新共有ライブラリ: NSBVFSLib

    この共有ライブラリは、メモリカード上にあるファイルへアクセスを可能にしてくれます。
  5. DEFINEステートメントは不要

    このステートメントは今後必要なくなります。これまでファンクションを定義するために使われてきましたが、新バージョンではコンパイラーが全てのファンクションを集め、自動的にそれらを定義します。

    現在使っているDEFINEステートメントについては無視されますので心配しなくて結構です。重要:Project_startup()コードを他の名前に変えないでください。

  6. 新ファンクション:DateDiff(dateVar1,dateVar2)

    2つの日付けの間の日数を返します。詳細はHelpまたはハンドブックを参照してください。もし現在DateDiffという独自のファンクションをプログラム中にお持ちでしたら、名前を変更するか新しいファンクションを使って、コンパイルエラーを避けてください。
  7. 新ファンクション:TimeDiff(timeVar1, TimeVar2)

    timeVar1からtimeVar2の秒数を返します。詳細はHelpまたはハンドブックを参照してください。もし現在TimeDiffという独自のファンクションをプログラム中にお持ちでしたら、名前を変更するか新しいファンクションを使って、コンパイルエラーを避けてください。
  8. 新フォームメソッド:frmName.Clear

    全てのフィールドの値を("")にセット(クリア)します。
  9. 新フォームプロパティ:frmName.Count

    フォーム上のオブジェクトの数を返します。フォームがタイトルが持っている場合、オブジェクトとしてそのタイトルを含めます。
  10. 新オブジェクトプロパティ:objName.Index

    フォーム上のオブジェクトのポジション(インデックス)を返します。ポジションは0から始まります。フォームがタイトルを持っている場合、そのタイトルのポジションが0になり、他のオブジェクトは1-nとして番号がつきます。
  11. 新オブジェクトプロパティ:objName.Type

    以下のようにタイプを数値で返します。
    0=Field control
    2=List control
    4=Bitmap control
    8=Label control
    9=form Title
    10=Popup control
    11=Graffiti Shift Indicator
    12=Gadget control
    13=ScrollBar control
    20=button
    21=choicebox
    22=checkbox
    23=popup trigger
    24=selector
    25=repeater
  12. NextFormは変数を受けつけるようになりました。

  13. NextFormは初期状態に戻すオプションを追加

    nextForm stringVarName[,clear]
    stringVarNameは表示するフォーム名。"clear"が追加されると、フィールド、チェックボックス、選択肢等の変更が加わったものを全てクリアし、デザイン時の状態に戻されて表示されます。
  14. オブジェクトのプロパティやメソッドを設定/取得するためにコントロール配列が使用可能

    これはオブジェクト名を使うのと同様に、オブジェクトを参照するために使用できます。フォームがタイトルを持っている場合は、それがポジション0になります。
  15. オブジェクトは変数名で参照可能

    オブジェクト名同様に、変数を使ってオブジェクトを参照できます。

    オブジェクトのプロパティを参照するには3通りの方法があります。
    Field1.text '今まで通り
    varname.text '変数を使う
    controls(0).text 'ポジションを使う

    "Controls"サンプルも参考にしてください。 注:ビットマップのshow/hideメソッドは最初の方法(従来通り)でしか動作しません。

  16. 16ビットのイメージが使用可能

    これによって多くの新型Palm OSデバイスのカラーイメージをサポートできるようになりました。イメージはJPG、GIF、BMPが使用できます。
  17. IDEがスペイン語に対応

    英語、日本語、ドイツ語に加え、スペイン語が追加されました。Tools...Options...Generalから言語の変更が可能です。
  18. AppLaunchは32768〜65535もコードを返すようになりました

    いままでは32767までのコードしか返しませんでした。
  19. 独自のパターンで四角を描画

    四角を埋めるのに独自のパターンを使うことができるようになりました。サンプルプログラムのPattern.prjを参照してください。
     例:
          Dim PatternStr as String
          PatternStr = &hFF808080FF080808 'Brick pattern
          SysTrapSub 548,1,PatternStr  'WinSetPattern
          FillRectangle 24,20,110,110,55,nsbCustom
          DrawRectangle 24,20,110,110,54,nsbNormal
  20. 結果の代入を無視しても関数呼び出しが可能

    x=funcName(params...) '今まで通りにも使え、
    or funcName(params) '戻り値も無視してもOK
  21. dbPutはフィールド間にnull文字を挿入しなくなった

    DbPutは与えられたオフセットの場所に、渡された変数のバイト分のみ書くように変更されました。文字列が渡された場合、文字列の文字数と文字列の終わりを示すnull文字1つが書かれます。レコードの終わりに書かれていた余分なnull文字は書かれなくなりました。

    いままでは、レコードに上書きをした場合、文字列フィールドに書かれたデータは、元の文字列の長さになっていましたが、新バージョンでは、新しく書かれたデータ長だけが書き込まれますので、レコードは自動的に長くなったり短くなったりします。

    今までの方法ですと、レコードの終わりには常にnull文字が置かれましたが、新しい方法では、null文字は書かれなくなりました。レコードの長さは、データフィールドの合計です。これには各文字列フィールドの文字列を終わりを示すnull文字も含まれます。

  22. 隠れたフィールドのテキストを変更する場合に現れていたスクロールバーの問題を修正。

  23. SetfocusはMsgBoxステートメントの後でも動作。

  24. 下方向ボタンで現れる隠れたフィールドの問題を修正

  25. TestNum関数のバグを修正。

  26. Val関数のバグを修正。

  27. MenuTestサンプルを更新。

  28. Palm OS 5.0でのシグネチャーの問題を修正。

  29. サンプルのタイプが'Test'から'appl'に変更。

  30. EasyCalc.codモジュールがサンプルに再度追加。

  31. 64k以上のリソースを追加する際のIDEの無限ループを修正。

  32. 全ての変数はDIMまたはGLOBALで定義が必要。

  33. コンパイル時にリテラルテーブルのオーバーフローをチェックするよう変更。

  34. メモリー漏れを改善。

  35. 互換性

    2.1でコンパイルされたプログラムは、再コンパイルの必要なくNSBRuntime 3.0を使って動作しますが、スピードは向上しません。3.0でコンパイルされたプログラムは古いruntimeでは動作しません。

NS Basic 3.0.1での機能拡張及びバグ修正

  1. Checkboxes with default width & label don't get cut off at runtime.
  2. Checkboxes appear more accurately on Palm Screen.
  3. Message when building project with no startup, but with functions removed.
  4. Calculations involving PI are more accurate
  5. Popups no longer persist when moving to new form.
  6. Conversion errors in Palm OS 5 fixed.
  7. Fix made to signature capture
  8. German string table updated with Version 3.0
  9. New Tech Note: 02a: PDB format
  10. New Tech Note: 23a: Reading PDB file from VFS
  11. New sample: VFSeg
  12. New sample: PDBeg
  13. HostFS_Emulator.prc included for POSE card support
  14. Online help for V3 is now available in German
  15. Online help for V3 is now available in Japanese
  16. Japanese string table updated with Version 3.0
NS Basic 3.0.2での機能拡張及びバグ修正
  1. startupコード内で32767以上の文字を許容
  2. SerialOpenでports>32767を許容
  3. Symbol 1550でのNo Libraryグローバルの問題を修正
  4. Rand()はぴったり1.0の結果は戻さないよう修正
  5. フォームと同じ名前を持つオブジェクトをチェックするようにコンパイラーを修正
  6. 2番目のフォームでオブジェクト名のプロパティ設定の問題を修正
  7. Controls().labelをボタンで動くよう修正
  8. 足りないNEXTをチェックするようコンパイラーを修正
  9. 足りないEND SELECTをチェックするようコンパイラーを修正
  10. 複雑な式の解析に起きる問題を修正
  11. 16桁以上の数値リテラルの変換問題を修正
  12. Tutorial 1 および 2 を更新
  13. .codモジュールのファンクションにDEFINEステートメントがいらないよう修正
  14. 空の.codモジュールで起きるError 91を修正
  15. 無効なMaxCharsで起きるエラーを修正
  16. 無効なTop、Left、Right、Bottom、FontIDで起きるエラーを修正
  17. リソースへのパスを変更した時に起きるエラーを修正
  18. レジスターされていない状態でコンパイルを行うと警告を発生
  19. InStrのバグを修正
  20. プログラムがタイムアウトの場合、デバイスはリセットを強要しない
  21. メモリーのオーバーロック問題を修正
  22. Tungsten 5wayボタンのサポートを追加
  23. Tungsten用のSpecEvent.prjサンプルを更新
NS Basic 3.0.2でのドキュメントの変更

1. ハンドブックに記されているBluetoothポートの'rcfm'は誤り、正しくは'rfcm'。

2. Tungsten: Palmの新しいTungstenデバイスにはTop、Left、Right、Bottom、Selectを持った新しいボタンがある。これらのボタンは押し続けると連続したイベントを発生する。

TopおよびBottomは他のPalm OSデバイスと同じコードを送るが、5Wayボタンを持ったデバイスでは、それらが離された時に別のイベントが発生する。これらのどれかのボタンが離された時、GetEventTypeはnsbPalm5Wayを返し、getkey()は0になる。

Left、RightおよびSelectはGetEventType()でnsbPalm5Wayを返し、getkey()の値は順番に4、8、16となる。TopとBottom同様、これらは離された時に別のイベントが発生する。

SpecEventサンプルをご覧になって、実際にどのように動作するか確認して下さい。