新着表示
タイトル
記事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 をバイト配列に入れてテストしていますが間違いのようです。
どのように処理すれば良いのでしょうか?
このスレッドは管理者によってロックされていますので、返信並びに編集は出来ません!
タイトル
記事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件くらいを探し出すのでも、瞬時に表示して
くれます。
このスレッドは管理者によってロックされていますので、返信並びに編集は出来ません!
タイトル
記事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)
このスレッドは管理者によってロックされていますので、返信並びに編集は出来ません!
タイトル
記事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 のファイルサイズとレコード件数の帳尻が合わないみたいなので
> データ構造の調べが間違えているように思っています。
> 出来ればデータ構造を教えていただけますか?
ファイルサイズとレコード件数は、釣り合わないはずです。
そんな単純な構造ではありません。
ですが、参考文献も処分してしまって・・・。
自分でもほとんど忘れてます。
データ構造を理解しなくても使えると思いますけど。
このスレッドは管理者によってロックされていますので、返信並びに編集は出来ません!
タイトル
記事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
このスレッドは管理者によってロックされていますので、返信並びに編集は出来ません!
タイトル
記事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 のファイルサイズとレコード件数の帳尻が合わないみたいなので
データ構造の調べが間違えているように思っています。
出来ればデータ構造を教えていただけますか?
このスレッドは管理者によってロックされていますので、返信並びに編集は出来ません!
タイトル
記事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をよく読む! 投稿先を良く確認して間違えない事!
このスレッドは管理者によってロックされていますので、返信並びに編集は出来ません!
タイトル
記事No
投稿日
投稿者
: 時間表示をUTCに固定化したい
: 662
: 2015/02/08(Sun) 10:00:15
: JH1NLE
時間表示を 国内&海外ともにUTCにしたいのですが 何か方法ありませんか、現在 DXに印しを付けておけば UTCになるのですが 国内の局はUTCにするのに作業が必要になります
このスレッドは管理者によってロックされていますので、返信並びに編集は出来ません!
タイトル
記事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
このスレッドは管理者によってロックされていますので、返信並びに編集は出来ません!
タイトル
記事No
投稿日
投稿者
: Re: idx_search
: 660
: 2015/02/08(Sun) 08:19:02
: JA2BQX 太田
こんにちは。
バイナリー・エディターで中身を見ると
Hamlog.hdb と Date.Ndx との1レコード目の Date の16進数は
同じなのですが、検索キーの指定がまずいのかな?
何か事前処理が必要とも思えないのですが、悩んでいます...Hi。
VBユーザーでどなたか同じ処理をして経験がありますか?
このスレッドは管理者によってロックされていますので、返信並びに編集は出来ません!