c++ builder XE4, 10.2 Tokyo > TDateTime > VarToDateTime()が失敗する > Lプリフィックス付きの VarToDateTime(L"2015/10/05 12:30:45");はダメ / VarToDateTime("2015/10/05 12:30:45");はOK
C++ Builder XE4
こちらの投稿でVarToDateTime()を使えばいいと投稿したが、今日以下のコードを実行するとエラーがでるようになった。
TDateTime dt2 = VarToDateTime(L"2015/10/05 12:30:45");
エラーとして以下が表示され、CPUというウィンドウが表示される。
デバッグ出力: HEAP[Project1.exe]: プロセス, Project1.exe
デバッグ出力:
Invalid address specified RtlSizeHeap( 002c0000, 00406230 )
$77B35DCDでユーザ以外によるブレークポイント。プロセスProject1.exe (1348)
VarToDateTime()もダメなのか。
以下では問題がない。
TDateTime dt2 = StrToDateTime(L"2015/10/05 12:30:45");
http://stackoverflow.com/questions/4070105/which-date-format-does-vartodatetimevardatefromstr-use
を見ると、delphi ではStrToDateTime()にフォーマット指定ができるが、C++ BuilderではそういうAPIは用意されていない。
どうしたものか。
解決
以下は失敗する。
TDateTime dt2 = VarToDateTime(L"2015/10/05 12:30:45");
以下は問題ない。
TDateTime dt2 = VarToDateTime("2015/10/05 12:30:45");
Lプリフィックスがあると失敗するというのがよくわからない。
いったんString変数に入れる以下は問題ない。
String dtStr = L"2015/10/05 12:30:45";
TDateTime dt3 = VarToDateTime(dtStr);
OutputDebugString(DateTimeToStr(dt3).c_str());
10.2 Tokyoでも発生
(追記 2019-05-10)
RAD Studio 10.2 Tokyo Update 3
10.2 Tokyoでもエラーが発生した。下記のエラーが表示される。
> Invalid address specific to RtlSizeHeap( ... )
Author And Source
この問題について(c++ builder XE4, 10.2 Tokyo > TDateTime > VarToDateTime()が失敗する > Lプリフィックス付きの VarToDateTime(L"2015/10/05 12:30:45");はダメ / VarToDateTime("2015/10/05 12:30:45");はOK), 我々は、より多くの情報をここで見つけました https://qiita.com/7of9/items/afe192507bb4bdf1411e著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .