Tech Note 14: 共通ライブラリ「NSBSystemLib」を使う

June 14, 2003

 2009 NS BASIC Corporation. All rights reserved.

[英語版]

翻訳:本稿はmizuno-ami氏に翻訳していただきました。

内容:

    はじめに
    関数一覧及び、クイックリファレンス
    NSBSystemLibライブラリ 関数リファレンス

はじめに:

共通ライブラリ「NSBSystemLib」(以下、NSBSystemLib)は、PalmOSのシステム部分へ アクセスする機能を提供します。 これらの幾つかの関数は、現在のNS Basicから SysTrap関数を使っても呼び出す事の出来ないAPIへのアクセスを実現しています。 また、その他は、PalmOS用の単純なインターフェースを提供します。

このライブラリに含まれる関数は、次のカテゴリに分類できます:

アラーム関係、データベース関係、イベント類、フォームとフィールド、HotSyncデータ、 ローカライズ、環境設定、プログレスマネージャ、システム時間。バージョン2からビット処理、暗号化、複合化、スクリーンおよびカラー処理のカテゴリーが追加されました。

凡例を含んだ本稿は、NSBSystemLibを使うのに必要な情報を全て提供していますが、 もし、根本的なPalmOSの関数について、それ以上知りたければ、PalmOS SDKを参照するか、 SDKに含まれるヘッダファイル(*.h)を参照して下さい。PalmOS SDKリファレンスは、以下よりダウンロードできます:

    http://www.palmos.com/dev/tech/docs/
PalmOSのSDK (Software Development Kit) は、こちらよりダウンロードできます:
    http://www.palmos.com/dev/tech/tools/

NSBSystemLibライブラリを使うために、LoadLibraryステートメントを使って プログラムに読み込んでおく必要があります。このステートメントは、プログラム中の 先頭となるStartupコードに記述する必要があります。 LoadLibraryステートメントは、 2番目の引数として、ライブラリ関数からの参照名を指定します。 この例では「NSL」を参照名に使っています。例えば:

プログラムの Startup code:

	Sub main()
	    LoadLibrary "NSBSystemLib", "NSL"
	End Sub

また、NSBSystemLibライブラリを使うには、NSBSystemLib.INFというファイルが、 "nsbasic\lib" というパスにある必要があり、また、実行するデバイスにNSBSystemLib.prcが ダウンロード(インストール)されている必要があります。

これらの関数に使用する引数と戻り値は、全てInteger型かString型のどちらかですが、 バージョンナンバーを返す関数に限り、Double型の値を返します。


関数一覧及び、クイックリファレンス:


バージョン情報
    Version                         version = Version()
    CompileInfo                     compileDateTime = CompileInfo()
    SystemVersion                   version = SystemVersion()

共有ライブラリグローバル変数へのアクセス
    GlobalVersionMajor              gblMajor = GlobalVersionMajor()
    GlobalVersionMinor              gblMinor = GlobalVersionMinor()
    GlobalX                         x = GlobalX()
    GlobalY                         y = GlobalY()
    GlobalStartX                    startX = GlobalStartX()
    GlobalStartY                    startY = GlobalStartY()
    GlobalEndX                      endX = GlobalEndX()
    GlobalEndY                      endY = GlobalEndY()
    GlobalStartPos                  startPos = GlobalStartPos()
    GlobalEndPos                    endPos = GlobalEndPos()
    GlobalWidth                     width = GlobalWidth()
    GlobalHeight                    height = GlobalHeight()
    GlobalHour                      gblHour = GlobalHour()
    GlobalMinute                    gblMinute = GlobalMinute()

アラーム関数
    SetAlarmReset                   SetAlarmReset resetTime, resetLimit
    SetAlarm                        status = SetAlarm(alarmPgm, alarmTime, alarmCmd, alarmMsg)
    CancelAlarm                     status = CancelAlarm(alarmPgm)
    GetAlarm                        alarmTime = GetAlarm(alarmPgm, alarmCmd, alarmMsg)
    GetAlarmTime                    alarmTime = GetAlarmTime(alarmPgm)
    GetAlarmResetTime               resetTime = GetAlarmResetTime(alarmPgm)
    GetAlarmResetLimit              resetLimit = GetAlarmResetLimit(alarmPgm)
    GetAlarmCommand                 alarmCmd = GetAlarmCommand(alarmPgm)
    GetAlarmMessage                 alarmMsg = GetAlarmMessage(alarmPgm)
    AlarmLog                        alarmTime = AlarmLog(alarmPgm, alarmCmd, alarmMsg)
    AlarmLogAlarmTime               alarmTime = AlarmLogAlarmTime(alarmPgm)
    AlarmLogResetTime               resetTime = AlarmLogResetTime(alarmPgm)
    AlarmLogResetLimit              resetLimit = AlarmLogResetLimit(alarmPgm)
    AlarmLogResetCount              resetCount = AlarmLogResetCount(alarmPgm)
    AlarmLogCommand                 alarmCmd = AlarmLogCommand(alarmPgm)
    AlarmLogMessage                 alarmMsg = AlarmLogMessage(alarmPgm)
    ClearAlarmLog                   alarmPgm = ClearAlarmLog()

データベース関数
    FindDatabase                    dbID = FindDatabase(cardNo, dbName)
    DatabaseInfo                    dbName = DatabaseInfo(cardNo, dbID)
    DatabaseName                    dbName = DatabaseName()
    DatabaseAttributes              dbAttributes = DatabaseAttributes()
    DatabaseVersion                 dbVersion = DatabaseVersion()
    DatabaseCreationDate            dbCreationDate = DatabaseCreationDate()
    DatabaseModificationDate        dbModificationDate = DatabaseModificationDate()
    DatabaseBackupDate              dbBackupDate = DatabaseBackupDate()
    DatabaseModificationNumber      dbModificationNumber = DatabaseModificationNumber()
    DatabaseAppInfoID               dbAppInfoID = DatabaseAppInfoID()
    DatabaseSortInfoID              dbSortInfoID = DatabaseSortInfoID()
    DatabaseType                    dbType = DatabaseType()
    DatabaseCreatorID               dbCreatorID = DatabaseCreatorID()
    DatabaseTotalSize               dbTotalSize = DatabaseTotalSize(cardNo, dbID)
    DatabaseNumRecords              dbNumRecords = DatabaseNumRecords()
    DatabaseDataSize                dbDataSize = DatabaseDataSize()
    DeleteDatabase                  status = DeleteDatabase(cardNo, dbID)
    GetNextDatabaseByTypeCreator    dbID = GetNextDatabaseByTypeCreator(newSearch, dbType, dbCreatorID, onlyLatestVersion)
    DatabaseCardNo                  dbCardNo = DatabaseCardNo()
    NumDatabases                    nbr = NumDatabases(cardNo)
    NumCards                        nbr = NumCards()
    GetDatabase                     dbID = GetDatabase(cardNo, index)
    SetDatabaseName                 status = SetDatabaseName(cardNo, dbID, dbName)
    SetDatabaseAttributes           status = SetDatabaseAttributes(cardNo, dbID, dbAttributes)
    SetDatabaseVersion              status = SetDatabaseVersion(cardNo, dbID, dbVersion)
    SetDatabaseCreationDate         status = SetDatabaseCreationDate(cardNo, dbID, dbCreationDate)
    SetDatabaseModificationDate     status = SetDatabaseModificationDate(cardNo, dbID, dbModificationDate)
    SetDatabaseBackupDate           status = SetDatabaseBackupDate(cardNo, dbID, dbBackupDate)
    SetDatabaseModificationNumber   status = SetDatabaseModificationNumber(cardNo, dbID, dbModificationNumber)
    SetDatabaseAppInfoID            status = SetDatabaseAppInfoID(cardNo, dbID, dbAppInfoID)
    SetDatabaseSortInfoID           status = SetDatabaseSortInfoID(cardNo, dbID, dbSortInfoID)
    SetDatabaseType                 status = SetDatabaseType(cardNo, dbID, dbType)
    SetDatabaseCreatorID            status = SetDatabaseCreatorID(cardNo, dbID, dbCreatorID)

イベント関数
    GetEvent                        eventType = GetEvent(timeoutTicks, consumePenEvents, returnVirtualEvents)
    SysHandleEvent                  SysHandleEvent()
    FlushEvents                     FlushEvents()
    KeyEventChr                     keyChr = KeyEventChr()
    KeyEventKeyCode                 keyCode = KeyEventKeyCode()
    KeyEventModifiers               modifiers = KeyEventModifiers()

フィールド、フォーム関数
    ControlHitControl               ControlHitControl objID
    FieldCopy                       FieldCopy objID
    FieldCut                        FieldCut objID
    FieldInsert                     FieldInsert objID, insString
    FieldPaste                      FieldPaste objID
    FieldUndo                       FieldUndo objID
    FieldGetInsPtPosition           pos = FieldGetInsPtPosition(objID)
    FieldGetSelection               startPos = FieldGetSelection(objID)
    FieldAnyDirty                   dirty = FieldAnyDirty()
    FieldDirty                      dirty = FieldDirty(objID)
    FieldSetDirty                   FieldSetDirty objID, dirty
    FieldSetAllDirty                FieldSetAllDirty dirty
    FieldSetSelection               FieldSetSelection objID, startPos, endPos
    FieldSetInsertionPoint          FieldSetInsertionPoint objID, pos
    FieldSetInsPtPosition           FieldSetInsPtPosition objID, pos
    FieldGetAttributes              attributes = FieldGetAttributes(objID)
    FieldSetAttributes              FieldSetAttributes objID, attributes
    FieldGetFont                    fontId = FieldGetFont(objID)
    FieldSetFont                    FieldSetFont objID, fontId
    FieldGetScrollPosition          position = FieldGetScrollPosition(objID)
    FieldSetScrollPosition          FieldSetScrollPosition objID, position
    FieldGetScrollValues            totalLines = FieldGetScrollValues(objID)
    FieldGetVisibleLines            lines = FieldGetVisibleLines(objID)
    FieldGetNumberOfBlankLines      lines = FieldGetNumberOfBlankLines(objID)
    FieldScrollable                 yesNo = FieldScrollable(objID, direction)
    FieldScrollField                FieldScrollField objID, nbrLines, direction
    FieldSetBounds                  FieldSetBounds objID, topLeftX, topLeftY, width, height
    FormGetNumberOfObjects          nbr = FormGetNumberOfObjects()
    FormGetObjectBounds             x = FormGetObjectBounds(objID)
    FormGetObjectPosition           x = FormGetObjectPosition(objID)
    FormGetObjectType               type = FormGetObjectType(objID)
    FormSetObjectPosition           FormSetObjectPosition objID, x, y
    FormSetObjectBounds             FormSetObjectBounds objID, topLeftX, topLeftY, width, height
    FormGetTitle                    title = FormGetTitle()
    FormReplaceTitle                FormReplaceTitle title, forceLength
    ListGetTopItem                  topItem = ListGetTopItem(objID)
    ListSetTopItem                  ListSetTopItem objID, topItem
    ListGetVisibleItems             visibleItems = ListGetVisibleItems(objID)
    ListScrollList                  result = ListScrollList(objID, direction, nbrItems)

フォント関連
    FontGetFont                     fontId = FontGetFont()
    FontSetFont                     oldFontId = FontSetFont(fontId)
    FontSelect                      fontId = FontSelect()
    FontCharWidth                   width = FontCharWidth(charString)
    FontCharsWidth                  width = FontCharsWidth(charString, optionalLen)
    FontWidthToOffset               offset = FontWidthToOffset(charString, optionalLen, width)
    FontCharsInWidth                length = FontCharsInWidth(charString, optionalLen, width)
    FontWordWrap                    length = FontWordWrap(charString, width)

HotSync データ
    SyncUserName                    userName = SyncUserName()
    SuccessfulSync                  syncDate = SuccessfulSync()
    LastSync                        syncDate = LastSync()

ローカライズ:地域情報関数
    LocalizeNumber                  localNbrStr = LocalizeNumber(stdNbrStr)
    DelocalizeNumber                stdNbrStr = DelocalizeNumber(localNbrStr)
    LocalizeDate                    localDateStr = LocalizeDate(stdDateStr, ToDateFormat, longDateFormat)

環境設定
    GetAppPreferences               data = GetAppPreferences(pgmName, prefId, saved)
    SetAppPreferences               status = SetAppPreferences(pgmName, prefId, data, saved)
    GetSysPreference                data = GetSysPreference(prefID)
    SetSysPreference                SetSysPreference prefID, data

プログレスマネージャ
    ProgressStartDialog             ProgressStartDialog title
    ProgressStopDialog              ProgressStopDialog force
    ProgressUpdateDialog            ProgressUpdateDialog error, message
    ProgressUserCancel              canceled = ProgressUserCancel()
    ProgressPercent                 percent = ProgressPercent(current, count)
    ProgressPercentString           strValue = ProgressPercentString(percent, resolution, completeChar, incompleteChar)

文字列関数
    String4ToInt                    intValue = String4ToInt(fourByteString)
    IntToString4                    fourByteString = IntToString4(intValue)
    DelimitedItem                   item = DelimitedItem(inputStr, delimiter, nbr)
    FixedWidthString                fixedStr = FixedWidthString(origStr, width, options)
    NormalSpacedString              normalStr = NormalSpacedString(origStr)

システム時刻関数
    SelectOneTime                   newTimeSelected = SelectOneTime(defHour, defMinute, title)
    IncrementSystemTime             newSysTime = IncrementSystemTime(oldSysTime, hours, minutes, seconds)
    SystemTime                      sysTime = SystemTime(strDate, strTime, seconds, ToDateFormat)
    StringDateTime                  strDateTime = StringDateTime(sysTime, ToDateFormat, ToTimeFormat, AMPMFormat)
    StringDate                      strDate = StringDate(sysTime, ToDateFormat)
    StringTime                      strTime = StringTime(sysTime, ToTimeFormat, AMPMFormat)

ライブラリバージョン1.4の追加と変更点
    PostEvent                       PostEvent eventNbr
    FormGetFocus                    objID = FormGetFocus()
    FieldGetTextLength              txtLen = FieldGetTextLength(objID)
    RandomNumber                    nbr = RandomNumber(seed, minNbr, maxNbr)
    ResetAutoOffTimer               ResetAutoOffTimer()
    SetAutoOffTime                  oldSeconds = SetAutoOffTime(newSeconds)
    ProgramVersionString            verStr = ProgramVersionString(cardNbr, pgmName)
    DynamicHeapSize                 heapSize = DynamicHeapSize()
    DynamicHeapFree                 freeSize = DynamicHeapFree()
    DynamicHeapMaxChunk             maxChunkSize = DynamicHeapMaxChunk()
    SortInit                        error = SortInit(maxItems, itemType)
    SortAddString                   error = SortAddString(strItem)
    SortAddInteger                  error = SortAddInteger(intItem)
    SortAddDouble                   error = SortAddDouble(dblItem)
    SortGetString                   strItem = SortGetString(index)
    SortGetInteger                  intItem = SortGetInteger(index)
    SortGetDouble                   dblItem = SortGetDouble(index)
    SortQSort                       numItems = SortQSort(reverseSort, caselessSort)
    SortInsertionSort               numItems = SortInsertionSort(reverseSort, caselessSort)
    ListQSort                       numItems = ListQSort(objID, reverseSort, caselessSort)
    ListInsertionSort               numItems = ListInsertionSort(objID, reverseSort, caselessSort)

ライブラリバージョン2.0の追加と変更点
    FormGetAllObjectTypes           type = FormGetAllObjectTypes(objID)
    FieldClearAll                   FieldClearAll()
    ObjectWithPoint                 obj = ObjectWithPoint(x, y, returnType, searchOption)
    ANDInt                          result = ANDInt(int1, int2)
    ORInt                           result = ORInt(int1, int2)
    XORInt                          result = XORInt(int1, int2)
    OnesComplement                  result = OnesComplement(intValue)
    BitValue                        result = BitValue(intValue, bitNumber)
    BitsValue                       result = BitsValue(intValue, startBit, endBit)
    SetBitValue                     result = SetBitValue(intValue, bitNumber, bitValue)
    SetBitsValue                    result = SetBitsValue(intValue, bitsValue, startBit, endBit)
    IntToHex                        hexValue = IntToHex(intValue, trimLeading)
    HexToInt                        intValue = HexToInt(hexValue)
    IntToBin                        binValue = IntToBin(intValue, trimLeading)
    BinToInt                        intValue = BinToInt(binValue)

スクリーン用及びカラー用関数:
    GetSupportedDepths              depths = GetSupportedDepths()
    DepthSupported                  boolean = DepthSupported(depth)
    ColorSupported                  boolean = ColorSupported()
    SetDepth                        SetDepth depth
    SetColor                        SetColor boolean
    SaveScreenMode                  SaveScreenMode()
    RestoreScreenMode               RestoreScreenMode()
    CurrentDepth                    depth = CurrentDepth()
    CurrentColor                    boolean = CurrentColor()
    SetToDefaults                   SetToDefaults()
    DefaultDepth                    depth = DefaultDepth()
    DefaultColor                    boolean = DefaultColor()
    GetTableEntryIndex              index = GetTableEntryIndex(which)
    GetTableEntryRGB                index = GetTableEntryRGB(which)
    GetRGBIndex                     index = GetRGBIndex()
    GetRGBRed                       red = GetRGBRed()
    GetRGBGreen                     green = GetRGBGreen()
    GetRGBBlue                      blue = GetRGBBlue()
    SetTableEntryIndex              SetTableEntryIndex which, index
    SetTableEntryRGB                SetTableEntryRGB which, red, green, blue
    BrightnessAdjust                BrightnessAdjust()
    ContrastAdjust                  ContrastAdjust()
    PickColorIndex                  changed = PickColorIndex(index, title)
    PickColorRGB                    changed = PickColorRGB(red, green, blue, title)
    IndexToRGB                      IndexToRGB index
    RGBToIndex                      index = RGBToIndex(red, green, blue)
    SetForeColor                    oldIndex = SetForeColor(newIndex)
    SetBackColor                    oldIndex = SetBackColor(newIndex)
    SetTextColor                    oldIndex = SetTextColor(newIndex)
    DrawLine                        DrawLine x1, y1, x2, y2
    DrawGrayLine                    DrawGrayLine x1, y1, x2, y2
    EraseLine                       EraseLine x1, y1, x2, y2
    InvertLine                      InvertLine x1, y1, x2, y2
    DrawPixel                       DrawPixel x, y
    ErasePixel                      ErasePixel x, y
    InvertPixel                     InvertPixel x, y
    GetPixel                        index = GetPixel(x, y)
    ScreenLock                      success = ScreenLock(mode)
    ScreenUnlock                    ScreenUnlock()
    WinSaveBits                     WinSaveBits index, x, y, width, height
    WinRestoreBits                  WinRestoreBits index, x, y

スリープ・ウェイクイベント関数
    SetSleepEvent                   SetSleepEvent eventNbr
    SetWakeEvent                    SetWakeEvent eventNbr
    GetSleepEvent                   eventNbr = GetSleepEvent()
    GetWakeEvent                    eventNbr = GetWakeEvent()
    GetSleepEventTime               eventTime = GetSleepEventTime()
    GetWakeEventTime                eventTime = GetWakeEventTime()



文字列の暗号化及び復号化関数
    EncryptDESString                encryptedStr = EncryptDESString(decryptedStr)
    DecryptDESString                decryptedStr = DecryptDESString(encryptedStr)
    SetDESKey                       SetDESKey keyStr

NSBSystemLibライブラリ 関数リファレンス:


バージョン情報

バージョン情報機能は、NSBSystemLibライブラリのバージョン、およびユーザのPalmOSシステムに関する情報へのアクセス機能を提供します。

Version

version = NSBSystemLib.Version()
NSBSystemLibライブラリのバージョンを返します。

戻り値 version as Double

Dim version as Double version = NSL.Version()

CompileInfo

compileDateTime = NSBSystemLib.CompileInfo()
NSBSystemLibライブラリがコンパイルされた日付と時刻を返します。

戻り値 compileDateTime as String

Dim compileDateTime as String compileDateTime = NSL.CompileInfo()

SystemVersion

version = NSBSystemLib.SystemVersion()
PalmOSのバージョンを返します。

戻り値 version as Double

Dim version as Double version = NSL.SystemVersion()

参考: GlobalVersionMajor(), GlobalVersionMinor()

共有ライブラリグローバル変数へのアクセス

現在、共有ライブラリの各関数が返す戻り値は、単一の値を返します。 しかし、ライブラリ中の多くの関数は、複数の値を返します。 これらの値を参照するために、これらの値は、ライブラリ中のグローバル変数として 格納されています。下記の機能は、これらのグローバル変数の値を参照します。

一般的に、これらの関数は、特別な関数を利用した後に使われます。

GlobalVersionMajor

gblMajor = NSBSystemLib.GlobalVersionMajor()
PalmOSのバージョン数字のメジャーバージョンを返します。 この値は、ライブラリをロードしたときに、グローバル変数に代入されます。

戻り値 gblMajor as Integer

Dim gblMajor as Integer gblMajor = NSL.GlobalVersionMajor()

参考: SystemVersion()

GlobalVersionMinor

gblMinor = NSBSystemLib.GlobalVersionMinor()
PalmOSのバージョン数字のマイナー部分を返します。 この値は、ライブラリをロードしたときに、グローバル変数に代入されます。

戻り値 gblMinor as Integer

Dim gblMinor as Integer gblMinor = NSL.GlobalVersionMinor()

参考: SystemVersion()

GlobalX

x = NSBSystemLib.GlobalX()
NSBSystemLibライブラリの中のグローバル変数「x」の値を返します。

戻り値 x as Integer

Dim x as Integer x = NSL.GlobalX()

GlobalY

y = NSBSystemLib.GlobalY()
NSBSystemLibライブラリの中のグローバル変数「y」の値を返します。

戻り値 y as Integer

Dim y as Integer y = NSL.GlobalY()

GlobalStartX

startX = NSBSystemLib.GlobalStartX()
NSBSystemLibライブラリの中のグローバル変数「StartX」の値を返します。

戻り値 startX as Integer

Dim startX as Integer startX = NSL.GlobalStartX()

GlobalStartY

startY = NSBSystemLib.GlobalStartY()
NSBSystemLibライブラリの中のグローバル変数「StartY」の値を返します。

戻り値 startY as Integer

Dim startY as Integer startY = NSL.GlobalStartY()

GlobalEndX

endX = NSBSystemLib.GlobalEndX()
NSBSystemLibライブラリの中のグローバル変数「EndX」の値を返します。

戻り値 endX as Integer

Dim endX as Integer endX = NSL.GlobalEndX()

GlobalEndY

endY = NSBSystemLib.GlobalEndY()
NSBSystemLibライブラリの中のグローバル変数「EndY」の値を返します。

戻り値 endY as Integer

Dim endY as Integer endY = NSL.GlobalEndY()

GlobalStartPos

startPos = NSBSystemLib.GlobalStartPos()
NSBSystemLibライブラリの中のグローバル変数「startPos」の値を返します。

戻り値 startPos as Integer

Dim startPos as Integer startPos = NSL.GlobalStartPos()

GlobalEndPos

endPos = NSBSystemLib.GlobalEndPos()
NSBSystemLibライブラリの中のグローバル変数「endPos」の値を返します。

戻り値 endPos as Integer

Dim endPos as Integer endPos = NSL.GlobalEndPos()

GlobalWidth

width = NSBSystemLib.GlobalWidth()
NSBSystemLibライブラリの中のグローバル変数「width」の値を返します。

戻り値 width as Integer

Dim width as Integer width = NSL.GlobalWidth()

GlobalHeight

height = NSBSystemLib.GlobalHeight()
NSBSystemLibライブラリの中のグローバル変数「height」の値を返します。

戻り値 height as Integer

Dim height as Integer height = NSL.GlobalHeight()

GlobalHour

gblHour = NSBSystemLib.GlobalHour()
NSBSystemLibライブラリの中のグローバル変数「hour」の値を返します。

戻り値 gblHour as Integer

Dim gblHour as Integer gblHour = NSL.GlobalHour()

参考: SelectOneTime()

GlobalMinute

gblMinute = NSBSystemLib.GlobalMinute()
NSBSystemLibライブラリの中のグローバル変数「minute」の値を返します。

戻り値 gblMinute as Integer

Dim gblMinute as Integer gblMinute = NSL.GlobalMinute()

参考: SelectOneTime()

アラーム関数

PalmOS上のアラームは、特別に配置されたサブプログラムの システムコールとして動作します。そのため、プログラムを 特にアラームを処理することができるように、記述する必要が あります。 このようなプログラムが必要とする幾つかの条件には、 特別なコードの受け取りと、グローバル変数の及ばない部分への アクセスを含んでいます。 NSBasicプログラムは、現在これらの必要条件を処理する事が できず、アラームを単体で処理することができません。 しかしながら、NS Basicプログラムから「プロキシ」プログラムを 使用することで、アラームを利用することができます。

プロキシプログラムは、その名前が意味する通り、NS Basicプログラムの 代理として機能します。NSBAlarmProxyプログラムと共に動作する事を前提 としたここで説明するアラーム関数は、ライブラリと共に配布されます。 現行のPalmOSは、1つのプログラムのために、1つだけのアクティブなアラームを サポートします。そういう事から、 サポート提供します。そのため、5つまでNSBAlarmProxyプログラムを利用できるように しました。5つの代理プログラムを使って、例えば、1つのNS Basicプログラムから 5つのアラームをセットしたり、また、各1つずつのアラームをサポートするプログラムを 5本使うなど、これらの組み合わせで動作させる事になります。アラームを1つしか設定しない場合、1つのプロキシプログラムのインストールで十分です。 これらのNSBAlarmProxyプログラムの名前は、以下の通りです:
NSBAlarmProxy1, NSBAlarmProxy2, NSBAlarmProxy3, NSBAlarmProxy4, and NSBAlarmProxy5
NSBAlarmProxyプログラムは、あなたのNSBasicプログラムの代わりに多くの異なる事を 行わせることができます。 それらは、デバイスの電源ON、単なるアラーム、アラート表示、指定されたプログラムを スタートさせる、の他に、動作中のNS Basicからイベントを感知したりできます。 アラームは、自動的にそれら自身をリセットしたり、再スケジュールするように設定できます。 イベントを感知できるリセット機能の特徴を使う事で、簡単に「割り込みタイマー」を実現する事も出来ます。

たいていの場合、アラームが起動すると、プロキシプログラムは、その動作ログを残します。 このログは、プロキシプログラムのアプリケーション設定に反映されます。 そのため、最新の動作ログだけが利用でき、個別のベータベースは作られません。 この情報は、色々な目的のために使う事が出来ます。 あなたのNS Basicプログラムが、ユーザーによってスタートされたのか、アラームによって 開始されたのかを知る1つの方法です。 これは、あなたのStartupコード内で、アラームログと現在時刻をチェックする事で出来ます。 もし、それらが同じか、近い時間で、また、ログの中にプログラム名が残っていれば このプログラムはアラームによって始められたと考える事が出来ます。 この情報を使って、標準か、もしくは、別のスタート処理を持ったフォームを選択させて プログラムを開始させることが出来ます。

SetAlarmReset

NSBSystemLib.SetAlarmReset resetTime, resetLimit
自動アラームによってセットされる次のアラーム用間隔をリセットします。

引数 resetTime as Integer リセット間隔(秒) 0 = 自動的にアラームをリセットしません resetLimit as Integer 生じることができる自動リセットの数の限界。 -1 = リセットは制限されていません。 自動リセットを止めるためにCancelAlarm()を使用しなければなりません。 0 = 自動的にアラームをリセットしません

Dim resetTime as Integer Dim resetLimit as Integer resetTime = 10 resetLimit = -1 NSL.SetAlarmReset resetTime, resetLimit

この機能が使用される場合、これは、各SetAlarm()関数の前にコールしなければなりません。

補足: 無限ループになり得るので、自動リセットを使うときは注意をして下さい。 アラームイベントは、指定された間隔で正確に発生します。そのため、これらのイベントの プログラムを処理する速度が、イベントのキューに追いつかない場合、無限ループとなります。 通常、これらの間隔は、2秒以下に設定してはいけません。

SetAlarm

status = NSBSystemLib.SetAlarm(alarmPgm, alarmTime, alarmCmd, alarmMsg)
指定されたプログラムのためにアラームをセットします。 このライブラリ上のアラーム機能は、NSBAlarmProxyプログラムと共に使用されるように 設計されています。この機能と他のプログラムを一緒に使用している間は、 大きな障害になります。これは、この機能が、プログラムのアプリケーション設定に 書き込みをするためです。同じ設定を使用する非プロキシプログラムに対して、 不正となりハードリセットが必要になるかもしれません。 プログラム名には、将来、アラームプロキシプログラムが追加される事を考慮するような 制限はされていません。

引数 alarmPgm as String アラームプログラム名 alarmTime as Integer 絶対アラーム時間(システム時間フォーマットか、現在の時刻からの秒の増分で指定)。 現在のシステム時間から5分差し引いた値に等しいかそれより大きい場合、その時間を 絶対時間と見なします。 alarmCmd as Integer アラームコマンド説明: -32767 〜 -30001 = "Timer" コマンド これらのコマンドは、最小限のオーバーヘッドしか持ちません。 これらの動作は、アラームログにも書かれません。さらに、これらは、自動的に アラームをリセットします。これらは、CancelAlarm()関数を使って、キャ ンセルしなければなりません。 これらのコマンドは、コマンドの絶対値を持つイベントをキューにいれます。 ここで使われるリセット間隔(秒)は次のように計算します: abs(cmd) - 30000 例: コマンドが「-30005」の場合、インターバルは5秒になります。イベント タイプに30005を持つイベントをキューに入れます。 0 = "nilEvent"をキューにいれます。単純に、Palmデバイスの電源ONなどに使えます。 1 = システムアラーム音のみ鳴らします。 2 = システムアラームを鳴らし、alarmMsbパラメータで指定するメッセージを伴ったAlert(警報)を発生します。 3 = alarmMsgパラメータで指定する名前のプログラムをスタートさせます。この場合、alarmMsgパラメータ は、次の書式をもった文字列で指定します: <programName>[,<launcherWaitTime>][;<userInfo>] 例: "Address" "Address;started by MyProg" "Address,6;started by MyProg" 補足: launcherWaitTimeは、現在のプログラムを中断するまでの時間(秒)で、デフォルト値は2秒に 設定されています。 alarmMsgの文字列全て同様、userInfoはアラームログに書かれます。これは自 由に使う事が出来ます。 4 〜 255 = Keyイベントと同じ値をログに残す特別なキューを指定します。 24832 〜 30000 = 指定されたイベントタイプと同じイベントをキューにいれます。 alarmMsg as String 80文字以下の文字列で、alarmCmd "2"のメッセージか、alarmCmd "3"のプログラミングに使用します。 これは、アラームログに色々な情報を残すため、とても有用なものです。

戻り値 status as Integer 0 = 正常終了 -1 = 指定されたアラームプログラムがインストールされていません -2 = almErrorMemory - メモリーが不十分です -3 = almErrorFull - アラームキューが満タンです -4 = 予期しないエラー・未定義のエラー

Dim status as Integer Dim alarmPgm as String Dim alarmTime as Integer Dim alarmCmd as Integer Dim alarmMsg as String alarmPgm = "NSBAlarmProxy1" alarmTime = 3600 ' 1 hour from now alarmCmd = 3 alarmMsg = "Hey Wake UP!" status = NSL.SetAlarm(alarmPgm, alarmTime, alarmCmd, alarmMsg)

参照: SystemTime()

補足: 自動リセットを使う時は、無限ループになる可能性があるので 特に注意して下さい。アラームイベントは、指定された間隔で正確に発生します。 そのため、これらのイベントの プログラムを処理する速度が、イベントキューに 追いつかない場合、無限ループとなります。 通常、これらの間隔は、2秒以下に 設定してはいけません。

CancelAlarm

status = NSBSystemLib.CancelAlarm(alarmPgm)
指定されたアラームプログラムをキャンセルするときに使います。

引数 alarmPgm as String アラームプログラム名

戻り値 status as Integer 0 = 正常終了 -1 = 指定されたアラームプログラムがインストールされていません -2 = almErrorMemory - メモリーが不十分です -3 = almErrorFull - アラームキューが満タンです -4 = 予期しないエラー・未定義のエラー

Dim status as Integer Dim alarmPgm as String alarmPgm = "NSBAlarmProxy1" status = NSL.CancelAlarm(alarmPgm)

GetAlarm

alarmTime = NSBSystemLib.GetAlarm(alarmPgm, alarmCmd, alarmMsg)
現在セットされているアラームの情報を取得します

引数 alarmPgm as String アラームプログラム名 alarmCmd as String AlarmCmdの文字列。この引数には戻り値が返されます。 この関数を使う前に、最大の文字数で初期化する必要があります。 この文字列は6文字より長くなってはいけません。 alarmMsg as String Alarm メッセージの文字列。この引数には戻り値が返されます。 この関数を使う前に、最大の文字数で初期化する必要があります。 この文字列は80字より長くなってはいけません。

戻り値 alarmTime as Integer アラーム時間がシステム設定にしたがった書式で返されます。 この値は、1904年1月1日からの経過秒で返されます。

Dim alarmTime as Integer Dim alarmPgm as String Dim alarmCmd as String Dim alarmMsg as String alarmPgm = "NSBAlarmProxy1" '最大の文字列で初期化します。 alarmCmd = "123456" alarmMsg = "1234567890123456789012345678901234567890" _ + "1234567890123456789012345678901234567890" alarmTime = NSL.GetAlarm(alarmPgm, alarmCmd, alarmMsg)

参考: StringDateTime(), StringDate(), StringTime()

GetAlarmTime

alarmTime = NSBSystemLib.GetAlarmTime(alarmPgm)
現在セットされているアラームの情報を取得します。

引数 alarmPgm as String アラームプログラム名

戻り値 alarmTime as Integer アラーム時間がシステム設定にしたがった書式で返されます。 この値は、1904年1月1日からの経過秒で返されます。

Dim alarmTime as Integer Dim alarmPgm as String alarmPgm = "NSBAlarmProxy1" alarmTime = NSL.GetAlarmTime(alarmPgm)

参考: StringDateTime(), StringDate(), StringTime()

GetAlarmResetTime

resetTime = NSBSystemLib.GetAlarmResetTime(alarmPgm)
現在セットされているアラームの情報を取得します。

引数 alarmPgm as String アラームプログラム名

戻り値 resetTime as Integer アラームリセット時間(秒)

Dim resetTime as Integer Dim alarmPgm as String alarmPgm = "NSBAlarmProxy1" resetTime = NSL.GetAlarmResetTime(alarmPgm)

GetAlarmResetLimit

resetLimit = NSBSystemLib.GetAlarmResetLimit(alarmPgm)
現在セットされているアラームの情報を取得します。

引数 alarmPgm as String アラームプログラム名

戻り値 resetLimit as Integer アラームリセットの限界

Dim resetLimit as Integer Dim alarmPgm as String alarmPgm = "NSBAlarmProxy1" resetLimit = NSL.GetAlarmResetLimit(alarmPgm)

GetAlarmCommand

alarmCmd = NSBSystemLib.GetAlarmCommand(alarmPgm)
現在セットされているアラームの情報を取得します。

引数 alarmPgm as String アラームプログラム名

戻り値 alarmCmd as Integer アラームコマンド

Dim alarmCmd as Integer Dim alarmPgm as String alarmPgm = "NSBAlarmProxy1" alarmCmd = NSL.GetAlarmCommand(alarmPgm)

GetAlarmMessage

alarmMsg = NSBSystemLib.GetAlarmMessage(alarmPgm)
現在セットされているアラームの情報を取得します。

引数 alarmPgm as String アラームプログラム名

戻り値 alarmMsg as String アラームメッセージ

Dim alarmMsg as String Dim alarmPgm as String alarmPgm = "NSBAlarmProxy1" alarmMsg = NSL.GetAlarmMessage(alarmPgm)

AlarmLog

alarmTime = NSBSystemLib.AlarmLog(alarmPgm, alarmCmd, alarmMsg)
処理済みのアラームに関する情報を取得します。

引数 alarmPgm as String アラームプログラム名 alarmCmd as String AlarmCmdの文字列。この引数には戻り値が返されます。 この関数を使う前に、最大の文字数で初期化する必要があります。 この文字列は6文字より長くなってはいけません。 alarmMsg as String Alarm メッセージの文字列。この引数には戻り値が返されます。 この関数を使う前に、最大の文字数で初期化する必要があります。 この文字列は80字より長くなってはいけません。

戻り値 alarmTime as Integer アラーム時間がシステム設定にしたがった書式で返されます。 この値は、1904年1月1日からの経過秒で返されます。

Dim alarmTime as Integer Dim alarmPgm as String Dim alarmCmd as String Dim alarmMsg as String alarmPgm = "NSBAlarmProxy1" alarmCmd = "123456" alarmMsg = "1234567890123456789012345678901234567890" _ + "1234567890123456789012345678901234567890" alarmTime = NSL.AlarmLog(alarmPgm, alarmCmd, alarmMsg)

参考: StringDateTime(), StringDate(), StringTime()

AlarmLogAlarmTime

alarmTime = NSBSystemLib.AlarmLogAlarmTime(alarmPgm)
処理済みのアラームに関する情報を取得します。

引数 alarmPgm as String アラームプログラム名

戻り値 alarmTime as Integer アラーム時間がシステム設定にしたがった書式で返されます。 この値は、1904年1月1日からの経過秒で返されます。

Dim alarmTime as Integer Dim alarmPgm as String alarmPgm = "NSBAlarmProxy1" alarmTime = NSL.AlarmLogAlarmTime(alarmPgm)

参考: StringDateTime(), StringDate(), StringTime()

AlarmLogResetTime

resetTime = NSBSystemLib.AlarmLogResetTime(alarmPgm)
処理済みのアラームに関する情報を取得します。

引数 alarmPgm as String アラームプログラム名

戻り値 resetTime as Integer アラームリセット時間(秒)

Dim resetTime as Integer Dim alarmPgm as String alarmPgm = "NSBAlarmProxy1" resetTime = NSL.AlarmLogResetTime(alarmPgm)

AlarmLogResetLimit

resetLimit = NSBSystemLib.AlarmLogResetLimit(alarmPgm)
処理済みのアラームに関する情報を取得します。

引数 alarmPgm as String アラームプログラム名

戻り値 resetLimit as Integer アラームリセットの限界

Dim resetLimit as Integer Dim alarmPgm as String alarmPgm = "NSBAlarmProxy1" resetLimit = NSL.AlarmLogResetLimit(alarmPgm)

AlarmLogResetCount

resetCount = NSBSystemLib.AlarmLogResetCount(alarmPgm)
処理済みのアラームに関する情報を取得します。

引数 alarmPgm as String アラームプログラム名

戻り値 resetCount as Integer アラームがリセットされた回数

Example Dim resetCount as Integer Dim alarmPgm as String alarmPgm = "NSBAlarmProxy1" resetCount = NSL.AlarmLogResetCount(alarmPgm)

AlarmLogCommand

alarmCmd = NSBSystemLib.AlarmLogCommand(alarmPgm)
処理済みのアラームに関する情報を取得します。

引数 alarmPgm as String アラームプログラム名

戻り値 alarmCmd as Integer アラームコマンド

Dim alarmCmd as Integer Dim alarmPgm as String alarmPgm = "NSBAlarmProxy1" alarmCmd = NSL.AlarmLogCommand(alarmPgm)

AlarmLogMessage

alarmMsg = NSBSystemLib.AlarmLogMessage(alarmPgm)
処理済みのアラームに関する情報を取得します。

引数 alarmPgm as String アラームプログラム名

戻り値 alarmMsg as String アラームメッセージ

Dim alarmMsg as String Dim alarmPgm as String alarmPgm = "NSBAlarmProxy1" alarmMsg = NSL.AlarmLogMessage(alarmPgm)

ClearAlarmLog

alarmPgm = NSBSystemLib.ClearAlarmLog()
指定されたアラームプログラムのログを削除します。

引数 alarmPgm as String アラームプログラム名

Dim alarmPgm as String alarmPgm = "NSBAlarmProxy1" alarmPgm = NSL.ClearAlarmLog()


データベース関数

データベース関数は、Palmデバイス上のデータベースを定義する方法を 提供します。また、データベースの情報を取得したり、一部設定を 変更できる機能を提供します。ただし、実際のデータを読み書きする 機能は提供されていません。

FindDatabase

dbID = NSBSystemLib.FindDatabase(cardNo, dbName)
指定されたデータベースのデータベースID(LocalID)を返します。

引数 cardNo as Integer この値は、ほとんどの場合、0 を指定する dbName as String データベース名

戻り値 dbID as Integer 0 が返された場合、指定したデータベースが存在しません それ以外は、指定されたデータベースのIDを返します

Dim dbID as Integer Dim cardNo as Integer Dim dbName as String cardNo = 0 dbName = "NSBRuntime" dbID = NSL.FindDatabase(cardNo, dbName)

DatabaseInfo

dbName = NSBSystemLib.DatabaseInfo(cardNo, dbID)
カードNoとデータベースID(LocalID)で示されるデータベースの名前を 返します。それ以外に、データベースの他の情報も参照することが 可能です。詳しい使い方とデータの参照方法などは、例を見てください。

引数 cardNo as Integer dbID as Integer

戻り値 dbName as String

Dim cardNo as Integer Dim dbID as Integer Dim dbName as String Dim dbVersion as Integer Dim dbCreationDate as Integer Dim dbModificationDate as Integer Dim dbBackupDate as Integer Dim dbModificationNumber as Integer Dim dbAppInfoID as Integer Dim dbSortInfoID as Integer Dim dbType as Integer Dim dbCreatorID as Integer cardNo = 0 dbName = "NSBRuntime" dbID = NSBNSL.FindDatabase(cardNo, dbName) If dbID <> 0 Then dbName = NSL.DatabaseInfo(cardNo, dbID) If dbName <> "" Then dbVersion = NSL.DatabaseVersion() dbCreationDate = NSL.DatabaseCreationDate() dbModificationDate = NSL.DatabaseModificationDate() dbBackupDate = NSL.DatabaseBackupDate() dbModificationNumber = NSL.DatabaseModificationNumber() dbAppInfoID = NSL.DatabaseAppInfoID() dbSortInfoID = NSL.DatabaseSortInfoID() dbType = NSL.DatabaseType() dbCreatorID = NSL.DatabaseCreatorID() EndIf EndIf

  参照: DatabaseName(), DatabaseAttributes(), DatabaseVersion(), DatabaseCreationDate(), DatabaseModificationDate(), DatabaseBackupDate(), DatabaseModificationNumber(), DatabaseType(), DatabaseCreatorID()

DatabaseName

dbName = NSBSystemLib.DatabaseName()
DatabaseInfo()関数で直前に呼び出されたデータベースの、名前を返します。

戻り値 dbName as String

DatabaseInfo()関数の例を参照して下さい。

DatabaseAttributes

dbAttributes = NSBSystemLib.DatabaseAttributes()
DatabaseInfo()関数で直前に呼び出されたデータベースの、アトリビュート(属性)を返します。

戻り値 dbAttributes as Integer 属性は、ビットデータで返されます。以下に、利用可能なビットマスク値を示します: Bit 0 (0x0001) - dmHdrAttrResDB Bit 1 (0x0002) - dmHdrAttrReadOnly Bit 2 (0x0004) - dmHdrAttrAppInfoDirty Bit 3 (0x0008) - dmHdrAttrBackup Bit 4 (0x0010) - dmhdrAttrOKToInstallNewer Bit 5 (0x0020) - dmHdrAttrResetAfterInstall Bit 6 (0x0040) - dmHdrAttrCopyPrevention Bit 7 (0x0080) - dmHdrAttrStream Bit 8 (0x0100) - dmHdrAttrHidden Bit 9 (0x0200) - hmHdrAttrLaunchableData Bit 15 (0x8000) - dmHdrAttrOpen

DatabaseInfo()関数の例を参照して下さい。

DatabaseVersion

dbVersion = NSBSystemLib.DatabaseVersion()
DatabaseInfo()関数で直前に呼び出されたデータベースの、バージョンを返します。

戻り値 dbVersion as Integer

DatabaseInfo()関数の例を参照して下さい。

DatabaseCreationDate

dbCreationDate = NSBSystemLib.DatabaseCreationDate()
DatabaseInfo()関数で直前に呼び出されたデータベースの、作成日付を返します。 この日付は、システムフォーマットに従って、1904年1月1日からの経過秒を表しています。

戻り値 dbCreationDate as Integer

DatabaseInfo()関数の例を参照して下さい。

参照: StringDateTime(), StringDate(), StringTime()

DatabaseModificationDate

dbModificationDate = NSBSystemLib.DatabaseModificationDate()
DatabaseInfo()関数で直前に呼び出されたデータベースの、更新日付を返します。 この日付は、システムフォーマットに従って、1904年1月1日からの経過秒を表しています。

戻り値 dbModificationDate as Integer

DatabaseInfo()関数の例を参照して下さい。

参照: StringDateTime(), StringDate(), StringTime()

DatabaseBackupDate

dbBackupDate = NSBSystemLib.DatabaseBackupDate()
DatabaseInfo()関数で直前に呼び出されたデータベースの、バックアップ日付を返します。 この日付は、システムフォーマットに従って、1904年1月1日からの経過秒を表しています。

戻り値 dbBackupDate as Integer

DatabaseInfo()関数の例を参照して下さい。

参考: StringDateTime(), StringDate(), StringTime()

DatabaseModificationNumber

dbModificationNumber = NSBSystemLib.DatabaseModificationNumber()
DatabaseInfo()関数で直前に呼び出されたデータベースの、更新レコード数を返します。 この数は、レコードを削除したり、追加したり、修正した場合にそれぞれ1つずつ加算されます。

戻り値 dbModificationNumber as Integer

DatabaseInfo()関数の例を参照して下さい。

DatabaseAppInfoID

dbAppInfoID = NSBSystemLib.DatabaseAppInfoID()
DatabaseInfo()関数で直前に呼び出されたデータベースのアプリケーション情報ブロックのローカルIDを返します。

戻り値 dbAppInfoID as Integer 0:情報ブロックが利用可能でない状態を表します。

DatabaseInfo()関数の例を参照して下さい。

DatabaseSortInfoID

dbSortInfoID = NSBSystemLib.DatabaseSortInfoID()
DatabaseInfo()関数で直前に呼び出されたデータベースのソートテーブルブロックのローカルIDを返します。

戻り値 dbSortInfoID as Integer 0:ソートテーブルが利用可能でない状態を表します。

DatabaseInfo()関数の例を参照して下さい。

DatabaseType

dbType = NSBSystemLib.DatabaseType()
DatabaseInfo()関数で直前に呼び出されたデータベースのタイプ(型)を返します。

戻り値 dbType as Integer

DatabaseInfo()関数の例を参照して下さい。

参考: IntToString4()

DatabaseCreatorID

dbCreatorID = NSBSystemLib.DatabaseCreatorID()
DatabaseInfo()関数で直前に呼び出されたデータベースのクリエータIDを返します。

戻り値 dbCreatorID as Integer

DatabaseInfo()関数の例を参照して下さい。

参照: IntToString4()

DatabaseTotalSize

dbTotalSize = NSBSystemLib.DatabaseTotalSize(cardNo, dbID)
指定されたデータベースのヘッダ(カード番号やデータベースID情報など)を含む総サイズを返します。 さらに、それは、データベースのレコード数やデータベース内のサイズの合計を検索します。 例などを参考に、データへのアクセス方法のより詳しい情報を得てください。

引数 cardNo as Integer dbID as Integer

戻り値 dbTotalSize as Integer

Dim cardNo as Integer Dim dbID as Integer Dim dbTotalSize as Integer Dim dbNumRecords as Integer Dim dbDataSize as Integer cardNo = 0 dbName = "NSBRuntime" dbID = NSL.FindDatabase(cardNo, dbName) If dbID <> 0 Then dbTotalSize = NSL.DatabaseSize(cardNo, dbID) dbNumRecords = NSL.DatabaseNumRecords() dbDataSize = NSL.DatabaseDataSize() EndIf

参照: DatabaseNumRecords(), DatabaseDataSize()

DatabaseNumRecords

dbNumRecords = NSBSystemLib.DatabaseNumRecords()
DatabaseTotalSize()関数で直前に呼び出されたデータベースのレコード数を返します。

戻り値 dbNumRecords as Integer

DatabaseTotalSize()関数の例を参照して下さい。

DatabaseDataSize

dbDataSize = NSBSystemLib.DatabaseDataSize()
DatabaseTotalSize()関数で直前に呼び出されたデータベースのヘッダを差し引いたデータサイズを返します。

戻り値 dbDataSize as Integer

DatabaseTotalSize()関数の例を参照して下さい。

DeleteDatabase

status = NSBSystemLib.DeleteDatabase(cardNo, dbID)
指定されたデータベースを削除します。

引数 cardNo as Integer dbID as Integer

戻り値 status as Integer 0 = successful(成功) 257 = memErrChunkLocked(メモリーエラー:チャンクロック) 258 = memErrNotEnoughSpace(メモリーエラー:十分な空きがない) 259 = memErrInvalidParam(メモリーエラー:引数が不正) 517 = dmErrDatabaseOpen(データベースエラー:データベースが開いている) 518 = dmErrCantOpen(データベースエラー:データベースが開けない) 519 = dmErrCantFind(データベースエラー:データベースが見つからない) 526 = dmErrROMBased(データベースエラー:ROM上のデータベースである)

Dim cardNo as Integer Dim dbID as Integer Dim status as Integer cardNo = 0 dbName = "NSBAlarmProxy5" dbID = NSL.FindDatabase(cardNo, dbName) If dbID <> 0 Then status = NSL.DeleteDatabase(cardNo, dbID) EndIf

参照: FindDatabase()

GetNextDatabaseByTypeCreator

dbID = NSBSystemLib.GetNextDatabaseByTypeCreator(newSearch, dbType, dbCreatorID, onlyLatestVersion)
指定されたデバイス上に存在するデータベース一覧を検索するために使用します。

引数 newSearch as Integer 0 = continue searching for databases(続けて検索) 1 = start a new search(新規検索) dbType as Integer Integer database type.(データベースタイプ) 0 = wildcard search.(ワイルドカード検索) dbCreatorID as Integer Integer Creator ID.(クリエターID) 0 = wildcard search.(ワイルドカード検索) onlyLatestVersion as Integer 0 = 全てのバージョンを返します。 1 = 同一クリエータID内の最新バージョンのみ返します。

戻り値 dbID as Integer dbID (ローカルID) of the database.

Dim dbID as Integer Dim newSearch as Integer Dim dbType as Integer Dim dbCreatorID as Integer Dim onlyLatestVersion as Integer Dim dbCardNo as Integer Dim dbName as String onlyLatestVersion = 0 dbType = NSL.String4ToInt("libr") dbCreatorID = 0 newSearch = 1 dbID = 1 Do While dbID <> 0 dbID = NSL.GetNextDatabaseByTypeCreator(newSearch, _ dbType, dbCreatorID, onlyLatestVersion) If dbID <> 0 Then dbCardNo = NSL.DatabaseCardNo() dbName = NSL.DatabaseInfo(dbCardNo, dbID) End If newSearch = 0 Loop

参照: DatabaseCardNo(), DatabaseInfo()

DatabaseCardNo

dbCardNo = NSBSystemLib.DatabaseCardNo()
GetNextDatabaseByTypeCreator()関数で直前に呼び出されたデータベースのカード番号を返します。

戻り値 dbCardNo as Integer

GetNextDatabaseByTypeCreator()関数の例を参照して下さい。

NumDatabases

nbr = NSBSystemLib.NumDatabases(cardNo)
指定されたカード番号上にあるデータベースの数を検索します。

引数 cardNo as Integer

戻り値 nbr as Integer

Dim nbr as Integer Dim cardNo as Integer cardNo = 0 nbr = NSL.NumDatabases(cardNo)

このルーチンは、カード上のデータベースのディレクトリ情報を得るのに有用です。 GetDatabase()は、インデックス番号0〜(NumDatabases-1)までのデータベースIDを返します。 参照: GetDatabase()

NumCards

nbr = NSBSystemLib.NumCards()
この関数は、システム上のメモリーカードスロット数を返します。 全てのスロットが存在しなくてもかまいません。

戻り値 nbr as Integer

Dim nbr as Integer nbr = NSL.NumCards()

GetDatabase

dbID = NSBSystemLib.GetDatabase(cardNo, index)
指定されたカード番号とインデックスのデータベースIDを検索します。

引数 cardNo as Integer index as Integer

戻り値 dbID as Integer 0 = 無効

Dim nbr as Integer Dim dbID as Integer Dim cardNo as Integer Dim index as Integer Dim dbName as String cardNo = 0 nbr = NSL.NumDatabases(cardNo) index = 0 Do While index < nbr dbID = NSL.GetDatabase(cardNo, index) If dbID <> 0 Then dbName = NSL.DatabaseInfo(cardNo, dbID) End If index = index + 1 Loop

参照: NumDatabases()

SetDatabaseName

status = NSBSystemLib.SetDatabaseName(cardNo, dbID, dbName)
指定されたデータベースの名前を変更します。

引数 cardNo as Integer dbID as Integer dbName as String

戻り値 status as Integer 0 = success(成功) 515 = dmErrInvalidParam(データベースエラー:不正な引数) 537 = dmErrAlreadyExists(データベースエラー:既に同名が存在) 538 = InvalidDatabaseName(不正なデータベース名)

Dim status as Integer Dim dbID as Integer Dim cardNo as Integer Dim dbName as String cardNo = 0 dbName = "NSBAlarmProxy5" dbID = NSL.FindDatabase(cardNo, dbName) dbName = "oldNSBAlarmProxy5" status = NSL.SetDatabaseName(cardNo, dbID, dbName)

SetDatabaseAttributes

status = NSBSystemLib.SetDatabaseAttributes(cardNo, dbID, dbAttributes)
指定されたデータベースのアトリビュート(属性)を変更します。

引数 cardNo as Integer dbID as Integer dbAttributes as Integer 属性は、ビットデータで表します。以下に、利用可能なビットマスク値を示します: Bit 0 (0x0001) - dmHdrAttrResDB Bit 1 (0x0002) - dmHdrAttrReadOnly Bit 2 (0x0004) - dmHdrAttrAppInfoDirty Bit 3 (0x0008) - dmHdrAttrBackup Bit 4 (0x0010) - dmhdrAttrOKToInstallNewer Bit 5 (0x0020) - dmHdrAttrResetAfterInstall Bit 6 (0x0040) - dmHdrAttrCopyPrevention Bit 7 (0x0080) - dmHdrAttrStream Bit 8 (0x0100) - dmHdrAttrHidden Bit 9 (0x0200) - hmHdrAttrLaunchableData Bit 15 (0x8000) - dmHdrAttrOpen

戻り値 status as Integer 0 = success(成功) 515 = dmErrInvalidParam(データベースエラー:不正な引数) 537 = dmErrAlreadyExists(データベースエラー:既に同名が存在) 538 = InvalidDatabaseName(不正なデータベース名)

Dim status as Integer Dim dbID as Integer Dim cardNo as Integer Dim dbAttributes as Integer cardNo = 0 dbName = "NSBAlarmProxy5" dbID = NSL.FindDatabase(cardNo, dbName) dbAttributes = 2 status = NSL.SetDatabaseAttributes(cardNo, dbID, dbAttributes)

SetDatabaseVersion

status = NSBSystemLib.SetDatabaseVersion(cardNo, dbID, dbVersion)
指定されたデータベースのバージョン番号を変更します。

引数 cardNo as Integer dbID as Integer dbVersion as Integer

戻り値 status as Integer 0 = success(成功) 515 = dmErrInvalidParam(データベースエラー:不正な引数) 537 = dmErrAlreadyExists(データベースエラー:既に同名が存在) 538 = InvalidDatabaseName(不正なデータベース名)

Dim status as Integer Dim dbID as Integer Dim cardNo as Integer Dim dbVersion as Integer cardNo = 0 dbName = "NSBAlarmProxy5" dbID = NSL.FindDatabase(cardNo, dbName) dbVersion = 6 status = NSL.SetDatabaseVersion(cardNo, dbID, dbVersion)

SetDatabaseCreationDate

status = NSBSystemLib.SetDatabaseCreationDate(cardNo, dbID, dbCreationDate)
指定されたデータベースの作成日付を変更します。

引数 cardNo as Integer dbID as Integer dbCreationDate as Integer

戻り値 status as Integer 0 = success(成功) 515 = dmErrInvalidParam(データベースエラー:不正な引数) 537 = dmErrAlreadyExists(データベースエラー:既に同名が存在) 538 = InvalidDatabaseName(不正なデータベース名)

Dim status as Integer Dim dbID as Integer Dim cardNo as Integer Dim dbCreationDate as Integer cardNo = 0 dbName = "NSBAlarmProxy5" dbID = NSL.FindDatabase(cardNo, dbName) dbCreationDate = NSL.SystemTime("", "", 0, 0) status = NSL.SetDatabaseCreationDate(cardNo, dbID, _ dbCreationDate)

SetDatabaseModificationDate

status = NSBSystemLib.SetDatabaseModificationDate(cardNo, dbID, dbModificationDate)
指定されたデータベースの更新日付を変更します。

引数 cardNo as Integer dbID as Integer dbModificationDate as Integer

戻り値 status as Integer 0 = success(成功) 515 = dmErrInvalidParam(データベースエラー:不正な引数) 537 = dmErrAlreadyExists(データベースエラー:既に同名が存在) 538 = InvalidDatabaseName(不正なデータベース名)

Dim status as Integer Dim dbID as Integer Dim cardNo as Integer Dim dbModificationDate as Integer cardNo = 0 dbName = "NSBAlarmProxy5" dbID = NSL.FindDatabase(cardNo, dbName) dbModificationDate = NSL.SystemTime("", "", 0, 0) status = NSL.SetDatabaseModificationDate(cardNo, dbID, _ dbModificationDate)

SetDatabaseBackupDate

status = NSBSystemLib.SetDatabaseBackupDate(cardNo, dbID, dbBackupDate)
指定されたデータベースのバックアップ日付を変更します。

引数 cardNo as Integer dbID as Integer dbBackupDate as Integer

戻り値 status as Integer 0 = success(成功) 515 = dmErrInvalidParam(データベースエラー:不正な引数) 537 = dmErrAlreadyExists(データベースエラー:既に同名が存在) 538 = InvalidDatabaseName(不正なデータベース名)

Dim status as Integer Dim dbID as Integer Dim cardNo as Integer Dim dbBackupDate as Integer cardNo = 0 dbName = "NSBAlarmProxy5" dbID = NSL.FindDatabase(cardNo, dbName) dbBackupDate = NSL.SystemTime("", "", 0, 0) status = NSL.SetDatabaseModificationDate(cardNo, dbID, _ dbBackupDate)

SetDatabaseModificationNumber

status = NSBSystemLib.SetDatabaseModificationNumber(cardNo, dbID, dbModificationNumber)
指定されたデータベースの更新レコード数を変更する時に使用します。

引数 cardNo as Integer dbID as Integer dbModificationNumber as Integer

戻り値 status as Integer 0 = success(成功) 515 = dmErrInvalidParam(データベースエラー:不正な引数) 537 = dmErrAlreadyExists(データベースエラー:既に同名が存在) 538 = InvalidDatabaseName(不正なデータベース名)

Dim status as Integer Dim dbID as Integer Dim cardNo as Integer Dim dbModificationNumber as Integer cardNo = 0 dbName = "NSBAlarmProxy5" dbID = NSL.FindDatabase(cardNo, dbName) dbModificationNumber = 0 status = NSL.SetDatabaseModificationNumber(cardNo, dbID, _ dbModificationNumber)

SetDatabaseAppInfoID

status = NSBSystemLib.SetDatabaseAppInfoID(cardNo, dbID, dbAppInfoID)
指定されたデータベースのアプリケーション情報ローカルIDを変更します。

引数 cardNo as Integer dbID as Integer dbAppInfoID as Integer

戻り値 status as Integer 0 = success(成功) 515 = dmErrInvalidParam(データベースエラー:不正な引数) 537 = dmErrAlreadyExists(データベースエラー:既に同名が存在) 538 = InvalidDatabaseName(不正なデータベース名)

Dim status as Integer Dim dbID as Integer Dim cardNo as Integer Dim dbAppInfoID as Integer cardNo = 0 dbName = "NSBAlarmProxy5" dbID = NSL.FindDatabase(cardNo, dbName) dbAppInfoID = 0 status = NSL.SetDatabaseAppInfoID(cardNo, dbID, _ dbAppInfoID)

SetDatabaseSortInfoID

status = NSBSystemLib.SetDatabaseSortInfoID(cardNo, dbID, dbSortInfoID)
指定されたデータベースのソートテーブル・ローカルIDを変更します。

引数 cardNo as Integer dbID as Integer dbSortInfoID as Integer

戻り値 status as Integer 0 = success(成功) 515 = dmErrInvalidParam(データベースエラー:不正な引数) 537 = dmErrAlreadyExists(データベースエラー:既に同名が存在) 538 = InvalidDatabaseName(不正なデータベース名)

Dim status as Integer Dim dbID as Integer Dim cardNo as Integer Dim dbSortInfoID as Integer cardNo = 0 dbName = "NSBAlarmProxy5" dbID = NSL.FindDatabase(cardNo, dbName) dbSortInfoID = 0 status = NSL.SetDatabaseSortInfoID(cardNo, dbID, _ dbSortInfoID)

SetDatabaseType

status = NSBSystemLib.SetDatabaseType(cardNo, dbID, dbType)
指定されたデータベースのタイプを変更します。

引数 cardNo as Integer dbID as Integer dbType as Integer

戻り値 status as Integer 0 = success(成功) 515 = dmErrInvalidParam(データベースエラー:不正な引数) 537 = dmErrAlreadyExists(データベースエラー:既に同名が存在) 538 = InvalidDatabaseName(不正なデータベース名)

Dim status as Integer Dim dbID as Integer Dim cardNo as Integer Dim dbType as Integer cardNo = 0 dbName = "NSBAlarmProxy5" dbID = NSL.FindDatabase(cardNo, dbName) dbType = String4ToInt("appl") status = NSL.SetDatabaseType(cardNo, dbID, dbType);

SetDatabaseCreatorID

status = NSBSystemLib.SetDatabaseCreatorID(cardNo, dbID, dbCreatorID)
指定されたデータベースのクリエータIDを変更します。

引数 cardNo as Integer dbID as Integer dbCreatorID as Integer

戻り値 status as Integer 0 = success(成功) 515 = dmErrInvalidParam(データベースエラー:不正な引数) 537 = dmErrAlreadyExists(データベースエラー:既に同名が存在) 538 = InvalidDatabaseName(不正なデータベース名)

Dim status as Integer Dim dbID as Integer Dim cardNo as Integer Dim dbCreatorID as Integer cardNo = 0 dbName = "NSBAlarmProxy5" dbID = NSL.FindDatabase(cardNo, dbName) dbCreatorID = String4ToInt("TEST") status = NSL.SetDatabaseCreatorID(cardNo, dbID, dbCreatorID);


イベント関数

イベント関数を使用することにより、NS Basic標準のEvent CodeセクションおよびSysEventAvailable()関数が提供するイベント感知および処理よりも、さらに多くの制御が可能になります。

GetEvent

eventType = NSBSystemLib.GetEvent(timeoutTicks, consumePenEvents, returnVirtualEvents)
イベントがある場合(発生している場合)、そのシステムイベントタイプを返します。引数timeoutTicksを指定する事で、「ノン・ブロッキング」の遅延を実現できます。 timeoutTicksで指定する時間が経過する前にイベントが発生したら、イベントタイプと共に、ただちにこの関数は返されます。これは、アニメーションやゲームなどに有用な方法です。

引数 timeoutTicks as Integer この関数が返されるまでにシステム時計が何回刻む(tick数)かを指定します consumePenEvents as Integer 0 = ペン・イベントを消費しません 1 = ペン・イベントを消費します この関数は、PalmOSのEvtGetEvent()関数を呼び出します。 EvtGetEvent()関数は、イベントキューからイベントを取り去ります。 他の処理にこれらの取り除いたイベントを利用可能な状態にする為に、この共有ライブラリ関数は、 検知するイベントを再度キューに戻します。 これは描画などのペン・イベントに使う場合、望ましくないかもしれません。この場合、 consumePenEventsを1にセットすると、ペン・イベントは再度キューに戻らず、 ペン・データは利用可能なままになります。 returnVirtualEvents as Integer 0 = 仮想キー(主要)イベントを返しません 1 = 仮想キーイベントを返します。 仮想キーイベントは、PalmOSシステムか、サードパーティのシステムレベルで生じるイベントです。 これらのイベントは、低バッテリー警告や、バックライトの状態変更などのイベントを含みます。 多くの場合、仮想キーイベントは、返されます。 もし、これらが返される時、このライブラリのSysHandleEvent()関数をコールして、システムに 処理させることが賢明でしょう。

戻り値 eventType as Integer -1 = 指定するタイムアウトの時間内で何もイベントがない場合 0 = nilEvent(空イベント) 1 = penDownEven(ペンダウン・イベント)t 次の変数に、ペンの座標を参照できます: GlobalX(), and GlobalY() 2 = penUpEvent(ペンアップ・イベント) 次の変数に、ペンの座標を参照できます: GlobalX(), and GlobalY() 次の変数に、ペンのストローク座標を参照できます: GlobalStartX(), GlobalStartY(), GlobalEndX(), and GlobalEndY() 3 = penMoveEvent(ペン移動・イベント) 次の変数に、ペンの座標を参照できます: GlobalX(), and GlobalY() 4 = keyDownEvent(キーをダウンイベント) キー入力データを取得できます: KeyEventChr(), KeyEventKeyCode(), and KeyEventModifiers() 5 = winEnterEvent(ウィンドウ:Enter) 6 = winExitEvent(ウィンドウ:Exit) 7 = ctlEnterEvent(コントロール:Enter) 8 = ctlExitEvent(コントロール:Exit) 9 = ctlSelectEvent(コントロール:Select、ボタン関係が選択された時) 10 = ctlRepeatEvent(コントロール:Repeat) 11 = lstEnterEvent(リスト:Enter) 12 = lstSelectEvent(リスト:Select) 13 = lstExitEvent(リスト:Exit) 14 = popSelectEvent(ポップアップ:Select) 15 = fldEnterEvent(フィールド:Enter) 16 = fldHeightChangedEvent(フィールド:Height変更) 17 = fldChangedEvent(フィールド:変更) 18 = tblEnterEvent(テーブル:Enter) 19 = tblSelectEvent(テーブル:Select) 20 = daySelectEvent(ディ:Select) 21 = menuEvent(メニューイベント) 22 = appStopEvent(アプリケーション:Stop) 21 = frmOpenEvent(フォーム:Open) 22 = frmGotoEvent(フォーム:Goto) 23 = frmUpdateEvent(フォーム:Update) 24 = frmSaveEvent(フォーム:Save) 25 = frmCloseEvent(フォーム:Close) 26 = frmTitleEnterEvent(フォーム:TitleEnter) 27 = frmTitleSelectEvent(フォーム:TitleSelect) 28 = tblExitEvent(テーブル:Exit) 29 = sclEnterEvent(スクロール:Enter) 30 = sclExitEvent(スクロール:Exit) 31 = sclRepeatEvent(スクロール:Repeat) 35 = tsmConfirmEvent(日本語変換関連:確定) 36 = tsmFepButtonEvent(日本語変換関連:キー) 37 = tsmFepModeEvent(日本語変換関連:モード) 2048 = menuCmdBarOpenEvent(メニュー:コマンドバーOpen) 2049 = menuOpenEvent(メニュー:Open) 2050 = menuCloseEvent(メニュー:Close) 2051 = frmGadgetEnterEvent(フォーム:Gadget) 2052 = frmGadgetMiscEvent(フォーム:Gadget) 4096 = firstINetLibEvent(INetLib関連) 4352 = firstWebLibEvent(WebLib関連) 24576 = firstUserEvent(Userイベント)

Dim eventType as Integer Dim timeoutTicks as Integer NSL.FlushEvents() eventType = 0 Do While eventType <= 0 'do something eventType = NSL.GetEvent(timeoutTicks, 0, 0) Loop

この関数が、ボタンイベントの一部コードとして使用される場合、この関数を呼ぶ前に、ペンディングされているキーやペンのイベントをクリアしたいと思うでしょう。確かに、ボタンを押すことに起因する「ペン・アップ」イベントは、ただちにこの関数に戻り値を発生させます。これについては、FlushEvents()関数の例を参考にして下さい。

SysHandleEvent

NSBSystemLib.SysHandleEvent()
直近のGetEvent()関数によって発生したイベントを消費します。 これは、EvtGetEvent()をコールし、次いでSysHandleEvent()を呼ぶことで実現します。

NSL.SysHandleEvent()

FlushEvents

NSBSystemLib.FlushEvents()
保留中のキーやボタンイベントをクリアします。 これは、PalmOSのEvtFlushKeyQueue()関数と、EvtFlushPenQueue()関数を呼ぶことで実現しています。 そして、その後、EvtGetEvent()およびSysHandleEventを()をコールすることで、残っている全てのイベントを空にします。

NSL.FlushEvents()

KeyEventChr

keyChr = NSBSystemLib.KeyEventChr()
キーイベントの「Chr」データメンバーを返します。GetEvent()関数は、この関数のために、イベントタイプ4(keyDownEvent)を返しているでしょう。

戻り値 keyChr as Integer

Dim keyChr as Integer keyChr = NSL.KeyEventChr()

KeyEventKeyCode

keyCode = NSBSystemLib.KeyEventKeyCode()
キーイベントの「KeyCode」データメンバーを返します。 GetEvent()関数は、この関数のために、イベントタイプ4(keyDownEvent)を返しているでしょう。

戻り値 keyCode as Integer

Dim keyCode as Integer keyCode = NSL.KeyEventKeyCode()

KeyEventModifiers

modifiers = NSBSystemLib.KeyEventModifiers()
キーイベントの「modifiers」データメンバーを返します。 GetEvent()関数は、この関数のために、イベントタイプ4(keyDownEvent)を返しているでしょう。

戻り値 modifiers as Integer

Dim modifiers as Integer modifiers = NSL.KeyEventModifiers()


フィールド・フォーム関数

フィールド、フォーム関数は、フィールドとフォームオブジェクトを操作する便利な機能を提供します。 これらの機能は、標準のNS Basic上からでは実現できないような操作を可能にします。 これらは、SysTrapSub()やSysTrapFunc()命令を使って実現できますが、より単純なインターフェースを提供します。

ControlHitControl

NSBSystemLib.ControlHitControl objID
コントロールをタップをシミュレートします。これの関数は、イベントキューにctlSelectEventを追加します。

引数: objID as Integer 0 = 現在、フォーカスがあるコントロールを対象にします objIDは"Object ID"か"Object Index"のどちらかになります。objIDの値が、 1からオブジェクト数の間であれば、objIDは"Object Index"としてみなさ れます。それ以外は"Object ID"としてみなされます。

Dim objID as Integer objID = 1008 NSL.ControlHitControl objID

FieldCopy

NSBSystemLib.FieldCopy objID
現在選択されているテキストをクリップボードにコピーします。

引数: objID as Integer 0 = 現在、フォーカスがあるコントロールを対象にします objIDは"Object ID"か"Object Index"のどちらかになります。objIDの値が、 1からオブジェクト数の間であれば、objIDは"Object Index"としてみなさ れます。それ以外は"Object ID"としてみなされます。

Dim objID as Integer objID = 1008 NSL.FieldCopy objID

FieldCut

NSBSystemLib.FieldCut objID
現在選択されているテキストをクリップボードにコピーし、その選択範囲を削除し、次いで、そのフィールドを再描画します。 要するに、カット、です。

引数: objID as Integer 0 = 現在、フォーカスがあるコントロールを対象にします objIDは"Object ID"か"Object Index"のどちらかになります。objIDの値が、 1からオブジェクト数の間であれば、objIDは"Object Index"としてみなさ れます。それ以外は"Object ID"としてみなされます。

Dim objID as Integer objID = 1008 NSL.FieldCut objID

FieldInsert

NSBSystemLib.FieldInsert objID, insString
現在、選択されている部分を、insStringに指定した文字列で置き換えて再描画します。

引数 objID as Integer 0 = 現在、フォーカスがあるコントロールを対象にします objIDは"Object ID"か"Object Index"のどちらかになります。objIDの値が、 1からオブジェクト数の間であれば、objIDは"Object Index"としてみなさ れます。それ以外は"Object ID"としてみなされます。 insString as String

Dim objID as Integer Dim insString as String objID = 1008 insString = "Insert This!" NSL.FieldInsert objID, insString

FieldPaste

NSBSystemLib.FieldPaste objID
現在、選択されている範囲を、クリップボード内のテキストで置き換えます。

引数: objID as Integer 0 = 現在、フォーカスがあるコントロールを対象にします objIDは"Object ID"か"Object Index"のどちらかになります。objIDの値が、 1からオブジェクト数の間であれば、objIDは"Object Index"としてみなさ れます。それ以外は"Object ID"としてみなされます。

Dim objID as Integer objID = 1008 NSL.FieldPaste objID

FieldUndo

NSBSystemLib.FieldUndo objID
フィールドオブジェクトに加えられた直前の変更をアンドゥします。 これには、ペーストや、カットも含まれます。

引数: objID as Integer 0 = 現在、フォーカスがあるコントロールを対象にします objIDは"Object ID"か"Object Index"のどちらかになります。objIDの値が、 1からオブジェクト数の間であれば、objIDは"Object Index"としてみなさ れます。それ以外は"Object ID"としてみなされます。

Dim objID as Integer objID = 1008 NSL.FieldUndo objID

FieldGetInsPtPosition

pos = NSBSystemLib.FieldGetInsPtPosition(objID)
文字列の挿入ポイント位置を返します。

引数 objID as Integer 0 = 現在、フォーカスがあるコントロールを対象にします objIDは"Object ID"か"Object Index"のどちらかになります。objIDの値が、 1からオブジェクト数の間であれば、objIDは"Object Index"としてみなさ れます。それ以外は"Object ID"としてみなされます。

戻り値 pos as Integer

Dim pos as Integer Dim objID as Integer objID = 1008 pos = NSL.FieldGetInsPtPosition(objID)

この関数が返す挿入ポイントは、文字列のバイト・オフセットの左側にあります。 つまり、例えば、戻り値が 0 の時、それは、先頭の文字の左側にあることになります。 複数行を持つフィールドの場合、行送りには、1つの文字を含んでいますので、次の行の始めは、行送りキャラクターの後になります。FieldSetInsertionPoint()と FieldSetInsPtPosition()を参照して下さい。

FieldGetSelection

startPos = NSBSystemLib.FieldGetSelection(objID)
フィールド内の選択されたテキストの開始位置と終了位置を返します。ただ、この関数は開始位置だけを返します。終了位置を取得するにはGlobalEndPos()関数を使用します。

引数 objID as Integer 0 = 現在、フォーカスがあるコントロールを対象にします objIDは"Object ID"か"Object Index"のどちらかになります。objIDの値が、 1からオブジェクト数の間であれば、objIDは"Object Index"としてみなさ れます。それ以外は"Object ID"としてみなされます。

戻り値 startPos as Integer

Dim startPos as Integer Dim objID as Integer Dim endPos as Integer objID = 1008 startPos = NSL.FieldGetSelection(objID) endPos = NSL.GlobalEndPos()

FieldAnyDirty

dirty = NSBSystemLib.FieldAnyDirty()
フォーム上にある1つ又は、それ以上のフィールド内の値が、最後にチェックした時から更新されていれば、1 を返します。

戻り値 dirty as Integer

Dim dirty as Integer dirty = NSL.FieldAnyDirty()

FieldDirty

dirty = NSBSystemLib.FieldDirty(objID)
フォーム上の指定したフィールドの値が変更されていれば、1を返します。

引数 objID as Integer 0 =現在、フォーカスがあるコントロールを対象にします objIDは"Object ID"か"Object Index"のどちらかになります。objIDの値が、 1からオブジェクト数の間であれば、objIDは"Object Index"としてみなさ れます。それ以外は"Object ID"としてみなされます。

戻り値 dirty as Integer

Dim dirty as Integer Dim objID as Integer objID = 1008 dirty = NSL.FieldDirty(objID)

FieldSetDirty

NSBSystemLib.FieldSetDirty objID, dirty
指定したフィールドに、印をセットします。あるフィールドの印が、最後にセットした時から変わっていたら、そのフィールドは、変更があったと見なして良いでしょう。(※訳者注:原文では印は、Dirty:汚れ、になっています)

引数 objID as Integer 0 = 現在、フォーカスがあるコントロールを対象にします objIDは"Object ID"か"Object Index"のどちらかになります。objIDの値が、 1からオブジェクト数の間であれば、objIDは"Object Index"としてみなさ れます。それ以外は"Object ID"としてみなされます。 dirty as Integer 0 = 印なし 1 = 印をする

Dim objID as Integer Dim dirty as Integer objID = 1008 dirty = 1 NSL.FieldSetDirty objID, dirty

FieldSetAllDirty

NSBSystemLib.FieldSetAllDirty dirty
アクティブフォーム上の全フィールドに、印をセットします。

引数: dirty as Integer 0 = 印なし 1 = 印をする

Dim dirty as Integer NSL.FieldSetAllDirty dirty

FieldSetSelection

NSBSystemLib.FieldSetSelection objID, startPos, endPos
フィールド内に、startPos、endPosで指定された選択範囲をセットし、その範囲をハイライト表示します。

引数 objID as Integer 0 = 現在、フォーカスがあるコントロールを対象にします objIDは"Object ID"か"Object Index"のどちらかになります。objIDの値が、 1からオブジェクト数の間であれば、objIDは"Object Index"としてみなさ れます。それ以外は"Object ID"としてみなされます。 startPos as Integer endPos as Integer

Dim objID as Integer Dim startPos as Integer Dim endPos as Integer objID = 1008 NSL.FieldSetSelection objID, startPos, endPos

FieldSetInsertionPoint

NSBSystemLib.FieldSetInsertionPoint objID, pos
posで指定された位置に、挿入ポイントをセットします。

引数 objID as Integer 0 = 現在、フォーカスがあるコントロールを対象にします objIDは"Object ID"か"Object Index"のどちらかになります。objIDの値が、 1からオブジェクト数の間であれば、objIDは"Object Index"としてみなさ れます。それ以外は"Object ID"としてみなされます。 pos as Integer

Dim objID as Integer Dim pos as Integer objID = 1008 NSL.FieldSetInsertionPoint objID, pos

このルーチンは、挿入位置を明示しない点がFieldldSetInsPtPositionと異なります。また、これは、フォーカスも移しません。FieldSetInsPtPosition() や FieldGetInsPtPosition()を参照して下さい。

FieldSetInsPtPosition

NSBSystemLib.FieldSetInsPtPosition objID, pos
posで指定された位置に、挿入ポイントをセットします。

引数 objID as Integer 0 = 現在、フォーカスがあるコントロールを対象にします objIDは"Object ID"か"Object Index"のどちらかになります。objIDの値が、 1からオブジェクト数の間であれば、objIDは"Object Index"としてみなさ れます。それ以外は"Object ID"としてみなされます。 pos as Integer

Dim objID as Integer Dim pos as Integer objID = 1008 NSL.FieldSetInsPtPosition objID, pos

挿入ポイントが、可視位置を超えている場合、その場所までスクロールして、可視状態にします。FieldSetInsertionPoint() とFieldGetInsPtPosition()を参考にして下さい。

FieldGetAttributes

attributes = NSBSystemLib.FieldGetAttributes(objID)
ビットイメージデータで、フィールドの属性を返します。BitsNbytes共有ライブラリは、ビット値の操作する機能を含んでいます。

引数 objID as Integer 0 = 現在、フォーカスがあるコントロールを対象にします objIDは"Object ID"か"Object Index"のどちらかになります。objIDの値が、 1からオブジェクト数の間であれば、objIDは"Object Index"としてみなさ れます。それ以外は"Object ID"としてみなされます。

戻り値 attributes as Integer ビットイメージデータは、次の意味を含みます: bit 0 - reserved(反転) bit 1 - numeric(数値) bit 2 - hasScrollBar(スクロールバーあり) bit 3 - autoShift(AutoShift True) bits 4 and 5 - justification(位置調整) 00 - leftAlign(左寄せ) 01 - centerAlign (中央寄せ:サポートされないかもしれない) 10 - rightAlign(右寄せ) bits 6 and 7 - underlined(下線) 00 - noUnderline(下線なし) 01 - grayUnderline(灰色アンダーライン) 10 - solidUnderline(実線アンダーライン) bit 8 - dirty(印) bit 9 - insPtVisible(挿入ポイント可視) bit 10 - dynamicSize(サイズ自動調整) bit 11 - hasFocus(フォーカス) bit 12 - singleLine(単一行) bit 13 - editable(編集可) bit 14 - visible(可視) bit 15 - usable(使用可)

Dim attributes as Integer Dim objID as Integer objID = 1008 attributes = NSL.FieldGetAttributes(objID)

FieldSetAttributes

NSBSystemLib.FieldSetAttributes objID, attributes
指定したフィールドの属性をセットします。属性は、整数型のビットイメージデータで指定します。 BitsNbytes共有ライブラリは、ビット値の操作する機能を含んでいます。

引数 objID as Integer 0 = 現在、フォーカスがあるコントロールを対象にします objIDは"Object ID"か"Object Index"のどちらかになります。objIDの値が、 1からオブジェクト数の間であれば、objIDは"Object Index"としてみなさ れます。それ以外は"Object ID"としてみなされます。 attributes as Integer ビットイメージデータは、次の意味を含みます: bit 0 - reserved(反転) bit 1 - numeric(数値) bit 2 - hasScrollBar(スクロールバーあり) bit 3 - autoShift(AutoShift True) bits 4 and 5 - justification(位置調整) 00 - leftAlign(左寄せ) 01 - centerAlign (中央寄せ:サポートされないかもしれない) 10 - rightAlign(右寄せ) bits 6 and 7 - underlined(下線) 00 - noUnderline(下線なし) 01 - grayUnderline(灰色アンダーライン) 10 - solidUnderline(実線アンダーライン) bit 8 - dirty(印) bit 9 - insPtVisible(挿入ポイント可視) bit 10 - dynamicSize(サイズ自動調整) bit 11 - hasFocus(フォーカス) bit 12 - singleLine(単一行) bit 13 - editable(編集可) bit 14 - visible(可視) bit 15 - usable(使用可)

Dim objID as Integer Dim attributes as Integer objID = 1008 NSL.FieldSetAttributes objID, attributes

FieldGetFont

fontId = NSBSystemLib.FieldGetFont(objID)
フィールドのFontIDを返します。

引数 objID as Integer 0 = 現在、フォーカスがあるコントロールを対象にします objIDは"Object ID"か"Object Index"のどちらかになります。objIDの値が、 1からオブジェクト数の間であれば、objIDは"Object Index"としてみなさ れます。それ以外は"Object ID"としてみなされます。

戻り値 fontId as Integer

Dim fontId as Integer Dim objID as Integer objID = 1008 fontId = NSL.FieldGetFont(objID)

FieldSetFont

NSBSystemLib.FieldSetFont objID, fontId
フィールドのFontIDを指定します。

引数 objID as Integer 0 = 現在、フォーカスがあるコントロールを対象にします objIDは"Object ID"か"Object Index"のどちらかになります。objIDの値が、 1からオブジェクト数の間であれば、objIDは"Object Index"としてみなさ れます。それ以外は"Object ID"としてみなされます。 fontId as Integer

Dim objID as Integer Dim fontId as Integer objID = 1008 fontId = 2 'large font NSL.FieldSetFont objID, fontId

FieldGetScrollPosition

position = NSBSystemLib.FieldGetScrollPosition(objID)
フィールドのスクロール位置を返します。これは、可視行の先頭文字からのオフセット値になります。

引数 objID as Integer 0 = 現在、フォーカスがあるコントロールを対象にします objIDは"Object ID"か"Object Index"のどちらかになります。objIDの値が、 1からオブジェクト数の間であれば、objIDは"Object Index"としてみなさ れます。それ以外は"Object ID"としてみなされます。

戻り値 position as Integer

Dim position as Integer Dim objID as Integer objID = 1008 position = NSL.FieldGetScrollPosition(objID)

FieldSetScrollPosition

NSBSystemLib.FieldSetScrollPosition objID, position
フィールドのスクロール位置を設定します。これは、可視行の先頭文字からのオフセット値をセットします。

引数 objID as Integer 0 = 現在、フォーカスがあるコントロールを対象にします objIDは"Object ID"か"Object Index"のどちらかになります。objIDの値が、 1からオブジェクト数の間であれば、objIDは"Object Index"としてみなさ れます。それ以外は"Object ID"としてみなされます。 position as Integer

Dim objID as Integer Dim position as Integer objID = 1008 position = 20 NSL.FieldSetScrollPosition objID, position

FieldGetScrollValues

totalLines = NSBSystemLib.FieldGetScrollValues(objID)
フィールドのスクロール値を返します。これらは、スクロールバーを更新するために必要な値です。この版数はスクロール位置(オフセット行番号)、テキスト高さ(画面にフィールドの文字列を表示するのに必要な行数)、及び、フィールド自体の高さを返します。この関数の戻り値は、テキスト高さ(行数の合計)のみ、返されます。 スクロール位置は、GlobalStartPos()関数を、フィールド高さは、GlobalHeight()関数を使ってください。

引数 objID as Integer 0 = 現在、フォーカスがあるコントロールを対象にします objIDは"Object ID"か"Object Index"のどちらかになります。objIDの値が、 1からオブジェクト数の間であれば、objIDは"Object Index"としてみなさ れます。それ以外は"Object ID"としてみなされます。

戻り値 totalLines as Integer

Dim totalLines as Integer Dim objID as Integer Dim position as Integer Dim height as Integer objID = 1008 totalLines = NSL.FieldGetScrollValues(objID) position = GlobalStartPos() height = GlobalHeight()

FieldGetVisibleLines

lines = NSBSystemLib.FieldGetVisibleLines(objID)
フィールドの可視部分に表示できる行数を返します。

引数 objID as Integer 0 = 現在、フォーカスがあるコントロールを対象にします objIDは"Object ID"か"Object Index"のどちらかになります。objIDの値が、 1からオブジェクト数の間であれば、objIDは"Object Index"としてみなさ れます。それ以外は"Object ID"としてみなされます。

戻り値 lines as Integer

Dim lines as Integer Dim objID as Integer objID = 1008 lines = NSL.FieldGetVisibleLines(objID)

FieldGetNumberOfBlankLines

lines = NSBSystemLib.FieldGetNumberOfBlankLines(objID)
フィールド下部に表示される下線の本数を返します。

引数 objID as Integer 0 = 現在、フォーカスがあるコントロールを対象にします objIDは"Object ID"か"Object Index"のどちらかになります。objIDの値が、 1からオブジェクト数の間であれば、objIDは"Object Index"としてみなさ れます。それ以外は"Object ID"としてみなされます。

戻り値 lines as Integer

Dim lines as Integer Dim objID as Integer objID = 1008 lines = NSL.FieldGetNumberOfBlankLines(objID)

FieldScrollable

yesNo = NSBSystemLib.FieldScrollable(objID, direction)
フィールドが指定された方向にスクロールできる場合は、1を、そうでなければ 0 を返します。

引数 objID as Integer 0 = 現在、フォーカスがあるコントロールを対象にします objIDは"Object ID"か"Object Index"のどちらかになります。objIDの値が、 1からオブジェクト数の間であれば、objIDは"Object Index"としてみなさ れます。それ以外は"Object ID"としてみなされます。 direction as Integer 0 = up(上) 1 = down(下)

戻り値 yesNo as Integer

Dim yesNo as Integer Dim objID as Integer Dim direction as Integer objID = 1008 yesNo = NSL.FieldScrollable(objID, direction)

FieldScrollField

NSBSystemLib.FieldScrollField objID, nbrLines, direction
nbrLinesで指定された行数だけ、フィールドを上又は下へスクロールさせます。

引数 objID as Integer 0 = 現在、フォーカスがあるコントロールを対象にします objIDは"Object ID"か"Object Index"のどちらかになります。objIDの値が、 1からオブジェクト数の間であれば、objIDは"Object Index"としてみなさ れます。それ以外は"Object ID"としてみなされます。 nbrLines as Integer direction as Integer 0 = up(上) 1 = down(下)

Dim objID as Integer Dim nbrLines as Integer Dim direction as Integer objID = 1008 NSL.FieldScrollField objID, nbrLines, direction

FieldSetBounds

NSBSystemLib.FieldSetBounds objID, topLeftX, topLeftY, width, height
フィールドの位置とサイズを変更します

Parameters objID as Integer 0 = 現在、フォーカスがあるコントロールを対象にします objIDは"Object ID"か"Object Index"のどちらかになります。objIDの値が、 1からオブジェクト数の間であれば、objIDは"Object Index"としてみなさ れます。それ以外は"Object ID"としてみなされます。 topLeftX as Integer topLeftY as Integer width as Integer height as Integer

Dim objID as Integer Dim topLeftX as Integer Dim topLeftY as Integer Dim width as Integer Dim height as Integer objID = 1008 NSL.FieldSetBounds objID, topLeftX, topLeftY, width, height

ワード・ラップ情報を含むメモリブロックを変更する必要があり、十分なスペースが無い場合は、Fatal Errorを引き起こす可能性があります。

FormGetNumberOfObjects

nbr = NSBSystemLib.FormGetNumberOfObjects()
アクティブフォーム上のオブジェクト数を返します。

戻り値 nbr as Integer -1 アクティブなフォームがありません

Dim nbr as Integer nbr = NSL.FormGetNumberOfObjects()

FormGetObjectBounds

x = NSBSystemLib.FormGetObjectBounds(objID)
指定したフォーム上のオブジェクトの x, y, width,および heightを返します。

引数 objID as Integer 0 = 現在、フォーカスがあるコントロールを対象にします objIDは"Object ID"か"Object Index"のどちらかになります。objIDの値が、 1からオブジェクト数の間であれば、objIDは"Object Index"としてみなさ れます。それ以外は"Object ID"としてみなされます。

戻り値 x as Integer -1 フォーカスが無効なオブジェクトか、フォーカスを持っていないオブジェクトです

Dim x as Integer Dim objID as Integer Dim y as Integer Dim width as Integer Dim height as Integer objID = 1008 x = NSL.FormGetObjectBounds(objID) y = NSL.GlobalY() width = NSL.GlobalWidth() height = NSL.GlobalHeight()

この関数では、x位置だけが返されます。グローバル変数の、GlobalY(), GlobalWidth(),及び GlobalHeight()を使って、その他の値を取得する必要があります。

FormGetObjectPosition

x = NSBSystemLib.FormGetObjectPosition(objID)
フォームオブジェクトのX及びY位置を返します。

引数 objID as Integer 0 = 現在、フォーカスがあるコントロールを対象にします objIDは"Object ID"か"Object Index"のどちらかになります。objIDの値が、 1からオブジェクト数の間であれば、objIDは"Object Index"としてみなさ れます。それ以外は"Object ID"としてみなされます。

Returns x as Integer -1 無効なオブジェクトか、フォーカスを持ったオブジェクトがありません

Dim x as Integer Dim objID as Integer Dim y as Integer objID = 1008 x = NSL.FormGetObjectPosition(objID) y = NSL.GlobalY

この関数では、X位置しか返しません。グローバル変数のGlobalY()を使ってY位置を取得する必要があります。

FormGetObjectType

type = NSBSystemLib.FormGetObjectType(objID)
指定されたオブジェクトの種類を返します。

引数 objID as Integer 0 = 現在、フォーカスがあるコントロールを対象にします objIDは"Object ID"か"Object Index"のどちらかになります。objIDの値が、 1からオブジェクト数の間であれば、objIDは"Object Index"としてみなさ れます。それ以外は"Object ID"としてみなされます。

戻り値 type as Integer -1 無効なオブジェクトか、フォーカスを持ったオブジェクトがありません 0 = frmFieldObj(フィールド) 1 = frmControlObj(コントロール) 2 = frmListObj(リスト) 3 = frmTableObj(テーブル) 4 = frmBitmapObj(ビットマップ) 5 = frmLineObj(ライン) 6 = frmFrameObj(フレーム) 7 = frmRectangleObj(レクタングル) 8 = frmLabelObj(ラベル) 9 = frmTitleObj(タイトル) 10 = frmPopupObj(ポップアップ) 11 = frmGraffitiStateObj(Graffiti状態) 12 = frmGadgetObj(ガジェット) 13 = frmScrollbarObj(スクロールバー)

Dim type as Integer Dim objID as Integer objID = 1008 type = NSL.FormGetObjectType(objID) この関数は、全てのコントロールの種類に関する情報を提供しません。全てのオブジェクトの週類を 得るには、FormGetAllObjectTypes()関数を使います。

FormSetObjectPosition

NSBSystemLib.FormSetObjectPosition objID, x, y
x、yで指定された位置に、オブジェクトを移動します。

引数 objID as Integer 0 = 現在、フォーカスがあるコントロールを対象にします objIDは"Object ID"か"Object Index"のどちらかになります。objIDの値が、 1からオブジェクト数の間であれば、objIDは"Object Index"としてみなさ れます。それ以外は"Object ID"としてみなされます。 x as Integer y as Integer

Dim objID as Integer Dim x as Integer Dim y as Integer objID = 1008 x = 120 y = 40 NSL.FormSetObjectPosition objID, x, y

FormSetObjectBounds

NSBSystemLib.FormSetObjectBounds objID, topLeftX, topLeftY, width, height
オブジェクトの、境界と位置を設定します。

引数 objID as Integer 0 = 現在、フォーカスがあるコントロールを対象にします objIDは"Object ID"か"Object Index"のどちらかになります。objIDの値が、 1からオブジェクト数の間であれば、objIDは"Object Index"としてみなさ れます。それ以外は"Object ID"としてみなされます。 topLeftX as Integer topLeftY as Integer width as Integer height as Integer

Dim objID as Integer Dim topLeftX as Integer Dim topLeftY as Integer Dim width as Integer Dim height as Integer objID = 1008 NSL.FormSetObjectBounds objID, topLeftX, topLeftY, width, height

FormGetTitle

title = NSBSystemLib.FormGetTitle()
フォームの現在のタイトルを返します。

戻り値 title as String

Dim title as String title = NSL.FormGetTitle()

FormReplaceTitle

NSBSystemLib.FormReplaceTitle title, forceLength
現在のフォームのタイトルをtitleで置き換えます。置き換えるタイトルの文字列長は、元のタイトルの長さを超えて指定することが出来ません。 forceLengthパラメーターが 0の場合、置き換えるタイトルは、現在のタイトル長さに自動的に切り詰められます。 もし、タイトル文字列の長さが変わってしまう場合、FormGetTitle()関数を使って変更前のタイトルを取得し、その長さを NS BasicのLen()関数で取得して、それをforceLengthの引数として使うべきです。

引数 title as String forceLength as Integer

Dim title as String Dim forceLength as Integer NSL.FormReplaceTitle title, forceLength

ListGetTopItem

topItem = NSBSystemLib.ListGetTopItem(objID)
指定されたリストボックスの先頭の番号を返します。

引数 objID as Integer

戻り値 topItem as Integer

Dim topItem as Integer Dim objID as Integer topItem = NSL.ListGetTopItem(objID)

ListSetTopItem

NSBSystemLib.ListSetTopItem objID, topItem
指定されたリストボックスの先頭の番号を指定します。それが、末尾になる場合は、先頭にはなりません。

引数 objID as Integer topItem as Integer

Dim objID as Integer Dim topItem as Integer NSL.ListSetTopItem objID, topItem

ListGetVisibleItems

visibleItems = NSBSystemLib.ListGetVisibleItems(objID)
指定されたリストボックスの可視部分の項目数を返します。

引数 objID as Integer

戻り値 visibleItems as Integer

Dim visibleItems as Integer Dim objID as Integer visibleItems = NSL.ListGetVisibleItems(objID)

ListScrollList

result = NSBSystemLib.ListScrollList(objID, direction, nbrItems)
指定された方向と項目数だけ、リストボックスをスクロールさせます。

引数 objID as Integer direction as Integer 0 = up(上) 1 = down(下) nbrItems as Integer

戻り値 result as Integer 0 = スクロールできないません 1 = スクロール成功

Dim result as Integer Dim objID as Integer Dim direction as Integer Dim nbrItems as Integer result = NSL.ListScrollList(objID, direction, nbrItems)


フォント関連

フォント関連の関数は、デフォルトのフォントを決定したり、変更する機能を提供します。また、PalmOS上で、可変幅のフォント機能を提供します。

FontGetFont

fontId = NSBSystemLib.FontGetFont()
現在のカレントのフォントIDを返します。

戻り値 fontId as Integer

Dim fontId as Integer fontId = NSL.FontGetFont()

FontSetFont

oldFontId = NSBSystemLib.FontSetFont(fontId)
カレントフォントを設定します。

引数 fontId as Integer

戻り値 oldFontId as Integer

Dim oldFontId as Integer Dim fontId as Integer oldFontId = NSL.FontSetFont(fontId)

FontSelect

fontId = NSBSystemLib.FontSelect()
3種類のシステムフォントのうち1つを選択できるようなダイアログを表示し、ユーザーが選択したFontIDを返します。

戻り値 fontId as Integer

Dim fontId as Integer fontId = NSL.FontSelect()

FontCharWidth

width = NSBSystemLib.FontCharWidth(charString)
指定された文字の幅を返します。もし、指定された文字がカレントフォント内に見当らない場合、文字化けした記号が返されます。

補足: 引数として文字列を渡しても、先頭の1文字だけが評価の対象になります。

引数 charString as String

戻り値 width as Integer

Dim width as Integer Dim charString as String width = NSL.FontCharWidth(charString)

FontCharsWidth

width = NSBSystemLib.FontCharsWidth(charString, optionalLen)
指定した文字列の幅を返します。カレントフォント内に指定した文字が見当らない場合は、文字化けした記号が返されます。

引数 charString as String optionalLen as Integer 0 = 実際の文字列の長さを使います

戻り値 width as Integer

Dim width as Integer Dim charString as String Dim optionalLen as Integer width = NSL.FontCharsWidth(charString, optionalLen)

FontWidthToOffset

offset = NSBSystemLib.FontWidthToOffset(charString, optionalLen, width)
ピクセル位置を与えれば、その位置に表示された文字の位置を返します。もし、ピクセル位置が、文字の左端であれば、GlobalStartPos() は1を返します。 そうでない場合、0を返します。 GlobalWidth()は、返されたオフセットまでのテキストのピクセル幅を返します。

引数 charString as String optionalLen as Integer 0 = 実際の文字列の長さを使います width as Integer

戻り値 offset as Integer

Dim offset as Integer Dim charString as String Dim optionalLen as Integer Dim width as Integer offset = NSL.FontWidthToOffset(charString, optionalLen, width)

FontCharsInWidth

length = NSBSystemLib.FontCharsInWidth(charString, optionalLen, width)
与えられた幅に適合する文字列長をバイト数で返します。グローバル変数のGlobalWidth()には、ピクセル数が返されます。

引数 charString as String optionalLen as Integer 0 = 実際の文字列の長さを使います width as Integer

戻り値 length as Integer

Dim length as Integer Dim charString as String Dim optionalLen as Integer Dim width as Integer length = NSL.FontCharsInWidth(charString, optionalLen, width)

文字列の終端の空白は無視され削除されます。キャリッジリターンの後の文字は無視され、文字列は切り捨てられて扱われます。

FontWordWrap

length = NSBSystemLib.FontWordWrap(charString, width)
与えら得た文字列が、指定された幅の中にどれだけのテキストが表示できるかバイト数を返します。

引数 charString as String width as Integer 0 = 実際の文字列の長さを使います

戻り値 length as Integer

Dim length as Integer Dim charString as String Dim width as Integer length = NSL.FontWordWrap(charString, width)


HotSync データ

HotSyncデータ関数は、HotSyncアプリケーションの情報を提供します。

SyncUserName

userName = NSBSystemLib.SyncUserName()
HotSyncユーザー名前を返します。

戻り値 userName as String

Dim userName as String userName = NSL.SyncUserName()

SuccessfulSync

syncDate = NSBSystemLib.SuccessfulSync()
最後にHotSyncが成功した日付をシステム・フォーマットで返します。戻り値は、1904年1月1日からの経過秒として返されます。 StringDateTime()、StringDate()、又は、StringTime()を使ってシステム・フォーマットを文字列へ変換して使ってください。

戻り値 syncDate as Integer

Dim syncDate as Integer syncDate = NSL.SuccessfulSync()

LastSync

syncDate = NSBSystemLib.LastSync()
最後にHotSyncした日付をシステム・フォーマットで返します。戻り値は、1904年1月1日からの経過秒として返されます。 StringDateTime()、StringDate()、又は、StringTime()を使ってシステム・フォーマットを文字列へ変換して使ってください。

戻り値 syncDate as Integer

Dim syncDate as Integer syncDate = NSL.LastSync()


ローカライズ:地域情報関数

ローカライズ機能は日付や通貨などの表示書式を、システムで指定されるような標準/米国フォーマットからユーザの要望するフォーマットに変換するために使用されます。 例えば、ヨーロッパ各国では、1000単位の区切りに「.」を使い、10進数区切りには「,」を使います。また、日付には、dd/mm/yy形式を使うのが一般的です。 これらの関数は、ユーザーが希望するセットに対して、必要な変換を行います。

LocalizeNumber

localNbrStr = NSBSystemLib.LocalizeNumber(stdNbrStr)
与えられた文字列の数値形式を、標準/米国フォーマットから、システム設定で設定した地域情報にしたがったフォーマットへ変更します。

引数 stdNbrStr as String

戻り値 localNbrStr as String

Dim localNbrStr as String Dim stdNbrStr as String stdNbrStr = "4,123.56" localNbrStr = NSL.LocalizeNumber(stdNbrStr)

DelocalizeNumber

stdNbrStr = NSBSystemLib.DelocalizeNumber(localNbrStr)
与えられた文字列の数値形式を、システム設定で設定した地域情報にしたがったフォーマットから、標準/米国フォーマットへ変更します。

引数 localNbrStr as String

戻り値 stdNbrStr as String

Dim stdNbrStr as String Dim localNbrStr as String locNbrStr = "4.123,56" stdNbrStr = NSL.DelocalizeNumber(localNbrStr)

LocalizeDate

localDateStr = NSBSystemLib.LocalizeDate(stdDateStr, ToDateFormat, longDateFormat)
与えられた文字列の日付形式を、標準/米国フォーマットから、システム設定で設定した地域情報にしたがったフォーマットへ変更します。

引数 stdDateStr as String 日付文字列に、時刻情報を含んでも、時刻部分は無視されます。 ToDateFormat as Integer 0 = stdDateStrの書式を"MM/DD/YY[YY]"で指定します 1 = stdDateStrの書式を"[YY]YY/MM/DD"で指定します longDateFormat as Integer 0 = 短い日付書式を指定します 1 = 長い日付書式を指定します

戻り値 localDateStr as String(ローカライズされた日付文字列)

Dim localDateStr as String Dim stdDateStr as String Dim ToDateFormat as Integer Dim longDateFormat as Integer stdDateStr = DateMMDDYY(Today()) ToDateFormat = 0 longDateFormat = 0 localDateStr = NSL.LocalizeDate(stdDateStr, ToDateFormat, longDateFormat)


環境設定

環境設定は、システム環境設定とアプリケーション環境設定の2つのカテゴリに分けられます。 システム環境設定は、自動OFF時間、日付書式などを含んでいます。 アプリケーション環境設定は、アプリケーションの特別な情報の格納に使われます。 これらの環境設定は、プログラム状態、登録コードなどを格納しています。 アプリケーション環境設定を使うことで、あえてデータベースを作る必要を省いてくれるかもしれませんが、それほど大きなデータを含むことは出来ません。

GetAppPreferences

data = NSBSystemLib.GetAppPreferences(pgmName, prefId, saved)
アプリケーション環境設定文字列を取得します。

引数 pgmName as String プログラム名 - これは要注意です prefId as Integer 環境設定ID saved as Integer 0 = 環境設定は、ハードリセットの後に保持されません 1 = 環境設定は、ハードリセットの後も保持されます

戻り値 data as String

Dim data as String Dim pgmName as String Dim prefId as Integer Dim saved as Integer pgmName = "SysLibTest" prefId = 1 saved = 0 data = NSL.GetAppPreferences(pgmName, prefId, saved)

現在、設定文字列は、250バイト以下に制限されています。

SetAppPreferences

status = NSBSystemLib.SetAppPreferences(pgmName, prefId, data, saved)
アプリケーション設定文字列を設定します。

引数 pgmName as String プログラム名 - これは要注意です prefId as Integer 環境設定ID data as String saved as Integer 0 = 環境設定は、ハードリセットの後に保持されません 1 = 環境設定は、ハードリセットの後も保持されます

戻り値 status as Integer 0 = 成功 -1 = 無効なプログラム名を指定しました

Dim status as Integer Dim pgmName as String Dim prefId as Integer Dim data as String Dim saved as Integer pgmName = "SysLibTest" prefId = 1 data = "anything I want!" saved = 0 status = NSL.SetAppPreferences(pgmName, prefId, data, saved)

現在、設定文字列は、250バイト以下に制限されています。

GetSysPreference

data = NSBSystemLib.GetSysPreference(prefID)
システム環境設定値を取得します。

引数 prefID as Integer PalmOS SDKの Preferences.h の値を指定します: 0 = prefVersion 1 = prefCountry 2 = prefDateFormat 3 = prefLongDateFormat 4 = prefWeekStartDay 5 = prefTimeFormat 6 = prefNumberFormat 7 = prefAutoOffDuration 現在は、prefAutoOffDurationSecs が良く使われます (prefAutoOffDuration は分単位です) 8 = prefSysSoundLevelV20 9 = prefGameSoundLevelV20 10 = prefAlarmSoundLevelV20 11 = prefHidePrivateRecordsV33 12 = prefDeviceLocked 13 = prefLocalSyncRequiresPassword 14 = prefRemoteSyncRequiresPassword 15 = prefSysBatteryKind 16 = prefAllowEasterEggs 17 = prefMinutesWestOfGMT グリニッジ標準時 18 = prefDaylightSavings サマータイム 19 = prefRonamaticChar 20 = prefHard1CharAppCreator App creator for hard key #1 21 = prefHard2CharAppCreator 22 = prefHard3CharAppCreator 23 = prefHard4CharAppCreator 24 = prefCalcCharAppCreator 25 = prefHardCradleCharAppCreator 26 = prefLauncherAppCreator 27 = prefSysPrefFlags 28 = prefHardCradle2CharAppCreator 29 = prefAnimationLevel PalmOS 3.0から、次のものが追加されました: ------------------------------------------ 30 = prefSysSoundVolume 実際の振幅 − エラー音や、その他アラームやゲーム以外の音 31 = prefGameSoundVolume 32 = prefAlarmSoundVolume 33 = prefBeamReceive 使用しない−赤外通信の検索モードを持つ ExgLibControl を使う 34 = prefCalibrateDigitizerAtReset Trueは、ソフトリセット時に、ユーザーキャリブレーションを表示します 35 = prefSystemKeyboardID 優先されるキーボードリソースのID 36 = prefDefSerialPlugIn デフォルトのシリアルプラグインのcreator ID PalmOS 3.1からの拡張分: ------------------------- 37 = prefStayOnWhenPluggedIn 38 = prefStayLitWhenPluggedIn PalmOS 3.2からの拡張分: ------------------------- 39 = prefAntennaCharAppCreator App creator for antenna key PalmOS 3.3からの拡張分: ------------------------- 40 = prefMeasurementSystem English, Metric, etc. PalmOS 3.5からの拡張分: ------------------------- 41 = prefShowPrivateRecords returns privateRecordViewEnum 42 = prefAutoOffDurationSecs PalmOS 4.0からの拡張分: ------------------------- 43 = prefTimeZone G.M.T.からの相対時間。+は、G.M.T.の東, −は西t 44 = prefDaylightSavingAdjustment D.S.T.の調整(分)、標準的には、0か60 45 = prefAutoLockType Never, on poweroff, after preset delay or at preset time. 46 = prefAutoLockTime Auto lock preset time or delay. 47 = prefAutoLockTimeFlag 分か時間で 48 = prefLanguage 選択された言語(セットアップのFormats) 49 = prefLocale 国(セットアップのFormats) 50 = prefTimeZoneCountry タイムゾーン 51 = prefAttentionFlags User prefs for getting user's attention 52 = prefDefaultAppCreator Default application launched on reset.

戻り値 data as Integer

Dim data as Integer Dim prefID as Integer prefID = 7 'prefAutoOffDuration - in seconds data = NSL.GetSysPreference(prefID)

SetSysPreference

NSBSystemLib.SetSysPreference prefID, data
システム環境設定値を設定します。

引数 prefID as Integer GetSysPreference()関数を参照 data as Integer

Dim prefID as Integer Dim data as Integer prefID = 7 'prefAutoOffDuration - in minutes data = 3 '3 minutes NSL.SetSysPreference prefID, data


プログレスマネージャ

プログレスマネージャ関数は、長時間を要する処理の経過を表示するダイアログを提供します。これらは、ユーザーに処理の進行状況を伝える機能を提供できます。

ProgressStartDialog

NSBSystemLib.ProgressStartDialog title
プログレスダイアログをスタートさせます。これら関数は、長い時間を要する処理を実行している間、その経過状況をユーザーに伝える特別なアラート画面を表示します。

引数: title as String 20文字以内のダイアログのタイトル文字列

Dim title as String Dim message as String Dim stage as Integer Dim error as Integer Dim force as Integer Dim canceled as Integer Dim strValue as String Dim resolution as Integer Dim completeChar as String Dim incompleteChar as String Dim percent as Integer Dim count as Integer completeChar = "|" incompleteChar = "." resolution = 5 count = 100 title = "Progress Test..." NSL.ProgressStartDialog title Delay 1 error = 0 stage = 1 Do While stage <= count canceled = NSL.ProgressUserCancel() If canceled = 1 Then Exit Do End If percent = NSL.ProgressPercent(stage, count) strValue = NSL.ProgressPercentString(percent, resolution, _ completeChar, incompleteChar) Message = strValue + Chr(10) + Str(percent) _ + "% complete" + Chr(10) _ + "stage = " + Str(stage) NSL.ProgressUpdateDialog error, message stage = stage + 1 Delay 0.25 Loop force = 0 Delay 1 NSL.ProgressStopDialog(force)

参照: ProgressStopDialog(), ProgressUpdateDialog()

ProgressStopDialog

NSBSystemLib.ProgressStopDialog force
プログレスダイアログをストップし、ダイアログボックスの表示を消します。

引数: force as Integer 0 = ただちに、ダイアログを終了しません。 1 = ただちに、ダイアログを終了します。 この引数は、ダイアログがエラーメッセージを表示する過程においてのみ、意味を持ちます。 もし、"force"に 0 がセットされていれば、ユーザーはダイアログを消すために「OK」ボタンを タップしなければなりません。

ProgressStartDialog() の例を見てください。

ProgressUpdateDialog

NSBSystemLib.ProgressUpdateDialog error, message
プログレスダイアログ上の表示メッセージを更新します。

引数 error as Integer 0 = エラーはありません 1 = エラー発生にします もし、"error"に 1 をセットした場合、ダイアログには、特別な指定されたメッセージが 表示され、"OK"ボタンを表示します。 message as String 表示するメッセージ。120文字以内で指定します。

ProgressStartDialog() の例を見てください。

ProgressUserCancel

canceled = NSBSystemLib.ProgressUserCancel()
ユーザーが"Cancel"をタップした時、1 が返されます。 途中で中断しないか、してはならない処理を作るときには、この関数は使わないで下さい。 今のPalmOSでは、このボタンを非表示にしたり、無効の灰色表示にできませんので、"Cencel"ボタンは、 表示されています。しかし、実際は、何も動作しません。

戻り値 canceled as Integer

ProgressStartDialog() の例を見てください。

ProgressPercent

percent = NSBSystemLib.ProgressPercent(current, count)
入力された値に対して、完了した値の割合(%)を計算します。 この関数は、実際は、プログレスマネージャAPIの一部機能ではありません。 これは、プログレスダイアログのメッセージに含むことができるように、割合を計算するのに便利な方法として提供しています。

引数 current as Integer 繰り返し処理ループ中の、現在の繰り返し数 count as Integer 100%完了する時の、繰り返し数

戻り値 percent as Integer

ProgressStartDialog() の例を見てください。

ProgressPercentString

strValue = NSBSystemLib.ProgressPercentString(percent, resolution, completeChar, incompleteChar)
進行中の「完了・未完了」の割合を表現するような文字列を返します。 この関数は、実際は、プログレスマネージャAPIの一部機能ではありません。 これは進行度合いを、■などのグラフィックキャラクタを使って表すための便利な関数として提供されます。 ここで返された文字列は、プログレスダイアログのメッセージの一部に使うことができます。

引数 percent as Integer Percent complete - 参照: ProgressPercent(). resolution as Integer パーセントのサイズを表す解像度(resolution) 解像度 1 は、100文字で処理が完了することを意味します。 1%変化する毎に、処理文字列に反映されます。 解像度 5 は、20文字で処理が完了することを意味します。 5%変化する毎に、処理文字列に反映されます。 処理文字列の長さは、(100 ÷ 解像度)で計算できます。 解像度は、以下のどれかである必要があります: 1, 2, 4, 5, 10, 20, 25, or 50 completeChar as String 進行した時に表示される文字列を指定します。 "|" を推奨します。 incompleteChar as String 未完了の処理を表す文字列を指定します。 "." を推奨します。 "completeChar"と"incompleteChar" は、同じピクセル幅の文字列であるべきです。 そうすることで、実際の進行状況を、正確に伝えることができます。

戻り値 strValue as String

ProgressStartDialog() の例を見てください。


文字列関数

これらの文字列関数は、ライブラリ中の他の関数で使うために、文字列を操作する便利な手段を提供します。

String4ToInt

intValue = NSBSystemLib.String4ToInt(fourByteString)
4バイトの文字列の、整数値を返します。 この関数は、クリエータID、アプリケーションンタイプ、リソースタイプなどの値を計算する時などに有用です。

引数 fourByteString as String

戻り値 intValue as Integer

Dim intValue as Integer Dim fourByteString as String fourByteString = "libr" intValue = NSL.String4ToInt(fourByteString)

参照: IntToString4()

IntToString4

fourByteString = NSBSystemLib.IntToString4(intValue)
整数値から、4バイトの文字列を返します。これは、整数値から、クリエータIDやアプリケーションタイプや、リソースタイプなどを作るのに役立ちます。

引数 intValue as Integer

戻り値 fourByteString as String

Dim fourByteString as String Dim intValue as Integer intValue = 1818845810 '"libr" fourByteString = NSL.IntToString4(intValue)

参照: String4ToInt()

DelimitedItem

item = NSBSystemLib.DelimitedItem(inputStr, delimiter, nbr)
特定のデリミタ(分割文字)を含む文字列から、デリミタで分解した指定した位置の文字列を返します。

Parameters inputStr as String デリミタを含む分割したい文字列 delimiter as String デリミタ(文字、または、文字列) nbr as Integer 返したい位置。これは、1 が先頭になります。

Returns item as String 取り出された文字列が返されます。指定された文字列がない場合、デリミタが返されます。

Dim item as String Dim inputStr as String Dim delimiter as String Dim nbr as Integer inputStr = "Joe;Mary;Jane" delimiter = ";" nbr = 2 'Returns the string "Mary" item = NSL.DelimitedItem(inputStr, delimiter, nbr)

入力文字列は、250文字以下でなければなりません。

FixedWidthString

fixedStr = NSBSystemLib.FixedWidthString(origStr, width, options)
文字列を固定幅の文字列を返します。 これは、PopUpやListBoxなどの項目データとして、長さを揃えたデータを作りたい時に役立ちます。 指定するピクセル数に収まるよう、必要に応じて、幅広のスペース(chr(25))と通常のスペース(chr(32))が組み合わされます。 指定された幅を超える部分は、切り取られます。

幅広のスペースは、5ピクセル、通常のスペースは、2ピクセルの幅です。この関数は、通常のフォント(Font ID=0)にのみ適用されます。

引数 origStr as String 表示したい文字列 width as Integer 表示したい幅のピクセル数 options as Integer 0 = 左詰め 1 = 右詰め 2 = 左詰めで表示し、切り取られたことを「...」で表します 3 = 右詰めで表示し、切り取られたことを「...」で表します 4 = 中央合わせで表示し、切り取られたことを「...」で表します 5 = 中央合わせ

戻り値 fixedStr as String 調整された文字列

Dim fixedStr as String Dim origStr as String Dim width as Integer Dim options as Integer origStr = "This is a test" width = 80 options = 0 fixedStr = NSL.FixedWidthString(origStr, width, options)

NormalSpacedString()関数を使うと、通常のスペースの文字列に変換できます。

NormalSpacedString

normalStr = NSBSystemLib.NormalSpacedString(origStr)
文字列に含まれる、広幅スペース(chr(25))を通常スペース(chr(32))へ置き換えます。

引数 origStr as String

戻り値 normalStr as String

Dim normalStr as String Dim origStr as String normalStr = NSL.NormalSpacedString(origStr)

参照: FixedWidthString()

システム時刻関数

PalmOSのシステム時刻は、1904年1月1日からの経過秒を整数値で表します。 大抵の日付や時刻を持つPalmOSのAPIは、この書式の時刻を使います。 このシステム時刻関数は、時刻とシステム時刻書式への変換機能を提供します。

SelectOneTime

newTimeSelected = NSBSystemLib.SelectOneTime(defHour, defMinute, title)
PalmOS関数のSelectOneTime()を呼び出し、ユーザーが、1つの時刻を選択できるようなダイアログを表示します。 この関数は、時間を選択すると、1 を返しますが、そうでなければ、0 を返します。 グローバル変数の、GlobalHour() と GlobalMinute() には、選択された時間が返されます。

引数 defHour as Integer デフォルトで選択しておく時刻(時間) defMinute as Integer デフォルトで選択しておく時刻(分) title as String

戻り値 newTimeSelected as Integer

Dim newTimeSelected as Integer Dim defHour as Integer Dim defMinute as Integer Dim title as String defHour = 10 defMinute = 30 title = "Some Title" newTimeSelected = NSL.SelectOneTime(defHour, defMinute, title) If newTimeSelected = 1 Then defHour = NSL.GlobalHour() defMinute = NSL.GlobalMinute() End If

IncrementSystemTime

newSysTime = NSBSystemLib.IncrementSystemTime(oldSysTime, hours, minutes, seconds)
指定する時刻(oldSysTime)に、指定された時間、分、秒を加えたシステム時間を返します。(指定する時刻は、1904年1月1日からの経過秒です)

引数 oldSysTime as Integer 0 = 現在の時刻を使います hours as Integer minutes as Integer seconds as Integer

戻り値 newSysTime as Integer

Dim newSysTime as Integer Dim oldSysTime as Integer Dim hours as Integer Dim minutes as Integer Dim seconds as Integer oldSysTime = 0 hours = 0 minutes = 30 seconds = 0 'Add 30 minutes newSysTime = NSL.IncrementSystemTime(oldSysTime, hours, minutes, seconds)

SystemTime

sysTime = NSBSystemLib.SystemTime(strDate, strTime, seconds, ToDateFormat)
システム時間(1904年1月1日からの経過秒)を返します。 対象となる日付と時間は、strDateとstrTimeの2つの文字列を指定します。 日付を表すstrDateには、日付と時間の両方の値を含んでも構いません。 もし、時刻strTimeがブランク("")の場合は、strDateに含まれる時刻が使われます。 また、両方ともブランクの場合、現在の日付と時間を使います。
secondsという引数は、返されるシステム時間を、簡単に進めたり遅らせたりするために使います。
例えば、

   systemTime = NSL.SystemTime("", "", 5, 0)

とすると、現在時刻から、5秒加えられた値が返されます。

引数 strDate as String 日付の書式。詳細は、引数ToDateFormatを参照して下さい strTime as String "HH[:MM[:SS]][AM|PM|am|pm]"で表される時刻。 ("P"や"p"の文字列が含まれる場合、適当な"AM/PM"書式に調整されます) seconds as Integer 戻り値の時刻に加え、調整するための秒数。(マイナスの値も可) ToDateFormat as Integer 0 = 日付のフォーマットは "MM/DD/YYYY" か "MM/DD/YY" 1 = 日付のフォーマットは "YYYY/MM/DD" か "YY/MM/DD"

戻り値 sysTime as Integer 1904年1月1日からの経過秒

Dim sysTime as Integer Dim strDate as String Dim strTime as String Dim seconds as Integer Dim ToDateFormat as Integer strDate = "" strTime = "" Seconds = 5 ToDateFormat = 0 sysTime = NSL.SystemTime(strDate, strTime, seconds, ToDateFormat)

参照: StringDateTime(), StringDate(), and StringTime()

StringDateTime

strDateTime = NSBSystemLib.StringDateTime(sysTime, ToDateFormat, ToTimeFormat, AMPMFormat)
与えられたシステム時間(1904年1月1日からの経過秒)を、日付・時刻文字列に変換して返します。引数sysTimeに 0 を指定すると、現在の日付と時間が使われます。

引数 sysTime as Integer 1904年1月1日からの経過秒 ToDateFormat as Integer 戻り値の日付フォーマット: 0 = "MM/DD/YY" 1 = "YYYY/MM/DD" 2 = "MM/DD/YYYY" 3 = "YY/MM/DD" ToTimeFormat as Integer 戻り値の時刻フォーマット: 0 = "HH:MM" 1 = "HH:MM:SS" AMPMFormat as Integer 0 = AM/PM を付加しません。 1 = 時刻を調整し" AM" か " PM" を付加します。

戻り値 strDateTime as String

Dim strDateTime as String Dim sysTime as Integer Dim ToDateFormat as Integer Dim ToTimeFormat as Integer Dim AMPMFormat as Integer sysTime = SystemTime("", "", 0, 0) strDateTime = NSL.StringDateTime(sysTime, ToDateFormat, ToTimeFormat, AMPMFormat)

参照: SystemTime(), StringDate(), and StringTime()

StringDate

strDate = NSBSystemLib.StringDate(sysTime, ToDateFormat)
与えられたシステム時間(1904年1月1日からの経過秒)を、日付文字列に変換して返します。日付のデータだけが返されます。引数sysTimeに 0 を指定すると、現在の日付と時間が使われます。

引数 sysTime as Integer 1904年1月1日からの経過秒 ToDateFormat as Integer 戻り値の日付フォーマット: 0 = "MM/DD/YY" 1 = "YYYY/MM/DD" 2 = "MM/DD/YYYY" 3 = "YY/MM/DD"t.

戻り値 strDate as String

Dim strDate as String Dim sysTime as Integer Dim ToDateFormat as Integer sysTime = SystemTime("", "", 0, 0) strDate = NSL.StringDate(sysTime, ToDateFormat)

参照: SystemTime(), StringDateTime(), and StringTime()

StringTime

strTime = NSBSystemLib.StringTime(sysTime, ToTimeFormat, AMPMFormat)
与えられたシステム時間(1904年1月1日からの経過秒)を、時刻文字列に変換して返します。 時刻のデータだけが返されます。引数sysTimeに 0 を指定すると、現在の日付と時間が使われます。

引数 sysTime as Integer 1904年1月1日からの経過秒 ToTimeFormat as Integer 戻り値の時刻フォーマット: 0 = "HH:MM" 1 = "HH:MM:SS" AMPMFormat as Integer 0 = AM/PM を付加しません。 1 = 時刻を調整し" AM" か " PM" を付加します。

戻り値 strTime as String

Dim strTime as String Dim sysTime as Integer Dim ToTimeFormat as Integer Dim AMPMFormat as Integer sysTime = SystemTime("", "", 0, 0) strTime = NSL.StringTime(sysTime, ToTimeFormat, AMPMFormat)

参照: SystemTime(), StringDateTime(), and StringDate()

ライブラリバージョン1.4の追加と変更点

バージョン 1.4 には、FixedWidthString、StringDateTime 及び StringDate の関数に対するオプションが追加されています。

FixedWidthString関数の引数"rightJustify"は、"options"に変更されました。この引数は、まだ、位置調整を行いますが、切り詰めなければならない場合も、省略記号(...)が付加されます。

StringDateTime関数と、StringDate関数の "ToDateFormat"引数に、2つの新しいオプションが追加されました。これらのオプションは、「年」をより柔軟に表現できるようになります。

以下は、このバージョンのNSBSystemLib共通ライブラリに追加された関数です。これらの新機能を使う前に、共通ライブラリのバージョンをチェックするのが賢明でしょう。

PostEvent

NSBSystemLib.PostEvent eventNbr
EvtAddEventToQueueをコールすることで、イベントをキューに入れます。このイベント番号は、24576〜32767のカスタムイベント番号です。

引数: eventNbr as Integer

Dim eventNbr as Integer eventNbr = 30000 NSL.PostEvent eventNbr

FormGetFocus

objID = NSBSystemLib.FormGetFocus()
フォーカスを持っているオブジェクトのIDを返します。

戻り値 objID as Integer -1 :どのオブジェクトもフォーカスを持っていない

Dim objID as Integer objID = NSL.FormGetFocus()

FieldGetTextLength

txtLen = NSBSystemLib.FieldGetTextLength(objID)
指定するIDのフィールド内に含まれる文字列の長さを返します。

引数 objID as Integer 0 : 現在、フォーカスを持っているフィールドを指定 objIDは"Object ID"か"Object Index"のどちらかになります。objIDの値が、 1からオブジェクト数の間であれば、objIDは"Object Index"としてみなさ れます。それ以外は"Object ID"としてみなされます。

戻り値 txtLen as Integer

Dim txtLen as Integer Dim objID as Integer objID = 1008 txtLen = NSL.FieldGetTextLength(objID)

RandomNumber

nbr = NSBSystemLib.RandomNumber(seed, minNbr, maxNbr)
最大値と最小値で指定した範囲の乱数を返します。

引数 seed as Integer 乱数のシード(種)。0 を指定すると、現在のシードを使います。 minNbr as Integer 最小値 >= 0 、maxNbrより小さい値 maxNbr as Integer 最大値 <= 32767、minNbrより大きな値

戻り値 nbr as Integer

Dim nbr as Integer Dim seed as Integer Dim minNbr as Integer Dim maxNbr as Integer minNbr = 1 maxNBR = 10 nbr = NSL.RandomNumber(seed, minNbr, maxNbr)

ResetAutoOffTimer

NSBSystemLib.ResetAutoOffTimer()
AutoOffTimeをリセットします。長い繰り返し処理中で使い、オートパワーオフで、電源が切れることを防ぎます。

NSL.ResetAutoOffTimer()

SetAutoOffTime

oldSeconds = NSBSystemLib.SetAutoOffTime(newSeconds)
オートパワーオフの時間(秒)をセットします。元の値に戻せるように、直前の設定値を戻り値として返します。

引数 newSeconds as Integer

戻り値 oldSeconds as Integer

Dim oldSeconds as Integer Dim newSeconds as Integer newSeconds = 600 '10 minutes oldSeconds = NSL.SetAutoOffTime(newSeconds)

ProgramVersionString

verStr = NSBSystemLib.ProgramVersionString(cardNbr, pgmName)
'tver'リソースを読み取ることで、プログラムのバージョン文字列を返します。もし、リソースが見当らない場合は、データベースのバージョンが返されます。

引数 cardNbr as Integer pgmName as String

戻り値 verStr as String

Dim verStr as String Dim cardNbr as Integer Dim pgmName as String cardNbr = 0 pgmName = "NSBSystemLib" verStr = NSL.ProgramVersionString(cardNbr, pgmName)

DynamicHeapSize

heapSize = NSBSystemLib.DynamicHeapSize()
ダイナミック・ヒープサイズを変更します。

戻り値 heapSize as Integer

Dim heapSize as Integer heapSize = NSL.DynamicHeapSize()

DynamicHeapFree

freeSize = NSBSystemLib.DynamicHeapFree()
ダイナミック・ヒープ中のフリーなバイト数を返します。

戻り値 freeSize as Integer

Dim freeSize as Integer freeSize = NSL.DynamicHeapFree()

DynamicHeapMaxChunk

maxChunkSize = NSBSystemLib.DynamicHeapMaxChunk()
ダイナミック・ヒープ内の、最大のチャンクサイズを返します。

戻り値 maxChunkSize as Integer

Dim maxChunkSize as Integer maxChunkSize = NSL.DynamicHeapMaxChunk()

SortInit

error = NSBSystemLib.SortInit(maxItems, itemType)
SortQSortとSortInsertionSortの関数で使用されるソート配列を初期化します。 引数maxItemsは、ソート配列に並べ替え・追加されるアイテム数の最大数を返します。 この値は、正確でなくても構いませんが、実際に加えられたアイテム数以上の数である必要があります。 ソート配列によって使われるメモリを開放するためには、maxItemsに 0 をしていします。 新たにソート配列を初期化するか、プログラムの終了により、ライブラリが閉じられた場合、自動的に開放されます。

引数 maxItems が > 0 の時は、引数itemTypeに、並べ替えるデータのタイプを指定します。 itemTypeは、"string"、"integer"、もしくは "double"の中から選択して代入すれば良いです。 ソート配列を初期化した後は、itemTypeで指定された型のデータだけが、追加、もしくは、呼び出されるかもしれません。

引数 maxItems as Integer ソート配列に加えられるアイテムの最大数 itemType as String ソートするデータのタイプ 有効なタイプは: "string"、 "integer"、 "double"

戻り値 error as Integer 0 = 正常終了 -1 = ダイナミックメモリーが不充分 -2 = 不正な引数itemTypeを指定

SortQSort() 及び SortInsertionSort() の両方を参照して下さい。

SortAddString

error = NSBSystemLib.SortAddString(strItem)
文字列データをソート配列に追加します。

引数 strItem as String 追加する文字列データ

戻り値 error as Integer 0 = 正常終了 -1 = ダイナミックメモリー不足 -2 = ソート配列が初期化されていない -3 = ソート配列は、文字列型ではない -4 = ソート配列に用意されたアイテム数を超過した

SSortQSort() 及び SortInsertionSort() の両方を参照して下さい。

SortAddInteger

error = NSBSystemLib.SortAddInteger(intItem)
ソート配列に整数(Integer)型のデータを追加します。

引数 intItem as Integer 追加する整数データ

戻り値 error as Integer 0 = 正常終了 -1 = ダイナミックメモリー不足 -2 = ソート配列が初期化されていない -3 = ソート配列は、整数(Integer)型ではない -4 = ソート配列に用意されたアイテム数を超過した

SSortQSort() 及び SortInsertionSort() の両方を参照して下さい。

SortAddDouble

error = NSBSystemLib.SortAddDouble(dblItem)
ソート配列に実数(Double)型のデータを追加します。

引数 dblItem as Double 追加する実数データ

Returns error as Integer 0 = 正常終了 -1 = ダイナミックメモリー不足 -2 = ソート配列が初期化されていない -3 = ソート配列は、実数(Double)型ではない -4 = ソート配列に用意されたアイテム数を超過した

SSortQSort() 及び SortInsertionSort() の両方を参照して下さい。

SortGetString

strItem = NSBSystemLib.SortGetString(index)
ソート配列から、指定した位置の文字データを取得する。

引数 index as Integer ソート配列中のデータのインデックスか添字。

戻り値 strItem as String

SSortQSort() 及び SortInsertionSort() の両方を参照して下さい。

SortGetInteger

intItem = NSBSystemLib.SortGetInteger(index)
ソート配列から、指定した位置の整数データを取得する。

引数 index as Integer ソート配列中のデータのインデックスか添字。

戻り値 intItem as Integer

SSortQSort() 及び SortInsertionSort() の両方を参照して下さい。

SortGetDouble

dblItem = NSBSystemLib.SortGetDouble(index)
ソート配列から、指定した位置の実数データを取得する。

引数 index as Integer ソート配列中のデータのインデックスか添字。

戻り値 dblItem as Double

SSortQSort() 及び SortInsertionSort() の両方を参照して下さい

SortQSort

numItems = NSBSystemLib.SortQSort(reverseSort, caselessSort)
SortInit()で初期化され、SortAddString(),SortAddInteger(),SortAddDouble()などで、データを追加したソート配列に対して「クイックソート」を実行します。 これは、PalmOS APIのSysQSortをコールします。(SortInsertionSort()も同様です)
ここに、PalmOS SDK説明書が、どのようにSysQSort API を使うのか記述があります:

クイックソートはソート中にレコードの並びを掻き混ぜる傾向にありますので、等しい値のレコードが複数存在する場合、それらのお互いの位置関係は固定されません。従って、各レコードが完全にユニーク(独特)でない場合、SysQSortの結果は毎回同じでない可能性があります。 もし、このような動作を望まないなら、かわりにインサージョンソート(挿入法)を使ってください(SysInsertionSort)

軸(ピボット)を得るために、クイックソートのアルゴリズムは、全体から、(適当な)3つのレコードの中心を取り出し、ピボットとします。このように、このアルゴリズムでは、部分的に並べられたデータを利用することができます。

これらの最適化は、次のように行います:

このルーチンは、制御不能な回帰を制限するために、それ自身のスタックを含んでいます。 スタックがいっぱいになると、挿入法が使われます。これにより、それ以上スタックが使われることがなくなります。

レコード数が少ない場合も、挿入法が使用されます。これは、クイックソートが少数のレコードの時に、著しくなるオーバーヘッドを回避します。

ほとんどのレコードがソートされたように見えた時も、移動させる必要がある少数のレコードだけを移動するために、挿入法が使われます。

引数 reverseSort as Integer ソート順 0 = 昇順 1 = 降順 caselessSort as Integer 0 = 大文字/小文字を区別してソート 1 = 大文字/小文字を区別しないでソート

戻り値 numItems as Integer ソートしたアイテム数 ソート配列からアイテムを得るには、ふさわしい関数 (SortGetString(), SortGetInteger(), SortGetDouble())を使ってください。

Dim error as Integer Dim maxItems as Integer Dim itemType as String Dim numItems as Integer Dim reverseSort as Integer Dim caselessSort as Integer Dim i as Integer Dim tmpStr as String maxItems = 100 itemType = "string" error = NSL.SortInit(maxItems, itemType) If error <> 0 Then MsgBox "SortInit error = " + Str(error) Exit Sub End If For i = 1 to someNumber error = NSL.SortAddString(someStringArray(i)) If error <> 0 Then MsgBox "SortAddString error = " + Str(error) Exit Sub End If Next reverseSort = 0 'Sort from lowest to highest caselessSort = 1 'Case insensitive sort numItems = NSL.SortQSort(reverseSort, caselessSort) For i = 1 to numItems tmpStr = NSL.SortGetString(i) someStringArray(i) = tmpStr Next

SortInsertionSort

numItems = NSBSystemLib.SortInsertionSort(reverseSort, caselessSort)
SortInit()で初期化され、SortAddString(),SortAddInteger(),SortAddDouble()などで、データを追加したソート配列に対して「クイックソート」を実行します。 これは、PalmOS APIのSysInsertionSortをコールします。(SortQSort()も同様です) ここに、PalmOS SDK説明書が、どのようにSysQSort API を使うのか記述があります:

順番から外れている要素だけを移動します。移動される要素は、等しい要素範囲の最終位置に移動されます。 大量の要素の並び替えが必要な場合、クイックソート(SysQSort)を使ってみて下さい。

挿入法のアルゴリズム: 2番目の要素からスタートし、各要素を、前の要素と比較します。各要素が直前の要素より大きくない場合、既にソートされている位置に挿入されます。挿入位置を決めるにはバイナリサーチが実行されます。移動された要素は、他の等しい要素の後ろに挿入されます。

引数 reverseSort as Integer ソート順 0 = 昇順 1 = 降順 caselessSort as Integer 0 = 大文字/小文字を区別してソート 1 = 大文字/小文字を区別しないでソート

戻り値 numItems as Integer ソートしたアイテム数 ソート配列からアイテムを得るには、ふさわしい関数 (SortGetString(), SortGetInteger(), SortGetDouble())を使ってください。

Dim error as Integer Dim maxItems as Integer Dim itemType as String Dim numItems as Integer Dim reverseSort as Integer Dim caselessSort as Integer Dim i as Integer Dim tmpStr as String maxItems = 100 itemType = "string" error = NSL.SortInit(maxItems, itemType) If error <> 0 Then MsgBox "SortInit error = " + Str(error) Exit Sub End If For i = 1 to someNumber error = NSL.SortAddString(someStringArray(i)) If error <> 0 Then MsgBox "SortAddString error = " + Str(error) Exit Sub End If Next reverseSort = 0 'Sort from lowest to highest caselessSort = 1 'Case insensitive sort numItems = NSL.SortInsertionSort(reverseSort, caselessSort) For i = 1 to numItems tmpStr = NSL.SortGetString(i) someStringArray(i) = tmpStr Next

ListQSort

numItems = NSBSystemLib.ListQSort(objID, reverseSort, caselessSort)
既存のリスト・オブジェクト中の項目に「クイックソート」を実行します。 このルーチンはPalmOS APIのSysQSortを使用します。ListInsertionSort機能も使用することができます。 クイックソートと挿入法のアルゴリズムの差を比較するためには、このライブラリのSortQSortとSortInsertionSortの記述を参照して下さい。

引数 objID as Integer リストオブジェクトのobjectID 0 を指定すると、フォーカスを持ったオブジェクトが対象になります。 reverseSort as Integer 0 = 昇順 1 = 降順 caselessSort as Integer 0 = 大文字/小文字を区別してソート 1 = 大文字/小文字を区別しないでソート

戻り値 numItems as Integer ソートしたアイテム数

Dim numItems as Integer Dim objID as Integer Dim reverseSort as Integer Dim caselessSort as Integer objID = 1008 reverseSort = 0 caselessSort = 0 numItems = NSL.ListQSort(objID, reverseSort, caselessSort)

ListInsertionSort

numItems = NSBSystemLib.ListInsertionSort(objID, reverseSort, caselessSort)
既存のリスト・オブジェクト中の項目に「インサージョンソート(挿入法)」を実行します。 このルーチンはPalmOS APIのSysInsertionSortを使用します。ListQSort機能も使用することができます。 クイックソートと挿入法のアルゴリズムの差を比較するためには、このライブラリのSortQSortとSortInsertionSortの記述を参照して下さい。

引数 objID as Integer リストオブジェクトのobjectID 0 を指定すると、フォーカスを持ったオブジェクトが対象になります。 reverseSort as Integer 0 = 昇順 1 = 降順 caselessSort as Integer 0 = 大文字/小文字を区別してソート 1 = 大文字/小文字を区別しないでソート

戻り値 numItems as Integer ソートしたアイテム数

Dim numItems as Integer Dim objID as Integer Dim reverseSort as Integer Dim caselessSort as Integer objID = 1008 reverseSort = 0 caselessSort = 0 numItems = NSL.ListInsertionSort(objID, reverseSort, caselessSort)


ライブラリバージョン2.0の追加と変更点

バージョン2.0は幾つかの新しい機能と、FixedWidthString の修正を含んでいます。

以前のバージョンで正常に動作しない可能性のあったFixedWidthStringのoption機能が動作するようになりました。

以下は、このバージョンのNSBSystemLib共通ライブラリに追加された関数です。これ らの新機能を使う前に、共通ライブラリのバージョンをチェックするのが賢明でしょう。

FormGetAllObjectTypes

type = NSBSystemLib.FormGetAllObjectTypes(objID)
指定されたオブジェクトの種類を返します。.

引数 objID as Integer 0 = 現在フォーカスを持っているオブジェクト objIDは、オブジェクトIDでもオブジェクトインデックスでもどちらでも 指定できます。 もし、objIDが1からフォーム上のオブジェクト数以下であれば、objIDは オブジェクトインデックスとして、それ以外は、オブジェクトIDとして 扱われます。

戻り値 type as Integer -1 無効なオブジェクトか、フォーカスを持っていない場合 0 = frmFieldObj 2 = frmListObj 3 = frmTableObj 4 = frmBitmapObj 5 = frmLineObj 6 = frmFrameObj 7 = frmRectangleObj 8 = frmLabelObj 9 = frmTitleObj 10 = frmPopupObj 11 = frmGraffitiStateObj 12 = frmGadgetObj 13 = frmScrollbarObj 100 = buttonCtl 101 = pushButtonCtl 102 = checkboxCtl 103 = popupTriggerCtl 104 = selectorTriggerCtl 105 = repeatingButtonCtl 106 = sliderCtl 107 = feedbackSliderCtl

Dim type as Integer Dim objID as Integer objID = 1008 type = NSL.FormGetAllObjectTypes(objID)

この関数は、個々のコントロールオブジェクトを明確に区別する点がFormGetObjectType()と 異なります。

FieldClearAll

NSBSystemLib.FieldClearAll()
フォーム上の全てのテキストをクリアします。

NSL.FieldClearAll()

ObjectWithPoint

obj = NSBSystemLib.ObjectWithPoint(x, y, returnType, searchOption)
(x,y)で指定した位置の近隣にあるオブジェクトの情報を返します。

引数 x as Integer x 座標 y as Integer y 座標 returnType as Integer 0 = オブジェクトIDを返す 1 = オブジェクトインデックスを返す このインデックスは1からフォーム上のオブジェクト数の間の値を 返します。 これは、このインデックスをライブラリ中の他の関数でも使えるように、 PalmOSが扱うインデックスに1が加えられています。 したがって、SysTrap()などでAPIを使用する場合、この値から1を引いて 使う必要があります。 2 = オブジェクトのポインタを返す(Variant型) searchOption as Integer 0 = 使用可能で可視状態で編集が許可されているものだけを検索 1 = 使用可能で可視状態のものだけを検索 2 = 全てのものを検索

戻り値 obj as Integer オブジェクトIDか、インデックスかポインタ(指定した形式) -1 か NULLの場合は、オブジェクトが見つからない場合。

Dim obj as Integer Dim x as Integer Dim y as Integer Dim returnType as Integer Dim searchOption as Integer obj = NSL.ObjectWithPoint(x, y, returnType, searchOption)

ANDInt

result = NSBSystemLib.ANDInt(int1, int2)
int1とint2の間のビットごとの論理積(AND)を返します。

引数 int1 as Integer int2 as Integer

戻り値 result as Integer

Dim result as Integer Dim int1 as Integer Dim int2 as Integer result = NSL.ANDInt(int1, int2)

ORInt

result = NSBSystemLib.ORInt(int1, int2)
int1とint2の間のビットごとの論理和(OR)を返します。

引数 int1 as Integer int2 as Integer

戻り値 result as Integer

Dim result as Integer Dim int1 as Integer Dim int2 as Integer result = NSL.ORInt(int1, int2)

XORInt

result = NSBSystemLib.XORInt(int1, int2)
int1とint2の間のビットごとの排他的論理和(XOR)を返します。

引数 int1 as Integer int2 as Integer

戻り値 result as Integer

Dim result as Integer Dim int1 as Integer Dim int2 as Integer result = NSL.XORInt(int1, int2)

OnesComplement

result = NSBSystemLib.OnesComplement(intValue)
引数に対して"1の補数"を返します。 これは、全てのビットを反転させた値になります。

引数 intValue as Integer

戻り値 result as Integer

Dim result as Integer Dim intValue as Integer result = NSL.OnesComplement(intValue)

BitValue

result = NSBSystemLib.BitValue(intValue, bitNumber)
指定されたビットの値を返します。 0なら0、1なら1が返ります。

引数 intValue as Integer bitNumber as Integer ビット番号は右が 0で、31までの数値です。

戻り値 result as Integer

Dim result as Integer Dim intValue as Integer Dim bitNumber as Integer result = NSL.BitValue(intValue, bitNumber)

BitsValue

result = NSBSystemLib.BitsValue(intValue, startBit, endBit)
指定したビット番号間のビット値を返します。 これは、開始ビットと終了ビットの間を全て返します。 例えば、 BitsValue(intValue, 5, 7) とした場合、ビット番号5,6,7の値が返ります。

引数 intValue as Integer startBit as Integer ビット番号は右が 0で、31までの数値です。 endBit as Integer ビット番号は右が 0で、31までの数値です。

戻り値 result as Integer

Dim result as Integer Dim intValue as Integer Dim startBit as Integer Dim endBit as Integer result = NSL.BitsValue(intValue, startBit, endBit)

SetBitValue

result = NSBSystemLib.SetBitValue(intValue, bitNumber, bitValue)
指定したビット番号にビットをセットします。

引数 intValue as Integer bitNumber as Integer ビット番号は右が 0で、31までの数値です。 bitValue as Integer

戻り値 result as Integer

Dim result as Integer Dim intValue as Integer Dim bitNumber as Integer Dim bitValue as Integer result = NSL.SetBitValue(intValue, bitNumber, bitValue)

SetBitsValue

result = NSBSystemLib.SetBitsValue(intValue, bitsValue, startBit, endBit)
指定したビット番号にビットをセットします。 これは、開始ビットと終了ビットを指定できます。 例えば、SetBitsValue(intValue, 1, 5, 7) とした場合、5,6,7番目のビットに値がセットされます。

引数 intValue as Integer bitsValue as Integer startBit as Integer ビット番号は右が 0で、31までの数値です。 endBit as Integer ビット番号は右が 0で、31までの数値です。

戻り値 result as Integer

Dim result as Integer Dim intValue as Integer Dim bitsValue as Integer Dim startBit as Integer Dim endBit as Integer result = NSL.SetBitsValue(intValue, bitsValue, startBit, endBit)

IntToHex

hexValue = NSBSystemLib.IntToHex(intValue, trimLeading)
指定した整数値を16進表記の文字列に変換します。

引数 intValue as Integer trimLeading as Integer 0 = 結果の先頭が 0 の場合、これを排除しません 1 = 結果の先頭の 0 を排除します

戻り値 hexValue as String

Dim hexValue as String Dim intValue as Integer Dim trimLeading as Integer hexValue = NSL.IntToHex(intValue, trimLeading)

HexToInt

intValue = NSBSystemLib.HexToInt(hexValue)
16進表記の文字列を整数値に変換します。

引数 hexValue as String

戻り値 intValue as Integer

Dim intValue as Integer Dim hexValue as String intValue = NSL.HexToInt(hexValue)

IntToBin

binValue = NSBSystemLib.IntToBin(intValue, trimLeading)
指定した整数値を2進表記の文字列に変換します。

引数 intValue as Integer trimLeading as Integer 0 = 結果の先頭が 0 の場合、これを排除しません 1 = 結果の先頭の 0 を排除します

戻り値 binValue as String

例E Dim binValue as String Dim intValue as Integer Dim trimLeading as Integer binValue = NSL.IntToBin(intValue, trimLeading)

BinToInt

intValue = NSBSystemLib.BinToInt(binValue)
2進表記の文字列を整数値に変換します。

引数 binValue as String

戻り値 intValue as Integer

Dim intValue as Integer Dim binValue as String intValue = NSL.BinToInt(binValue)


スクリーン用及びカラー用関数:

GetSupportedDepths

depths = NSBSystemLib.GetSupportedDepths()
使っているPalmデバイスがサポートしているビットマップのビット深度情報を返します。

戻り値 depths as Integer

Dim depths as Integer depths = NSL.GetSupportedDepths()

ビット操作については、共有ライブラリ「BitsNBytes」もしくはVer.2.0以降の 本ライブラリで関数として提供されます。

DepthSupported

boolean = NSBSystemLib.DepthSupported(depth)
指定したビット深度がサポートされていれば 1 を、そうでなければ 0 を返します。

引数 depth as Integer

戻り値 boolean as Integer

Dim boolean as Integer Dim depth as Integer depth = 4 boolean = NSL.DepthSupported(depth)

ColorSupported

boolean = NSBSystemLib.ColorSupported()
Palmデバイスがカラーをサポートしていれば 1 を、そうでなければ 0 を返します。

戻り値 boolean as Integer

Dim boolean as Integer boolean = NSL.ColorSupported()

SetDepth

NSBSystemLib.SetDepth depth
スクリーンモードを指定したビット深度にセットします。

引数 depth as Integer

Dim depth as Integer depth = 4 NSL.SetDepth depth

SetColor

NSBSystemLib.SetColor boolean
スクリーンモードをカラーモードにします。

引数 boolean as Integer 1 = カラーモード 0 = 非カラーモード

Dim boolean as Integer boolean = 1 NSL.SetColor boolean

SaveScreenMode

NSBSystemLib.SaveScreenMode()
現在のスクリーンモード設定を保存します。 保存された値は、後述する「RestoreScreenMode」を呼ぶことで復元できます。 例えば、プログラム開始時にスクリーンモードを保存しておき、プログラム終了時に 復元するようにしておけば、プログラム中のいかなるモード変更も、デバイスの 設定に影響されなくなります。

NSL.SaveScreenMode()

RestoreScreenMode

NSBSystemLib.RestoreScreenMode()
保存されているスクリーンモード設定を復元します。 この値は「SaveScreenMode」で保存された値です。

NSL.RestoreScreenMode()

CurrentDepth

depth = NSBSystemLib.CurrentDepth()
現在のビット深度を返します。

戻り値 depth as Integer

Dim depth as Integer depth = NSL.CurrentDepth()

CurrentColor

boolean = NSBSystemLib.CurrentColor()
現在のカラー情報を返します。 戻り値が 1 の場合、カラーが表示できるモードにあります。 そうでない場合は 0 が返ります。

戻り値 boolean as Integer

Dim boolean as Integer boolean = NSL.CurrentColor()

SetToDefaults

NSBSystemLib.SetToDefaults()
全てのスクリーンモード設定を初期値に戻します。

NSL.SetToDefaults()

DefaultDepth

depth = NSBSystemLib.DefaultDepth()
ビット深度の初期値を返します。

戻り値 depth as Integer

Dim depth as Integer depth = NSL.DefaultDepth()

DefaultColor

boolean = NSBSystemLib.DefaultColor()
デフォルトのカラー情報を返します。 戻り値が 1 の場合、デフォルトでカラーモードが設定されています。 そうでない場合 0 が返されます。

戻り値 boolean as Integer

Dim boolean as Integer boolean = NSL.DefaultColor()

GetTableEntryIndex

index = NSBSystemLib.GetTableEntryIndex(which)
PalmOSの「UIColorGetTableEntryIndex」を呼び出します。 whichで指定したUIのカラーインデックスを返します。

引数 which as Integer UIObjectFrame = 0, UIObjectFill = 1 UIObjectForeground = 2 UIObjectSelectedFill = 3 UIObjectSelectedForeground = 4 UIMenuFrame = 5 UIMenuFill = 6 UIMenuForeground = 7 UIMenuSelectedFill = 8 UIMenuSelectedForeground = 9 UIFieldBackground = 10 UIFieldText = 11 UIFieldTextLines = 12 UIFieldCaret = 13 UIFieldTextHighlightBackground = 14 UIFieldTextHighlightForeground = 15 UIFieldFepRawText = 16 UIFieldFepRawBackground = 17 UIFieldFepConvertedText = 18 UIFieldFepConvertedBackground = 19 UIFieldFepUnderline = 20 UIFormFrame = 21 UIFormFill = 22 UIDialogFrame = 23 UIDialogFill = 24 UIAlertFrame = 25 UIAlertFill = 26 UIOK = 27 UICaution = 28 UIWarning = 29

戻り値 index as Integer -1 = PalmOSのバージョンが3.5未満

Dim index as Integer Dim which as Integer which = 11 'UIFieldText index = NSL.GetTableEntryIndex(which)

この関数は、PalmOS 3.5以上でなければ動作しません。

GetTableEntryRGB

index = NSBSystemLib.GetTableEntryRGB(which)
PalmOSの「UIColorGetTableEntryRGB」を呼び出します。 whichで指定したUIのRGB値を返します。 RGB値は「RGBColorType」という構造で、以下のフィールドを含んでいます。
	index, red, green, blue.
この関数は、全ての値を含んだ戻り値を返しますが、実際に返されるのはindexという戻り値だけです。 赤、緑、青の値が欲しい場合は、この関数に続いてGetRGBRed, GetRGBGreen, and GetRGBBlueという 関数を使う必要があります。詳細は「例」を見てください。

引数 which as Integer (GetTableEntryIndexのwhichと同じ)

戻り値 index as Integer -1 = PalmOSのバージョンが3.5未満

Dim index as Integer Dim which as Integer Dim red as Integer Dim green as Integer Dim blue as Integer which = 11 'UIFieldText index = NSL.GetTableEntryRGB(which) red = SL.GetRGBRed() green = SL.GetRGBGreen() blue = SL.GetRGBBlue()

この関数は、PalmOS 3.5以上でなければ動作しません。

GetRGBIndex

index = NSBSystemLib.GetRGBIndex()
RGB値は「RGBColorType」という構造で、以下のフィールドを含んでいます。
	index, red, green, blue.
この関数は、直前に実行された GetTableEntryRGB か IndexToRGB の結果の index を返します。

戻り値 index as Integer

Dim index as Integer index = NSL.GetRGBIndex()

GetRGBRed

red = NSBSystemLib.GetRGBRed()
RGB値は「RGBColorType」という構造で、以下のフィールドを含んでいます。
	index, red, green, blue.
この関数は、直前に実行された GetTableEntryRGB か IndexToRGB の結果の red を返します。

戻り値 red as Integer

(GetTableEntryRGB か IndexToRGB を参照)

GetRGBGreen

green = NSBSystemLib.GetRGBGreen()
RGB値は「RGBColorType」という構造で、以下のフィールドを含んでいます。
	index, red, green, blue.
この関数は、直前に実行された GetTableEntryRGB か IndexToRGB の結果の green を返します。

戻り値 green as Integer

(GetTableEntryRGB か IndexToRGB を参照)

GetRGBBlue

blue = NSBSystemLib.GetRGBBlue()
RGB値は「RGBColorType」という構造で、以下のフィールドを含んでいます。
	index, red, green, blue.
この関数は、直前に実行された GetTableEntryRGB か IndexToRGB の結果の blue を返します。

戻り値 blue as Integer

(GetTableEntryRGB か IndexToRGB を参照)

SetTableEntryIndex

NSBSystemLib.SetTableEntryIndex which, index
PalmOSの IndexToRGB をコールした後、UIColorSetTableEntry をコールします。 それによって、UIカラーリストの値が変更されます。

引数 which as Integer (GetTableEntryIndexのwhichと同じ) index as Integer

Dim which as Integer Dim index as Integer NSL.SetTableEntryIndex which, index

幾つかの変更点は、Redrawコマンドなどで再描画されるまで反映されません。 フォームの背景色(UIFormFill:22)なども、NextScreenコマンドでフォームが変更されるまで反映されません。 通常、NextScreenがコールされる前の、Startupコード内に記述した方が良いでしょう。

この関数は、PalmOS 3.5以上でなければ動作しません。

SetTableEntryRGB

NSBSystemLib.SetTableEntryRGB which, red, green, blue
PalmOSの UIColorSetTableEntry をコールし、 UIカラーを変更します。

引数 which as Integer (GetTableEntryIndexのwhichと同じ) red as Integer green as Integer blue as Integer Red, Green, Blue は 0〜255の間の数値

Dim which as Integer Dim red as Integer Dim green as Integer Dim blue as Integer NSL.SetTableEntryRGB which, red, green, blue

幾つかの変更点は、Redrawコマンドなどで再描画されるまで反映されません。 フォームの背景色(UIFormFill:22)なども、NextScreenコマンドでフォームが変更されるまで反映されません。 通常、NextScreenがコールされる前の、Startupコード内に記述した方が良いでしょう。.

この関数は、PalmOS 3.5以上でなければ動作しません。

BrightnessAdjust

NSBSystemLib.BrightnessAdjust()
PalmOSの UIBrightnessAdjust をコールし「輝度調節」のダイアログを表示します。

NSL.BrightnessAdjust()

この関数は、PalmOS 3.5以上でなければ動作しません。

ContrastAdjust

NSBSystemLib.ContrastAdjust()
PalmOSの UIContrastAdjust をコールし「コントラストの調整」ダイアログを表示します。

NSL.ContrastAdjust()

PalmOSのドキュメントでは、PalmVシリーズでのみ動作するとの記述があります。
この関数は、PalmOS 3.5以上でなければ動作しません。

PickColorIndex

changed = NSBSystemLib.PickColorIndex(index, title)
PalmOSの UIPickColor をコールし「カラーパレット」のダイアログを表示します。 ユーザーは、カラーインデックスのダイアログから色を選択することが出来ます。 選択したカラーindexおよび、RGB値を得る場合、GetRGBIndex, GetRGBRed, GetRGBGreen もしくは、GetRGBBlueを コールする必要があります。

引数 index as Integer index初期値 title as String ダイアログのタイトル

戻り値 changed as Integer -1 = PalmOSのバージョンが3.5未満 0 = キャンセルか、初期値が選択された 1 = 初期値とは異なる色が選択された

Dim changed as Integer Dim index as Integer Dim title as String changed = NSL.PickColorIndex(index, title)

この関数は、PalmOS 3.5以上でなければ動作しません。

PickColorRGB

changed = NSBSystemLib.PickColorRGB(red, green, blue, title)
PalmOSの UIPickColorRGB をコールし「カラーパレット」のダイアログを表示します。 ユーザーは、RGBダイアログから色を選択することが出来ます。 選択したカラーindexおよび、RGB値を得る場合、GetRGBIndex, GetRGBRed, GetRGBGreen もしくは、GetRGBBlueを コールする必要があります。

引数 red as Integer green as Integer blue as Integer R,G,B(0-255)の初期値 title as String ダイアログのタイトル

戻り値 changed as Integer -1 = PalmOSのバージョンが3.5未満 0 = キャンセルか、初期値が選択された 1 = 初期値とは異なる色が選択された

Dim changed as Integer Dim red as Integer Dim green as Integer Dim blue as Integer Dim title as String changed = NSL.PickColorRGB(red, green, blue, title)

この関数は、PalmOS 3.5以上でなければ動作しません。

IndexToRGB

NSBSystemLib.IndexToRGB index
PalmOSのWinIndexToRGBをコールし、与えられたカラーインデックスに 最も近い有効なRGB値を返します。 RGB値は「RGBColorType」という構造で、以下のフィールドを含んでいます。
	index, red, green, blue.
実際のカラーインデックスやRGB値を得るには、この関数を実行後、 GetRGBIndex, GetRGBRed, GetRGBGreen、もしくは、GetRGBBlue を実行する必要があります。 詳しくは、例を参照してください。

引数 index as Integer

Dim index as Integer NSL.IndexToRGB index

この関数は、PalmOS 3.5以上でなければ動作しません。

RGBToIndex

index = NSBSystemLib.RGBToIndex(red, green, blue)
PalmOSのWinRGBToIndexをコールし、与えられたRGB値に近いカラーインデックスを返します。

引数 red as Integer green as Integer blue as Integer Red, Green, Blue は 0〜255の間の数値

戻り値 index as Integer -1 = PalmOSのバージョンが3.5未満

Dim index as Integer Dim red as Integer Dim green as Integer Dim blue as Integer index = NSL.RGBToIndex(red, green, blue)

この関数は、PalmOS 3.5以上でなければ動作しません。

SetForeColor

oldIndex = NSBSystemLib.SetForeColor(newIndex)
PalmOSの WinSetForeColor をコールします。 前景色が、指定されたカラーインデックスの色にセットされ、以後の描画操作に反映されます。

引数 newIndex as Integer

戻り値 oldIndex as Integer 直前の前景色のカラーインデックス -1 = PalmOSのバージョンが3.5未満

Dim oldIndex as Integer Dim newIndex as Integer oldIndex = NSL.SetForeColor(newIndex)

フォームの表示が行われる時に、色の情報がリセットされデフォルトに設定が戻る場合があるようです。 これを回避するために、この関数はFormのAfter()セクションで実行するのが最適です。

この関数は、PalmOS 3.5以上でなければ動作しません。

SetBackColor

oldIndex = NSBSystemLib.SetBackColor(newIndex)
PalmOSの WinSetBackColor をコールします。 背景色が、指定されたカラーインデックスの色にセットされ、以後の描画操作に反映されます。

引数 newIndex as Integer

戻り値 oldIndex as Integer 直前の背景色のカラーインデックス -1 = PalmOSのバージョンが3.5未満

Dim oldIndex as Integer Dim newIndex as Integer oldIndex = NSL.SetBackColor(newIndex)

フォームの表示が行われる時に、色の情報がリセットされデフォルトに設定が戻る場合があるようです。 これを回避するために、この関数はFormのAfter()セクションで実行するのが最適です。

この関数は、PalmOS 3.5以上でなければ動作しません。

SetTextColor

oldIndex = NSBSystemLib.SetTextColor(newIndex)
PalmOSの WinSetTextColor をコールします。 テキスト色が、指定されたカラーインデックスの色にセットされ、以後の描画操作に反映されます。

引数 newIndex as Integer

戻り値 oldIndex as Integer 直前のテキスト色のカラーインデックス -1 = PalmOSのバージョンが3.5未満

Dim oldIndex as Integer Dim newIndex as Integer oldIndex = NSL.SetTextColor(newIndex)

フォームの表示が行われる時に、色の情報がリセットされデフォルトに設定が戻る場合があるようです。 これを回避するために、この関数はFormのAfter()セクションで実行するのが最適です。

この関数は、PalmOS 3.5以上でなければ動作しません。

DrawLine

NSBSystemLib.DrawLine x1, y1, x2, y2
PalmOSの WinDrawLine によって直線(x1,y1)-(x2,y2)を描画します。 前景色で指定されたカラーインデックスの色で描画されます。

引数 x1 as Integer y1 as Integer x2 as Integer y2 as Integer

Dim x1 as Integer Dim y1 as Integer Dim x2 as Integer Dim y2 as Integer NSL.DrawLine x1, y1, x2, y2

この関数は、とりあえず揃えるために用意しました。実行結果は、組み込みコマンドの DrawLine と同じになります。

DrawGrayLine

NSBSystemLib.DrawGrayLine x1, y1, x2, y2
PalmOSの WinDrawGrayLine によって「グレイ」な直線(x1,y1)-(x2,y2)を描画します。 実際は、灰色で描画されるわけではなく、前景色と背景色を交互に繰り返して描画します。

引数 x1 as Integer y1 as Integer x2 as Integer y2 as Integer

Dim x1 as Integer Dim y1 as Integer Dim x2 as Integer Dim y2 as Integer NSL.DrawGrayLine x1, y1, x2, y2

EraseLine

NSBSystemLib.EraseLine x1, y1, x2, y2
PalmOSの WinEraseLine によって直線(x1,y1)-(x2,y2)を消去します。 実際は、背景色で直線を描画することで「消去」としています。

引数 x1 as Integer y1 as Integer x2 as Integer y2 as Integer

Dim x1 as Integer Dim y1 as Integer Dim x2 as Integer Dim y2 as Integer NSL.EraseLine x1, y1, x2, y2

InvertLine

NSBSystemLib.InvertLine x1, y1, x2, y2
PalmOSの WinInvertLine によって直線(x1,y1)-(x2,y2)を反転描画します。

引数 x1 as Integer y1 as Integer x2 as Integer y2 as Integer

Dim x1 as Integer Dim y1 as Integer Dim x2 as Integer Dim y2 as Integer NSL.InvertLine x1, y1, x2, y2

DrawPixel

NSBSystemLib.DrawPixel x, y
PalmOSの WinDrawPixel によって点(x,y)を前景色で描画します。

引数 x as Integer y as Integer

Dim x as Integer Dim y as Integer NSL.DrawPixel x, y

ErasePixel

NSBSystemLib.ErasePixel x, y
PalmOSの WinErasePixel によって点(x,y)を消去します。 実際は、背景色で描画することで消去としています。

引数 x as Integer y as Integer

Dim x as Integer Dim y as Integer NSL.ErasePixel x, y

InvertPixel

NSBSystemLib.InvertPixel x, y
PalmOSの WinInvertPixel によって点(x,y)を反転します。

引数 x as Integer y as Integer

Dim x as Integer Dim y as Integer NSL.InvertPixel x, y

GetPixel

index = NSBSystemLib.GetPixel(x, y)
PalmOSの WinGetPixel によって点(x,y)のカラーインデックスを返します。

引数 x as Integer y as Integer

戻り値 index as Integer

Dim index as Integer Dim x as Integer Dim y as Integer index = NSL.GetPixel(x, y)

ScreenLock

success = NSBSystemLib.ScreenLock(mode)
PalmOSのWinScreenLockをコールします。
ディスプレイの描画先を一時的に別エリア切替え、表面上、画面の描画更新が停止されたように見せます。 これは、多くの回数が繰り返され画面がちらつく場合に、これを防止することが出来ます。
ScreenUnlock()によって元に戻されますが、これはScreenLock()と同じ回数だけコールする必要があります。

引数 mode as Integer winLockCopy = 0 - 古いスクリーンを新しい描画先にコピーします winLockErase = 1 - スクリーンを白紙にする winLockDontCare = 2 - 何もしない

戻り値 success as Integer -1 = PalmOSのバージョンが3.5未満 1 = 成功 0 = 失敗

Dim success as Integer Dim mode as Integer success = NSL.ScreenLock(mode)

この関数は、PalmOS 3.5以上でなければ動作しません。

ScreenUnlock

NSBSystemLib.ScreenUnlock()
PalmOSの WinScreenUnlock をコールします。
ロックされた画面の更新を反映するために、ScreenUnlock()をコールしてください。
ScreenLock()でロックされた回数だけ、ScreenUnlock()で解除しなければなりません。

NSL.ScreenUnlock()

この関数は、PalmOS 3.5以上でなければ動作しません。

WinSaveBits

NSBSystemLib.WinSaveBits index, x, y, width, height
位置(x,y)から横width、縦heightで指定された短形を index番号で指定されたエリアにコピーします。
コピーしたエリアは WinRestoreBits で呼び出すことが出来ます。

引数 index as Integer x as Integer y as Integer width as Integer height as Integer

Dim index as Integer Dim x as Integer Dim y as Integer Dim width as Integer Dim height as Integer NSL.WinSaveBits index, x, y, width, height

WinRestoreBits

WinSaveBitsでコピーされたエリアを呼び出します。
NSBSystemLib.WinRestoreBits index, x, y

引数 index as Integer WinSaveBitsでコピーしたインデックス番号 x as Integer y as Integer

Dim index as Integer Dim x as Integer Dim y as Integer NSL.WinRestoreBits index, x, y


Sleep and Wake Event Functions

以下の関数は、デバイスの電源のオン/オフに連動する機能を提供します。 これらは、ユーザーが電源ボタンを押したり、オートパワーオフ機能が働いた場合に適用されます。
主な用途としては、作成したプログラムを長時間使用しなかった場合、終了させたり、再度電源を入れた時にパスワードを求めるような場合に適しています。

SetSleepEvent

NSBSystemLib.SetSleepEvent eventNbr
そのプログラムを実行中、デバイスの電源がOFFになったときに発生させるイベントをセットします。
これは、オートパワーオフや電源ボタンを押して電源を切る場合のどちらも該当します。
通常、カスタムイベントは24576〜32767番ですが、0以外のイベントであれば何番を使っても構いません。

特に、便利なのはappStopEvent(22番)でしょう。
これは、Termination Codeをコールし、プログラムを終了させますが、何らかの理由でプログラムを強制的に終わらせておきたい時に有用です。
例えば、MsgBoxやAlertなどでダイアログが表示されている状態で電源が切れた場合の処理です。

引数 eventNbr as Integer 0 の場合、どんなイベントも保存されません。

Dim eventNbr as Integer eventNbr = 30000 NSL.SetSleepEvent eventNbr

See the GetSleepEvent(), SetWakeEvent(), and GetWakeEvent() functions.

SetWakeEvent

NSBSystemLib.SetWakeEvent eventNbr
そのプログラムが実行中で、かつライブラリ使用中、デバイスの電源がオンになったときに発生させるイベントをセットします。

引数 eventNbr as Integer 0 の場合、どんなイベントも保存されません。

Dim eventNbr as Integer eventNbr = 30001 NSL.SetWakeEvent eventNbr

GetWakeEvent(), SetSleepEvent(), 及び GetSleepEvent() を参照してください。

GetSleepEvent

eventNbr = NSBSystemLib.GetSleepEvent()
電源OFF(オートパワーオフか電源ボタン)によって発生させるイベント番号を返します。
0 の場合は、いかなるイベントも設定されていません。

戻り値 eventNbr as Integer

Dim eventNbr as Integer eventNbr = NSL.GetSleepEvent()

SetSleepEvent(), SetWakeEvent(), 及び GetWakeEvent() を参照してください。

GetWakeEvent

eventNbr = NSBSystemLib.GetWakeEvent()
電源ON(そのプログラムが実行中で、かつライブラリ使用中)した時に発生させるイベント番号を返します。
0 の場合は、いかなるイベントも設定されていません。

戻り値 eventNbr as Integer

Dim eventNbr as Integer eventNbr = NSL.GetWakeEvent()

GetWakeEvent(), SetSleepEvent(), 及び GetSleepEvent() を参照。

GetSleepEventTime

eventTime = NSBSystemLib.GetSleepEventTime()
電源OFFイベントに設定されている時間を返します。
SetSleepEvent()で指定した値が返されますが、0 の場合はイベントが設定されていないことを表します。

戻り値 eventTime as Integer システムフォーマットの時刻を返します。 これは、1904年1月1日からの経過秒を表します。

Dim eventTime as Integer eventTime = NSL.GetSleepEventTime()

SetSleepEvent(), SetWakeEvent(), GetWakeEvent(), GetWakeEventTime(), StringDateTime(), StringDate(), 及び StringTime() を参照

GetWakeEventTime

eventTime = NSBSystemLib.GetWakeEventTime()
電源ONイベントに設定されている時間を返します。
SetWakeEvent()で指定した値が返されますが、0 の場合はイベントが設定されていないことを表します。

戻り値 eventTime as Integer システムフォーマットの時刻を返します。 これは、1904年1月1日からの経過秒を表します。

Dim eventTime as Integer eventTime = NSL.GetWakeEventTime()

SetSleepEvent(), SetWakeEvent(), GetWakeEvent(), GetWakeEventTime(), StringDateTime(), StringDate(), 及び StringTime() を参照

文字列の暗号化及び復号化関数

以下の関数は、文字列の暗号化とその復号化の機能を提供します。 ただし、これらの関数は、PalmOS EncDES()機能を使っており、これは全てのデバイスで用意されているとは限りません。 また、取り扱う文字列は248文字を超えることはできませんので、これらの機能を使う前に十分にチェックしてください。

Windows用のコンポーネントとして EncryptDESString() と DecryptDESString() があります。 このコンポーネントはWindosのDLLファイルとして用意されて、Visual Basic/VBAや、Visual C/C++から呼び出して使うことができます。 目的は、コンジットや他のPalm用データベースユーティリティで、これらの機能を使いNSBSystemLibと同じアルゴリズムで暗号/復号化の機能を使えるためです。

これを使うために、EncDec.dll というファイルをシステムかカレントなどのディレクトリに置いて下さい。 VB/VBAで使う場合は、EncDec.basモジュールを使ってください。 また、VC/VC++で使う場合は、EncDec.hヘッダをインクルードして、EncDec.libとリンクしてください。(EncDec.dllは必要です。)

EncDec.Dllは、NSBSystemLibと同等の機能を持っていますが、大きな違いは、関数の引数として暗号化キーをもち、文字列長さが戻り値として返される点です。

VB/VBA サンプル:
Dim KeyStr As String
Dim DecryptedStr As String
Dim EncryptedStr As String

Dim StrLen As Integer



KeyStr = "secret" DecryptedStr = "The quick brown fox jumps over the lazy dog!" StrLen = EncryptData(KeyStr, DecryptedStr, EncryptedStr) DecryptedStr = "" StrLen = DecryptData(KeyStr, EncryptedStr, DecryptedStr)
C++ サンプル:
char keyStr[25];

char decryptedStr[251];
char encryptedStr[251];

int  len;



strcpy(keyStr, "secret"); strcpy(decryptedStr, "The quick brown fox jumps over the lazy dog!"); len = encryptData(keyStr, decryptedStr, encryptedStr); strcpy(decryptedStr, ""); len = decryptData(keyStr, encryptedStr, decryptedStr);

EncryptDESString

encryptedStr = NSBSystemLib.EncryptDESString(decryptedStr)
指定した文字列(平文)を暗号化した値を返します。 指定する文字列は248文字以上にしてはいけません。 返される暗号化文字列は、元の平文よりも最長で9文字程度長くなります。

注意:
この関数が呼ばれる前に、SetDESKey()が1回はコールされている必要があります。

引数 decryptedStr as String

戻り値 encryptedStr as String

Dim encryptedStr as String Dim decryptedStr as String encryptedStr = NSL.EncryptDESString(decryptedStr)

DecryptDESString

decryptedStr = NSBSystemLib.DecryptDESString(encryptedStr)
復号化した平文を返します。 指定する暗号文字列は、250文字未満の長さになります。

注意:
この関数が呼ばれる前に、SetDESKey()が1回はコールされている必要があります。

引数 encryptedStr as String

戻り値 decryptedStr as String

Dim decryptedStr as String Dim encryptedStr as String decryptedStr = NSL.DecryptDESString(encryptedStr)

SetDESKey

NSBSystemLib.SetDESKey keyStr
EncryptDESString() や DecryptDESString()を使う時の暗号/復号キーを確立させます。 このキーは、これらの関数を使う前にセットしなければなりません。一度セットしたら、プログラム終了時まで値は保持されます。
もし、キーの長さが8文字以下の場合、標準のDES暗号化が使われ、9〜24文字の場合、トリプルDES暗号化が適用されます。

引数 keyStr as String

Dim keyStr as String NSL.SetDESKey keyStr