LastOSError (C++)
Description
This code demonstrates the use of system error codes and how to transform them into C++ exceptions.
Code
void __fastcall TForm2::btRaiseLastClick(TObject *Sender)
{
	/* Set the last OS error to a bogus value. */
	System::SetLastError(ERROR_ACCESS_DENIED);
	try
	{
		RaiseLastOSError();
	}
	catch(EOSError* ex)
	{
		MessageDlg(String("Caught an OS error with code: ") +
			IntToStr((int)ex->ErrorCode), mtError,
			TMsgDlgButtons() << mbOK, 0);
	}
	/* Let the Delphi Exception dialog appear. */
	RaiseLastOSError(ERROR_NOT_ENOUGH_MEMORY);
	/* Finally, set the last error to none. */
	System::SetLastError(ERROR_SUCCESS);
	if (GetLastError() != ERROR_SUCCESS)
		MessageDlg(String("Whoops, something went wrong ") +
		  " in the mean time!", mtError, TMsgDlgButtons() << mbOK, 0);
	/* No exception should be thrown here. */
	RaiseLastOSError();
}
Uses
- System.SysUtils.RaiseLastOSError ( fr | de | ja )
- System.SetLastError ( fr | de | ja )
- System.GetLastError ( fr | de | ja )