• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:CTime.Formatが(NULL)に??)

CTime.Formatが(NULL)に??

このQ&Aのポイント
  • 下記コードのstrをエディットボックスで表示すると(null)と表示されてしまいます。
  • 親クラスのstrGetTextにデータを入れておいて、WM_MKLOGのメッセージで親クラス内のエディットボックスに取得データと時間を表示させようと思っています。
  • このとき(%s)の部分が((null))と表示されてしまいます。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.2

dataって型はなんでしょうか? CString::Format で指定する、書式指定文字の %x は printf関数等と同じで int 型の変数に対するものです。 ですので、dataがint型でないとおかしなことが起こる可能性があります。 dataの型に合ったサイズを指定すると解決するかも? (参考)printf 関数と wprintf 関数のサイズ プリフィックスと型指定子 http://msdn.microsoft.com/ja-jp/library/tcxf1dw6.aspx dataがshort型なら %hx、dataが__int64型なら %I64x 等...

nori1112
質問者

お礼

補足でお礼を書いてしまいました。。。 ありがとうございました。

nori1112
質問者

補足

ありがとうございました!! 無事解決いたしました。 たしかに、dataがDWORD64でした。dataの型が影響するとは思っていなかったので 省略してしまいました。 今度からはもう少し情報を詳しく書くようにします。

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (1)

回答No.1

環境はきちんと書きましょう。 おそらく、WindowsでVisualC++のMFCを使用しているのでしょうが。 提示されたソースでは、dataやmyclsが何なのか不明です。 CTime::Formatの問題ではない可能性もあるので、ブレークポイントを設定してstrの内容を確認するとかしてみまみしょう。(メッセージボックスやTRACEを使ってもいいでしょう)

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • ゼロとNULLを区別して number_formatしたい

    環境:MySQL4.0.25 と PHP4.3.11の組み合わせで、SQLで select data1 from mytable として、取り出したdata1には、次のようにNULLとゼロと数値が 混在しています。 4334.0028 8893.212233 4334.2 <NULL> 0 2.002 9893 桁がバラバラなので、これらに number_format(data1,2) としたら、 NULLまでもが0.00と表示されてしまいます。 今回、NULLとゼロ(0.00)は区別しなければならなので、 echo ($data1 == '') ? '' : number_format($data1,2) ; としましたが、効きません。WWWでイコール3つ(===)演算子を 使えば回避できるような情報を見かけましたが echo ($data1 !== '') ? number_format($data1,2) : '' ; としても、状況変わらず。何かうまい方法はないでしょうか。 なお、SQL側で format(data1,1) とするのはナシとしてご教示いただけ ますと幸いです(data1でいろいろ計算するのでformatされた値が 出てくると誤差の原因になってしまうためです)。

    • ベストアンサー
    • PHP
  • 日付フォーマット

    テーブルから日付データを取得してフォーマットしたいのですがうまくいきません。 DATETIME型の項目に入っている日時(Y-m-d H:i:s)を取得してY/m/dにフォーマットしようと $result = date("Y/m/d", $getdata); としたところ、結果が 1970/01/01 となってしまいました。 $getdataには存在する日時(Y-m-d H:i:s)が入っている事を確認しています 正しくフォーマットするにはどうしたら良いのでしょうか?

    • ベストアンサー
    • PHP
  • 「Nullの使い方が不正です」のエラー

    AccsessとVB間でデータの参照・登録・削除を行うプログラムを作成中です。 テキストボックスにデータを入力せずに更新するとAccess側はNull値が入るので、参照をした際に 「Nullの使い方が不正です」のエラーが表示されます。 Null値が表示可能ならその方法を教えてください。

  • sprintfを用いたフォーマット文字列攻撃

    sprintfを用いたフォーマット文字列攻撃に関する質問です。 main文の中で --------------------- int main(void){ char str[50]; sprintf(str,"%s"); puts(str); } --------------------- を実行すると(null)で帰ってきます。 しかし関数呼び出しを行うと結果が変わってきます。 --------------------- void f(){ char str[50]; sprintf(str,"%s"); puts(str); } int main(void){ f(); } --------------------- これを実行すると" ・L "のような文字化けしたものに変わりました。 sprintf(str,"%s%s");と記述することによって" ・L (null) "と、本来呼び出される箇所のものが格納されています。 なぜ関数呼び出しにすると変なところを参照してしまうのか(第3引数があると勘違いしてしまうのか)教えてください。 また、これによりどのような悪影響があるのか教えてください。 自分はプログラマが意図しない箇所を参照するため攻撃者のプログラムアドレスを格納してしまう恐れがあると考えています。

  • CreateFileで開いたファイル名を取得するには?

    CreateFile関数で開いたファイル名を取得して、エディットボックスに表示させるプログラムを作りたいと思っています。 sendmessageを使って表示させることを考えてみたのですが…。 以下にソースを載せます。 // メインWindowへ通知するデータを作成 COPYDATASTRUCT cds; cds.lpData = pszFileName; //CreateFileの第一引数pszFileName(ファイル名)を格納 cds.cbData = lstrlen(pszFileName) + 1; cds.dwData = 0; // メインWindowを検索 HWND hWnd = FindWindow(NULL, _T("メインウインドウの名前")); if(hWnd) SendMessage(hWnd, WM_COPYDATA, NULL, (LPARAM)&cds); という風では、取得できないのでしょうか? よろしくお願いします。

  • MFCのエディットボックスについて

    WindowsのPCにてMFCを使い、ダイアログボックスを作成しています。 ダイアログボックスの中にエディットボックスを作成したのですが、複数行、改行許可の項目を両者ともチェックしたのにも関わらず、改行してくれません。 表示内容は、以下のループで取得し、 while(m_isize > 0) { BYTE ch = m_Data[m_nPos]; if(isalnum(ch)) { m_Ascii += ch; } else { m_Ascii += " "; } m_Dmy.Format("%02X", ch); m_Dmp +=m_Dmy; m_nPos++; m_isize--; if((m_nPos%16)== 0) { m_Addr.Format("%08X:", m_nPos-16); SetDump(); m_Dmp = " "; m_Ascii =" "; } m_Total+=m_DmpLog; m_Total+= "\r\n"; } m_Total(CString)が取得した値を、エディットボックスで表示します。 しかし何故か、上書きされて、最終的に表示されません。 試しに、m_Total+="\n";だけにしてみると、スペースが空き、改行はされないものの表示されます。 初歩的な質問かとは思いますが、教えていただければと思います。よろしくお願いします。

  • formatメソッドについて

    こんばんは。皆様、今回も宜しくお願い致します<(_ _)> 例えば1という値を渡したら、「001」というように表示させてたくて、下記のようなソースを作成してみました。 import java.text.*; class Main{ public static void main(String args[]){ DecimalFormat fmt = new DecimalFormt(); fmt.setMaximumIntegerDigits(3); fmt.setMinimumIntegerDigits(3); String str = fmt.format(1); System.out.println(str); } } これを実行すると「001」というように、私の希望通りに表示されます。 でも String str = fmt.format(1); の部分を String str = fmt.format("1"); と変更すると下記のエラーが出力されます。 Exception in thread "main" java.lang.IllegalArgumentException: Cannot format giv en Object as a Number at java.text.NumberFormat.format(NumberFormat.java:219) at java.text.Format.format(Format.java:133) at Main.main(Main.java:8) そこでJavaのリファレンスを見て、疑問を持ちました。 リファレンスにはFormatクラスのformatメソッドの引数はオブジェクトになってます。 ということはむしろエラーになったほうが正しくて(String=オブジェクトだから)、普通に実行できたほうがおかしいんじゃないか?(数値=基本型だから)と思ったのです。 どうしてエラーがでるのか、どうしてオブジェクトを渡していないのに普通に実行できるのか、わかる方がいらっしゃったら教えて下さい。 宜しくお願い致します<(_ _)>

    • ベストアンサー
    • Java
  • AccessのFormat関数について

    AccessのFormat関数に関しまして質問致します。 和暦を西暦へ更新クエリを使用してコンバートしているのですが入力されているデータの中に「平成15年2月31日」等の不可思議なデータが入力されており変換に困っています。 Format関数でエラーになった場合、Nullを返すように出来ませんでしょうか? <現在> =Format([年月日],"yyyy/mm/dd") 更新時にエラーが表示されNullが入力される事は重々承知しておりますが、何か不安ですので^^;

  • エディットボックスの改行について

    よろしくお願いいたします。 環境 WIN98 VC++6.0 MFC にて 改行が可能なエディットボックスのデータをテキストファイルに保存すると、エディットボックスと同様に改行されて保存されます。 ファイルからデータを読出し、エディットボックスに表示する場合もちゃんと改行されていて問題ありません。 ここで、エディットボックスが2つあり、それぞれのエディットボックスのデータが2行あったとすると、ファイルには4行保存されます。 次にファイルからデータを読出し、エディットボックスに表示する場合、1個目のエディットボックスのデータが2行と分かっていれば良いのですが、そうでない場合は何行読み出してエディットボックスに表示すれば良いか分かりません。 そこで、1個目のデータを保存する時に、最終行の次の行にendという文字を保存することにしました。 これで、読み出すときはendを目印に必要な行数を読み出せます。 しかしながら、エディットボックスの文字の中にたまたまendが使われるとうまく行きません。 長くなりましたが、このような場合、一般的にはどのようにして対処すれば良いのでしょうか? お分かりの方よろしくお願いいたします。

  • エディットボックス

    VC++、APIでwindowsプログラムを書いています。ダイアログボックスで質問があります。 case WM_INITDIALOG: SetDlgItemText(hDlg, IDC_EDIT1, "0"); return TRUE; で読み取り専用エディットボックス内に初期値を書き case WM_CTLCOLORSTATIC: { HDC hdc = (HDC)wParam ; SetTextColor( hdc, RGB( 255, 255, 255)) ;// 白色 SetBkMode(hdc, TRANSPARENT); // 背景を透過 return (BOOL)(HBRUSH)GetStockObject(NULL_BRUSH) ; } でダイアログボックス内のスタティックテキストと読み取り専用エディットボックスの背景を同時に透過させているのですが、エディットボックス内の文字を void ddd( HWND hDlg, int xxx) { char ttt[100]; sprintf(ttt,"%d",xxx); SetDlgItemText(hDlg, IDC_EDIT1, ttt); return ; } で書き換えると古いテキストが残ったように表示されます(背景に色を指定すれば古いテキストは残らない)。 うまく表示させるにはどういった方法があるでしょうか? ご存知の方、よろしくお願いします。 ちなみにダイアログボックスにはビットマップが貼ってあります。