前略、ご無沙汰しております。5年振りの書き込みです。5年前は、
浜田、森、両OMの GetProcAddress() の手ほどきのお陰で、DLLの
関数をアクセス可能となり、Hamlogアプリケーション製作に開眼
しました。
このたび、ひょんなことで、ブラインドハム向け、名付けて
"TalkHamlog" を開発することになりました。HAMLOGデータの
検索、読み込みについては旨い具合に機能させているのですが、
書き込みについては今回初めてで、四苦八苦しております。
ちなみに開発環境は、VC++ Ver6.0 MFC環境です。ただ、HAMLOG
アクセス部分は、C言語でコーディングしております。
教えていただきたいのは、まずは「データの追加」です(これすら
うまくいかないので、delete や update まで手が伸びません)。
データの追加は、
・HamlogOpen()
・Th.Qso各メンバへの値のセット
・THW_append()
・THW_flush()
・HamlogClose()
の順で行ってます。データの登録は、この後本家 Homlogブラウザ
でうまく表示されることから、うまく行っていっているものと
思われます。
問題の内容は、まず、"JA1AAA" のコールサインで、1レコード追加
に成功、続いて、"JA1AAAA"(サフックスが1桁多い)をキーに
コールサイン検索 THW_seek() したところ、エラーダイアログ
「No15 インデックスの再構築が必要」が表示されてしまう
(返り値=NOSYC)、というものです。
そこで、一旦プログラムを終了し、Hamlog.dx* をハンド削除後、
起動(インデックスの再作成を実施)したのですが、同様に
THW_seek()したところ、これが改善せず、同様に NOSYC を返して
きてしまいます。
多分、私の、データの Append の手順が良くなく、THW_append()
の前後に、他の手続き(サービス関数のCALL)が必要なのではな
いか、と感じてます。ここをどうかご教授賜りたく。
また、別件ですが、以下の2点も追加で質問させていただきたく。
(1) Th.Qso.Flag1 の詳細
"DXの場合、8〜10" と説明されているところがありますが、つまり
ここはビット単位で色々な細かい情報を保持しているものと思われ
ます。その詳細と、使用法を教えてください。
私の現在の思い込みでは、国内QSOは 0、DX QSO時は 8 をセット
してやる、くらいで、これだけでやっております。
(2) THW_idxrmv() の機能
仕様書を何度読み返しても、意味がつかめません。まず、この
関数は、READ時に有用なのでしょうか、WRITE時に有用なのでしょ
うか?。そして、どういう局面で、何の目的に使用するのでしょ
うか?。
私の勝手な思い込みですが、そもそも、THW_append() はデータ
部の追加しか行っておらず、インデックスに対してお手当てして
いない(だから先述の様な問題が起こっている?)。インデックス
に対して、別途お手当てが必要で、そして、これを行うのがこの
関数ではないか?、と、邪推しているところなんです…。
私のローカルのブラインドハムさんの期待も高いことから、何
とか解決したいと思ってます。夢は、フリーソフトとして一般公開
することです…。
どうぞよろしくお願い致します。草々