A-Dash!とHotSyncの話

先日公開したA-Dash!は、Palmのアドレス帳データからレースのエントリー候補リストを作成しています。
ところが、稀にアドレス帳に無い人の名前が、候補リストに出現することがあります。
たとえば「太郎 太郎」さんといった感じで、苗字と名前が同一のものなどがそれです。
アドレス帳からデータを削除した直後などは、こういった現象が発生すると思います。

これはPalmOS(と言うよりPIM?)の仕様で、アドレス帳やメモ帳などのDBはアプリからデータを削除した場合に、レコードごと削除されるのではなくて、レコードそのものは残ったままなのに、そのレコードが削除レコードとして扱われるのが原因です。
たとえば今まで人の住んでいた家が空き家になっても、その家は取り壊されずに残っていると言うと、分かりやすいかもしれません。

つまり、アドレス帳のデータを削除すればするほど、アドレス帳のDBには空き家が増える訳ですね。
NS Basicでは、アクセスするレコードが空き家かそうでないかを判断する仕組みがありませんので、このようになってしまいます。

メモ帳も同様の問題を抱えているのですがこちらは読み込んだデータの内容で、判断が出来ていたので問題はありませんでした。
アドレス帳でも同じ技を使えるかと思っていたらドツボにはまってしまいました。

こればかりはどうしようもないので、そのまま放ってあります。
まぁ削除済みレコードを読み込んでもアプリがクラッシュすることも無いのでいいでしょう。

さて、この削除レコードですが、HotSyncを行うとDBの整理が行われるので無くなります。
もし、気になる方は一回HotSyncしてみるといいでしょう。
DBのサイズも小さくなるはずですので、暫くHotSyncしていないなぁという方は、やった方がいいかもしれませんよ。

ところで、最近のPalmOS5.x系でもこの削除レコードってあるんでしょうかね?
僕の場合、開発環境では未だにVisorのROMを使ったPalmOSエミュレータで動作検証をしているので。最新のOSでは発生しない問題かもしれません。

今度確認しよっと。(^^;)☆\ばき