
たまたま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ランキング
-
Vba Array関数について教えてく...
-
vbsでのwebフォームへの入力制限?
-
VBAでCOPYを繰り返すと、処理が...
-
【マクロ】シートの変数へ入れ...
-
【マクロ】並び替えの範囲が、...
-
エクセルのマクロについて教え...
-
VBAの「To」という語句について
-
【マクロ】売上一覧YYYYMMDDHHS...
-
【マクロ】開いているブックの...
-
Vba セルの4辺について罫線が有...
-
Excelマクロで使うVBAコードを...
-
算術演算子「¥」の意味について
-
Excelのマクロについて教えてく...
-
エクセルの改行について
-
vb.net(vs2022)のtextboxのデザ...
-
エクセルのVBAコードと数式につ...
-
改行文字「vbCrLf」とは
-
testファイル内にある複数のpng...
-
VBAでユーザーフォームを指定回...
-
【ExcelVBA】5万行以上のデー...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
「arg」は何の略?
-
【ruby】無名関数?でブロック...
-
VBA/GetTickCountの49.7日の境...
-
【Ruby】基本的な質問 数字を...
-
例外の再スロー時に、その原因...
-
【ruby】 『クラスの生成に失...
-
Ruby Selenium 要素の待機
-
【ruby】クラスCGIを改造したい
-
Array#eachのブロック中で要素追加
-
.size .atとは?(挿入ソート)
-
Ruby Selenium リンクの取得方法
-
ruby メソッドのリターン
-
ブロック2 Ruby認定試験対策問題
-
プログラミング言語 R
-
rubyについて質問です
-
計算の途中経過を表示
-
Ruby evalで代入
-
Rubyでクラスファイルをディレ...
-
rubyについて質問です
-
cos波表示について マクローリ...
おすすめ情報