memory
bug
cppBuilder

C++ Builder XE4 > メモリが足りません (Abnormal Program Termination) > 再現方法

動作環境
C++ Builder XE4
Windows 7 Pro (32bit)

「メモリが足りません」もしくは「Abnormal Program Termination」というエラーはどの場合に出るのか。

code

Unit1.cpp
//---------------------------------------------------------------------------

#include <vcl.h>
#pragma hdrstop

#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------

__fastcall TForm1::TForm1(TComponent* Owner)
    : TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
    TDateTime dt1 = VarToDateTime(L"2017/12/21 14:20");
}
//---------------------------------------------------------------------------

エラーの発生手順は以下。

  • 上記のソフトをビルドして、日本語Windows 7環境で実行する
  • ボタンを押す

英語OS環境

英語版のWindows 7環境では「Abnormal Program Termination」になるのではないだろうか。

What Causes "Abnormal Program Termination"

(2) There is not enough memory to expand the stack.

現在見つかっている「Abnormal Program Termination」に対して、その解決の糸口をどのように見つけるか。

VarToDateTime

http://docwiki.embarcadero.com/Libraries/XE4/ja/System.Variants.VarToDateTime

指定されたバリアントを TDateTime 値に変換します。

Lプリフィックスにすると、バリアントの認識に失敗するのかもしれない。

いったん、String型変数において、VarToDateTime()を使う場合はエラーにはならない。