一括表示
タイトル
記事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() : キーで検索されたレコード番号の次。
このスレッドは管理者によってロックされていますので、返信並びに編集は出来ません!
タイトル
記事No
投稿日
投稿者
: Re: idx_search 続き
: 673
: 2015/02/11(Wed) 11:23:15
: JA2BQX 太田
> 例えば Hamlog.hdb に 日付が "20010203" のデータが
日付を1日づつ加算して行きレコード番号が求められたらそのー1を求める手もありますね。
このスレッドは管理者によってロックされていますので、返信並びに編集は出来ません!
タイトル
記事No
投稿日
投稿者
: Re: idx_search 続き
: 674
: 2015/02/11(Wed) 17:38:04
: JG1MOU浜田
idx_next() を使い、日付が変わるまでループします。
このスレッドは管理者によってロックされていますので、返信並びに編集は出来ません!
タイトル
記事No
投稿日
投稿者
: Re: idx_search 続き
: 675
: 2015/02/11(Wed) 18:20:31
: JA2BQX 太田
こんばんは、ありがとうございます。
> idx_next() を使い、日付が変わるまでループします。
dbf_read() や THW_read() でhdbを読み込み日付を取得して
変わったかを確認すると言う事でしょうか?
このスレッドは管理者によってロックされていますので、返信並びに編集は出来ません!
タイトル
記事No
投稿日
投稿者
: Re: idx_search 続き
: 676
: 2015/02/11(Wed) 19:03:26
: JA2BQX 太田
こんばんは、度々お世話になります。
> idx_next() を使い、日付が変わるまでループします。
Idx_ReadKey() および VBでは Vidx_ReadKey() ですが
この関数では直接インデックスキー文字列が取れるようですが Call と Code しかないようです。
Date もあるとFBかと思いますが。
このスレッドは管理者によってロックされていますので、返信並びに編集は出来ません!
タイトル
記事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言語でもゼロを途中に含む文字列コピーはできません。
ブロックコピーなら可能ですが。。。
このスレッドは管理者によってロックされていますので、返信並びに編集は出来ません!
タイトル
記事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() とかがあると便利かと思いました。
このスレッドは管理者によってロックされていますので、返信並びに編集は出来ません!
タイトル
記事No
投稿日
投稿者
: Re: idx_search 続き
: 679
: 2015/02/13(Fri) 22:20:09
: JG1MOU浜田
> 「ブロックコピー」とは下記のような例でしょうか。
Win32APIの、CopyMemory()や MoveMemory()です。
構造体などのメモリブロックをコピーします。
> idx_next() はキーで検索されたレコード番号の次が取れる。
> ここで例えば、上記で取ったレコード番号のキー文字列を取得できる
> idx_next_ReadKeyStr() とかがあると便利かと思いました。
日付時間は文字列で保存していないので、VB用に作るのは私には
よくわかりません。
このスレッドは管理者によってロックされていますので、返信並びに編集は出来ません!
タイトル
記事No
投稿日
投稿者
: Re: idx_search 続き
: 680
: 2015/02/13(Fri) 22:31:55
: JA2BQX 太田
こんばんは。
お手数をお掛けしました。
先に書いた日付けを+1して探すや、 THW_read() で目的の
処理は出来ましたので、この方法で利用させて頂きます。
大変ありがとうございました。
このスレッドは管理者によってロックされていますので、返信並びに編集は出来ません!
タイトル
記事No
投稿日
投稿者
: Re: idx_search 続き
: 686
: 2015/02/22(Sun) 18:11:57
: JP7CZE 川辺
> 2000年、0時、0分など、ゼロは文字列の終端となってしまうので、
> VBで扱えるのでしょうか?
> C言語でもゼロを途中に含む文字列コピーはできません。
> ブロックコピーなら可能ですが。。。
受け渡しは文字列ですよね?
バイナリーの &H00 は文字列の終端ですが,&H30 は問題ないです.
このスレッドは管理者によってロックされていますので、返信並びに編集は出来ません!
タイトル
記事No
投稿日
投稿者
: Re: idx_search 続き
: 687
: 2015/02/22(Sun) 19:01:38
: JA2BQX 太田
JP7CZE 川辺さん、こんばんは。お久しぶりです。
コメントありがとうございます。
> 受け渡しは文字列ですよね?
そうです。
> バイナリーの &H00 は文字列の終端ですが,&H30 は問題ないです.
何か希望した機能実現は面倒な雰囲気ですし、先に書いた案で処理出来ましたので良しとしています。
キーのレコード番号が分かり、次のレコード番号のキー文字列が分かる
関数があれば当然楽なのですが。
このスレッドは管理者によってロックされていますので、返信並びに編集は出来ません!
タイトル
記事No
投稿日
投稿者
: Re: idx_search 続き
: 688
: 2015/02/22(Sun) 21:17:50
: JA2BQX 太田
訂正です。
年月日、時刻は16進数ですので 00 もありえます。
このスレッドは管理者によってロックされていますので、返信並びに編集は出来ません!
タイトル
記事No
投稿日
投稿者
: Re: idx_search 続き
: 689
: 2015/02/23(Mon) 20:33:15
: JG1MOU浜田
> 受け渡しは文字列ですよね?
>
> バイナリーの &H00 は文字列の終端ですが,&H30 は問題ないです.
日付時間の実データは文字列ではありません。数値です。
00:00は &H00 &H00 となってしまいますので、C言語ならCopyMemory()
などでコピーできますが、VBの場合はやり方が分からない、という
話でした。
このスレッドは管理者によってロックされていますので、返信並びに編集は出来ません!