MemoURL であなたのPalmwareがWEBとつながります。
|
現在の公開内容はVersion 1.5のものです。 |
MemoURL 最新版はこちらでダウンロード
MemoURLについてはこちら
MemoURLの一般的な利用方法はメモしたURLを開く、Google等の検索サイトでワード検索する、の2つです。が、様々なURLを登録することで簡単にWEBサイトとの連携が可能になります
例えば、以下の手順でPalmOS上のゲームソフトに記録しているハイスコアを手軽にWEBサイトに登録する事が可能になります。
WEBサイトにハイスコアを登録するCGIを設置。 PalmwareでMemoURLのブックマークデータベースにハイスコアを登録するURLを追加。
(URLの例 http://amsoft.co.jp/game.cgi?score=20430&name=amsoft )PalmユーザがHotSyncを実行。 MemoURLがインストールされていれば上記のURLが実行されハイスコアが登録される。
HotSyncによるURLの実行はMemoURLコンジットが行います。
既存Palmwareへは「データベースにハイスコアを登録」する機能を追加する必要があります。
上記の例のほかに、掲示板への書き込み、メール等の文章内のURLを開く、アドレス帳に登録されているURLを開く、といった機能も追加できます。
最も手軽な利用方法はPalmware作家サイトの掲示板への書き込みでしょう。
他にもいろいろと使い方があるかもしれません。
○基本仕様
CreaterID asUR
DB名 asDB_URL
DBType Data
○レコードデータ仕様
1レコードで1ブックマークを表します。
各レコードは可変長です。
物理的にはⅠレコードの最大サイズは4096kbなので、URL + PageTitle < 4092 の制限があります。
Field type size(byte) Meaning Key Short 2 任意の数値(以前使用していましたが現在は使用していないため、(Short)0 を入れておいてください。 IsOpen Short 2 HotSync時のオープンフラグ。0:何もしない, 1:1回オープンすると0にする, 2:毎回オープン URL Char URLサイズ + 1(NULL) http で始まるURL。最終ByteはNULL。
例)http://yahoo.co.jp + NULLPageTitle Char PageTitleサイズ + 1(NULL) ページ名。
例)ヤフージャパン + NULL
1レコードサイズ= 2 + 2 + (URL + 1) + (PageTitle + 1)
○注意点
PageTitleは空文字でも可能。 URLは空文字不可。
○サンプル
MemoURLデータベースへの登録サンプルを紹介します。
コメントが少なくて申し訳ないです。
質問があればこちらへどうぞ
(環境:Codewarrior7J)
// hファイル #define DBType 'Data' #define MEMOURL_DBNAME "asDB_URL" // ブックマークレコード - データベースの1レコードデータ typedef struct { short key; short openType; char* url; char* title; } BookmarkRec; // cファイル // ブックマーク新規登録サンプル Boolean NewUrlFormOnOK() { BookmarkRec bookmark = GetEmptyBookmark(); CharPtr pUrl, pTitle; FormPtr frmP; UInt recordSize, index; VoidHand recHdl; VoidPtr recPtr; short openType; VoidPtr pEveryCheck, pOnceCheck; frmP = FrmGetActiveForm(); // PageTitle 取得 pTitle = FldGetTextPtr( ResourcePtrGet(frmP, NewUrlPageTitleField)); if( !pTitle || pTitle[0] == NULL ){ ResourceAlert1(CommonAlert, MessageStringList, MSG_INPUT_PAGE); return false; } // URL 取得 pUrl = FldGetTextPtr( ResourcePtrGet(frmP, NewUrlInputUrlField)); if( !pUrl || pUrl[0] == NULL ){ ResourceAlert1(CommonAlert, MessageStringList, MSG_INPUT_URL); return false; } // Set openType pOnceCheck = ResourcePtrGet(FrmGetActiveForm(), NewUrlOpenOnceCheckbox); pEveryCheck = ResourcePtrGet(FrmGetActiveForm(), NewUrlOpenEverytimeCheckbox); if( CtlGetValue(pOnceCheck) == CHECK_ON ) openType = OPENTYPE_ONCE; else if( CtlGetValue(pEveryCheck) == CHECK_ON ) openType = OPENTYPE_EVERY; else openType = OPENTYPE_NONE; // Bookmark構造体を作成 SetBookmark(&bookmark, 1, openType, pUrl, pTitle); recordSize = GetBookmarkRecSize(&bookmark); if( geditMode == EDITMODE_NEW ){ index = DmNumRecords(gdbUrl); recHdl = DmNewRecord(gdbUrl, &index, recordSize);// レコードを確保 } else if( geditMode == EDITMODE_EDIT ){ index = grecSelectIndex; recHdl = DmGetRecord(gdbUrl, index);// 既存レコードを取得 // レコードサイズを変更 DmResizeRecord(gdbUrl, index, recordSize); } if( recHdl ){ // レコードを新規追加 recPtr = MemHandleLock(recHdl); DmSet( recPtr, 0, recordSize, 0); WriteBookmark(recPtr, &bookmark); MemHandleUnlock(recHdl); DmReleaseRecord(gdbUrl, index, true); } else{ // レコード作成失敗 ResourceAlert1(CommonAlert, MessageStringList, MSG_UPDATE_MISS); InitBookmark(&bookmark); return false; } InitBookmark(&bookmark); return true; } /** レコードハンドルからデータベースを取得 この関数を利用して取得したBookmarkRecは InitBookmark を行ってはいけない */ void BookmarkMemHandleLock(BookmarkRec *pBookmark, Handle recHdl) { BookmarkRec* pBookmarkHandle = (BookmarkRec*)MemHandleLock( recHdl ); InitBookmark(pBookmark); pBookmark->key = pBookmarkHandle->key; pBookmark->openType = pBookmarkHandle->openType; // url取得 pBookmark->url = (char*)(pBookmarkHandle) + sizeof(pBookmarkHandle->key) + sizeof(pBookmarkHandle->openType); // title取得 pBookmark->title = pBookmark->url + StrLen(pBookmark->url) + 1; } /** BookmarkRec 初期化処理 */ Boolean InitBookmark(BookmarkRec *pBookmarkRec){ pBookmarkRec->key = 0; pBookmarkRec->openType = 0; if (pBookmarkRec->url != NULL) { MemPtrFree(pBookmarkRec->url); pBookmarkRec->url = NULL; } if (pBookmarkRec->title != NULL) { MemPtrFree(pBookmarkRec->title); pBookmarkRec->title = NULL; } return true; } /** Bookmark パラメータ設定関数 */ Boolean SetBookmark(BookmarkRec *pBookmarkRec, short key, short openType, char *pUrl, char *pTitle){ Word len; InitBookmark(pBookmarkRec); pBookmarkRec->key = key; pBookmarkRec->openType = openType; len = StrLen(pUrl); /* もしURL長を制限する場合 if (len < URL_LEN) */ pBookmarkRec->url = MemPtrNew(len+1); MemSet(pBookmarkRec->url, NULL, sizeof(pBookmarkRec->url)); StrCopy(pBookmarkRec->url, pUrl); len = StrLen(pTitle); pBookmarkRec->title = MemPtrNew(len+1); MemSet(pBookmarkRec->title, NULL, sizeof(pBookmarkRec->title)); StrCopy(pBookmarkRec->title, pTitle); return true; } /** Bookmark パラメータを安全に取得 通常はこの関数でBookmarkを取得する */ BookmarkRec GetEmptyBookmark() { BookmarkRec bookmark; bookmark.key = 0; bookmark.openType = 0; bookmark.url = NULL; bookmark.title = NULL; return bookmark; } /** BookmarkRec のレコード格納サイズを取得 */ UInt GetBookmarkRecSize(BookmarkRec *pBookmark) { UInt ret; ret = sizeof(pBookmark->key) + sizeof(pBookmark->openType) + StrLen(pBookmark->url) + 1 + StrLen(pBookmark->title) + 1; return ret; } /** レコードにブックマークデータを登録 */ void WriteBookmark(VoidPtr recPtr, BookmarkRec* pBookmark) { UInt offset = 0; DmWrite(recPtr, offset, &pBookmark->key, sizeof(pBookmark->key)); offset += sizeof(pBookmark->key); DmWrite(recPtr, offset,&pBookmark->openType, sizeof(pBookmark->openType)); offset += sizeof(pBookmark->openType); DmWrite(recPtr, offset, pBookmark->url, StrLen(pBookmark->url) + 1); offset += StrLen(pBookmark->url) + 1; DmWrite(recPtr, offset, pBookmark->title, StrLen(pBookmark->title) + 1); }
MemoURLはCodewarrior7Jで開発しましたが、NSBasic等他の環境でもMemoURL Bookmarkデータへのアクセスは可能です。
<!-- text below generated by server. PLEASE REMOVE -->