Palm Programmer's Laboratory

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

雑談掲示板

PPL雑談掲示板

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


お名前
件名
本文


表示された文字列

Q-Pocket for PalmのCLIE対応 - NY (2008年02月07日 14時19分59秒)

お世話になります。
Q-Pocket for Palmという標準メモ帳に機能を付加するアプリが
ありまして(↓)
http://pitecan.com/QPocket/Palm/
CLIE(OS5)でも使ってみたいと考えたのですが、動作しません
でした。作者様にメールでお尋ねしてみたところ、「現在、
開発環境ももうないので、ご自身でソースコードを修正して
ください」とのことでしたが、当方、そういうスキルがなく
こちらに御相談させて頂きました。
CLIE simulatorおよびOS5実機(NX80V)で動作しないのですが、
OS5.4(garnet) simulatorでは動作可です。
なおCLIE simulatorはこちらにあります:
http://www.palm.projekt-base.de/wiki/cgi-bin/wiki.cgi?ClieDeveloper/Sony_CLIE_Handheld_Simulator
アドバイスをいただけましたら幸いです。宜しくお願い致します。

コメント

  • すみません、どのような回答を求められているのか測りかねますが、NY さんが御自分で修正するためのアドバイスを求めていらっしゃいますか? それとも、Q-Pocket for PalmのCLIE対応ができる人を募るという趣旨でしょうか? それともその両方? - 陰郎 (2008年02月07日 15時11分05秒)
  • 早速にコメントありがとうございます。動くようになることが目標です。「CLIE対応ができる方」が現れてくださればベストですが。 - NY (2008年02月07日 23時23分50秒)
  • ソースを見ただけですが、恐らくCLIEというよりOS5.0限定のエラーだと思われます。OS5.0では、StrLenで文字数を調べるときに、引数がNULLだとエラーになるという症状があったはずです。ここを修正すれば動くと思うのですが・・・。PRC-Toolsを使える方なら、あっという間に修正出来そうですが、当方CodeWarrior以外の開発環境には疎いもので、どなたかにお任せします。 - せんべ (2008年02月08日 00時52分43秒)
  • とりあえず、PODS 環境でビルド可能な状態になるまで MakeFile に修正を施し、Palm OS Simulator 上で起動確認をするまでに至りました。デバッグなどはまだです。進展があれば追記します。 - 陰郎 (2008年02月08日 11時03分32秒)
  • リビルドした状態で、ためしに Palm TX で動かしてみたところ、ひとまず動作しているようです。全ての Palm OS 5 デバイスで動作するかどうかはわかりませんが、NY さんが「動作しない」と書かれているのは、具体的にどのように「動作しない」のでしょうか? いきなりリセットがかかる、Fatal Error 発生など、具体的な症状を教えていただけませんでしょうか。よろしくお願いします。 - 陰郎 (2008年02月08日 11時28分58秒)
  • 念のために、http://pitecan.com/QPocket/Palm/ からダウンロードしたパッケージに含まれている qpocket.prc を Palm TX に入れてみましたが、やはり動作しました。ということは、リビルドによって動作するようになったというわけではないことになりますね。なので、やはり NX80V でどのように動作しないのかが焦点になると思います。症状を教えてください。 - 陰郎 (2008年02月08日 12時28分48秒)
  • CLIE Simulator で試してみましたが、リビルドしたものでも Simulator 自体が強制終了してしまいました。仕事中にこそこそやれる内容でもなくなってきたので、週末にでも追ってみようと思います。 - 陰郎 (2008年02月08日 12時42分41秒)
  • ...と言いつつしぶとく粘っていたら、なんとか CLIE Simulator で動作させることができました。詳細は今夜にでも。 - 陰郎 (2008年02月08日 13時40分39秒)
  • 陰郎さん、せんべさん、ありがとうございます!お仕事中にまで本当にすみません!NX80Vでの動作異常ですが、数日前に確認した際にはタップしてもアプリが起動しない(何も起こらない)というものでしたが、なぜか今、再度確認しましたところ正常に起動しました。ただ、スクロールしていくと下の方のメモが表示されてこないようです。ただしこれもスクロールを上下に何度か繰り返していますと表示されてきたり、不思議な状況です。またせんべさんご指摘のように、OS5.2のTH55ではそのようなスクロール時の異常もなく、すべて正常の動作のようでした(同じメモ帳データで比較しました)。陰郎さんのご改良によりNX80Vでもスクロール異常がなくなると嬉しいです。 - NY (2008年02月08日 14時32分15秒)
  • あー、動作しましたか。であればこれ以上パワーをかけるのはやめておこうと思いますがいかがでしょう。というのは、原作者の増井さんはソースコードを公開されていますが、修正版の再頒布の許可については一言も言及していないんです。NY さんが増井さんに連絡されたときも、「自分で修正」としか言われていませんよね? なので、陰郎が修正した版についてもまずは NY さんにメールか何かで送って...とか考えていたのです。一応書いておきますと、CLIE Simulator がクラッシュしていた原因は、StartApplication( ) 内部で Gsi* 系の API をコールしていたことが問題でした。これらのコールを frmOpenEvent あたりのハンドリング個所に移動することでクラッシュは解消します。とはいえ、NY さんがお望みであれば、修正済みの版を送りますので、kagelow at project-enigma.jp まで御連絡下さい。 - 陰郎 (2008年02月08日 22時31分20秒)
お名前: コメント:


表示された文字列

ARMletのデバッグ環境について教えていただけませんか? - 風間 (2008年01月24日 11時33分58秒)

以前お世話になりました。風間でございます。
よろしければARMletのデバッグ環境について教えていただけませんか?

開発環境はCW9で、ARMletを使ったプログラムを書こうと思います。
そこで基本的なことなのですが、シュミレーター上でARMletのデバッグは可能なのでしょうか?

CW9に付属のARMletなるサンプル・プログラムに以下の記述ありました。

result = PceNativeResourceCall('ARMC', 1000, "ARMlet.dll\0NativeFunction", &inputData);

多分、勝手に"ARMlet.dll"なるものがあれば、デバッグが可能であると判断。
ネットで探すと、jpegArmletsなるサンプルに内にARMlet.dllが付属していたので、
これをシュミレーターと同じフォルダに配置。
コンパイルしたアプリをシュミレーター上で実行すると、下記のエラーが出てクラッシュしてしまいます。
ARMlet.dllをフォルダから外すとアプリを実行しても何も動きません。
ということは一応プログラムはARMlet.dllを認識はしてることだと思うのですが?
PceNativeCallを呼び出しはするところはまでは到達しているようです。

==============
= Welcome to the Palm OS Pace Debugger! =
==============
I:\Snoopy\ARM\Core\Emul68K\SrcSlowEmu\Run68K.c, Line:1045, Invalid addr mode for byte instruction
I:\Snoopy\ARM\Core\Emul68K\SrcSlowEmu\Run68K.c, Line:2080, Invalid write to 000000F6

I:\Snoopy\ARM\Core\Emul68K\Src\Emul68KCommon.c, Line:527, Odd address
I:\Snoopy\ARM\Core\Emul68K\Src\Emul68KCommon.c, Line:527, Odd address
I:\Snoopy\ARM\Core\Emul68K\Src\Emul68KCommon.c, Line:527, Odd address

(jpegArmletsは全く動きませんでした)

ちなみにシュミレーターは下記のものを使用してます。
Palm OSR 5.0 Simulation
SonyBuild 2002102501

何か基本的に考えが間違ってますでしょうか?
何かアドバイスを頂けませんでしょうか、よろしくお願いします。

コメント

  • 風間さん、始めまして(じゃなかったかな?)。ひとまず、こちらをお読みください。結論からいうと、お書きになっている例でいえば、ARMlet.dll は自分で作成するものです。シミュレータでのデバッグでは、Palmware 内に作成した ARMlet を「直接」デバッグすることはできません。ARMlet と同じ処理をする Windows DLL を作成し、デバッグする場合にはシミュレータ環境かどうかを判定して DLL 内の関数をコールする必要があります。陰郎も CW9 ですが、ARMlet をデバッグする場合は Microsoft Visual C++ で DLLを作成し、Visual C++ のデバッグセッションで Palm OS Simulator を起動し、対象の Palmware を実行してデバッグしています。例が c++ になってしまいますが、68K, ARM, Simulator 間でコード共有をする方法については拙稿がありますのでこちらをお読み下さい。PC と実機を直接接続してデバッグする場合には ARMlet を直接デバッグできるのかもしれませんが、それについては詳しく知りません。 - 陰郎 (2008年01月24日 16時03分49秒)
  • 陰郎さん、ご無沙汰しております。 - 風間 (2008年01月24日 17時57分24秒)
  • 陰郎さん、ご無沙汰しております。昨年、テーブルのことでこちらでお世話になりました。その節はありがとうございました。あれからいろいろ試行錯誤をして現在は簡単な画像ビューワーのアプリを作っているのですが、画像の回転やら、アルファ・ブレンドっぽい処理を加えたところ、激遅なアプリになってしまいました。そこでARMletなるものがあるのを知り、それを早速取り入れてみようと思っているのですが。つまり、デバッグをするにはそのアプリ専用のDLLを用意しなければならないということでしょうか? そして、それにはMicrosoft Visual C++の開発環境が必要なのですね。すいません、Microsoft Visual C++は手元にないので、デバッグは無理!ということですか...。例えばGarnet Developer Suiteとかでも同じようにDLLを作成しないと駄目なんでしょうか?あんまり環境を変えたくはないのですが、それが可能ならそれも一つに選択になるのでしょうか? - 風間 (2008年01月24日 17時58分44秒)
  • 風間さん、速断は禁物ですよ。Visual C++ は単に陰郎が使っているだけで、Win32 環境で DLL を作成できて、デバッグできればなんでもいいはずです。PODS は Eclipse ベースで、Eclipse のベースには Cygwin がいます。PODS をインストールした場合に、デフォルトで Cygwin がインストールされるのは C:\PalmOSCygwin ですが、この bin 配下には gcc がちゃんと入っているようです。これがあればひとまず DLL は作成できるかもしれません。あとは、Simulator をデバッガで起動して、Simulator がロード・実行する ARMlet 代替 DLL をソースコードインラインでデバッグできるような環境があるかどうかです。ひょっとしたら PODS (というか Eclipse )でもできるかもしれません。最悪、DLL から Windows 上のファイルシステムにデバッグログを出力しまくるという方法もありますよ。 - 陰郎 (2008年01月24日 20時17分19秒)
  • 補足です。ARMlet のデバッグで Windows DLL を使用しなければならないのは、開発環境である CodeWarrior の仕様ではなく、Palm OS Simulator の仕様です。なぜなら、Palm OS を Windows 上に移植した Palm OS Simulator は、PceNativeCall の実装が本来の Palm OS と異なるからです。具体的には、本物の Palm OS では渡されたパラメータを ARMlet のエントリポイントとして認識してそのアドレスをコールするのに対して、Palm OS Simulator では代替 DLL のファイル名とその内部の DLL 関数名を NULL 文字で区切った文字列の先頭ポインタとして認識し、(おそらくは)Win32 API である LoadLibrary 関数をコールして DLL 関数を実行しています。Palm OS Simulator はシミュレータですから、ハードウェアのエミュレーションは行ないません。Palm OS 5 をエミュレートする Palm OS Emulator があったら、ARMlet を搭載した Palmware もそのままデバッグできたかもしれませんね。 - 陰郎 (2008年01月24日 21時22分44秒)
  • 陰郎さん、丁寧に説明していただきまして、ありがとうございます。CygwinもGCCも手を出したことがないので、余計に混乱しそうです。とりあえず何とかMicrosoft Visual C++を入手するしか無いのかな〜。とにかく今作っているアプリをなんとかARMlet化させたいので、がんばるしかないのかと思います。 - 風間 (2008年01月25日 06時15分15秒)
  • すいません、Microsoft Visual Studio .NET 2003でもDLLをコンパイル出来ますでしょうか? - 風間 (2008年01月25日 10時07分40秒)
  • Microsoft 製品から遠ざかってしまっているため、たしかなことはいえないのですが、大丈夫だと思います。ただ、Visual Studio.NET は Visual C++ 以外の製品 ── Visual Basic とか ── も入っているので、割高ではないかと思います。Visual C++ の単体製品は今でもあると思うのですがどうでしょう。あと、陰郎が Visual C++ を始めて購入したのはかれこれ 10年くらい前ですが、一番安価なエディションンでは作成したアプリケーションを販売・配付できないようなライセンスだった気がします。なので、目的にもよりますが購入されるのであれば良くお調べになった方がいいかもしれません。 - 陰郎 (2008年01月25日 11時20分38秒)
  • ちなみに、念の為に書いておきますと、Visual Basic で作成できるのは ActiveX DLL だけ(のはず)なので、いわゆる古式ゆかしい DLL は作成できないと思います。ただ、Visual C++ をこれから使い始めるのであれば、もっと安価(あるいは無償)で利用できるものを検討するのも一考かな...と思いますがいかがでしょう? Visual C++ をお勧めしない、というのではありません。個人的には、良い開発環境だと思いますが、唯一の選択肢ではないはずです。Borland(というのはもう古い社名でしたっけ)製品などでもできるとは思います。使ったことがないので、使い勝手などについては陰郎からはなにもいえないのですが... - 陰郎 (2008年01月25日 11時22分28秒)
  • 試してみたところ、Cygwin に入っている gcc でも DLL のビルドはできました。ただ、PODS バンドルの Cygwin ではなく、Cygwin 単体でインストールした PC なので、PODS 環境では事情が違うかもしれません。また、Cygwin に閉じた確認しかしていないので、Palm OS Simulator から問題なく使えるかどうか、使えたとしてもデバッグが快適にできるかどうか...もまだわかりません。 - 陰郎 (2008年01月25日 11時58分09秒)
  • またまたご丁寧に説明していただきまして、ありがとうございます。可能なら無料で出来るならその方が嬉しいのです。とりあえず昨日の夜PODSを落としておいたので、さっきインストールをしたところです。で、Cygwinなるもので、どうやってVisual C++ のプロジェクト・ファイルをコンパイルすればいいのか...。どこかに解説してあるサイトとかないですかね(^^; それとも書籍でも構いません、ヒントになるような物があったら教えていただけませんか? とにかくCWしか触れたことがないので...。ちなみに作成したアプリは配付出来るようなシロモノではありません(笑) - 風間 (2008年01月25日 12時16分52秒)
  • 今、PODS バンドルの Cygwin 環境で DLL をビルドするお試しをやっています。しかし、Palm OS Simulator からの呼び出しが可能かどうかの検証については、週末になってしまうかもしれません...また、呼び出せたとしても上手くデバッガを使えるかどうかは保証の限りではありません。しばらくお待ちください。 - 陰郎 (2008年01月25日 12時31分28秒)
  • とんでもなくお手間を掛けてしまって申し訳ありません。自力でどこまで出来るかわかりませんが、いろいろ挑戦してみようと思います。何か分かりましたらまた教えて下さい。ありがとうございます。 - 風間 (2008年01月25日 13時16分08秒)
  • 続報です。PODS バンドルの gcc で DLL をビルドするところまではできました。使用しているのはこのページの末尾で示しているサンプルプロジェクトで、MSVC++ でビルドしていた Simulator 向け DLL と同等のものを目指しています。しかし、実際に Simulator で動かしてみたところ、1回目は撃沈しました。今職場なので、必要な道具立てが揃っていないこともあり、続きは今夜以降になります。 - 陰郎 (2008年01月25日 15時26分42秒)
  • PODS 付属の Cygwin gcc で、コンパイルオプションを調整調整したところ、Palm OS Simulator から動作させることができました。デバッグについてはまだですが、ここまでをひとまず情報としてまとめますので少々お待ち下さい。 - 陰郎 (2008年01月25日 19時49分08秒)
  • 書いてみました。詰めが甘いので奇妙なエラーが出ることと、デバッガとの連携がまだですが、ひとまず頑張ってみて下さい。cygwin のシェルコマンドの使用や make は大丈夫でしょうか。C:\PalmOSCygwin\cygwin.bat を起動してプロンプトを起こし、PalmSimDLL のディレクトリまで移動して make です。 - 陰郎 (2008年01月25日 21時47分16秒)
  • 横から失礼します。Visual Studio Expressに含まれるVC++でデバッグすることは出来ないのでしょうか?話の流れをみているとVC++を使えない理由は"有償だから"な様に見えるのですが、合ってますでしょうか?もしそうなあらVisual Studio Expressはフリーで利用可能ですので試してみる価値はあると思います。作成したバイナリの配布に対しても制限はありません。MFCとATLが使えないようですがgccでコンパイル出来るということは問題ないですよね - EIJ (2008年01月26日 01時08分30秒)
  • EIJ さん、お久しぶりです。Visual Studio Express というのは無償で利用できるんですか? Microsoft 製品から遠ざかって久しいので、全然知りませんでした...それなら話は別ですね。確かに、無償で利用できるものがあるならそちらを探してみよう...という流れになってました。それに、MFC と ATL は必要ないです。 - 陰郎 (2008年01月26日 01時19分20秒)
  • すいません、ほんとうにとんでもなくありがとうございます。こんなにいろいろ説明していただいて何とお礼を申し上げたらよいのか。しかし今の自分の力では難しい過ぎます。とりあえずまずCygwinやらGCCを一から勉強しないと無理そうです。気が遠くなるような話しですが、絶対にARMletはアプリに取り入れたいので、これからコツコツと勉強してDLLのコンパイルを出来るようになりたいと思います。週末にゼロからCygwinを調べてみたいと思います。どうしても分らないことがあったらまたお聞きするかもしれませんが、その時はよろしくお願いします。Visual Studio Expressというのも探してみます。 - 風間 (2008年01月26日 05時37分37秒)
  • ディレクトリ移動のコマンドで躓いてしまい、やっとPalmSimDLLフォルダに移動出来ました。ここでとりあえず何も考えずに gcc -mno-cygwin -g -c FooImp.cxx を実行。すると No Such file or directory エラーが表示 include されているヘッダーファイルがありませんとのことか。でもmakeファイルの中でパスを指定されているのに何故? makeファイルとは別の場所でパスを指定する必要があるんでしょうか? - 風間 (2008年01月26日 14時25分33秒)
  • いや、makeと入力して実行でいいはずですよ。 - 陰郎 (2008年01月26日 14時39分54秒)
  • あ、ちょっと待ってください。CW9 のインストール先ディレクトリが違うのであれば、makefile 内の INCLUDEPATH に書かれているパスを書き換える必要はあります。 - 陰郎 (2008年01月26日 14時41分35秒)
  • やっと分かりました。迷って迷って迷いました。単純に make で良かったんですね。エラーも出ないで Foo.dll なるものが出来ました。それを早速シュミレーターのディレクトリにコピーして実行すると。確かにエラーが必ず3回出て、次に SIMULATOR::FooImp::Execute() と表示されます。一応これで動いたことになるのでしょうか?ただデバッグ・モードでステップ毎に実行すると何故かエラーが出ません。ありがとうございます。なんかすっかり教えてもらってしまったので自分でやった実感がなくて本当に申し訳なくて仕方ありません。何とお礼を申し上げたらよいのか、ありがとうございます。一つ質問なんですが、デバッグモードの時に UInt32 result = ::PceNativeCall( reinterpret_cast<NativeFuncType*>( ENTRYPOINT ), &param );ここまて来るとアラートが表示されますが、この先はステップ毎に追うことはできないのでしょうか?それとExpressの方も一応試してみましが、 fatal error C1083: include ファイルを開けません。'PceNativeCall.h': No such file or directoryというエラーが出ます。どこをどうしたら良いのか。とりあえず次はどの道を進むべきか。このままGCCで進んだ方が良いのでしょうか? - 風間 (2008年01月26日 17時50分35秒)
  • PceNativeCall の呼び出しの先は、まさに ARMlet 代替 DLL です。ですから、その ARMlet 代替 DLL を動的リンクして関数をコールしている Palm OS Simulator 自体をデバッグしなければならないわけです。念のために書いておきますと、ARMlet 代替 DLL をコールしているのは Palm OS Simulator です。CodeWarrior でデバッグ中の palmware 自身ではありません。CodeWarrior は Palm OS Simulator を利用して palmware をデバッグしているわけですが、ARMlet 代替 DLL をデバッグしたければ、palmware のコンテナでありドライバであるところの Palm OS Simulator 自体をデバッグしなければならないわけです(余計に混乱させてしまったかもしれませんが)。gcc でやるのであれば、gdb を使用して Palm OS Simulator を起動し、対象の palmware を起動して ARMlet コールを発生させることになります。この場合、その palmware は必ずしも CodeWarrior でデバッグしている必要はありません。ちなみに、陰郎はまだ gdb でのデバッグは失敗しています。 - 陰郎 (2008年01月26日 18時45分46秒)
  • 了解しました。重ね重ねありがとうございます。現在とってもめげそうな気分です。どこから手をつけるか。とりあえずもう一度ARMlet関連の書類を熟読してみようと思います。 - 風間 (2008年01月26日 19時42分36秒)
  • 何となく分かったような気になったので、とりあえず実技として、PalmMagazinに掲載されてたARMletFire用のDLLを作成してみようと思います。 - 風間 (2008年01月28日 14時27分28秒)
  • いろいろ試してみたんですが、自力でDLLは挫折してます。makeをすると"no include rule" というエラーが出て先に進みません。多分$(LINK.cc) -shared -o $@ $(OBJS) $(SHAREDLIB_FLAGS) $(LDLIBS)の部分でソースを拾えないみたいです。とりあえずDLLでのデバッグは後回しにして、実際のコードにチャレンジしてみました。それでPACEInterface.hに記述のあるAPIは利用できるのですが、無いものはどうすれば良いのか? 適当にいじりまわしているとARMlet_Runtime.mcpに変更を加えてコンパイルをすることでAPIを追加することが出来るんですね。で、更に調子に乗ってsony の APIも加えたいんですが、これは可能なんでしょうか? PACEInterface.hに#include <SonyCLIE.h>を加えると、LibTraps68K.hが見つかりませんとなります。ところがLibTraps68K.hなるファイルはどこを探しても見つかりません。何か根本的に間違ってますか? それともsony の APIは駄目なんでしょうか? お分かりになる方がおりましたらヒントを頂けませんでしょうか? 何故今更sony のAPIという疑問もあると思いますが、jpegとか読込むのに便利なので使えたら良いなと思ってます。 - 風間 (2008年01月31日 17時43分44秒)
  • わー、PACEInterface.h って ARMlet からコールバックできる Palm OS API のラッパークラスがあるんですね。知らなかった...これまで API のコールバックは全部手作業でやってました。ところで、ARMlet から API をコールバックする正統的(?)な方法は、こちらをお読みになってください。これだと、CoreTraps.h に載っている API なら何でもコールできます。で、一部の API は CoreTraps.h に載っていませんし、ベンダ特有の API もしかりです。これらをコールする確実な方法は、先程と同じページの下半分に載っています。 - 陰郎 (2008年01月31日 20時47分34秒)
  • 基本的に、ベンダ提供のヘッダファイルやソースファイルをイジるのはお勧めしません。何がどう悪さをするかわかりませんので...分かった上でやる分にはもちろん問題ありませんけどね。 - 陰郎 (2008年01月31日 20時49分05秒)
  • 陰郎さん、レスありがとうございます。"ARM コードからの Palm OS API の呼び出し"は何度も読んでるんですが、サッパリ分からなくて(^^; だから、PACEInterface.hをいじくり回してたわけで。何だか手詰まり状態ですね。でも工夫次第でSonyのAPIも使えるというのは朗報です。 - 風間 (2008年01月31日 22時12分49秒)
お名前: コメント:


表示された文字列

コンジット関連のドキュメント - irija_bari (2007年12月29日 09時23分17秒)

Irija Bari です。

>たいちさん
コンジット関連の参考ドキュメントを作成し、ドキュメントの翻訳が進行中です。できればまたこちらに掲載させていただきたいと思っているのですが、いかがでしょか?
自サイトを設けたので、そこにアップしています。
http://irjb.s3.zmx.jp/wiki.cgi?page=Palm+Informations
(こんどは外部からの CGI リンクも OK です。)

陰郎さん
Palm OS Programmer's Companion Vol. I の訳出完了おめでとうございます!!すばらしいですね。Vol. II と User Interface Guidelines の訳出も進行中ということでお疲れ様です。がんばってくださいね。

目標にしていた「家計簿ソフト」ですが、Palm 側、PC 側(コンジット)が形になってきました。MDB (Access) ファイルとの同期もとれるようになってきました。いろいろとアドバイスをいただきありがとうございました。今はまだ MDB を生でいじっている状態なので、VB でデスクトップ アプリケーションを作成しようかと考えています。

最近、Palm Emulator/Simulator でグレムリンを走らせてバグ出しをしているのですが、すぐにエラーが出て止まってしまいます(;_;)。なかなかエラーの原因を特定できないでいるので、デバッグ関連のドキュメントも読んでみようかなと思っています。

それでは皆さん良いお年をお迎えください。

お名前: コメント:


表示された文字列

リストのためのスクロールバーのセットの仕方を教えてください。 - irija_bari (2007年11月15日 10時42分44秒)

リストをスクロールさせるのに、リスト領域の右上下端に表示される矢印の代わりにスクロールバーを使用したいと考えています。
ListAttrType 構造体に hasScrollBar というメンバがあるのでこれをセットしたいのですが、セットする手段(関数)がわかりません。ListType 構造体がこの構造体を持つのですが、ListType 構造体には直接アクセスするなという注意書きがあります。どのように ListAttrType の hasScrollBar メンバの値をセットするのでしょうか?



Companion I 「4-8 リスト」を読んでいて思ったことがありましたので、コメントさせてください。間違っていたらごめんなさい。(ドキュメントのコメント欄には文章を書きにくいのでここに投稿します。)

  • メモリ上にはデータを保持せず、リストを描画する関数を用意する。リストは描画のたびにデータを取得します。メモリにデータを保持しないことにより、リストが長大かつその内容がユーザー操作に依存する場合に発生する容認し難いメモリのオーバーヘッドを避けることができます。例として、ユーザーが選択した都市を基準にして多くの都市の時刻一覧を表示するような時刻変換アプリケーションが考えられます。このような実行時の表示情報取得ができるのはリストだけで、テーブルではできないことに注意して下さい。
訳注:customTableItem を使用したカスタム描画を使えばテーブルでも
   同じようなことができるような気がしますが、この文が言おうと
   していることは違うのでしょうか。訳が良くないかもしれません。

この例の場合、基準都市の時間に時差分を加減して各都市の時間を表示することになるのでしょう。これらの時間を、リストまたはテーブルのカスタム描画関数を使って描いた場合、リストでは LstGetSelectionText() を使用して選択された項目の中から時間を取得することができますが、テーブルにはそれに該当する関数が無いため選択されたセルの列番号、行番号しか取得できないということではないでしょうか。
もちろんテーブルでも、テーブル アイテムをフィールドにしておけば、選択されたフィールドから FldGetTextPtr() などを使ってテキストを取得できるのでしょうが、手間がかかりますよね。
(まだ、テーブルを使ったことがないので間違っているかもしれません。)

コメント

  • リストでカスタム描画関数を使用する場合、そもそも LstGetSelectionText( ) は使用できません。このページをご覧ください。カスタム描画関数はそもそもデータ構造を別で保持しておき、描画コールバックによって画面描画をするものです。そのため、インデックスしか得られない代わりに別途保持しているデータを参照できるということですよね。で、その条件についてはテーブルでも同じことが言えるのでは...というのが訳注に書いたことです。 - 陰郎 (2007年11月15日 12時17分00秒)
  • リストコントロールとスクロールバーの関連付けというのは聞いたことがありません。たしかにListAttrType構造体にはそのようなメンバがあるようですが、もしスクロールバーとの関連付けがサポートされているなら、そのスクロールバーのリソースIDもどこかに保持する必要があるでしょう。ListAttrType 構造体に含まれるスクロールバー有無のメンバは、リスト標準のスクロールインジケータの表示有無を指すものではないでしょうか(もちろん憶測ですが)。いわゆるチカラワザでスクロールバーと関連付けるのは不可能ではないと思いますが、それだけの労力を覚悟するのであれば最初からテーブルを使用することをお勧めします。 - 陰郎 (2007年11月15日 12時20分43秒)
  • 陰郎さん。仰る通り、カスタム描画関数を使用した場合は LstGetSelectionText() を使用できないのですね。私は「実行時の表示情報取得」(pick up the display information on the fly)の「表示情報」を「リストに表示した情報」と解釈したのですが、それがそもそもの誤りで、実際は「リストに表示するための情報」なのですね。そうなると、確かに陰郎さんの書かれた通り、リストとテーブルの違いは無いですよね。う〜ん。。。 - irija_bari (2007年11月15日 23時39分05秒)
  • 陰郎さん。スクロールバーの方は、アドバイスに従ってリストをテーブルに変更しました。スクロールバーも無事動いてくれました。ありがとうございます。 - irija_bari (2007年11月15日 23時39分23秒)
  • ハンドヘルド内の家計簿プログラムはあらかた出来上がったので、いよいよデスクトップとの同期プログラムを作り始めようと思います。「Palm Desktop SDK」を使っての Addin の作り方を参考にやってみるつもりです。 - irija_bari (2007年11月15日 23時39分41秒)
お名前: コメント:


表示された文字列

Reference 訳出作業の休止 - irija_bari (2007年11月10日 18時15分44秒)

Irija Bari です。
件名のとおり、Palm OS Programmer's API Reference の訳出作業を
休止します。理由は、

  • 読みたいと思っていた内容をあらかた訳出した。
  • 残っているのはあまり縁のない(あるいは、私が所有している Palm ではサポートしていない)機能なので内容を理解しにくい。

からです。
また機会があれば再開しようと思っています。

私の休止中も自由に訳の追加・改編を行ってください。
なんだかつまみ食い的に訳出する結果になってしまいましたがご容赦ください。

Palmware の作成は続けていますので、またここに質問を投稿することがあると思います。
そのときはどうぞよろしくお願いいたします。

お名前: コメント:


表示された文字列

FSWiki の表の中での改行 - irija_bari (2007年11月04日 22時58分55秒)

FSWiki の表の 1 項目の中で改行することはできないのでしょうか?
(どうも無理っぽいのですが。。。)
う〜ん、どうしようか。。。
もし、わかる方がいらっしゃいましたら教えてください。

あと、件名からは外れるのですが、Palm ソフトウェアと PC の同期について
適当なドキュメントはないでしょうか?
シリアルケーブルで DB (できれば PC 側では SQL をサポートする DB として)を同期したいのですが、
Palm 側は Companion と Reference を読めば何とかいけそうな気がするのですが、PC 側はどうするのでしょうか?
Conduit が関係するのでしょうか?CDK を導入?一般的にはどのような手法になるのか
教えていただけないでしょうか。
よろしくお願いいたします。

コメント

  • {{ と }} の間に br を書くプラグインで普通に表内でも改行できましたよ。これは irija_bari さんの求めているものとは違いますか? SandBox の中に書いておきます。 - 陰郎 (2007年11月05日 09時18分56秒)
  • ちょっと訂正します。プレビューではちゃんと表示できたのに、保存すると保存されない...これは SandBox の問題かな? - 陰郎 (2007年11月05日 09時22分59秒)
  • 無理無理このページ内でやってみましたが、やっぱり保存できました。最初はプラグインのバグではないかと疑いましたが、どうやら違うようです。 - 陰郎 (2007年11月05日 09時27分25秒)
  • 陰郎さん。できました!!ありがとうございます。単純に br タグを使えるということを知らなかったのです。助かりました。 - irija_bari (2007年11月05日 10時52分15秒)
  • このページ内の表内改行のお試しは削除しました。で、Palm デバイスと PC の同期についてですが、基本的には CDK になるのだろうと思います(未経験ですが)。たしか、CDK には専用のドキュメントがあった気がしますね。あと、CDK は Windows DLL をビルドできる開発環境が必要になるはずですが、Microsoft Visual C++ 前提じゃなかったかな? 記憶違いかもしれないので、あんまり鵜呑みにしないでくださいね。 - 陰郎 (2007年11月05日 12時15分07秒)
  • CDK を使用するばあい、HotSync による同期が前提となるはずですが、それ以外の方法での通信を考えていますか? そうだとすると、結構面倒な気がしますね。逆に、HotSync での同期を考えるのであれば、たとえばメモデータを介した同期を利用することで済ませるという方法は現実的でないですか? - 陰郎 (2007年11月05日 12時17分50秒)
  • コンジットの作成を避け、かつPalm -> PC の一方通行でも良い、ということであれば、デスクトップ上に Palm 側のデータベースをバックアップするデフォルトの設定のままにしておき、デスクトップアプリケーション側でそれを読み込む、という方式もありだと思います。 - 陰郎 (2007年11月05日 12時43分41秒)
  • 陰郎さん。メモ帳データを介して HotSynd するというのは手ですね。たしかにお試しで入れてみたフリーの家計簿ソフトもメモ帳データでインポート/エキスポートしています。 - irija_bari (2007年11月05日 18時51分17秒)
  • CDK のドキュメントは私もちょっと読んでみたのですが、Palm Desktop に組み込む場合は DLL ビルドが必要だったような印象を持っています。おっしゃる通り Visual C++ (または Visual Basic)でないと DLL は作れませんよね。まずは、メモ帳データでインポート/エキスポートさせてみて、それができたら、HotSync と PC のデータベースを同時に制御できるようなプログラムを作ってみたいと思います。 - irija_bari (2007年11月05日 18時51分31秒)
  • Palm から一方的にバックアップを送るという方法もあるのですね。今回使うことはなさそうですが、使う機会がありそうな機能です。とても参考になりました。ありがとうございます。 - irija_bari (2007年11月05日 18時51分57秒)
  • あー、なんだか誤解を招いてそうなので補足しますが、Palm デバイス上のデータベースの HotSync 時バックアップは、コンジットなどを使用しない場合のデフォルトの挙動です。backup ビットとか関係しますが、普通は放っておいても PC にバックアップされますね。ごめんなさい上手く書けなくて。 - 陰郎 (2007年11月05日 21時49分27秒)
  • 陰郎さん。補足をありがとうございます。私に知識が無いので、陰郎さんの仰ることをきちんと理解できないのでしょう。実際にプログラムを書くときに、マニュアルを読んで、仰ったことの意味をきちんと理解するつもりです。リファレンスの「接続マネージャ」と「シリアル マネージャ」を訳出したら、一旦訳出を休止して CDK 関係のマニュアルを読んでみようかなとも思っています。 - irija_bari (2007年11月06日 20時46分02秒)
お名前: コメント:


表示された文字列

Palmwareのデータベースを作っています - にっく (2007年10月22日 12時02分12秒)

こんにちは、大変ご無沙汰しております、にっくです。

#やっぱりプログラムは本業じゃないのであまり関われてません...

さて、Muchy.comがついに消失していましましたが、当方で似たようなものを開設しております。

Palmware Stockyard:
http://www.niku-nama.com/wiki/

こちらと同じWikiの構成をとっていまして、どなたでも投稿できます。
是非ご利用ください。

(悲しいことにこちらのFreeStyleWikiと違うWikiを設置していますので、タグが異なります。タグを使って文章を書く事には違いはありませんので、ホント、よろしければ是非。っていうか設置し直してリニューアルした方がいいか?)

お名前: コメント:


表示された文字列

データベースの使い方について教えてください。 - irija_bari (2007年10月13日 18時44分55秒)

質問させてください。

アドレス帳のようなデータベースとセットになっているアプリケーションでは、
どのようにデータベースを作成、オープン、クローズするものなのでしょうか?

下のコードのように、アプリケーション開始関数でデータベースをオープンすると、自動的にデータベースが作成されるようです。

しかし、アプリケーションを終了するときになにもしないと「メモリ リークが 1 つある」とエラー表示が出ます。
データベースをクローズ、または、メモリ ハンドルを解放すると「致命的なエラー」が表示されます。
どのような手順を踏むべきなのでしょうか?

DmOpenRef dmOpenRef;
UInt16	dbCardNo = 0;
MemHandle	dbHandle;
LocalID		dbID;

static Err AppStart(void)
{
	dbHandle = MemHandleNew(1);
	dbID = MemHandleToLocalID(dbHandle);
	dmOpenRef = DmOpenDatabase(dbCardNo, dbID, dmModeReadWrite);
	//この後、データベースをオープンできないときは、新たに作成、オープンするコードを
	//書いたのですが、使用されていないようです。
	...
}

static void AppStop(void)
{
	// Close all the open forms.
	FrmCloseAllForms();
	
	DmCloseDatabase(dmOpenRef);
	MemHandleFree(dbHandle);
}

また、Palm のデータベースには「カラム」という概念はないのでしょうか?

レコードが複数のカラムを持つため、カラムを「,」区切りにしてレコードに収めています。
問い合わせをするときには、全レコードに対して、

  1. レコードを取り出す
  2. 区切り文字で切り分ける
  3. 切り分けたデータに対して評価を行う

という手順を踏んでいます。なんだか、非効率な気がするのですが。。。

よろしくご指導ください。

コメント

  • Palm のデータベースの概念は、一般的な PC 環境やサーバ環境におけるいわゆる「Database」とは違います。どちらかというと、ファイルに近いものと考えたほうが良いでしょう。ひとまず、このあたりを読みましょう。また、「Palm OS Programmer's Companion Volume I」はざっとでもいいので全体を読み通すことをお勧めします。 - 陰郎 (2007年10月13日 21時13分37秒)
  • アドバイスをありがとうございます。Palm OS Programmer's Companion はいつも活用させてもらっています。2章の起動・終了コードにそれらしい記述があったので、サンプルプログラムも参考にして勉強してみます。概論を読むのがどうも苦手なのですよね。。。少しずつでもいいので覚えていきたいと思います。 - irija_bari (2007年10月14日 14時51分46秒)
  • >影朗さんレコード データの作成と取得には構造体を使用し、表示にはテーブルを使用すると便利なのですね。次はレコード データの変更に対応し、次はレコード データのカテゴリ分け、その次は PC との同期に対応しようと思っています。Companion の訳出作業は順調に進んでいるようですね。お疲れ様です。区切りが付いたら、アンカ対応をよろしくお願いします。 - irija_bari (2007年10月30日 11時36分45秒)
お名前: コメント:


表示された文字列

新メンバーです。よろしくお願いいたします。 - irija_bari (2007年10月10日 23時05分47秒)

新しくメンバーに入れていただきました Irija Bari です。
どうぞよろしくお願いします。m(_ _)m

ここのサイトを真似て(Palm OSの勉強も兼ねて)、Palm OS Programmer's API Reference の日本語訳を始めてみました。
Palm OS Programmer's API Referenceにあげています。

訳の仕方(用語の使い方など)の改善点がありましたらコメントをいただけるとうれしいです。
まだ、イベントの章とメモリ マネージャの章ができただけなのですが、利用できるレベルに達していれば、ぜひご活用ください。
(達していない場合は、どこがまずいのか教えていただけるとありがたいです。)

実際のプログラミングのほうは、ようやくcm単位で入力した数値をinch単位に変換して表示するところまでいきました。
メモリのハンドラとポインタの意味を理解するのに苦労しています。
家計簿ソフトはまだまだ遠いです^^;

  • 自己フォローです。ここから他のFSWikiにいけないようなので、Entrance of Bari's FSWiki よりお入りください。大変失礼しました。 - irija_bari (2007年10月10日 23時24分59秒)
  • > IrijaBariさん。いらっしゃいませ。早速ありがとうございます。ここから他のFSWikiに行けないのでは無く、infoseekのサーバーが他からのCGIの呼び出しを許可していなかったと記憶しています。 - たいち@管理人 (2007年10月10日 23時49分25秒)
  • > IrijaBariさん。ところで、「Palm OS Programmer's API Reference の日本語訳」というのは、すばらしいですね。もしよろしければ、PPLのメンバーとして、PPL内に記述して頂ければ、PPLとしても充実していきますし、間違った訳があればメンバーも修正等可能ですから、すばらしい物になっていくのではないかと思っています。せっかく残していくものですし、一カ所にまとまっていた方が、必要とする人たちにとっても便利な物になっていくと思っています。是非とも、ご協力頂ければ嬉しく思います。しかし、これは強制ではありませんので、判断は IrijaBariさんにお任せしますこと合わせて申し添えます。 - たいち@管理人 (2007年10月10日 23時54分12秒)
  • ポインタとハンドルの違いは、このあたりをご覧ください。下の方にある「メモリチャンクの概要」というところです。ところで、API Reference の訳出ですが、せっかくですからこのサイト内で作業されてはいかがでしょう...と陰郎からもたいちさんと同意見を。 - 陰郎 (2007年10月11日 00時51分45秒)
  • Infoseek 側の問題だったのですね。Reference はこちらで使ってもらいたいと考えていたので、移行することに異存はありません。Palm について詳しい方に使えるレベルに達しているか判断してもらってからと考えていたのですが、その判断も含めてこちらで行うということであれば喜んで移行させていただきます。FSWiki のプラグイン(こちらで使用していないものを含む)をいくつか導入しているのですが、こちらでも導入して良いのでしょうか? - irija_bari (2007年10月11日 07時53分07秒)
  • >IrijaBariさん。ありがとうございます。プラグインの件ですが、導入したいのはどのプラグインでしょうか? - たいち@管理人 (2007年10月11日 09時55分14秒)
  • 以下の 5 つのプラグインです。ご検討ください。_ex_block: 複数行プラグインサポートの為の拡張, anchor (ver. Goto_20060921_gyo): ページ内アンカの為の拡張, blocksample: _ex_blockのサンプル, tag2: 装飾用に用いられるHTMLタグを利用可能にします。(<a>,<img>,<br>,<span>,<div> 他各種), word: 文字列装飾プラグインを導入します - irija_bari (2007年10月11日 11時01分57秒)
  • 使用プラグインを精査しました。以下の 2 つを使用しています。anchor (ver. Goto_20060921_gyo): ページ内アンカの為の拡張, tag2: 装飾用に用いられるHTMLタグを利用可能にします。(<a>,<img>,<br>,<span>,<div> 他各種) - irija_bari (2007年10月15日 14時29分36秒)
  • >IrijaBariさん。ちょっと私でも調べてみますね。一番心配しているのは、今現在ある記事に影響が出ないのかどうか。それが心配です。いろいろ試しながらやっていきたいと思います。終わったら、またこちらへ書き込みますね。 - たいち@管理人 (2007年10月15日 14時44分26秒)
  • >IrijaBariさん。Anchorプラグイン導入しました。tag2プラグインは既に使用可能になっています。何か有りましたら、またご連絡ください。 - たいち@管理人 (2007年10月22日 10時57分55秒)
  • >たいちさん。プラグイン対応ありがとうございます。早速いくつかアップしてみました。勝手ながら「ドキュメント」ページにReferenceの項目を追加させていただきました。何か問題がありましたら、ご連絡をお願いします。 - irija_bari (2007年10月22日 19時36分21秒)
  • >IrijaBariさん。質問です。Reference トップページのガイドラインに、カタカナ語の間には半角スペースを空けるように、とありますが、これは何故ですか? また、アンカーですが、既訳のページにもアンカー参照を入れる作業をした方がいいのでしょうか...? いや、それが望ましいのは重々承知の上ですが、Companion I については既に訳出作業が終盤に差し掛かっているので、もしやるならば現状の作業手順で訳出がいったん完了してからにしたいのです。 - 陰郎 (2007年10月22日 20時22分10秒)
  • >陰朗さん。カタカナ語が連続すると、語の区切りがわかりにくいので半角スペースを入れることにしています。Reference内では統一したいので、そのように書きました。アンカー、リンクを入れる作業については、あくまでもお願いです。入れていただけるならば、作業される方のペースに合わせて行ってください。 - irija_bari (2007年10月22日 21時06分59秒)
お名前: コメント:


表示された文字列

ARMlet からの HIGH_DENSITY_TRAP コール - 陰郎 (2007年10月03日 23時02分47秒)

万策尽きつつあるので救助願いです。

ARMlet から Palm OS API をコールするときは call68KFuncP に PceNativeTrapNo を被せた sysTrap ナンバーを渡します。これは自分でここに書いたことなので理解しているつもりなのですが、High Density 系 API は CoreTraps.h に載っておらず、個々のヘッダファイルに SYS_TRAP ではなく HIGH_DENSITY_TRAP として記載されています。これらの API は ARMlet からコールバックすることはできるのでしょうか? 何かご存知の方がいらっしゃいましたらご教示願えると幸いです。

お名前: コメント:


表示された文字列

[ 1 2 3 4 ]