diff --git a/compiler/cpp/src/thrift/generate/t_delphi_generator.cc b/compiler/cpp/src/thrift/generate/t_delphi_generator.cc
index dc85f60..b6b3b28 100644
--- a/compiler/cpp/src/thrift/generate/t_delphi_generator.cc
+++ b/compiler/cpp/src/thrift/generate/t_delphi_generator.cc
@@ -1237,7 +1237,14 @@
   }
 
   t_base_type::t_base tbase = ((t_base_type*)truetype)->get_base();
-  return (tbase == t_base_type::TYPE_UUID);
+  switch (tbase) {
+  case t_base_type::TYPE_UUID:
+    return true;
+  case t_base_type::TYPE_STRING:
+    return truetype->is_binary();
+  default:
+    return false;
+  }
 }
 
 void t_delphi_generator::print_const_prop(std::ostream& out,
@@ -1266,10 +1273,9 @@
   }
 
   if (truetype->is_base_type()) {
-    t_base_type::t_base tbase = ((t_base_type*)truetype)->get_base();
-    if(tbase == t_base_type::TYPE_UUID) {   // already done otherwise
-      string v2 = render_const_value( vars, out, name, type, value, false);
-      indent_impl(out) << name << " := " << v2 << ";" << '\n';
+    if(const_needs_var(type)) {
+      string the_value = render_const_value( vars, out, name, type, value, false);
+      indent_impl(out) << name << " := " << the_value << ";" << '\n';
     }
   } else if (truetype->is_enum()) {
     indent_impl(out) << name << " := " << type_name(type) << "." << value->get_identifier_name()
@@ -1321,7 +1327,11 @@
     t_base_type::t_base tbase = ((t_base_type*)truetype)->get_base();
     switch (tbase) {
     case t_base_type::TYPE_STRING:
-      render << "'" << get_escaped_string(value) << "'";
+      if (truetype->is_binary()) {        
+        render << "TEncoding.UTF8.GetBytes('" << get_escaped_string(value) << "')";
+      } else {
+        render << "'" << get_escaped_string(value) << "'";
+      }
       break;
     case t_base_type::TYPE_UUID:
       if(guidAsLiteral) {
diff --git a/lib/delphi/test/codegen/run-Pascal-Codegen-Tests.ps1 b/lib/delphi/test/codegen/run-Pascal-Codegen-Tests.ps1
index 5cde19c..961795b 100644
--- a/lib/delphi/test/codegen/run-Pascal-Codegen-Tests.ps1
+++ b/lib/delphi/test/codegen/run-Pascal-Codegen-Tests.ps1
@@ -26,17 +26,16 @@
 	"Include.thrift")   # subdir includes don't work here
 
 # expected to fail at Delphi Compiler
-$FAIL_DELPHI = @()
+$FAIL_DELPHI = @(
+    "Thrift5320.thrift"   # this conflicts with Delphi scopes, but it's a bad practice testcase anyway
+)
 
 # unexpected but known bugs (TODO: fix them)
-$KNOWN_BUGS = @( "ConstOptionalField.thrift"
-               , "IgnoreInitialismsTest.thrift"
-               , "JavaTypes.thrift"
-               , "JavaDefinitionOrderB.thrift"
-               , "JavaDeepCopyTest.thrift"
-               , "NameConflictTest.thrift"
-			   , "Thrift5320.thrift"   # this conflicts with Delphi scopes, but it's a bad practice testcase anyway
-               )
+$KNOWN_BUGS = @(
+	"IgnoreInitialismsTest.thrift", 
+	"JavaDefinitionOrderB.thrift",
+	"NameConflictTest.thrift"
+    ) 
 
 
 
