Palm Programmer's Laboratory

トップ 差分 一覧 ソース 検索 ヘルプ RSS ログイン

雑談掲示板

PPL雑談掲示板

ここは雑談用の掲示板です。


お名前
件名
本文


表示された文字列

標準PIMのソースコードについて - 紅音 (2007年09月30日 23時16分25秒)

初めまして。久方ぶりにPalmプログラミングをしてみようと思い、PODSに関する情報を探していたらこちらを見つけました。
標準PIM(予定表、アドレス帳、ToDo、メモ)のソースコードを探しております。
PalmSource社の頃はSDKか何かに同梱されていたと思ったのですが、現在ACCESS社にて配布されているファイル群の中には見つけることが出来ませんでした。
記憶が曖昧なので私の思い違いかも知れませんが、どなたかご存知ではないでしょうか?
また、記憶違いでなかった場合、そのソースコードを頂くことはできないでしょうか?(ライセンス的に問題がなければですが・・・)

最新のPalm社のCalender、Contacts等のソースコードでも構わないのですが、こちらも私が探せた範囲では公開はされていないように思います。
標準PIMにちょっと手を入れた程度のものを作るのに一からコードを起こすのも大変なので、標準PIMのコードが公開されているのであれば参考にできればと思った次第です。
宜しくお願い致します。

コメント

  • 紅音さん、始めまして。標準 PIM のソースコードですが、PODS には同梱されていませんか? 今職場なのですぐに確認できませんが、帰宅したら確認してみます... - 陰郎 (2007年10月01日 11時08分40秒)
  • 確認しました。PODS を初期設定のままインストールした場合で、C:\Program Files\ACCESS\Garnet OS Development Suite\sdk-5r4\samples 配下にサンプルはありますね。ただ、標準 PIM に関してはメモとToDoしかないようです。 - 陰郎 (2007年10月01日 20時09分08秒)
  • PODS とは別でダウンロード可能な Palm OS SDK には Address と Datebook も含まれていました。メンバー登録が必要ですが、http://www.access-company.com/developers/downloads/index.html からになります。PalmOS_5_SDK_68K_R3_no-install.zip の場合ですと、PalmOS_5_SDK_68K_R3_no-install/CodeWarrior Support/(CodeWarrior Examples)/Palm OS 5 SDK (68K) R3 Examples/ 配下にサンプルコードがありますね。 - 陰郎 (2007年10月01日 20時15分21秒)
  • お礼が遅くなり申し訳ありません。無事に見つけることができました。まさかCordWarriorディレクトリ内にあるとは考えもせず、完全に見落としてました。ありがとうございました。 - 紅音 (2007年10月05日 23時09分32秒)
お名前: コメント:


表示された文字列

ハイレゾ表示時でのテーブルにおける、行の高さについて - 風間 (2007年07月21日 12時26分55秒)

すいません、表題の件について質問させてください。
先日よりCodeWarrior環境でPalmの開発の勉強をはじめました。
只今サンプル・コードと睨めっこをしながら悪銭苦闘をしています。
それで表題の件でつまづいてしまいました...。

フォントをhrSmallFontで設定、
TblSetRowHeightで高さを指定し、
各行をHRWinDraw〜で描画させると、
一応画面上はハイレゾフォントで表示されます。
ところが、実際に選択行をハイライト表示させると、
カーソルの高さが...多分通常のフォントの高さで表示されてしまいます。
つまり、各行はhrSmallFontで表示されているのですが、
ハイライトとなる行の高さがhrSmallFontより高くなってしまうので、
他の行にかぶさってしまいます。
これをきちんと表示されるには何か別の設定が必要なのでしょうか?

解決のヒントになるようなものがありましたら、
教えていただけませんでしょうか、
よろしお願いします。
 

コメント

  • 風間さん、始めまして。まず、HR 系を使っていますが、CLIE 前提と言うことでいいのでしょうか? Sony の SDK には詳しくありませんが、おそらくはテーブル自体が選択行を再描画するところをデバイス任せにしてしまっているのでは、と思いました。TblSetCustomDrawProcedure 関数は使っていますか? こいつは TableDrawItemFuncType で定義される関数ポインタを登録するもので、customTableItem に指定されたカラムの再描画が必要なときにこの関数ポインタをコールバックしてきます。Table.h をざっと眺めた限り、コールバックを要求する API は2〜3個しかないため、他に方法はなさそうです。つまり、全体で hrSmallFont を使いたいのであれば、全カラムを customTableItem 扱いにしなければならない、ということになるかもしれません。長々と書きましたが、それほど自信を持って書いているわけではないので、ハズしていたらごめんなさい。 - 陰郎 (2007年07月21日 15時05分53秒)
  • 陰郎さんレス、ありがとうございます。 おっしゃる通りにCLIE 前提で考えてます。 ご指摘の通りにTblSetCustomDrawProcedure 関数を使用してます。 始めにTblSetItemStyle、TblSetItemInt等でテーブルを作成し、TblSetCustomDrawProcedureでテーブルを描画しています。 カラムは2個しかないのですが、一応どちらもcustomTableItemの指定にしてあります。 すいません、まだ全然詳しいことを理解できていないのですが、「全カラムを customTableItem 扱いにしなければならない」というのは、それとは別のことでしょうか? 選択行を再描画する時に何か指定が必要ってことなんでしょうか? う〜ん、難しいなぁ。。。 - 風間 (2007年07月22日 02時24分12秒)
  • あれ? なん re-にならないんだ?記入の仕方間違えましたか? - 風間 (2007年07月22日 02時27分42秒)
  • あー、既に TblSetCustomDrawProcedure 関数は使っていますか。2カラムあって、両方とも customTableItem 指定なんですね。「各行をHRWinDraw〜で描画」しているとのことですが、これは TblSetCustomDrawProcedure で登録したコールバック関数の中でもやっているんですよね? 何が言いたいかというと、選択やスクロールといったタイミングで発生する再描画でもそのコールバック関数が呼ばれるはずだったと記憶しているからです。テーブルコントロールはPalmのUIで一番ややこしいので、慣れるまでは大変ですよね(かくいう陰郎もまだまだ慣れてませんが)。可能ならば関連するコードを抜粋でもいいので載せてもらえると話が早いかもしれません。 - 陰郎 (2007年07月22日 03時09分41秒)
  • テーブルが一番ややこしいのですか? ありゃりゃ。 すいません初めてPC系のコードに触るので、右も左も分からないんですよ。 で、私が使っているサンプルというのはこちらのサイトの「小さなフォントの描画方法」で紹介されている某リーダーのソースです。 HRWinDrawCharsともう一つ別の描画方法を試してみましたが、結果は同じでした。 もしご教授いだだけるのなら、どの辺りのソースを抜粋すればよろしいですか?  - 風間 (2007年07月22日 07時31分29秒)
  • そうですね。陰郎としてはテーブルが一番ややこしいと思ってます。ガジェットもややこしいですが。で、もしコードを提示していただけるなら、テーブルの初期化部分とコールバック関数で実際に文字を描画しているあたりでしょうか。陰郎はSDKスタイルは苦手ですし、「教授」できるほどテーブルに習熟してもいません。なので、一緒に考えましょうというスタンスでやらせてくださいね。 - 陰郎 (2007年07月22日 11時34分42秒)
  • すいません、ありがとうございます。私の方では万策尽きた感じなので、試せることがあればなんでもやってみたいのでよろしくお願いします。ではまず全体の流れです。 - 風間 (2007年07月22日 13時35分45秒)
TablePtr tableP;
WordrowsInTable;
RectangleType rect;

tableP = FrmGetObjectPtr (frm, FrmGetObjectIndex (frm, mainDocumentTable));

FntSetFont( MainFormFont);
HRFntSetFont( hrRefNum, MainFormFont);

FrmGetObjectBounds(  frm, FrmGetObjectIndex (frm, mainDocumentTable) , &rect);

TableRows = rect.extent.y / FntCharHeight();

rowsInTable = TableRows;

MainViewLoadTable (frm, TopVisibleRecord);//ここでテーブルを初期化してます

// Set the callback routine that will draw the records.
TblSetCustomDrawProcedure (tableP, 0, MainViewDrawRecordName);
TblSetCustomDrawProcedure (tableP, 1, MainViewDrawRecordSize);

// Set the column usable so that it draws and accepts user input.
TblSetColumnUsable (tableP, 0, true);
TblSetColumnUsable (tableP, 1, true);

MainViewUpdateScrollers ();

FrmShowObject( frm ,FrmGetObjectIndex( frm, mainDocumentTable));
FrmDrawForm(frm);
prefs.currentView= MainForm;
  • 次にテーブルの初期化です - 風間 (2007年07月22日 13時40分06秒)
static void MainViewLoadTable (FormPtr frm, UInt recordNum)
{
    Word row;
    Word lastRecordNum;
    Word numRows;
    TablePtr tableP;
    
    tableP = FrmGetObjectPtr (frm, FrmGetObjectIndex (frm, mainDocumentTable));
    
    // For each row in the table, store the record number in the 
    // table item that will display the record.  
    numRows = TblGetNumberOfRows (tableP);
    
    //numRows = TableRows;
    
    FntSetFont( MainFormFont );//行の高さを指定するため?
    HRFntSetFont( hrRefNum, MainFormFont);
    
    for (row = 0; row < numRows; row++, recordNum++)
    {
        
        if ((  row < ((prefs.storage_mode==STORAGE_INTERNAL)?TotalDocuments:numMSFiles)) && ( row < TableRows) )
        {
            TblSetItemStyle (tableP, row, 0, customTableItem);
            TblSetItemStyle (tableP, row, 1, customTableItem);
            
            //TblSetItemStyle (tableP, row, 0, textTableItem);
            //TblSetItemStyle (tableP, row, 1, textTableItem);
            
            TblSetItemInt (tableP, row, 0, row);
            TblSetItemInt (tableP, row, 1, row);
            
            TblSetRowUsable (tableP, row, true);
            
            TblSetRowHeight ( tableP, row , hrRefNum*2);
            
            TblSetRowSelectable ( tableP, -1 , true);
            
            lastRecordNum = row;
        
        }
        else
        {
            TblSetRowUsable (tableP, row, false);
        }
        
        TblMarkRowInvalid (tableP, row);
    
    }

}
  • 次は実際にテーブルを描画させます - 風間 (2007年07月22日 13時42分26秒)
static void MainViewDrawRecordName(VoidPtr tableP, Int16 row, Int16 column, RectanglePtr bounds)
{
    UInt docNum = 0;
    
    docNum = TblGetItemInt (tableP, row, column) + TopVisibleRecord;
    
    if ( prefs.storage_mode == STORAGE_INTERNAL)
        MainViewDrawRecordInBounds(doc_infos[ docNum]->name , bounds);
    else
        MainViewDrawRecordInBounds( ( MSFileListP + docNum)->file_name , bounds);
}
  • で、以下を呼び出しています - 風間 (2007年07月22日 13時44分34秒)
static void MainViewDrawRecordInBounds( CharPtr doc, RectanglePtr bounds)
{
    short textLen,width;
    Boolean fits;
    FontID currFont;
    int x,y;
    char ch;
    x = bounds->topLeft.x + 1;
    y = bounds->topLeft.y;
    
    
    //テーブル描画のフォント指定
    FntSetFont ( MainFormFont);
    HRFntSetFont( hrRefNum, MainFormFont);
    
    // Determine the length of text that will fit within the bounds.
    width = bounds->extent.x - (FntCharWidth(ch)+4) - 4;
    textLen = StrLen(doc);
    FntCharsInWidth(doc, &width, &textLen, &fits);
    
    if ( fits){
        HRWinDrawChars(hrRefNum, doc, textLen, x, y*2 );
    } else {//ファイル名が長い時の対応
        width = bounds->extent.x - (FntCharWidth(ch)+4) - 4- FntCharsWidth("...",3);;
        textLen = StrLen(doc);
        
        FntCharsInWidth(doc, &width, &textLen, &fits);
        HRWinDrawChars(hrRefNum, doc, textLen, x, y*2 );
        HRWinDrawChars(hrRefNum,"..." , 3 , x + width , y*2 );//ハイレゾ・フォントで描画
    }
}
  • と、こんな風になってます。一応これでハイレゾ表示は出来ているのですが、選択行をハイライト表示させるとその行だけが高さがおかしくなってしまいます。ハード上ではハイレゾということを認識できてないからなんでしょうか?すいませんが、よろしくおねがいします。 - 風間 (2007年07月22日 13時46分56秒)
  • えぇと、まず勝手ながらコメント欄に載せていただいたコード部分を整形しました(【改行】ってなってた部分ですね)。で、コードの内容ですが...ちょっと待ってくださいね。まとまった時間を見つけてやりますんで。(汗 - 陰郎 (2007年07月22日 16時24分31秒)
  • 念のために確認しようと思って自分のアプリでテーブルを使っている部分をデバッグしてみたのですが、テーブルの描画後に特定の行を選択状態にしても、件のコールバック関数は呼ばれませんでした。風間さんのコードで言えば、MainViewDrawRecordInBounds が呼ばれない、ということです。ということは単純に描画済みの領域を Invert しているだけ? ...すみません、ちょっと調べてみますね。 - 陰郎 (2007年07月22日 16時53分25秒)
  • すみません、やはり SDK を直で使うコトに慣れていないので、認識が甘かったようです。Palm OS API リファレンスに当たってみたところ、TableDrawItemFuncType のコールバック関数は、TblDrawTable または TblRedrawTable 呼び出し時にコールされるということで、単にテーブル上の行の選択状態が変化しただけでは呼ばれないようです。では、なぜ選択した行が通常フォントの高さで描画されるのか...? もうちょっとコードを読ませてください。 - 陰郎 (2007年07月22日 17時09分30秒)
  • と、いまさら気付いたのですが、冒頭の質問文の中で、「選択行をハイライト表示させると、カーソルの高さが」と書かれていますね。カーソル? ということは、ひょっとして in place でセルの内容を編集しようとしています? もしそうだとして、(CLIE のスモールフォントに詳しくないので自信ないのですが、)そもそも small/tiny フォントでの文字入力ってできるんでしたっけ? ココまで書いたことがハズしていないのであれば、問題の切り分けのために「選択状態に入っても編集はしない」みたいなことは試せますか? - 陰郎 (2007年07月22日 17時15分39秒)
  • すいません、説明の仕方が悪いようです。決して編集しようとはしていません。テキスト・リーダーにしようと思ってます。ですからディレクトリ内にあるファイルの一覧をテーブル内に表示し、閲覧したいファイルをジョグ・ダイアルを使って選択したいわけです。このときにジョグをアップ、ダウンさせると各行がハイライト表示になるのですが、このハイライトになる高さがおかしくなってしまうのです。ですから編集モードにはしていないつもりです。それとも編集状態になってしまっているのか。少なくとも画面からは入力はできません。 - 風間 (2007年07月22日 18時15分06秒)
  • いろいろチェックしていただいてありがとうございます。ご指摘の通りにジョグのアップダウンだけでは再描画のルーチンは通らないようです。それともジョグのアップダウンするルーチン内に何か行の高さにかかわる再描画を実行されているのか? - 風間 (2007年07月22日 18時33分39秒)
  • TblSelectItem(GetObjectPtr (mainDocumentTable),choice - TopVisibleRecord,0);というのを見つけました。どうやらこの関数で選択した行をハイライトさせているようです。ちなみに、この行の前に//TblSetRowHeight ( GetObjectPtr (mainDocumentTable), choice - TopVisibleRecord, hrRefNum*2);という一文を入れてみたのですが、効果はないです。TblSelectItemに対して行の高さの指定を何とかする方法を探せればいいのでしょうか。 - 風間 (2007年07月22日 20時59分17秒)
  • えと、ひとまず確認です。上記の TblSelectItem 関数を使用しているのは vchrJogDown イベントなどのハンドリング中ですよね? で、この選択状態の設定と同時に行の高さが変わりますか? また、行の高さが変わった時点で、それまで small ( あるいは tiny?)フォントで表示されていたテキストはどうなります? 標準フォントで再描画されますか? それとも字は小さなままで、行の高さだけが変わりますか? これまでの経緯を見る限り、おそらく後者だろうと予想していますが... - 陰郎 (2007年07月22日 22時17分35秒)
  • おっしゃる通りに字の大きさは変わりません。行の高さも変わりません。ハイライトされる高さが変わります。実際に行の高さを指定しているTblSetRowHeight ( tableP, row , hrRefNum*2);のをTblSetRowHeight ( tableP, row , 6);とわざと低く指定してみると実際の行の高さも、フォントの大きさも変わらず、単純にハイライトされる部分の高さのみ通常フォントサイズの高さでハイライトされてしまいます。6と指定すると2行が同時にハイライトされます。ちなみに15に指定してもハイライトされる高さはやはり通常フォントサイズの高さです。この辺りの設定を変えてもハイライトされる高さは変わりませんね。なんか根本的に間違ってるのか?  - 風間 (2007年07月23日 00時24分24秒)
  • 選択行をハイライトさせるのに、今はTblSetRowSelectableを使ってるんですが、もしかしてHRWinDrawInvertedChars関数を使って自前で処理をさせれば可能かもしれませんね。ちょっとチャレンジしてみます。 - 風間 (2007年07月23日 11時50分35秒)
  • 記憶があいまいな上に憶測で書いてしまうのが申し訳ないのですが、テーブルって行ごとに高さを変えられたような気がします。なので、変な話ですが TblSelectItem 関数を呼び出す直前に対象の行の高さを設定しなおしてやったりしてもダメでしょうか? それでもダメなら、たしかに丸ごと自前でやらざるを得ないかもしれませんね...うーん、あまりお力になれず、申し訳ないです。 - 陰郎 (2007年07月23日 22時18分00秒)
  • HRWinDrawInvertedChars関数でうまく行きました。これだけで1週間位ずっと悩んでいたので気分がホッとしました(^^; TblSelectItem 関数の前で行の高さを指定しても反応してくれませんね。通常の関数ではハイレゾのことは全く認識してくれないみたいです。とりあえずテーブルの描画についての多くは自前でやるように作り直してみます。今回は沢山の時間を私のために割いていただいてアドバイスをいただきまいしてありがとうございます。一人で考えていると迷路に迷いこんでしまって抜け出せなくなっていたのですが、陰郎様にいろいろな角度で考えるチャンスをいただけたので凄く助かりました。ほんとうにありがとうございます。また壁に突き当たったらアドバイスをお願いするかもしれませんが、よろしくお願いします(^^; - 風間 (2007年07月24日 10時01分09秒)
  • 礼には及ばないです(大して役に立ってませんし)。もし良かったら、風間さんが答えられるような質問を見つけたときに力になってあげてください。それにしても Sony SDK の HR 系は厄介そうですね。HR 系ではないのですが、TH55 のワイドディスプレイに手を出そうかな...と考えていたもののちょっと気が引けてしまいました。(笑 - 陰郎 (2007年07月24日 21時35分34秒)
  • 今さらかもしれませんが、私がArisaというアプリで同じような苦労をしましたので、参考に。TblSetItemStyle (tableP, row, 0, customTableItem);と設定されていますが、マニュアルをご覧になればお分かりになられるように、customTableItemでは、11ピクセルの高さに固定されます。tallCustomTableItemを設定すれば、TblSetRowHeightで設定されたサイズに従って描画されるはずです。 - 大野 一樹 (2007年07月25日 00時18分25秒)
  • ちなみに、tallCustomTableItemは、OS4以上だけで使えます。 - 大野 一樹 (2007年07月25日 00時20分35秒)
  • ♪大野様 出来ました〜! tallCustomTableItemを指定したところ設定した高さで描画されました。ありがとうございます。いや、昨夜もう一度APIを読み直していたらcustomTableItemの項に「The height of the item is fixed at 11 pixels」というのを発見したので、こりゃやっぱり自前関数か...と溜息が出てたところです。でも、今朝見たら大野様のアドバイスがあり、早速試したところ上手く行きました。ありがとうございます。♪陰郎様 私で答えられることなんて今は皆無ですが、もっと勉強して何かお役に立てるようになりたいと思います。今回はいろいろをお付き合いしていただきまして本当に感謝してるんですよ。一緒にHR系のどツボにはまりましょう(^^; というわけで、一応今回の私がハマッた行高の解決方法をまとめておきます。【問題】テーブルでhrSmallFontを指定した場合、行高が11ピクセルに固定されているので、不自然な表示になってしう。【解決】これを防ぐために、TblSetItemStyleのtypeにtallCustomTableItemを指定すること。そうするとTblSetRowHeightで指定した行の高さで表示できるようになる。以上、しかしAPIの日本語訳ってどっかにないんですかね? - 風間 (2007年07月25日 10時41分00秒)
  • 私の情報が参考になったようで、私としてもほっとしています。あまりにも色々やり取りされているので、全部見ていないもので。でもAPIの日本語欲しいですよね。 - 大野 一樹 (2007年07月25日 12時33分31秒)
  • 反応が遅くなりました。大野さん、ご指摘ありがとうございます。tallCustomTableItem というのがあるんですね。知りませんでした。ちなみに、山田達司さん訳の 「Palm OS 4 バイブル」には tallCustomTableItem が載っていなかったので気付いたのですが、多分 tallCustomTableItem は Palm OS 4 以上で、かつ 4.0 New Feature Set がないと使えないのだろうと思います。きっとこれ、ほとんど neary equal なんでしょうけどね。 - 陰郎 (2007年07月29日 13時16分46秒)
お名前: コメント:


表示された文字列

PODSでDAを - 陰郎 (2007年06月08日 00時54分10秒)

PODSでDAを作成されている方っていらっしゃいますか?
これまで CodeWarrior で開発をしてきましたが、DA を手始めとして順に PODS ベースに(完全には無理かもしれませんが)移行しようと考えています。
で、最初にやろうとしたのが FortuneDA の PODS 版作成...だったのですが、CodeWarrior でいうところの「68Kコードリソース」の作成の仕方がイマイチわかりません。このあたりの手順に詳しい方がいらっしゃいましたら、ご教示いただけると幸いです。

コメント

Re: - 陰郎 (2007年06月08日 21時54分48秒)
CodeWarrior 向けに作成した FortuneDA からよりも、オリジナルの( makefile が用意されている )FortuneDA を利用したほうがすんなり行きそうなので、そちらで挑戦しています。理屈はなんとなくわかったのですが、どうも歯切れ良く収まりません...試行錯誤中です。
Re: - 陰郎 (2007年06月08日 22時56分03秒)
ひとまず DA のビルドが通るようになりました。できるだけ PODS をインストールした素の状態で通せるように、と思ったのですが、PODS 標準(?)の Palm OS Resource Builder (だっけかな)をうまく使いこなすことができず、make ファイルから PilRC を呼ぶ方式としました。そのほか、このあたりのことは近いうちに情報としてまとめます。また、PODS のエディタでShift-JIS が使えないっぽい(陰郎の設定がマズいだけ?)問題などなどありますので、それも近いうちに。
お名前: コメント:


表示された文字列

クリエータID登録の現在 - くわたん (2007年06月03日 14時45分59秒)

PalmSouceからAccessに移管されてしまったわけですが、
CodeWarrior上で新規にPalmwareを作成する場合、
「クリエータ」の管理はどうすればいいのでしょうか?
以前は事前にPalmsouceに登録申請していたはずですが、
Accessに新規デベロッパ登録しなければならないのでしょうか?
みなさんはどうしてますか?

Re: - 陰郎 (2007年06月03日 15時16分32秒)
PalmSource 時代から変わっているのかそのままなのか、記憶がはっきりしないのでゴメンナサイなのですが、次のURL からログインしてクリエータIDを登録しています。https://www.developerpavilion.com/palmos/ 特に移管前後で変更はなかった気がしますが...記憶違いだったらゴメンナサイ。
Re: - くわたん (2007年06月05日 01時17分00秒)
失礼しました。 ログインパスワード勘違いしているだけでした。 おっしゃるとおり、移管問題ないですね。 おさわがせしました。
Re: - admin (2007年06月18日 18時38分56秒)
コメントスパムが来ますので、コメント欄をコメントアウトしました。コメントを追加したい方は、コメント欄の復活させるか、または直接編集してください。

記事を作っていたら - think_palm (2007年05月13日 15時09分20秒)

記事を作り、最後にスパム対策のコードを入力すると、間違いだったみたいで、はねられちゃいました。
「戻る」をクリックすると記事全文消えちゃいました。

みなさんお気をつけ下さい。

お名前: コメント:


表示された文字列

ARMlet からの API コールバックのコストについて - 陰郎 (2007年05月01日 12時26分29秒)

表題の件について情報をお持ちの方を探しています。
ARMlet から Palm OS API を呼ぶ方法については「【C/C++】 ARMlet での Palm OS API の呼出し方」に書いたとおりですが、この方式で呼び出した場合のコストについて心配しています。実際問題として、ARMlet から API を呼ぶ場合の作法はいささか煩雑ですし、いったん 68K に戻してから API を呼んでいるように見えます。これらが結構コスト高に見えるわけです。となると、ARMlet 中で API 呼び出しが頻発する場合、ARMlet の利点を相殺してしまうような損益分岐点が発生しうるのかな...と。
実際問題としては、たとえコスト高だとしてもそれが ARMlet のメリットを相殺してしまうようであればそもそも ARMlet にする価値のないロジックだった...という話になるかもしれません。そういった点はひとまず置いて、このような経験をされた方がいましたらご意見いただけると幸いです。

 

コメント

お名前: コメント:


表示された文字列

【HELP】DAが認識されない。 - min (2007年03月17日 10時17分05秒)

緊急の質問なんですが、私がCodeWarriorで作ったDAが、DAランチャーに認識されない時があります。開発情報【C/C++】CodeWarrior で DA プロジェクトを作成する方法を、参考に作っているのですが、何処がダメなのでしょう?
アドバイス、なにとぞよろしくお願いいたします

 

コメント

- Kohyan (2007年04月12日 00時32分07秒)
牛に引かれて善光寺参り、猿に引かれて人柱登場(笑)。  minさん作のDAはみんなそういう挙動なんでしょうか?OSのver限定(例えばOS5以降のみなど)がなければ、手持ちのマシンに片っ端から入れてみますが…どのDAで実験しましょ?(^^;
Re: - 陰郎 (2007年04月12日 00時43分20秒)
開発情報を書いた張本人なので、ちょっと気になります。陰郎自身もあの記事に書いた方法でDAを作成していますが、ひとまず認識されなかったことはありません。さて、あの記事で明に言及していないこと...と言えばクリエータIDでしょうか。DAといえどもクリエータIDは一意である必要があるわけですが、クリエータIDが重複したりしていませんか? いかがでしょう?
Re: - min (2007年04月12日 09時31分46秒)
Kohyanさんありがとうございます、(一匹の黄色い猿さんにも感謝)起こる、条件は無いです。どのOSのバージョンでも起こる時と、起きないときがあります。どれで試しても同じですので、起きなければ別のDAという風に試していただけるとありがたいです。
Re: - min (2007年04月12日 09時33分17秒)
陰郎さんありがとうございます。クリエーターIDはユニークなものを使ってるので、重複はないようです。他は、あの記事通りなのに不思議です。
Re: - Kohyan (2007年04月13日 01時08分13秒)
気まぐれに正体を隠すって事でしょうか?(^^;山田さんのSimpleBBSでも猿クンが書いていたように「何か条件がある」のには違いないでしょうけど、それを見つけるには多数の事例を集めるのが先決かと思います。ひとまずminさん作のDAを放り込んでみますね。  ところで、DALに表示されない条件の一つにバージョンアップが関わってる可能性はないでしょうか?古い物を削除したり、入れたことのない機体に最新の物だけを入れる実験になりそうですので...
Re: - min (2007年04月13日 08時54分28秒)
Kohyanさん、DALのDA一覧やクイック起動の一覧では認識してリストに表示されるのに、コマンドストロークからの起動でのリストに表示されない(認識されない)という状態が起こります。この状態で、他のDAを削除すると認識されるようになります。一度認識されると、後は削除して再インストールしようが、バージョンアップしようが認識されるのです。 詳しくはBugTrack-こんなPalmwareが欲しい/12の一番下の3月5日のコメントのやりとりがわかりやすいです。お手数ですがご覧下さい。
Re: - 一匹の黄色い猿 (2007年04月13日 12時17分03秒)
つ[認識しない状態でソフトリセットでもダメ?]
Re: - min (2007年04月13日 18時28分39秒)
一匹の黄色い猿さんありがとうございます。ええ、リセットもダメです。一度認識するまでは、他のDA消す以外、何やってもダメですが、一度認識されると今度は何をしても認識し続けます。
Re: - Kohyan (2007年04月14日 02時36分39秒)
ひとまずOS5を中心にMemoDAとToDoViewDAを導入してみました。括弧内は登録後のDA数です。TJ25(3),NX60(17),NX80v(29),TG50(13),Zire+J-OS(14),TT?5+JaPon(22),m500+CJKOS(6)と試してみましたが、再現できず。全ての機種において、きちんと認識され、動作しました。DALは全機種とも5.0を使用しています。OS4以前なら他の機体もあるので、引き続きやってみます(休眠中なので充電から(笑))               時に、リセットで思いついたんですが、DALをオフしてからオンし直すとか、オフしてからリセットを掛け、オンにすると条件が変わったりしませんかね?認識している状態でやってみても変化は有りませんでしたが...(^^;
Re: - min (2007年04月14日 07時34分33秒)
Kohyanさんありがとうございます。そうですか、再現できませんか?不思議ですね。DALのオン、オフでは変化はありませんが。お手数かけて申し訳ないです。
Re: - Kohyan (2007年04月20日 01時03分09秒)
えー...その後、手持ちの機種殆どにDAL5.0とMemoDAとToDoViewDAを入れて確認しましたが、全部正常に認識してくれます。指摘のあったコメント類を見る限りでは、TXでのみ発症している様にも読み取れるんですが、他機種でDA認識がなされないという事例はあったんでしょうか?もしTXだけとか、機種限定ができそうなら、そっちから切り込んだ方が確実の様にも思えるんですけど...(^^;
Re: - min (2007年04月20日 08時17分05秒)
ありがとうございます。感謝です。今まで、発生した機種はTreo650と、T|Xで確認されています。また、DALだけじゃなくPetitLaunchでも不認識があったようです。出る出ないというのも条件が何なのでしょうね。尽力されておられるのに出ないのは不思議です・・・
Re: - Kohyan (2007年04月21日 06時50分24秒)
いろいろ試してみましたが、結局再現できませんでした。ただ、DALは日本語版を使っていますので、もしかしたら英語版に入れ替えたら再現できるのかも。症状が確認できた方のDALって、どっちなんでしょう?(^^;           あと、TXTreo650という事はOS5以降限定、もしくは英語版限定という風に考えることも出来る気がします。切り分ける場所は無数ですけど、既存の情報では妥当な切り方かも。もしかしたら両方が絡み合って、ごくまれに起こす症状なのかも知れませんね。もう少し追試を考えて続けてみます。
Re: - min (2007年04月21日 09時14分42秒)
不具合の出たDALは、日本語版です。そう考えるとOS5の英語版ですね。これも条件でしょうか・・・?本当に、お手数お掛けします。
Re: - 一匹の黄色い猿 (2007年04月21日 15時41分58秒)
つ[後出しじゃんけん禁止w] つ[それにしても開発環境に問題がある?] つ[∵他でそういう話題を見た記憶がない] _ っ[しかし『…時がある』対処は、再現からとも言うか] っ[ガンガレ>人柱。猿も足りない脳で考えてみる]
Re: - min (2007年04月22日 10時01分56秒)
ありがとうございます。開発環境は、多くの人が使われてるCodeWarriorで、同じ設定なので、この環境下で自分だけおこるとは考えにくいです。確かに、この現象は、初めてです。それだけに、難しいです。再現は、どうやっても一度認識してしまうと、出来ない物ですね・・・、よろしくお願いします。いろいろ、試行錯誤はしてみます。
Re: - 一匹の黄色い猿 (2007年04月24日 09時10分39秒)
※改行効かないので、普通の記述w                 山田氏のBBSを見ると、リストはキャッシュしていてインストール方法次第ではキャッシュが更新されない可能性があるという指摘もあり。しかし、母艦からインストールで更新されないというのは変かも。さて、どう手を付けたものか…事例を集めるのが先決かも知れないが…
Re: - min (2007年05月15日 19時53分26秒)
すみません遅くなりました。申し訳ございません。やはりキャッシュしてたのですね。事例ですが、DAL5では再現できなくて、DAL5βでは発生事例有りというのは関係あるのですかね?
Re: - admin (2007年06月05日 22時13分09秒)
コメントスパムが来ますので、コメント欄をコメントアウトしました。コメントを追加したい方は、コメント欄の復活させるか、または直接編集してください。
お名前: コメント:


表示された文字列

Universe 3 - kitta (2007年03月15日 06時47分28秒)

ご存知かとはおもいますが、こんなwebブラウザが発表されてます。今の所日本語はユニコードのみしか扱えません。オープンソース(GPL)って事でソースはすでに公開されています。ここに集っているプログラマーの人、どなたかコミットして他の日本語コードを使える様に出来ないでしょうか?

  • 使ってみました。良いできですね。しかし、ご指摘の通り日本語がダメですね。ソースを少し見ましたが、開発環境はMacのようですね。Macの方どのような環境かおわかりになられますか? - min (2007年03月16日 09時09分16秒)
お名前: コメント:


表示された文字列

大きなプログラム - よういち (2007年01月17日 18時32分34秒)

私は今は亡きHandspringの開発環境を改造して利用しているのですが
このところリンク時にエラーになり困っております。
relocation truncated to fit: DISP16 ...なエラーです。
その都度、リンクの順番を変えたり、ソースの配置を変えたり
関数の置き場所を変えたりして何とかしてきたのですが・・・
もう疲れました(^^;

PODSでこの問題が改善されているようなら、この際乗り換えようかな・・・など考えているのですが、どうなのでしょうか?

お名前: コメント:


表示された文字列

64KB 以上のメモリ割り当てについて - 陰郎 (2007年01月05日 16時25分27秒)

陰郎です。
大きなメモリチャンクを手に入れようとして困っています。MemPtrNew は API Reference に 「 64KB 以下だよ 」 と明記されているのですが、MemHandleNew は明記されていないにもかかわらず 64KB の制限があるようです。また、ストレージヒープに確保する DmNewHandle も同様に 64KB の制限があるようです。FtrPtrNew を試してみたところ、できることはできたのですが、API Reference には 64KB 制限っぽいことが書かれています。Palm OS 3.5 時代には制限なしだったようなのですが、手元の API Reference には以下のように書かれています。

NOTE:Starting with Palm OS 3.5 FtrPtrNew allows allocating chunks larger than 64k. Do keep in mind standard issues with allocating large chunks of memory: there might not be enough contiguous space, and it can impact system performance.

 英語力に乏しいためイマイチ理解できないのですが、「64KB以上の大きなメモリチャンクを確保する場合、連続する領域があればできるけれどもシステムのパフォーマンスに影響するかもよ」...というような意味でしょうか? また、他にメモリ確保の方法がありましたらご教示いただけると幸いです。

Re: 64KB 以上のメモリ割り当てについて - な (2007年01月05日 16時45分22秒)
MemGluePtrNew or BmpCreate

Re: - 陰郎 (2007年01月06日 01時33分29秒)
有難うございます。MemGluePtrNew だと大丈夫なんですね...BmpCreate は試してませんが、そんな使い方もあるのか...と驚きました。
Re:64KB 以上のメモリ割り当てについて - 大野 一樹 (2007年01月06日 02時15分54秒)
英語をそのまま読むと、OS3.5から64K以上のメモリをFtrPtrNewで確保できるけれど、連続領域で取得できない場合にシステムパフォーマンスに影響するので注意しなさいということだと思います。 つまり、全体では、64K以上のエリアが残っていても、メモリが分断されていると、その再配置可能なメモリを移動したりするので、時間がかかる場合があるということを言っているのだと思います。
Re: - 陰郎 (2007年01月06日 13時00分09秒)
ありがとうございます。そもそもの混乱の理由は、FtrPtrNew API の size パラメータのところに、The maximum chunk size is 64K. とはっきり明記してあることでした。にも関わらずやってみるとできるし、MemHandleNew なんかは書いてないが 64KB 制限がある。このあたりから混乱したようです。上の NOTE の記述内容については、大野さんのご指摘のとおりではないかと思います。再配置可能なブロックを移動することで連続領域を確保するのに時間がかかるのは、おそらく MemGluePtrNew などを使用した場合でも同じなのでしょうね。
Re: 64KB 以上のメモリ割り当てについて - な (2007年01月07日 00時40分29秒)
64Kの制限は HotSyncが 64K以上の Heapの転送をサポートしていないからです。連続領域の Allocationに失敗すると、Heap Comapctionを行う為にパフォーマンスが低下しますが、64Kの制限とは関係ない話です。
Re: - 陰郎 (2007年01月07日 01時19分46秒)
な さん、重ね重ねありがとうございます。不勉強ゆえ、Hotsync における Heap の転送というあたりでついて行けなくなってしまいましたが、ひとまずアプリ実行中のワーク領域として使用する分には 64KB 以上確保しても問題ない...と解釈してみました。Heap compaction というのは、ロックされていない領域を移動することで連続する空き領域を広げることと理解しましたが、これは大きな領域を要求するほど発生する確率は高いことになりますね。
  • コメントスパムが来ますので、コメント欄をコメントアウトしました。コメントを追加したい方は、コメント欄の復活させるか、または直接編集してください。- 陰郎 (2007年02月07日 00時59分00秒)

[ 1 2 3 4 ]