たまたまGetTickCountの49.7日の境目を通過したと思しき値の急変を経験しました。
ログで処理時間を記録する必要があり、GetTickCountを使用していましたが、境目を意識したプログラムになっていません、下記にて修正を加えるつもりです。
『メイン側』
Dim arg_apiS As Long
arg_apiS = GetTickCount
・・・・処理・・・・
Dim arg_apiN As Long
Dim arg_subTime As Long
arg_apiN = GetTickCount
Call ******(arg_apiS, arg_apiN, arg_subTime)
select case arg_subRslt
・・・・・・
『CallSub側』
Sub ******(ByRef arg_apiS As Long,arg_apiN As Long, arg_subTime As Long)
Select Case True
Case arg_apiS < arg_apiN
arg_subRslt = arg_apiN - arg_apiS
Case arg_apiS < arg_apiN
arg_subRslt = (2 ^ 32 - arg_apiS) + arg_apiN
End Select
単純動作は確認OKですが、境目の模擬的発生もできず・・・
境目を跨いだ状態でも、正常に動くのか確認したく質問しました。
よろしくお願いします。
No.2ベストアンサー
- 回答日時:
Case arg_apiS < arg_apiNはまずいですね。
arg_apiS = 49.6日
arg_apiN = 49.8日(オーバーフローして0.1日となる)
この場合に意図した動作になりません。
このサブルーチンの中でもう一度GetTickCountで時間を取得します。仮にこの時間をXとしましょう。
S = X - arg_apiS
N = X - arg_apiN
このSとNを比較すれば49.7日の境目の影響を受けません。検証してみましょう。
arg_apiS = 49.6日
arg_apiN = 0.1日(49.8日)
X = 1.0日
S = X - arg_apiS = 1.1日前(-48.7日のアンダーフロー)
N = X - arg_apiN = 0.9日前
比較すればarg_apiSの方が古いと正しく判断できます。
これが基本的なオーバーフロー(49.7日)問題の回避方法です。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- PHP コメント機能に返信欄を矢印で追加したい 1 2022/05/09 21:17
- 数学 複素数についての質問です。 z=(1+i)^iの時の主値の求め方を教えて頂きたいです。 また、範囲は 2 2022/07/22 19:29
- 数学 この問題なんですが下の回答の図を実軸方向にマイナス1だけ動かしたものなんですが arg(z-1)=π 4 2023/04/15 15:50
- C言語・C++・C# c言語 コマンドライン引数 4 2023/02/09 18:47
- 数学 複素数の問題の解を求めたいのですが、その方法は・・? z^3=3+4iの絶対値は「5」であっています 2 2023/07/10 21:06
- 工学 Pythonの3Dグラフ表示に関する質問です。 1 2022/12/06 15:03
- 数学 z^3=複素数 の1つの解をxとし、 arg x=θとすると、 (←これはxの位置と原点で構成する角 3 2023/06/30 10:22
- Visual Basic(VBA) select caseの入れ子 3 2023/03/08 18:48
- Visual Basic(VBA) Vbaで数式をポーランド記法に変換するコードを作って実行しようとするとフリーズします。 1 2022/05/24 17:53
- Visual Basic(VBA) 【追加】ファイルを閉じてダイアログで保存した時だけ処理の実行をする 3 2022/03/23 15:43
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
vbs ブック共有を解除
-
Vba TextBox1.ControlSourceに...
-
Excel VBA 定義されたプロージ...
-
excelのVBAについて、以下のコ...
-
IF文、条件分岐の整理方法
-
【ExcelVBA】インデックスが有...
-
Excel VBA マクロ あるフォルダ...
-
メールの件名をデコードしたい
-
VBA指定行削除
-
VBA ユーザーフォーム ボタンク...
-
VB.net(VB)で、フォームにExcel...
-
VBA 別ブックからコピペしたい...
-
VBAの質問です、複数のテキスト...
-
A列に記載されているフォルダ...
-
C列に”済”が入力されたら入力さ...
-
サブフォルダに格納されている...
-
VBAコードのインデント表示
-
【ExcelVBA】値を変更しながら...
-
時間短縮のために、テキストフ...
-
Excel VBA 選択範囲の罫線色の...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
「arg」は何の略?
-
例外の再スロー時に、その原因...
-
fortranを用いた行列の掛け算に...
-
pythonのプログラミング
-
英語訳をおねがいします
-
【ruby】クラスCGIを改造したい
-
【ruby】無名関数?でブロック...
-
rubyについて質問です
-
.size .atとは?(挿入ソート)
-
Rubyでクラスファイルをディレ...
-
ブロックローカル変数
-
計算の途中経過を表示
-
VBA/GetTickCountの49.7日の境...
-
Ruby Selenium 要素の待機
-
cos波表示について マクローリ...
-
Ruby Selenium リンクの取得方法
-
Ruby インスタンス変数@fooを...
-
【Ruby】基本的な質問 数字を...
-
SMLのエラーについて
-
Ruby evalで代入
おすすめ情報