HAMLOG プログラム開発室


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

Re: idx_search 続き
679
2015/02/13(Fri) 22:20:09
JG1MOU浜田
> 「ブロックコピー」とは下記のような例でしょうか。

Win32APIの、CopyMemory()や MoveMemory()です。
構造体などのメモリブロックをコピーします。

> idx_next()  はキーで検索されたレコード番号の次が取れる。
> ここで例えば、上記で取ったレコード番号のキー文字列を取得できる
> idx_next_ReadKeyStr() とかがあると便利かと思いました。

日付時間は文字列で保存していないので、VB用に作るのは私には
よくわかりません。
このスレッドは管理者によってロックされていますので、返信並びに編集は出来ません!
pagetop
タイトル
記事No
投稿日
投稿者

Re: idx_search 続き
678
2015/02/13(Fri) 06:28:43
JA2BQX 太田
こんにちは、お世話になります。

> 2000年、0時、0分など、ゼロは文字列の終端となってしまうので、
> VBで扱えるのでしょうか?
> C言語でもゼロを途中に含む文字列コピーはできません。
> ブロックコピーなら可能ですが。。。

「ブロックコピー」とは下記のような例でしょうか。
buf1 = "20000000"
buf2 = buf1

ブロックコピーでは無いゼロを途中に含む文字列コピーと言うと
VBではどんな場合の事でしょうか。

idx_next()  はキーで検索されたレコード番号の次が取れる。
ここで例えば、上記で取ったレコード番号のキー文字列を取得できる
idx_next_ReadKeyStr() とかがあると便利かと思いました。
    
このスレッドは管理者によってロックされていますので、返信並びに編集は出来ません!
pagetop
タイトル
記事No
投稿日
投稿者

Re: idx_search 続き
677
2015/02/12(Thu) 21:43:03
JG1MOU浜田
> Idx_ReadKey() および VBでは Vidx_ReadKey() ですが
> この関数では直接インデックスキー文字列が取れるようですが Call と Code しかないようです。
> Date もあるとFBかと思いますが。

2000年、0時、0分など、ゼロは文字列の終端となってしまうので、
VBで扱えるのでしょうか?
C言語でもゼロを途中に含む文字列コピーはできません。
ブロックコピーなら可能ですが。。。
このスレッドは管理者によってロックされていますので、返信並びに編集は出来ません!
pagetop
タイトル
記事No
投稿日
投稿者

Re: idx_search 続き
676
2015/02/11(Wed) 19:03:26
JA2BQX 太田
こんばんは、度々お世話になります。

> idx_next() を使い、日付が変わるまでループします。

Idx_ReadKey() および VBでは Vidx_ReadKey() ですが
この関数では直接インデックスキー文字列が取れるようですが Call と Code しかないようです。
Date もあるとFBかと思いますが。
このスレッドは管理者によってロックされていますので、返信並びに編集は出来ません!
pagetop
タイトル
記事No
投稿日
投稿者

Re: idx_search 続き
675
2015/02/11(Wed) 18:20:31
JA2BQX 太田
こんばんは、ありがとうございます。

> idx_next() を使い、日付が変わるまでループします。

dbf_read() や THW_read() でhdbを読み込み日付を取得して
変わったかを確認すると言う事でしょうか?
このスレッドは管理者によってロックされていますので、返信並びに編集は出来ません!
pagetop
タイトル
記事No
投稿日
投稿者

Re: idx_search 続き
674
2015/02/11(Wed) 17:38:04
JG1MOU浜田
idx_next() を使い、日付が変わるまでループします。
このスレッドは管理者によってロックされていますので、返信並びに編集は出来ません!
pagetop
タイトル
記事No
投稿日
投稿者

Re: idx_search 続き
673
2015/02/11(Wed) 11:23:15
JA2BQX 太田
> 例えば Hamlog.hdb に 日付が "20010203" のデータが

日付を1日づつ加算して行きレコード番号が求められたらそのー1を求める手もありますね。
このスレッドは管理者によってロックされていますので、返信並びに編集は出来ません!
pagetop
タイトル
記事No
投稿日
投稿者

idx_search 続き
672
2015/02/11(Wed) 10:34:33
JA2BQX 太田
こんにちは。お世話になります。
先日の idx_search の続きですが、

例えば Hamlog.hdb に 日付が "20010203" のデータが
レコード番号 100から104までだったとして下記で最初の 100 は求まります。
キー "20010203" の最後の 104 を求めるにはどうすれば良いでしょうか?
100から順番にhdbを読み込み、 Date を求めて行き、"20010203" ではなくなるレコードまで
順次判定して行くしかありませんか?

MakeIndex(hamlogpath, "DATE", "C:\thw2adi\Date.Ndx")
Dim str As String = "20010203"
途中省略
rec_no_1st = idx_search(THindx, search_date, 0)


下記関数の使い方が分かっていないからかも知れませんが。
idx_top()   : hdbの最初のレコード番号 1 
idx_bottom()  : hdbの最終レコード番号
上記では単純過ぎるので、正しい使い方が他にあるのかも?

idx_next()   :  キーで検索されたレコード番号の次。
このスレッドは管理者によってロックされていますので、返信並びに編集は出来ません!
pagetop
タイトル
記事No
投稿日
投稿者

Re: idx_search
671
2015/02/09(Mon) 22:07:21
JA2BQX 太田
こんばんは。浜田さん、ありがとうございます。
午前中から 同じようなことをしているのですが成功していませんでしたが
今、改めてテストしたら取得出来るようです....。

> 分の数値 or &H80 です。


Dim str As String = "1200"
fp0 = Val(str.Substring(0, 2))
fp1 = Val(str.Substring(2, 2))

search_time_ary(0) = CByte(fp0)

下記のどちらでOKです。
search_time_ary(1) = &H80 Or CByte(fp1)
search_time_ary(1) = CByte(128) Or CByte(fp1)

午前中のテストとコードは変わらないのですがテスト環境 (Hamlog.hdb) が間違えていたのかな....??

次の Date+Time のUTCも取れるようになりました。
的確なアドバイスを何時もありがとうございます。
このスレッドは管理者によってロックされていますので、返信並びに編集は出来ません!
pagetop
タイトル
記事No
投稿日
投稿者

Re: idx_search
670
2015/02/09(Mon) 20:28:13
JG1MOU浜田
> 1200 でサーチすると 12:00 J のレコード番号が求められます。
> 12:00 U のレコード番号を求めるにはどうしたらいいでしょうか?

分の数値 or &H80 です。
分 = 分 or &H80
論理和っていうのでしょうか。

逆に、最上位ビットをカットして分の値を取り出すには、
分の数値 and &H7F です。
分 = 分 and &H7F
論理積っていうのでしょうか。
このスレッドは管理者によってロックされていますので、返信並びに編集は出来ません!
pagetop