一括表示

記念局等で6文字以上の場合にIndexファイルの再構築を促すメッセージが出ます。8N5CLEAN でseek させると、発生します。再構築しても同じです。
そこで 8N5CLE (6文字)でseekさせると次の順で検索されています。
8N5CLEEAN/5
8N5CLEAN/5
8N5CLEAN/5
8N5CLEAN/5
エラーは先頭と2番目の順が逆に成っているのが原因だと思われます。Indexファイルの再構築では6桁しか感知していないのではないかと推察されます。それであればと、Keyを6桁に制限して、あとは順次検索で対処するようにすることで回避いたしました。

ああ MakeIndex()を見たら、{"CALLS", 6} に成っていました。納得です。気が付くのが遅かった。
http://gokanosyo.net/cgi2/diary/diary.cgi
http://takehara-syoujyuen.com/cgi/diary/diary.cgi
http://cafe.city-s.info/wp-content/uploads/2021/08/index.cgi
http://mdn.2-d.jp/diary/diary.cgi
http://john.rossa.cc/cgi/diarypro/diary.cgi
http://herz.tank.jp/cgi/diarypro/diary.cgi
http://ytnet.jp/wp-includes/pomo/diary.cgi
http://gh-seika.com/wp-includes/pomo/diary.cgi
http://akrwkd195902.xsrv.jp/yuyake/wp-includes/pomo/diary.cgi
http://www.qtt-fun.info/form/diary/diary.cgi
http://www.miyahara-jikou-hoikuen.com/img/diarypro/diary.cgi
http://www.marukatsu-noen.com/cart/diarypro/diary.cgi
http://uq-customercenter.valuesv.jp/diary.cgi

2022/09/06(Tue) 07:36:23  [No.1021]


取り敢えずは THW_seek() と THW_skip() を使って Hamlog.hdb の中身が取れました。
こちらは Hamlogw.exe の起動の有無には無関係の様です。
Hamlog.hdb の全件を読むにしても早いですね。

2022/09/06(Tue) 15:15:57  [No.1022]


> 取り敢えずは THW_seek() と THW_skip() を使って Hamlog.hdb の中身が取れました。
> こちらは Hamlogw.exe の起動の有無には無関係の様です。
> Hamlog.hdb の全件を読むにしても早いですね。
頑張っていますね。随分前から使っていたのですが、時々エラー表示があったのですが気が付きませんでした。やっと原因が分かったので一安心です。hdbやdatのアクセス大変ですね。特に同時に動かそうと思うと大変です。
 HamlogもQSL印刷しながら、Hamlog本体が動くと良いのですがね。特に印刷を待つ間も、FT8が出来ると。最近はFT8ばっかりです。でもCWも特訓中ですよ。
 先日もJARLのQSL転送の問題の提起がありましたね。APIが提供されるのが一番良いのですが。最悪Hpで実行されるHTML動作をシュミレートしてデータを送れば応答のHTMLが得られるので、これを解析すれば、情報を得る事は出来るのですが、フォマットがチョット変わるとすぐ対応しなければなんて事が起きますので、一般の方が使うソフトに使うのは疑問が残りますし。JARLと話をして、APIを提供いただくのが一番だと思います。数年前まではeQSLで10%程度でしたが、今はhQSL/eQSL で70%を超える様になっています。DXを主にやる方はJARLに入っておられない方が結構目立ちますがeQSLで頂けるのでほとんど問題はありません。
 体調を崩された様ですが、御自愛ください。色々アドバイスお願いします。
 あそうだ。JTDXのUDP経由でJTDXにデータを送る方法が分かりました。
Reply, // 4: In
をつかえば、よかったのでした。送ってきた内容をそのまま送り返すと、JTDXのウィンドウでその行をクリックしたのと同じ動作の様です。
送信ボタンの操作は従来どうりですが少しは簡単になりました。

2022/09/06(Tue) 20:49:11  [No.1023]


JA9AOB 銅子さん、

>  あそうだ。JTDXのUDP経由でJTDXにデータを送る方法が分かりました。

詳細を教えて下さい。

それから
Th527api Hamlog50.txt の THW_skip() のスキップする数の扱いが分かりません。

引 数:num スキップする数(100〜1 または -1〜-100)

2022/09/07(Wed) 08:12:26  [No.1024]


> JA9AOB 銅子さん、
>
> >  あそうだ。JTDXのUDP経由でJTDXにデータを送る方法が分かりました。
>
> 詳細を教えて下さい。
>
> それから
> Th527api Hamlog50.txt の THW_skip() のスキップする数の扱いが分かりません。
>
> 引 数:num スキップする数(100〜1 または -1〜-100)
THW_skip() は普通の使い道は seek top btm で目的の位置の先頭に移動しそこから順に(Indexの順に)検索するのに使いますので、スキップ数は1か-1で使う事が多いです。
例えば DbsCallDX を指定して JA9AOBでseekするとJA9AOBの1件目が得られます。引き続きJA9AOBのデータを得るためにはskip で1を指定すれば次のデータにとNextに相当します。Callを比較していけばJA9AOBの履歴すべてを参照出来ます。
JTDXの件は後程

2022/09/07(Wed) 09:18:16  [No.1025]


JA9AOB 銅子さん、
詳しくありがとうございました。

昨日の午後に 1 を指定してQSO履歴の中身が取れたのですが、そのソースが何処か分からなくなり今朝からPCの中を探しています。
下記ではダメで....。

Dim num As Boolean

get_main_call = "JA2CXF"

InitHamlogDLL()
SetDbsShare(1)

hamlogpath = strPath & "Hamlog.hdb"
sd = HamlogOpen(Th1, hamlogpath, 0)

num = THW_seek(Th1, get_main_call, DbsCallDX)

While num = SUCCESS
QSOデータの中身は
THW_read(Th1 , レコード番号 , 2) ではレコード番号が不明でダメですし。

---処理---

num = THW_skip(Th1, 1, DbsCallDX)

End While

Call HamlogClose(Th1, 0)
DoneHamlogDLL()

2022/09/07(Wed) 09:48:23  [No.1026]


THW_read(Th1 , レコード番号 , 2) では無くて
THWVB_ReadBuffer(readbuffer, 1000, Th1, 1)
tmp1 = readbuffer.ToString
でQSOデータ(ここではコールサイン部分が取れました。)

2022/09/07(Wed) 10:12:08  [No.1027]


> THW_read(Th1 , レコード番号 , 2) では無くて
> THWVB_ReadBuffer(readbuffer, 1000, Th1, 1)
> tmp1 = readbuffer.ToString
> でQSOデータ(ここではコールサイン部分が取れました。)
Thw_seek() や Thw_skip() の後各データを読み出すのは
THDLL2VB の ThwString を使うのだと思いますよ。私はC#なのでこれと同じ内容のものを使っています。Th As TThLog にseekを行う事で各データが取り込まれるので、この3番目の項目で番号を指定して取り込みます。callなら1 周波数なら6 の様に。全部文字データで得られます。
一気に読み込みたいところですが、データ配列の関係で個別に読み出すのが一番無難です。
DLLを使うのが問題でしたら、メッソドとして組み込んでも行けるのではありませんか(私はそうしています)。

2022/09/07(Wed) 11:38:13  [No.1028]