diff --git a/compiler/cpp/src/generate/t_delphi_generator.cc b/compiler/cpp/src/generate/t_delphi_generator.cc
index 9395457..a238f68 100644
--- a/compiler/cpp/src/generate/t_delphi_generator.cc
+++ b/compiler/cpp/src/generate/t_delphi_generator.cc
@@ -81,7 +81,7 @@
     void generate_delphi_struct_writer_impl(ostream& out, std::string cls_prefix, t_struct* tstruct, bool is_exception);
     void generate_delphi_struct_result_writer_impl(ostream& out, std::string cls_prefix, t_struct* tstruct, bool is_exception);
 
-    void generate_delphi_struct_tostring_impl(ostream& out, std::string cls_prefix, t_struct* tstruct, bool is_exception);
+    void generate_delphi_struct_tostring_impl(ostream& out, std::string cls_prefix, t_struct* tstruct, bool is_exception, bool is_x_factory);
 
     void add_delphi_uses_list( string unitname);
 
@@ -900,8 +900,8 @@
     } else {
       generate_delphi_struct_writer_impl( out, cls_prefix, tstruct, is_exception);
     }
-    generate_delphi_struct_tostring_impl( out, cls_prefix, tstruct, is_exception);
   }
+  generate_delphi_struct_tostring_impl( out, cls_prefix, tstruct, is_exception, is_x_factory);
 
   if (is_exception && is_x_factory) {
     generate_delphi_create_exception_impl( out, cls_prefix, tstruct, is_exception);
@@ -1039,10 +1039,8 @@
   indent(out) << "constructor Create;" << endl;
   indent(out) << "destructor Destroy; override;" << endl;
 
-  if ((! is_exception) || is_x_factory) {
-    out  << endl;
-    indent(out) << "function ToString: string; override;" << endl;
-  }
+  out  << endl;
+  indent(out) << "function ToString: string; override;" << endl;
 
   if (is_exception && (! is_x_factory)) {
     out  << endl;
@@ -2337,6 +2335,8 @@
     indent_impl(out) << "end;" << endl;
   }
 
+  indent_impl(out) << "Result.UpdateMessageProperty;" << endl;
+ 
   indent_down_impl();
   indent_impl(out) << "end;" << endl << endl;
 }
@@ -2593,7 +2593,7 @@
 
 }
 
-void t_delphi_generator::generate_delphi_struct_tostring_impl(ostream& out, string cls_prefix, t_struct* tstruct, bool is_exception) {
+void t_delphi_generator::generate_delphi_struct_tostring_impl(ostream& out, string cls_prefix, t_struct* tstruct, bool is_exception, bool is_x_factory) {
 
   const vector<t_field*>& fields = tstruct->get_members();
   vector<t_field*>::const_iterator f_iter;
@@ -2601,7 +2601,7 @@
   string cls_nm;
 
   if (is_exception) {
-    cls_nm = type_name(tstruct,true,false,true,true);
+    cls_nm = type_name(tstruct,true,(! is_x_factory),is_x_factory,true);
   } else {
     cls_nm = type_name(tstruct,true,false);
   }
diff --git a/lib/delphi/src/Thrift.pas b/lib/delphi/src/Thrift.pas
index 50513d3..dceb256 100644
--- a/lib/delphi/src/Thrift.pas
+++ b/lib/delphi/src/Thrift.pas
@@ -60,17 +60,26 @@
   // base class for IDL-generated exceptions
   TException = class( SysUtils.Exception)
   public
-    procedure Message;  // hide inherited property to prevent accidental read/write
+    function Message : string;        // hide inherited property: allow read, but prevent accidental writes
+    procedure UpdateMessageProperty;  // update inherited message property with toString()
   end;
 
 implementation
 
 { TException }
 
-procedure TException.Message;
-// hide inherited property to prevent accidental read/write
+function TException.Message;
+// allow read (exception summary), but prevent accidental writes
+// read will return the exception summary
 begin
-  ASSERT( FALSE, 'Unexpected call to '+ClassName+'.message. Forgot the underscore?');
+  result := Self.ToString;
+end;
+
+procedure TException.UpdateMessageProperty;
+// Update the inherited Message property to better conform to standard behaviour.
+// Nice benefit: The IDE is now able to show the exception message again.
+begin
+  inherited Message := Self.ToString;  // produces a summary text
 end;
 
 { TApplicationException }
diff --git a/lib/delphi/test/TestServer.pas b/lib/delphi/test/TestServer.pas
index ecaf80d..26d49d2 100644
--- a/lib/delphi/test/TestServer.pas
+++ b/lib/delphi/test/TestServer.pas
@@ -115,6 +115,7 @@
     x := TXception.Create;
     x.ErrorCode := 1001;
     x.Message_ := 'This is an Xception';
+    x.UpdateMessageProperty;
     raise x;
   end;
 end;
@@ -280,6 +281,7 @@
     x := TXception.Create;
     x.ErrorCode := 1001;
     x.Message_ := 'This is an Xception';
+    x.UpdateMessageProperty;
     raise x;
   end else
   if ( arg0 = 'Xception2') then
@@ -288,6 +290,7 @@
     x2.ErrorCode := 2002;
     x2.Struct_thing := TXtructImpl.Create;
     x2.Struct_thing.String_thing := 'This is an Xception2';
+    x2.UpdateMessageProperty;
     raise x2;
   end;
 
