HAMLOG開発室は、HAMLOGに関連したプログラム開発(C、パスカル、VB言語等、又はDLL)についての
専用BBSです。プログラム言語に関する投稿以外は通常のHAMLOG相談室に投稿して下さい。
HAMLOG開発室BBS

> こんにちは。下記についてご指導お願いします。
> eQSL.cc の Archive ファイルのデータ処理で 拙作の eQSL2THw の照合処理の処理時間が掛かり過ぎるので改良したいと思い対処中です。
>
> MakeIndex("C:\Hamlog\Hamlog.hdb", "CALLS+FREQ+MODE", "C:\Hamlog¥Calls_Freq_Mode.Ndx") にてインデックス・ファイルを作成。
> Calls_Freq_Mode.Ndx は作成されます。

"CALLS+FREQ+MODE" ですが、周波数は文字列としていますので、
1.9 10 1200 14 144 18 21 24 28 3.5 430 50 7
のような感じで並んでしまうと思います。
"CALLS" だけで十分では? つまり、現状のHAMLOGデータを開くだけ。
MakeIndex() を使う必要もありません。

//以下、HAMLOGのQRコード照合ルーチンからの一部引用です。
//日付時間のチェックルーチン次第ですが、
// 照合は一瞬で完了すると思います。
//ベタC言語で書いたのですが、読みづらくてすみません。
TThLog ThwinTh; //データバッファ
int rno; // レコード番号
char *lpCall = "JA2BQX";
char *lpFreq = "14"; //14MHz
if (HamlogOpen(NULL, ThwinTh, "C:\HAMLOG\HAMLOG.mst", 1)!=SUCCESS)
return -1; //ファイルオープン失敗
rno = idx_search(&ThwinTh.Ndxp[0], lpCall, 6);
// 16==Name, QTH, Rmks1, Rmks2を読み込まないので少し速いかも
while (THW_read(ThwinTh, rno, 16)==SUCCESS)
{ if (strlcmp(ThwinTh.logdt.calls, lpCall, 6)!=0)
return 0; // 違うコールになった
if ((FreqPCheck(lpFreq)==FreqPCheck(ThwinTh.Qso.Freq))
&& (日付時間のチェックルーチン呼び出し))
return 1; //照合OK!!
rno = idx_next(&ThwinTh.Ndxp[0]);}

rerurn 0; //該当コールサイン無し
//HamlogClose()も忘れずに。

2024/01/16(Tue) 14:21:13  [No.1064]


- 関連一覧ツリー (★ をクリックするとツリー全体を一括表示します)
- 返信フォーム (この記事に返信する場合は下記フォームから投稿して下さい)
Call 名前 ※必須
文字色
Eメール
タイトル sage
URL
メッセージ 手動改行 強制改行 図表モード
メッセージには上記と同じURLを書き込まないで下さい
画像File  (130kBまで)
暗証キー (英数字で8文字以内)
投稿キー (投稿時 投稿キー を入力してください)
プレビュー