HAMLOG プログラム開発室


新着表示
タイトル
記事No
投稿日
投稿者

Re: idx_search
669
2015/02/09(Mon) 07:50:01
JA2BQX 太田
こんにちは。

> バイト型の配列の1要素に、文字列?がコピーできてしまうのですか。

例の暗黙的変換?をしてくれているのかも、Hi。
str = "1200"
fp0 = Val(str.Substring(0, 2))
fp1 = Val(str.Substring(2, 2))
search_time_ary(0) = CByte(fp0)
search_time_ary(1) = CByte(fp1)
     ...とかが良いでしょうね、これで動きます。

1200 でサーチすると 12:00 J のレコード番号が求められます。
12:00 U のレコード番号を求めるにはどうしたらいいでしょうか?

Hamlog50.txt には 分の最上位ビットが1であればUTC とあります。
1000 0000 は 16進数で 80 なので10進数の128を加算して
12 と 128+0 をバイト配列に入れてテストしていますが間違いのようです。

どのように処理すれば良いのでしょうか?
このスレッドは管理者によってロックされていますので、返信並びに編集は出来ません!
pagetop
タイトル
記事No
投稿日
投稿者

Re: idx_search
668
2015/02/08(Sun) 22:53:51
JG1MOU浜田
> Dim search_date As String
> Dim search_date_ary(4) As Byte
>
> search_date_ary(0) = "20"
> search_date_ary(1) = "15"
> search_date_ary(2) = "01"
> search_date_ary(3) = "05"

バイト型の配列の1要素に、文字列?がコピーできてしまうのですか。

また、エンコードルーチンを呼び出す必要があるのですね。

いずれにしても、インデックスルーチンを使うと、検索がめちゃくちゃ
高速になります。

ハムログにおける、コールサインのサフィックス・サーチやワイルドカ
ード・サーチでは、HAMLOG.DX0からサーチしてますので20万件以上の
データから任意の100件くらいを探し出すのでも、瞬時に表示して
くれます。
このスレッドは管理者によってロックされていますので、返信並びに編集は出来ません!
pagetop
タイトル
記事No
投稿日
投稿者

Re: idx_search
667
2015/02/08(Sun) 18:16:29
JA2BQX 太田
浜田さん、何回もありがとうございました。
下記のように修正したら目的のレコード番号が取得出来ました。

Dim search_date As String
Dim search_date_ary(4) As Byte

search_date_ary(0) = "20"
search_date_ary(1) = "15"
search_date_ary(2) = "01"
search_date_ary(3) = "05"

MakeIndex(hamlogpath, "DATE", "C:\thw2adi\Date.Ndx")
Ret = idx_open("C:\thw2adi\Date.Ndx", THindx)

search_date = System.Text.Encoding.GetEncoding(932).GetString(search_date_ary)

rec_no_1st = idx_search(THindx, search_date, 0)

Call idx_close(THindx)
このスレッドは管理者によってロックされていますので、返信並びに編集は出来ません!
pagetop
タイトル
記事No
投稿日
投稿者

Re: idx_search
666
2015/02/08(Sun) 16:33:38
JG1MOU浜田
> Function idx_search(p As TIDXh, ByVal s As String, ByVal l As Long) As Long
> これを見るとキーは String ですが?

VBの場合はそのように宣言するしか思いつきませんでした。
C言語やPascalではchar型のポインタ、又はcharの配列です。


> Date.Ndx のファイルサイズとレコード件数の帳尻が合わないみたいなので
> データ構造の調べが間違えているように思っています。
> 出来ればデータ構造を教えていただけますか?

ファイルサイズとレコード件数は、釣り合わないはずです。
そんな単純な構造ではありません。
ですが、参考文献も処分してしまって・・・。
自分でもほとんど忘れてます。

データ構造を理解しなくても使えると思いますけど。
このスレッドは管理者によってロックされていますので、返信並びに編集は出来ません!
pagetop
タイトル
記事No
投稿日
投稿者

Re: 時間表示をUTCに固定化したい
665
2015/02/08(Sun) 12:05:16
JG1MOU浜田
> 時間表示を 国内&海外ともにUTCにしたいのですが 何か方法ありませんか、現在 DXに印しを付けておけば UTCになるのですが 国内の局はUTCにするのに作業が必要になります


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

常にUTCにする方法は、こちらをご覧ください。
http://hamlog.no.coocan.jp/html/HID00045.html
このスレッドは管理者によってロックされていますので、返信並びに編集は出来ません!
pagetop
タイトル
記事No
投稿日
投稿者

Re: idx_search
664
2015/02/08(Sun) 11:56:17
JA2BQX 太田
浜田さん、ありがとうございます。 しかしまだ上手くいきません。

> > search_date には search_date = "01/02/03" 形式で良いでしょうか?
>
> 日付は数値で4バイト、時間は2バイトだったような・・・。
> 文字ではなく数値です。
> search_date[0] = 20
> search_date[1] = 1
> search_date[2] = 2
> search_date[3] = 3

Function MakeIndex(ByVal s As String, ByVal k As String, ByVal i As String) As Long を見ると
{"DATE", 4 } なので4バイトか...と思ってはいました。これはバイナリーになった時のバイト数ですね。

Function idx_search(p As TIDXh, ByVal s As String, ByVal l As Long) As Long
これを見るとキーは String ですが?

作成された Date.Ndx を見ると ヘッダー部が 520バイトかと。
データ部は1レコード当たり12バイトのように見えます。

レコード番号 : 4バイト 、日付 : 4バイト 、 ダミー: 4バイト


Date.Ndx のファイルサイズとレコード件数の帳尻が合わないみたいなので
データ構造の調べが間違えているように思っています。
出来ればデータ構造を教えていただけますか?
このスレッドは管理者によってロックされていますので、返信並びに編集は出来ません!
pagetop
タイトル
記事No
投稿日
投稿者

Re: 時間表示をUTCに固定化したい
663
2015/02/08(Sun) 11:36:38
JA2BQX 太田
ここはプログラム開発関係の掲示板です。
Hamlogの使い方は隣の 「HAMLOG BBS」に投稿してください。

> 時間表示を 国内&海外ともにUTCにしたいのですが 何か方法ありませんか、現在 DXに印しを付けておけば UTCになるのですが 国内の局はUTCにするのに作業が必要になります 

せっかくの投稿なので回答しておきますが、
メニューの「オプション」「環境設定」「設定2」の中の「国内局 」の欄を ---------- にでも書き換えて再起動。


HELPの下記に、その旨の記載がありますよ。
http://hamlog.no.coocan.jp/html/HID00077.html

疑問などがあったらまずはHELPをよく読む!  投稿先を良く確認して間違えない事!
このスレッドは管理者によってロックされていますので、返信並びに編集は出来ません!
pagetop
タイトル
記事No
投稿日
投稿者

時間表示をUTCに固定化したい
662
2015/02/08(Sun) 10:00:15
JH1NLE
時間表示を 国内&海外ともにUTCにしたいのですが 何か方法ありませんか、現在 DXに印しを付けておけば UTCになるのですが 国内の局はUTCにするのに作業が必要になります 
このスレッドは管理者によってロックされていますので、返信並びに編集は出来ません!
pagetop
タイトル
記事No
投稿日
投稿者

Re: idx_search
661
2015/02/08(Sun) 08:33:17
JG1MOU浜田
> search_date には search_date = "01/02/03" 形式で良いでしょうか?

日付は数値で4バイト、時間は2バイトだったような・・・。
文字ではなく数値です。

search_date[0] = 20
search_date[1] = 1
search_date[2] = 2
search_date[3] = 3
このスレッドは管理者によってロックされていますので、返信並びに編集は出来ません!
pagetop
タイトル
記事No
投稿日
投稿者

Re: idx_search
660
2015/02/08(Sun) 08:19:02
JA2BQX 太田
こんにちは。

バイナリー・エディターで中身を見ると
Hamlog.hdb と Date.Ndx との1レコード目の Date の16進数は
同じなのですが、検索キーの指定がまずいのかな?
何か事前処理が必要とも思えないのですが、悩んでいます...Hi。

VBユーザーでどなたか同じ処理をして経験がありますか?
このスレッドは管理者によってロックされていますので、返信並びに編集は出来ません!
pagetop