<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	>
<channel>
	<title>Comments for TPersistent.com</title>
	<atom:link href="http://www.tpersistent.com/?feed=comments-rss2" rel="self" type="application/rss+xml" />
	<link>http://www.tpersistent.com</link>
	<description>Without Persistence You Can't Develop</description>
	<pubDate>Wed, 08 Sep 2010 07:27:05 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.6.3</generator>
		<item>
		<title>Comment on hcOPF Designtime Strategy by Larry Hengen</title>
		<link>http://www.tpersistent.com/?p=316#comment-1307</link>
		<dc:creator>Larry Hengen</dc:creator>
		<pubDate>Tue, 07 Sep 2010 15:10:58 +0000</pubDate>
		<guid isPermaLink="false">http://www.tpersistent.com/?p=316#comment-1307</guid>
		<description>@Jeroen,

Thanks for the comment.  So far I have tried a mix of using inheritance, and include files.  I found because of 2) in my previous comment that inheritance didn't work as well as using include files.  Child lists are also problematic.  Fortunately, 2) can be resolved, so I will likely adopt the approach you've suggested.

I have put in a QC report (87746) that might alleviate the IDE problems with Include files.  Please vote for it if you think it's a good solution.</description>
		<content:encoded><![CDATA[<p>@Jeroen,</p>
<p>Thanks for the comment.  So far I have tried a mix of using inheritance, and include files.  I found because of 2) in my previous comment that inheritance didn&#8217;t work as well as using include files.  Child lists are also problematic.  Fortunately, 2) can be resolved, so I will likely adopt the approach you&#8217;ve suggested.</p>
<p>I have put in a QC report (87746) that might alleviate the IDE problems with Include files.  Please vote for it if you think it&#8217;s a good solution.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on hcOPF Designtime Strategy by Jeroen Pluimers</title>
		<link>http://www.tpersistent.com/?p=316#comment-1286</link>
		<dc:creator>Jeroen Pluimers</dc:creator>
		<pubDate>Tue, 07 Sep 2010 03:15:41 +0000</pubDate>
		<guid isPermaLink="false">http://www.tpersistent.com/?p=316#comment-1286</guid>
		<description>I've done a bit (non-designtime) experimentation with code generation based on a DBMS. Here I follow a two-step process:
- generate abstract and concrete classes the first time
- generate abstract classes from the second time on

I considered include files, but they don't play well in Delphi; all kinds of IDE support that does not work, or does not work well (recompile on changed include files, refactoring across include files, etc).

--jeroen</description>
		<content:encoded><![CDATA[<p>I&#8217;ve done a bit (non-designtime) experimentation with code generation based on a DBMS. Here I follow a two-step process:<br />
- generate abstract and concrete classes the first time<br />
- generate abstract classes from the second time on</p>
<p>I considered include files, but they don&#8217;t play well in Delphi; all kinds of IDE support that does not work, or does not work well (recompile on changed include files, refactoring across include files, etc).</p>
<p>&#8211;jeroen</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on hcOPF Designtime Strategy by Larry Hengen</title>
		<link>http://www.tpersistent.com/?p=316#comment-1169</link>
		<dc:creator>Larry Hengen</dc:creator>
		<pubDate>Thu, 02 Sep 2010 20:56:38 +0000</pubDate>
		<guid isPermaLink="false">http://www.tpersistent.com/?p=316#comment-1169</guid>
		<description>One of the downsides to using Include files is that Code Completion and Code Parameters don't work any more.  At least in Delphi 7.  It would be nice if the versions of Delphi that support regions would automatically convert an $include directive to a region and allow the code to be edited as if it actually existed in that unit.  This would have the added benefit that Code Completion and Code Parameters should then work.</description>
		<content:encoded><![CDATA[<p>One of the downsides to using Include files is that Code Completion and Code Parameters don&#8217;t work any more.  At least in Delphi 7.  It would be nice if the versions of Delphi that support regions would automatically convert an $include directive to a region and allow the code to be edited as if it actually existed in that unit.  This would have the added benefit that Code Completion and Code Parameters should then work.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on hcOPF Designtime Strategy by Larry Hengen</title>
		<link>http://www.tpersistent.com/?p=316#comment-1090</link>
		<dc:creator>Larry Hengen</dc:creator>
		<pubDate>Mon, 30 Aug 2010 13:32:00 +0000</pubDate>
		<guid isPermaLink="false">http://www.tpersistent.com/?p=316#comment-1090</guid>
		<description>Using inheritance works, but has two major drawbacks::

1) If your object contains children such as child lists that need to be bound at design-time, then you must create abstract versions of those lists.  The descendant object must create concrete child list instances and then cast all references to be able to call descendant methods.  This is very ugly, although doable.

2) The ObjectRegistry has no concept of inheritance.  If you register a design-time class, say TClientAbstract and at run-time attempt to use a concrete descendant TClient, the framework will complain that TClient has not been registered.  You need to register both classes even though they have the same metadata.</description>
		<content:encoded><![CDATA[<p>Using inheritance works, but has two major drawbacks::</p>
<p>1) If your object contains children such as child lists that need to be bound at design-time, then you must create abstract versions of those lists.  The descendant object must create concrete child list instances and then cast all references to be able to call descendant methods.  This is very ugly, although doable.</p>
<p>2) The ObjectRegistry has no concept of inheritance.  If you register a design-time class, say TClientAbstract and at run-time attempt to use a concrete descendant TClient, the framework will complain that TClient has not been registered.  You need to register both classes even though they have the same metadata.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on hcOPF Designtime Strategy by Maxim</title>
		<link>http://www.tpersistent.com/?p=316#comment-1085</link>
		<dc:creator>Maxim</dc:creator>
		<pubDate>Mon, 30 Aug 2010 05:10:24 +0000</pubDate>
		<guid isPermaLink="false">http://www.tpersistent.com/?p=316#comment-1085</guid>
		<description>Proxy pattern?
Completely different classes representing domain classes for designtime.
If class factory is used to create objects it event can have a parameter indicating a state of the system: run or design time resulting in different set of objects created.</description>
		<content:encoded><![CDATA[<p>Proxy pattern?<br />
Completely different classes representing domain classes for designtime.<br />
If class factory is used to create objects it event can have a parameter indicating a state of the system: run or design time resulting in different set of objects created.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on hcOPF Designtime Strategy by Larry Hengen</title>
		<link>http://www.tpersistent.com/?p=316#comment-1069</link>
		<dc:creator>Larry Hengen</dc:creator>
		<pubDate>Sun, 29 Aug 2010 15:50:20 +0000</pubDate>
		<guid isPermaLink="false">http://www.tpersistent.com/?p=316#comment-1069</guid>
		<description>There would be a minimum of 2 include files for each domain object assuming they had no children for design-time binding.  One for the interface section to define properties for indexed attribute access such as:

property Description :ThcAttribute Index 7 read GetAttribute;

Then another include file for the implementation section containing the Register class procedure and the calls to register and unregister the class in the initialization and finalization sections respectively.</description>
		<content:encoded><![CDATA[<p>There would be a minimum of 2 include files for each domain object assuming they had no children for design-time binding.  One for the interface section to define properties for indexed attribute access such as:</p>
<p>property Description :ThcAttribute Index 7 read GetAttribute;</p>
<p>Then another include file for the implementation section containing the Register class procedure and the calls to register and unregister the class in the initialization and finalization sections respectively.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on hcOPF Designtime Strategy by Dave</title>
		<link>http://www.tpersistent.com/?p=316#comment-1068</link>
		<dc:creator>Dave</dc:creator>
		<pubDate>Sun, 29 Aug 2010 15:45:10 +0000</pubDate>
		<guid isPermaLink="false">http://www.tpersistent.com/?p=316#comment-1068</guid>
		<description>Include files are ok, as long as there aren't many of them. A handful at most.</description>
		<content:encoded><![CDATA[<p>Include files are ok, as long as there aren&#8217;t many of them. A handful at most.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on The Power of Open Source by Patrick Larsen</title>
		<link>http://www.tpersistent.com/?p=244#comment-1011</link>
		<dc:creator>Patrick Larsen</dc:creator>
		<pubDate>Thu, 26 Aug 2010 07:44:09 +0000</pubDate>
		<guid isPermaLink="false">http://www.tpersistent.com/?p=244#comment-1011</guid>
		<description>When it comes to avoiding unneeded units in uses clauses, I've found the free ICARUS tool from Peganza (www.peganza.com) to be of great help.
Try it out and you will soon find that you use it over and over again.</description>
		<content:encoded><![CDATA[<p>When it comes to avoiding unneeded units in uses clauses, I&#8217;ve found the free ICARUS tool from Peganza (www.peganza.com) to be of great help.<br />
Try it out and you will soon find that you use it over and over again.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on The Power of Open Source by Delphi: Optimizing extremely long compile times &#171; The Wiert Corner &#8211; Jeroen Pluimers&#8217; irregular stream of Wiert stuff</title>
		<link>http://www.tpersistent.com/?p=244#comment-1008</link>
		<dc:creator>Delphi: Optimizing extremely long compile times &#171; The Wiert Corner &#8211; Jeroen Pluimers&#8217; irregular stream of Wiert stuff</dc:creator>
		<pubDate>Thu, 26 Aug 2010 04:03:48 +0000</pubDate>
		<guid isPermaLink="false">http://www.tpersistent.com/?p=244#comment-1008</guid>
		<description>[...] Posted by jpluimers on 2010/08/26  Anthony Frazier mentions two very true paths for optimizing your Delphi compile times: [...]</description>
		<content:encoded><![CDATA[<p>[...] Posted by jpluimers on 2010/08/26  Anthony Frazier mentions two very true paths for optimizing your Delphi compile times: [...]</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on The Power of Open Source by Delphi: Optimizing extremely long compile times &#171; The Wiert Corner &#8211; Jeroen Pluimers&#8217; irregular stream of Wiert stuff</title>
		<link>http://www.tpersistent.com/?p=244#comment-912</link>
		<dc:creator>Delphi: Optimizing extremely long compile times &#171; The Wiert Corner &#8211; Jeroen Pluimers&#8217; irregular stream of Wiert stuff</dc:creator>
		<pubDate>Thu, 19 Aug 2010 17:48:18 +0000</pubDate>
		<guid isPermaLink="false">http://www.tpersistent.com/?p=244#comment-912</guid>
		<description>[...] Posted by jpluimers on 2010/04/26  Anthony Frazier mentions two very true paths for optimizing your Delphi compile times: [...]</description>
		<content:encoded><![CDATA[<p>[...] Posted by jpluimers on 2010/04/26  Anthony Frazier mentions two very true paths for optimizing your Delphi compile times: [...]</p>
]]></content:encoded>
	</item>
</channel>
</rss>
