GetDateTimeの使い方

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
3817

GetDateTimeの使い方

#1

投稿記事 by 3817 » 13年前

DXライブラリを使ってカレンダーを作ろうとしているのですが、GetDateTimeの使い方がわかりません。どなたか分かりやすく教えてください。お願いします。

beatle
記事: 1281
登録日時: 13年前
住所: 埼玉
連絡を取る:

Re: GetDateTimeの使い方

#2

投稿記事 by beatle » 13年前

http://homepage2.nifty.com/natupaji/DxL ... .html#R7N3
にサンプルコードがあります.
そのサンプルコードを見ても分からないというなら,再度ご質問ください.

3817

Re: GetDateTimeの使い方

#3

投稿記事 by 3817 » 13年前

書き方は分かりました。しかしまだ分からないところがあって、
①DATEDATA Date とは何ですか?
②x年z月y日a時b分c秒と表示するにはどうすればいいですか?

beatle
記事: 1281
登録日時: 13年前
住所: 埼玉
連絡を取る:

Re: GetDateTimeの使い方

#4

投稿記事 by beatle » 13年前

DXライブラリ置き場 リファレンスページ さんが書きました: DXライブラリ独自の DATEDATA 構造体に現在時刻を 格納します。 DATEDATA 構造体は以下のようなメンバ変数で成り 立っています。

int Year ; // 年
int Mon ; // 月
int Day ; // 日
int Hour ; // 時間
int Min ; // 分
int Sec ; // 秒
ということで,DATEDATAというのは構造体の型名(恐らくtypedefしてあるのでしょう)であり,DATEDATA Date;はDATEDATA型の変数を定義しています.


DATEDATA構造体には年,月,日などに対応した変数がありますので,それを利用します.
DrawFormatStringでも使えばいいと思います.

3817

Re: GetDateTimeの使い方

#5

投稿記事 by 3817 » 13年前

int Color;
DATEDATA Date;

Color = GetColor( 255 , 255 , 255 ) ;
DrawFormatString( 0, 0, Color, "いまは%d年%d月%d日%d時%d分%d秒です。Yn",Year,Mon,Day,Hour,Min,Sec );
                                                     //(円の記号が出なかったのでかわりにYとしました。)
これでいいですか?

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 14年前
住所: 東海地方
連絡を取る:

Re: GetDateTimeの使い方

#6

投稿記事 by softya(ソフト屋) » 13年前

試せばすぐ結論が分かると思いますが、如何でしたか?
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

beatle
記事: 1281
登録日時: 13年前
住所: 埼玉
連絡を取る:

Re: GetDateTimeの使い方

#7

投稿記事 by beatle » 13年前

3817 さんが書きました:円の記号が出なかったのでかわりにYとしました。
本来,エスケープシーケンスに用いるのはバックスラッシュでして,円マークはたまたま日本語環境でバックスラッシュが円マークに割り当てられているだけです.
ですから,この掲示板では\nと書けば良いです.

3817

Re: GetDateTimeの使い方

#8

投稿記事 by 3817 » 13年前

コード:

 
 #include "DxLib.h"

int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance,
		 LPSTR lpCmdLine, int nCmdShow )
{
	DATEDATA Date ;
	int Color;

	ChangeWindowMode( TRUE ) ;

	if( DxLib_Init() == -1 )return -1;

	while(1){

		GetDateTime( &Date );
		Color=GetColor(255,255,255);

		DrawFormatString(0,0,Color,"いまは%d年%d月%d日%d時%d分%d秒です。\n",Year,Mon,Day,Hour,Min,Sec); 

		if(ProcessMessage()==-1) break;
		if(CheckHitKey(KEY_INPUT_ESCAPE)==1)break;

		}

	DxLib_End() ;
	return 0 ;
}


でコンパイルしようとすると「'Year' : 定義されていない識別子です。」(Mon,Day,Hour,Min,Secもすべて同じく)と出て、ビルドエラーが起こります。どうしたらよいですか?

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 14年前
住所: 東海地方
連絡を取る:

Re: GetDateTimeの使い方

#9

投稿記事 by softya(ソフト屋) » 13年前

構造体の勉強はされましたか?
DATEDATA Date ;
からデータを取り出すためには専用の書き方があります。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

3817

Re: GetDateTimeの使い方

#10

投稿記事 by 3817 » 13年前

一度学びましたが良く分からなかったのです。専用の書き方とはどんなものですか?

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 14年前
住所: 東海地方
連絡を取る:

Re: GetDateTimeの使い方

#11

投稿記事 by softya(ソフト屋) » 13年前

最低限必要なのは、構造体変数名.メンバ変数名でしか情報を取り扱えないということを理解することです。
Date.メンバ変数名で内容を参照する必要があります。
「構造体 メンバ参照(直接参照)」
http://www.cc.kyoto-su.ac.jp/~yamada/pB ... tml#direct

DrawFormatString(0,0,Color,"いまは%d年%d月%d日%d時%d分%d秒です。\n",Year,Mon,Day,Hour,Min,Sec);
このYearとかの書き方で扱えるのは単純な変数だけで構造体の参照方法ではありません。
言うなれば荷物を山田さんから受け取って下さいと言われてるようなもので、何処の山田さん?って聞きたくなると思いますがその何処のの情報が抜け落ちているということです。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

3817

Re: GetDateTimeの使い方

#12

投稿記事 by 3817 » 13年前

それでは、

コード:

 #include "DxLib.h"
 
int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance,
         LPSTR lpCmdLine, int nCmdShow )
{
    struct DATEDATA Date ;
    int Color;
 
    ChangeWindowMode( TRUE ) ;
 
    if( DxLib_Init() == -1 )return -1;
 
    while(1){
 
        GetDateTime( &Date );
        Color=GetColor(255,255,255);
 
        DrawFormatString(0,0,Color,"いまは%d年%d月%d日%d時%d分%d秒です。\n",Date.Year,Date.Mon,Date.Day,Date.Hour,Date.Min,Date.Sec); 
 
        if(ProcessMessage()==-1) break;
        if(CheckHitKey(KEY_INPUT_ESCAPE)==1)break;
 
        }
 
    DxLib_End() ;
    return 0 ;
}
とすればよいのですね

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 14年前
住所: 東海地方
連絡を取る:

Re: GetDateTimeの使い方

#13

投稿記事 by softya(ソフト屋) » 13年前

上にも書きましたが試されてどうでしたか?
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

3817

Re: GetDateTimeの使い方

#14

投稿記事 by 3817 » 13年前

それでも前と同じようにビルドエラーがおこるのですが

アバター
Dixq (管理人)
管理人
記事: 1662
登録日時: 14年前
住所: 北海道札幌市
連絡を取る:

Re: GetDateTimeの使い方

#15

投稿記事 by Dixq (管理人) » 13年前

まずはじめに出ているエラーメッセージを読んで下さい。
そうすればエラーの理由がわかります。
それを踏まえてNo.2で書かれたサンプルコードと見比べてみて下さい。
どこか違いますよね。
また、それを直したとしても、そのループは「消す」という処理が無いので、ドンドンわけのわからない表示になります。
基本コードについてはこちらをご覧ください。
http://dixq.net/g/01_09.html

3817

Re: GetDateTimeの使い方

#16

投稿記事 by 3817 » 13年前

「'Year' : 定義されていない識別子です。」(Mon,Day,Hour,Min,Secもすべて同じく)と出て、ビルドエラーが起こります。
自力で解決させる意図なのだとは思いますが、私も忙しいので簡潔に答えて頂かないと困ります。

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 14年前
住所: 東海地方
連絡を取る:

Re: GetDateTimeの使い方

#17

投稿記事 by softya(ソフト屋) » 13年前

3817 さんが書きました:「'Year' : 定義されていない識別子です。」(Mon,Day,Hour,Min,Secもすべて同じく)と出て、ビルドエラーが起こります。
自力で解決させる意図なのだとは思いますが、私も忙しいので簡潔に答えて頂かないと困ります。
申し訳ないですが急いでいらっしゃることは今はじめてお伺いしました。
フォーラムルールにあります通りお急ぎの場合は期日を書いていただけると助かります。 → http://dixq.net/board/board.html
それと、基本的にはご本人に考えていただくのがここの掲示板の意図となりますのでご了解下さい。

お急ぎみたいですので答えとしては、
struct DATEDATA Date ;
が元のままでよかったのです。
ここの部分もエラーとして出ているはずです。

最後に構造体など知識が無い状態でC言語のプログラムを組むことは無理がありますので勉強されることをお勧めします。

【追記】
3817さんとしては、とりあえず答えが欲しいのかプログラムを作れるようになりたいのか、どちらなのでしょうか?
後者なら、多少時間がかかっても地道に取り組むことも必要で時には入門書と向かい合うことも重要です。
我々もその勉強のお手伝いとしたいと考えておりますので、ご理解下さい。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

閉鎖

“C言語何でも質問掲示板” へ戻る