日付の論理チェック – プログラミング – Home

通知
すべてクリア

[解決済] 日付の論理チェック


れい
 れい
(@れい)
ゲスト
結合: 22年前
投稿: 15
Topic starter  

初めて投稿させて頂きます。
エディットボックス上のデータ(20040220)の8桁のデータで、
日付の論理チェックしたいのですが、やり方的には、%演算子を使って
日付の余りを計算してチェックするようにしてます。
データ型は、CString型を使ってデフォルト状態でシステム日付を呼び出してますが、
演算をするとデータ型が違うというエラーが出ます。
論理チェックする為には、データ型をint型に変換しないとだめでしょうか?
初歩的な質問ですみません。


引用未解決
トピックタグ
れい
 れい
(@れい)
ゲスト
結合: 22年前
投稿: 15
Topic starter  

環境は、WIN2000、.NET2003でMFCのダイアログベースで作成してます。
書き忘れて申し訳ありません。


返信引用
ak
 ak
(@ak)
ゲスト
結合: 21年前
投稿: 15
 

どういう演算をしているのかわかりにくいですが、
20040220という文字列を数値演算したいのなら数値型にしないといけません。


返信引用
FrozenAquarium
 FrozenAquarium
(@FrozenAquarium)
ゲスト
結合: 22年前
投稿: 22
 

論理チェックというのは値の正当性チェックのことでしょうか。

もしそうならば
COleDataTimeの
SetDate()
GetStatus()
あたりが使えると思います。

詳しくはMSDNでどうぞ。


返信引用
FrozenAquarium
 FrozenAquarium
(@FrozenAquarium)
ゲスト
結合: 22年前
投稿: 22
 

失礼いたしました。

>COleDataTimeの
正しくは
COleDateTimeの
です。


返信引用
アイススケーター
 アイススケーター
(@アイススケーター)
ゲスト
結合: 23年前
投稿: 280
 

>エディットボックス上のデータ(20040220)の8桁のデータで、
>日付の論理チェックしたいのですが、やり方的には、%演算子を使って
>日付の余りを計算してチェックするようにしてます。

計算するということは、CString型ではダメでしょう。
int型やlong型にする必要があると思います。

>データ型は、CString型を使ってデフォルト状態でシステム日付を呼び出してますが、
>演算をするとデータ型が違うというエラーが出ます。

これは、コンパイルエラーのりことでは?

>論理チェックする為には、データ型をint型に変換しないとだめでしょうか?

CStringでもチェックはできますが、%演算子を使うのであればint型等にしたほうが
よいでしょう。また、MFCであれば最初からメンバ変数でint型を指定すればよいの
では


返信引用
れい
 れい
(@れい)
ゲスト
結合: 22年前
投稿: 15
Topic starter  

みなさま回答ありがとうございました。
エディットボックスはコントロール変数にして、
デフォルト値のシステム日付の呼び出しは、CString型で8桁表示にして、
SetWindowText()で表示しました。
日付処理自体はatoiを使って、int型に変換したらうまくできました。
VC自体初めて使ったので、効率の悪い方法だとは思いますが。

余談ですが、CString型でチェックするには、どうしたらいいのですか?
問題は解決したのでチェックは付けましたけど、
やり方が気になりましたので…。


返信引用
PATIO
(@patio)
Famed Member
結合: 4年前
投稿: 2660
 

CStringのままチェックと言うのは無理があると思います。
絶対出来ないとは言いませんけれど。
いずれにせよ、年、月、日を文字としてでなく、数値としてチェックする必要が
あるわけですから、最終的には数値に直さざる得ないと思います。

不都合が無ければ、エディットボックスの変数をlongにしておいて
OnOkを追加して、中で処理しても良いような気はしますね。
エディットボックスの設定を数値にしておけば、数値以外は入力できないので
エラーチェックも楽になりますしね。

この辺はエラーメッセージの表示仕様に寄ります。
プログラム側で字種チェック、数値チェック、日付の論理チェックのエラーを
一々出さないといけないようなら文字列で取り込んでそれぞれに対応するチェックを
行い、エラーメッセージを一々出す必要があるでしょう。


返信引用
PATIO
(@patio)
Famed Member
結合: 4年前
投稿: 2660
 

ちなみにCStringで文字列を取り込んでもatoiやstrtolとかを使う事は可能なので
ここに関しては特にこだわる必要はないような気がします。
要はOnOkなどのハンドラ内でどういう処理を書くかが問題なのだと思いますし。


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

プレビュー 0リビジョン 保存しました
共有:
タイトルとURLをコピーしました