<?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/">
	<channel>
		<title><![CDATA[delphi4arab منتديات دلفي للعرب - دلفي والتعامل مع المكونات و الاضافات]]></title>
		<link>https://delphi4arab.net/forum/</link>
		<description><![CDATA[delphi4arab منتديات دلفي للعرب - https://delphi4arab.net/forum]]></description>
		<pubDate>Thu, 12 Nov 2026 16:14:49 +0000</pubDate>
		<generator>MyBB</generator>
		<item>
			<title><![CDATA[الجديد في إصدارات دلفي What`s New in Delphi]]></title>
			<link>https://delphi4arab.net/forum/showthread.php?tid=4939</link>
			<pubDate>Fri, 22 Feb 2013 10:49:12 +0100</pubDate>
			<dc:creator><![CDATA[<a href="https://delphi4arab.net/forum/member.php?action=profile&uid=161">kachwahed</a>]]></dc:creator>
			<guid isPermaLink="false">https://delphi4arab.net/forum/showthread.php?tid=4939</guid>
			<description><![CDATA[<span style="color: Black;" class="mycode_color">السلام عليكم<br />
<br />
هنا مختصر الجديد في إصدارات دلفي منقول للفائدة:<br />
<div class="codeblock phpcodeblock"><div class="title">PHP كود :</div><div class="body"><div dir="ltr"><code><span style="color: #0000BB">Delphi&nbsp;XE3<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #007700">New&nbsp;</span><span style="color: #0000BB">Metropolis&nbsp;UI&nbsp;Applications&nbsp;</span><span style="color: #007700">for&nbsp;</span><span style="color: #0000BB">Delphi&nbsp;VCL&nbsp;</span><span style="color: #007700">and&nbsp;</span><span style="color: #0000BB">FireMonkey&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;FireMonkey&nbsp;Enhancements&nbsp;</span><span style="color: #007700">for&nbsp;</span><span style="color: #0000BB">XE3<br />&nbsp;&nbsp;&nbsp;&nbsp;LiveBindings&nbsp;Enhancements&nbsp;</span><span style="color: #007700">for&nbsp;</span><span style="color: #0000BB">XE3<br />&nbsp;&nbsp;&nbsp;&nbsp;Entitlement&nbsp;</span><span style="color: #007700">List&nbsp;and&nbsp;</span><span style="color: #0000BB">Provisioning&nbsp;page&nbsp;</span><span style="color: #007700">for&nbsp;</span><span style="color: #0000BB">Sandboxing&nbsp;Mac&nbsp;OS&nbsp;X&nbsp;Applications<br /><br />Delphi&nbsp;XE2<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;Cross&nbsp;platform&nbsp;support&nbsp;</span><span style="color: #007700">for&nbsp;</span><span style="color: #0000BB">Mac&nbsp;OSX&nbsp;</span><span style="color: #007700">(</span><span style="color: #0000BB">32</span><span style="color: #007700">-</span><span style="color: #0000BB">bit</span><span style="color: #007700">)&nbsp;and&nbsp;</span><span style="color: #0000BB">iOS</span><span style="color: #007700">;<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">Support&nbsp;</span><span style="color: #007700">for&nbsp;</span><span style="color: #0000BB">Win64</span><span style="color: #007700">;<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">Modified&nbsp;RTL&nbsp;to&nbsp;support&nbsp;cross&nbsp;platform</span><span style="color: #007700">;<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">Packed&nbsp;Now&nbsp;Forces&nbsp;Byte&nbsp;Alignment&nbsp;of&nbsp;Records&nbsp;</span><span style="color: #007700">(</span><span style="color: #0000BB">Pre&nbsp;XE2&nbsp;it&nbsp;did&nbsp;not&nbsp;necessarily&nbsp;</span><span style="color: #007700">do&nbsp;</span><span style="color: #0000BB">this</span><span style="color: #007700">)<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">Eight&nbsp;</span><span style="color: #007700">new&nbsp;</span><span style="color: #0000BB">DEFINEs&nbsp;have&nbsp;been&nbsp;added</span><span style="color: #007700">:<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">ALIGN_STACK<br />&nbsp;&nbsp;&nbsp;&nbsp;CPUX86<br />&nbsp;&nbsp;&nbsp;&nbsp;CPUX64<br />&nbsp;&nbsp;&nbsp;&nbsp;MACOS&nbsp;</span><span style="color: #007700">(</span><span style="color: #0000BB">Mac&nbsp;operating&nbsp;system</span><span style="color: #007700">)<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">MACOS32<br />&nbsp;&nbsp;&nbsp;&nbsp;PC_MAPPED_EXCEPTIONS<br />&nbsp;&nbsp;&nbsp;&nbsp;PIC<br />&nbsp;&nbsp;&nbsp;&nbsp;WIN64<br />&nbsp;&nbsp;&nbsp;&nbsp;Full&nbsp;unit&nbsp;scope&nbsp;names&nbsp;are&nbsp;now&nbsp;required&nbsp;in&nbsp;your&nbsp;uses&nbsp;clause</span><span style="color: #007700">.<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">The&nbsp;build</span><span style="color: #007700">-</span><span style="color: #0000BB">in&nbsp;types&nbsp;differ&nbsp;depending&nbsp;on&nbsp;the&nbsp;target&nbsp;platform&nbsp;</span><span style="color: #007700">(</span><span style="color: #0000BB">32</span><span style="color: #007700">/</span><span style="color: #0000BB">64</span><span style="color: #007700">-</span><span style="color: #0000BB">bit</span><span style="color: #007700">)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">Extended&nbsp;Data&nbsp;Type&nbsp;Is&nbsp;10&nbsp;bytes&nbsp;on&nbsp;Win32</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">but&nbsp;8&nbsp;</span><span style="color: #007700">(!)&nbsp;</span><span style="color: #0000BB">bytes&nbsp;on&nbsp;Win64<br /><br />Delphi&nbsp;XE<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;The&nbsp;&#36;STRINGCHECKS&nbsp;compiler&nbsp;directive&nbsp;is&nbsp;ignored&nbsp;in&nbsp;XE</span><span style="color: #007700">;<br />&nbsp;&nbsp;&nbsp;&nbsp;New&nbsp;</span><span style="color: #0000BB">16</span><span style="color: #007700">-</span><span style="color: #0000BB">byte&nbsp;value&nbsp;</span><span style="color: #007700">for&nbsp;</span><span style="color: #0000BB">the&nbsp;</span><span style="color: #007700">{</span><span style="color: #0000BB">&#36;ALIGN</span><span style="color: #007700">}&nbsp;</span><span style="color: #0000BB">directive</span><span style="color: #007700">:&nbsp;</span><span style="color: #0000BB">The&nbsp;acceptable&nbsp;values&nbsp;</span><span style="color: #007700">for&nbsp;</span><span style="color: #0000BB">the&nbsp;</span><span style="color: #007700">{</span><span style="color: #0000BB">&#36;ALIGN</span><span style="color: #007700">}&nbsp;</span><span style="color: #0000BB">directive&nbsp;now&nbsp;</span><span style="color: #007700">include&nbsp;</span><span style="color: #0000BB">1</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">2</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">4</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">8</span><span style="color: #007700">,&nbsp;and&nbsp;</span><span style="color: #0000BB">16.<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #007700">new&nbsp;</span><span style="color: #0000BB">&#36;CODEALIGN&nbsp;directive</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">this&nbsp;sets&nbsp;the&nbsp;starting&nbsp;address&nbsp;</span><span style="color: #007700">for&nbsp;</span><span style="color: #0000BB">a&nbsp;procedure&nbsp;</span><span style="color: #007700">or&nbsp;function.<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">The&nbsp;</span><span style="color: #007700">{</span><span style="color: #0000BB">&#36;STRONGLINKTYPES&nbsp;ON</span><span style="color: #007700">}&nbsp;</span><span style="color: #0000BB">directive<br /><br />Delphi&nbsp;2010<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;Enhanced&nbsp;Delphi&nbsp;RTTI&nbsp;</span><span style="color: #007700">(</span><span style="color: #0000BB">Run&nbsp;Time&nbsp;Type&nbsp;Information</span><span style="color: #007700">).<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">The&nbsp;</span><span style="color: #007700">as&nbsp;</span><span style="color: #0000BB">operator&nbsp;can&nbsp;be&nbsp;used&nbsp;to&nbsp;cast&nbsp;an&nbsp;</span><span style="color: #007700">interface&nbsp;</span><span style="color: #0000BB">reference&nbsp;back&nbsp;to&nbsp;the&nbsp;object&nbsp;from&nbsp;which&nbsp;it&nbsp;was&nbsp;extracted</span><span style="color: #007700">.<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">The&nbsp;is&nbsp;operator&nbsp;can&nbsp;be&nbsp;used&nbsp;to&nbsp;verify&nbsp;whether&nbsp;an&nbsp;</span><span style="color: #007700">interface&nbsp;</span><span style="color: #0000BB">reference&nbsp;was&nbsp;extracted&nbsp;from&nbsp;a&nbsp;certain&nbsp;</span><span style="color: #007700">class.<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">Normal&nbsp;unsafe&nbsp;casting&nbsp;can&nbsp;be&nbsp;performed&nbsp;on&nbsp;an&nbsp;</span><span style="color: #007700">interface:&nbsp;</span><span style="color: #0000BB">TObject</span><span style="color: #007700">(</span><span style="color: #0000BB">SomeInterface</span><span style="color: #007700">).<br />&nbsp;&nbsp;&nbsp;&nbsp;new&nbsp;</span><span style="color: #0000BB">delayed&nbsp;directive&nbsp;indicates&nbsp;that&nbsp;an&nbsp;external&nbsp;library&nbsp;such&nbsp;</span><span style="color: #007700">as&nbsp;</span><span style="color: #0000BB">a&nbsp;DLL&nbsp;is&nbsp;not&nbsp;to&nbsp;be&nbsp;loaded&nbsp;at&nbsp;the&nbsp;declaration&nbsp;time&nbsp;but&nbsp;is&nbsp;to&nbsp;wait&nbsp;until&nbsp;the&nbsp;first&nbsp;call&nbsp;to&nbsp;the&nbsp;library</span><span style="color: #007700">.<br /><br /></span><span style="color: #0000BB">Delphi&nbsp;2009<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;Generic&nbsp;type&nbsp;string&nbsp;now&nbsp;maps&nbsp;to&nbsp;UnicodeString<br />&nbsp;&nbsp;&nbsp;&nbsp;Generics</span><span style="color: #007700">;<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">Smart&nbsp;pointers</span><span style="color: #007700">;<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">Anonymous&nbsp;methods<br />&nbsp;&nbsp;&nbsp;&nbsp;support&nbsp;</span><span style="color: #007700">for&nbsp;</span><span style="color: #0000BB">pointermath&nbsp;</span><span style="color: #007700">and&nbsp;</span><span style="color: #0000BB">a&nbsp;</span><span style="color: #007700">new&nbsp;</span><span style="color: #0000BB">compiler&nbsp;directive</span><span style="color: #007700">:&nbsp;</span><span style="color: #0000BB">&#36;POINTERMATH<br />&nbsp;&nbsp;&nbsp;&nbsp;Four&nbsp;</span><span style="color: #007700">new&nbsp;</span><span style="color: #0000BB">compiler&nbsp;warnings</span><span style="color: #007700">:<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">W1057&nbsp;Implicit&nbsp;string&nbsp;cast&nbsp;from&nbsp;</span><span style="color: #DD0000">'%s'&nbsp;</span><span style="color: #0000BB">to&nbsp;</span><span style="color: #DD0000">'%s'</span><span style="color: #007700">,<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">W1058&nbsp;Implicit&nbsp;string&nbsp;cast&nbsp;with&nbsp;potential&nbsp;data&nbsp;loss&nbsp;from&nbsp;</span><span style="color: #DD0000">'%s'&nbsp;</span><span style="color: #0000BB">to&nbsp;</span><span style="color: #DD0000">'%s'</span><span style="color: #007700">,<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">W1059&nbsp;Explicit&nbsp;string&nbsp;cast&nbsp;from&nbsp;</span><span style="color: #DD0000">'%s'&nbsp;</span><span style="color: #0000BB">to&nbsp;</span><span style="color: #DD0000">'%s'</span><span style="color: #007700">,<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">W1060&nbsp;Explicit&nbsp;string&nbsp;cast&nbsp;with&nbsp;potential&nbsp;data&nbsp;loss&nbsp;from&nbsp;</span><span style="color: #DD0000">'%s'&nbsp;</span><span style="color: #0000BB">to&nbsp;</span><span style="color: #DD0000">'%s'</span><span style="color: #007700">.<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">The&nbsp;</span><span style="color: #007700">Exit&nbsp;function&nbsp;</span><span style="color: #0000BB">can&nbsp;take&nbsp;a&nbsp;parameter&nbsp;specifying&nbsp;a&nbsp;result</span><span style="color: #007700">.<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">resourcestrings&nbsp;</span><span style="color: #007700">as&nbsp;</span><span style="color: #0000BB">Widestrings<br /><br />Delphi&nbsp;2007<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;No&nbsp;language&nbsp;changes&nbsp;that&nbsp;I&nbsp;know&nbsp;of</span><span style="color: #007700">.<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">Note&nbsp;that&nbsp;Delphi&nbsp;2007&nbsp;is&nbsp;a&nbsp;non</span><span style="color: #007700">-</span><span style="color: #0000BB">breaking&nbsp;release</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">DCUs&nbsp;from&nbsp;D2006&nbsp;will&nbsp;work&nbsp;unchanged&nbsp;in&nbsp;D2007<br /><br />Delphi&nbsp;2006<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;Enhanced&nbsp;records</span><span style="color: #007700">;<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">operator&nbsp;overloading</span><span style="color: #007700">;<br />&nbsp;&nbsp;&nbsp;&nbsp;class&nbsp;</span><span style="color: #0000BB">helpers<br />&nbsp;&nbsp;&nbsp;&nbsp;FastMM&nbsp;is&nbsp;the&nbsp;</span><span style="color: #007700">default&nbsp;</span><span style="color: #0000BB">memory&nbsp;manager<br /><br />Delphi&nbsp;2005<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;multi</span><span style="color: #007700">-</span><span style="color: #0000BB">unit&nbsp;namespaces</span><span style="color: #007700">,<br />&nbsp;&nbsp;&nbsp;&nbsp;for&nbsp;...&nbsp;</span><span style="color: #0000BB">in&nbsp;</span><span style="color: #007700">...&nbsp;do&nbsp;</span><span style="color: #0000BB">loops</span><span style="color: #007700">,<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">inline&nbsp;keyword<br /><br />Delphi&nbsp;7<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;three&nbsp;additional&nbsp;compiler&nbsp;warnings</span><span style="color: #007700">:<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">Unsafe_Type</span><span style="color: #007700">,<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">Unsafe_Code</span><span style="color: #007700">,&nbsp;and<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">Unsafe_Cast</span><span style="color: #007700">.&nbsp;</span><span style="color: #0000BB">These&nbsp;warnings&nbsp;are&nbsp;disabled&nbsp;by&nbsp;</span><span style="color: #007700">default,&nbsp;</span><span style="color: #0000BB">but&nbsp;can&nbsp;be&nbsp;enabled<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #007700">new&nbsp;</span><span style="color: #0000BB">compiler&nbsp;directive&nbsp;</span><span style="color: #007700">{</span><span style="color: #0000BB">&#36;WARN&nbsp;UNSAFE_CODE&nbsp;ON</span><span style="color: #007700">}<br /><br /></span><span style="color: #0000BB">Delphi&nbsp;6<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #007700">New&nbsp;</span><span style="color: #0000BB">compiler&nbsp;directives</span><span style="color: #007700">:<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{</span><span style="color: #0000BB">&#36;IFDEF&nbsp;MSWINDOWS</span><span style="color: #007700">}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{</span><span style="color: #0000BB">&#36;IFDEF&nbsp;LINUX</span><span style="color: #007700">}<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">Support&nbsp;</span><span style="color: #007700">for&nbsp;{</span><span style="color: #0000BB">&#36;IF</span><span style="color: #007700">}{</span><span style="color: #0000BB">&#36;ELSE</span><span style="color: #007700">}&nbsp;</span><span style="color: #0000BB">compiler&nbsp;directives<br />&nbsp;&nbsp;&nbsp;&nbsp;Variant&nbsp;is&nbsp;no&nbsp;longer&nbsp;based&nbsp;on&nbsp;COM&nbsp;but&nbsp;changed&nbsp;to&nbsp;be&nbsp;CLX&nbsp;compatible</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">COM&nbsp;based&nbsp;variant&nbsp;renamed&nbsp;to&nbsp;OLEVariant<br />&nbsp;&nbsp;&nbsp;&nbsp;Typed&nbsp;constants&nbsp;cannot&nbsp;be&nbsp;assigned&nbsp;to&nbsp;</span><span style="color: #007700">(</span><span style="color: #0000BB">Override&nbsp;with&nbsp;</span><span style="color: #007700">{</span><span style="color: #0000BB">&#36;J</span><span style="color: #007700">+})<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">Enumerated&nbsp;types&nbsp;can&nbsp;be&nbsp;assigned&nbsp;an&nbsp;explicit&nbsp;value&nbsp;</span><span style="color: #007700">(</span><span style="color: #0000BB">cf&nbsp;C</span><span style="color: #007700">++);<br />&nbsp;&nbsp;&nbsp;&nbsp;Interface&nbsp;</span><span style="color: #0000BB">properties<br />&nbsp;&nbsp;&nbsp;&nbsp;Support&nbsp;</span><span style="color: #007700">for&nbsp;</span><span style="color: #0000BB">calling&nbsp;varargs&nbsp;external&nbsp;functions<br /><br />Delphi&nbsp;5<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;No&nbsp;</span><span style="color: #007700">new&nbsp;</span><span style="color: #0000BB">language&nbsp;features</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">but</span><span style="color: #007700">:<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">Support&nbsp;added&nbsp;</span><span style="color: #007700">for&nbsp;</span><span style="color: #0000BB">Frames<br /><br />Delphi&nbsp;4<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;Dynamic&nbsp;arrays<br />&nbsp;&nbsp;&nbsp;&nbsp;LongWord&nbsp;</span><span style="color: #007700">and&nbsp;</span><span style="color: #0000BB">Int64</span><span style="color: #007700">;&nbsp;</span><span style="color: #0000BB">Cardinal&nbsp;is&nbsp;an&nbsp;UINT32&nbsp;</span><span style="color: #007700">(</span><span style="color: #0000BB">before&nbsp;it&nbsp;was&nbsp;unsigned&nbsp;31</span><span style="color: #007700">-</span><span style="color: #0000BB">bit&nbsp;value</span><span style="color: #007700">)<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">Real&nbsp;takes&nbsp;8&nbsp;bytes&nbsp;</span><span style="color: #007700">and&nbsp;</span><span style="color: #0000BB">is&nbsp;the&nbsp;same&nbsp;</span><span style="color: #007700">as&nbsp;</span><span style="color: #0000BB">double&nbsp;</span><span style="color: #007700">(</span><span style="color: #0000BB">previously&nbsp;it&nbsp;was&nbsp;6&nbsp;bytes</span><span style="color: #007700">);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">Override&nbsp;with&nbsp;the&nbsp;</span><span style="color: #007700">new&nbsp;{</span><span style="color: #0000BB">&#36;REALCOMPATIBILITY&nbsp;ON</span><span style="color: #007700">}&nbsp;</span><span style="color: #0000BB">compiler&nbsp;directive</span><span style="color: #007700">;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">REAL48&nbsp;replaces&nbsp;the&nbsp;old&nbsp;6</span><span style="color: #007700">-</span><span style="color: #0000BB">byte&nbsp;real</span><span style="color: #007700">;<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">Support&nbsp;</span><span style="color: #007700">for&nbsp;</span><span style="color: #0000BB">resourcestrings<br /><br />Delphi&nbsp;3<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;Wordbool</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">longbool&nbsp;</span><span style="color: #007700">and&nbsp;</span><span style="color: #0000BB">bytebool&nbsp;store&nbsp;false&nbsp;</span><span style="color: #007700">as&nbsp;-</span><span style="color: #0000BB">1&nbsp;instead&nbsp;of&nbsp;1&nbsp;</span><span style="color: #007700">(</span><span style="color: #0000BB">Boolean&nbsp;is&nbsp;unchanged</span><span style="color: #007700">)<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">Components&nbsp;must&nbsp;be&nbsp;installed&nbsp;using&nbsp;packages<br /><br />Delphi&nbsp;2<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;Support&nbsp;</span><span style="color: #007700">for&nbsp;</span><span style="color: #0000BB">32</span><span style="color: #007700">-</span><span style="color: #0000BB">bit</span><span style="color: #007700">;<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">Ansistring&nbsp;replaces&nbsp;shortstring&nbsp;</span><span style="color: #007700">as&nbsp;</span><span style="color: #0000BB">the&nbsp;</span><span style="color: #007700">default&nbsp;</span><span style="color: #0000BB">string&nbsp;type<br />&nbsp;&nbsp;&nbsp;&nbsp;Widestring<br />&nbsp;&nbsp;&nbsp;&nbsp;4&nbsp;byte&nbsp;data&nbsp;is&nbsp;4&nbsp;byte&nbsp;aligned&nbsp;</span><span style="color: #007700">new&nbsp;</span><span style="color: #0000BB">packed&nbsp;keyword&nbsp;overrides&nbsp;this&nbsp;behavior</span><span style="color: #007700">;<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">TDateTime&nbsp;starts&nbsp;at&nbsp;1899</span><span style="color: #007700">/</span><span style="color: #0000BB">12</span><span style="color: #007700">/</span><span style="color: #0000BB">30&nbsp;under&nbsp;D1&nbsp;it&nbsp;started&nbsp;at&nbsp;0000</span><span style="color: #007700">/</span><span style="color: #0000BB">00</span><span style="color: #007700">/</span><span style="color: #0000BB">00<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #007700">new&nbsp;</span><span style="color: #0000BB">finalization&nbsp;keyword<br />&nbsp;&nbsp;&nbsp;&nbsp;register&nbsp;</span><span style="color: #007700">and&nbsp;</span><span style="color: #0000BB">stdcall&nbsp;calling&nbsp;conventions&nbsp;added</span><span style="color: #007700">.<br />&nbsp;&nbsp;&nbsp;&nbsp;interface&nbsp;</span><span style="color: #0000BB">keyword&nbsp;</span><span style="color: #007700">and&nbsp;</span><span style="color: #0000BB">COM&nbsp;support&nbsp;<br /></span></code></div></div></div>تفاصيل أكثر:<br />
<br />
<a href="http://docwiki.embarcadero.com/RADStudio/en/What%27s_New_in_Delphi_and_C%2B%2BBuilder_XE3" target="_blank" rel="noopener" class="mycode_url">    What`s New in Delphi and C++Builder XE3</a><br />
<a href="http://docwiki.embarcadero.com/RADStudio/en/What%27s_New_in_Delphi_and_C++Builder_XE2" target="_blank" rel="noopener" class="mycode_url">    What's New in Delphi and C++Builder XE2</a><br />
<a href="http://docwiki.embarcadero.com/RADStudio/en/What%27s_New_in_Delphi_and_C++Builder_XE" target="_blank" rel="noopener" class="mycode_url">    What's New in Delphi and C++Builder XE</a><br />
<a href="http://docwiki.embarcadero.com/RADStudio/en/What%27s_New_in_Delphi_and_C++Builder_2010" target="_blank" rel="noopener" class="mycode_url">    What's New in Delphi and C++Builder 2010</a><br />
<a href="http://docwiki.embarcadero.com/RADStudio/en/What%27s_New_in_Delphi_and_C++Builder_2009" target="_blank" rel="noopener" class="mycode_url">    What's New in Delphi and C++Builder 2009</a><br />
<a href="http://docwiki.embarcadero.com/RADStudio/en/What%27s_New_in_RAD_Studio_%28Delphi_for_Win32_2007%29" target="_blank" rel="noopener" class="mycode_url">    What's New in RAD Studio (Delphi for Win32 2007)</a><br />
<a href="http://docwiki.embarcadero.com/RADStudio/en/What%27s_New_in_RAD_Studio_%28C++Builder_2007%29" target="_blank" rel="noopener" class="mycode_url">    What's New in RAD Studio (C++Builder 2007)</a><br />
<a href="http://edn.embarcadero.com/article/33411" target="_blank" rel="noopener" class="mycode_url">    What’s New in Delphi 2006</a><br />
<a href="http://edn.embarcadero.com/article/32778" target="_blank" rel="noopener" class="mycode_url">    What’s New in Delphi 2005</a><br />
<a href="http://edn.embarcadero.com/article/images/28980/D7_whats_new.pdf" target="_blank" rel="noopener" class="mycode_url">    What’s New in Delphi 7</a><br />
<a href="http://www.drbob42.com/examines/examin19.htm" target="_blank" rel="noopener" class="mycode_url">    What’s New in Delphi 6</a><br />
<a href="http://web.archive.org/web/20010210005242/http://www.borland.com/delphi/whatsnew.html" target="_blank" rel="noopener" class="mycode_url">    What’s New in Delphi 5</a><br />
<a href="http://www.tempest-sw.com/secrets/delphi3.htm" target="_blank" rel="noopener" class="mycode_url">    What's New in Delphi 3</a><br />
<br />
بالتوفيق.</span>]]></description>
			<content:encoded><![CDATA[<span style="color: Black;" class="mycode_color">السلام عليكم<br />
<br />
هنا مختصر الجديد في إصدارات دلفي منقول للفائدة:<br />
<div class="codeblock phpcodeblock"><div class="title">PHP كود :</div><div class="body"><div dir="ltr"><code><span style="color: #0000BB">Delphi&nbsp;XE3<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #007700">New&nbsp;</span><span style="color: #0000BB">Metropolis&nbsp;UI&nbsp;Applications&nbsp;</span><span style="color: #007700">for&nbsp;</span><span style="color: #0000BB">Delphi&nbsp;VCL&nbsp;</span><span style="color: #007700">and&nbsp;</span><span style="color: #0000BB">FireMonkey&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;FireMonkey&nbsp;Enhancements&nbsp;</span><span style="color: #007700">for&nbsp;</span><span style="color: #0000BB">XE3<br />&nbsp;&nbsp;&nbsp;&nbsp;LiveBindings&nbsp;Enhancements&nbsp;</span><span style="color: #007700">for&nbsp;</span><span style="color: #0000BB">XE3<br />&nbsp;&nbsp;&nbsp;&nbsp;Entitlement&nbsp;</span><span style="color: #007700">List&nbsp;and&nbsp;</span><span style="color: #0000BB">Provisioning&nbsp;page&nbsp;</span><span style="color: #007700">for&nbsp;</span><span style="color: #0000BB">Sandboxing&nbsp;Mac&nbsp;OS&nbsp;X&nbsp;Applications<br /><br />Delphi&nbsp;XE2<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;Cross&nbsp;platform&nbsp;support&nbsp;</span><span style="color: #007700">for&nbsp;</span><span style="color: #0000BB">Mac&nbsp;OSX&nbsp;</span><span style="color: #007700">(</span><span style="color: #0000BB">32</span><span style="color: #007700">-</span><span style="color: #0000BB">bit</span><span style="color: #007700">)&nbsp;and&nbsp;</span><span style="color: #0000BB">iOS</span><span style="color: #007700">;<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">Support&nbsp;</span><span style="color: #007700">for&nbsp;</span><span style="color: #0000BB">Win64</span><span style="color: #007700">;<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">Modified&nbsp;RTL&nbsp;to&nbsp;support&nbsp;cross&nbsp;platform</span><span style="color: #007700">;<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">Packed&nbsp;Now&nbsp;Forces&nbsp;Byte&nbsp;Alignment&nbsp;of&nbsp;Records&nbsp;</span><span style="color: #007700">(</span><span style="color: #0000BB">Pre&nbsp;XE2&nbsp;it&nbsp;did&nbsp;not&nbsp;necessarily&nbsp;</span><span style="color: #007700">do&nbsp;</span><span style="color: #0000BB">this</span><span style="color: #007700">)<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">Eight&nbsp;</span><span style="color: #007700">new&nbsp;</span><span style="color: #0000BB">DEFINEs&nbsp;have&nbsp;been&nbsp;added</span><span style="color: #007700">:<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">ALIGN_STACK<br />&nbsp;&nbsp;&nbsp;&nbsp;CPUX86<br />&nbsp;&nbsp;&nbsp;&nbsp;CPUX64<br />&nbsp;&nbsp;&nbsp;&nbsp;MACOS&nbsp;</span><span style="color: #007700">(</span><span style="color: #0000BB">Mac&nbsp;operating&nbsp;system</span><span style="color: #007700">)<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">MACOS32<br />&nbsp;&nbsp;&nbsp;&nbsp;PC_MAPPED_EXCEPTIONS<br />&nbsp;&nbsp;&nbsp;&nbsp;PIC<br />&nbsp;&nbsp;&nbsp;&nbsp;WIN64<br />&nbsp;&nbsp;&nbsp;&nbsp;Full&nbsp;unit&nbsp;scope&nbsp;names&nbsp;are&nbsp;now&nbsp;required&nbsp;in&nbsp;your&nbsp;uses&nbsp;clause</span><span style="color: #007700">.<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">The&nbsp;build</span><span style="color: #007700">-</span><span style="color: #0000BB">in&nbsp;types&nbsp;differ&nbsp;depending&nbsp;on&nbsp;the&nbsp;target&nbsp;platform&nbsp;</span><span style="color: #007700">(</span><span style="color: #0000BB">32</span><span style="color: #007700">/</span><span style="color: #0000BB">64</span><span style="color: #007700">-</span><span style="color: #0000BB">bit</span><span style="color: #007700">)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">Extended&nbsp;Data&nbsp;Type&nbsp;Is&nbsp;10&nbsp;bytes&nbsp;on&nbsp;Win32</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">but&nbsp;8&nbsp;</span><span style="color: #007700">(!)&nbsp;</span><span style="color: #0000BB">bytes&nbsp;on&nbsp;Win64<br /><br />Delphi&nbsp;XE<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;The&nbsp;&#36;STRINGCHECKS&nbsp;compiler&nbsp;directive&nbsp;is&nbsp;ignored&nbsp;in&nbsp;XE</span><span style="color: #007700">;<br />&nbsp;&nbsp;&nbsp;&nbsp;New&nbsp;</span><span style="color: #0000BB">16</span><span style="color: #007700">-</span><span style="color: #0000BB">byte&nbsp;value&nbsp;</span><span style="color: #007700">for&nbsp;</span><span style="color: #0000BB">the&nbsp;</span><span style="color: #007700">{</span><span style="color: #0000BB">&#36;ALIGN</span><span style="color: #007700">}&nbsp;</span><span style="color: #0000BB">directive</span><span style="color: #007700">:&nbsp;</span><span style="color: #0000BB">The&nbsp;acceptable&nbsp;values&nbsp;</span><span style="color: #007700">for&nbsp;</span><span style="color: #0000BB">the&nbsp;</span><span style="color: #007700">{</span><span style="color: #0000BB">&#36;ALIGN</span><span style="color: #007700">}&nbsp;</span><span style="color: #0000BB">directive&nbsp;now&nbsp;</span><span style="color: #007700">include&nbsp;</span><span style="color: #0000BB">1</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">2</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">4</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">8</span><span style="color: #007700">,&nbsp;and&nbsp;</span><span style="color: #0000BB">16.<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #007700">new&nbsp;</span><span style="color: #0000BB">&#36;CODEALIGN&nbsp;directive</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">this&nbsp;sets&nbsp;the&nbsp;starting&nbsp;address&nbsp;</span><span style="color: #007700">for&nbsp;</span><span style="color: #0000BB">a&nbsp;procedure&nbsp;</span><span style="color: #007700">or&nbsp;function.<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">The&nbsp;</span><span style="color: #007700">{</span><span style="color: #0000BB">&#36;STRONGLINKTYPES&nbsp;ON</span><span style="color: #007700">}&nbsp;</span><span style="color: #0000BB">directive<br /><br />Delphi&nbsp;2010<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;Enhanced&nbsp;Delphi&nbsp;RTTI&nbsp;</span><span style="color: #007700">(</span><span style="color: #0000BB">Run&nbsp;Time&nbsp;Type&nbsp;Information</span><span style="color: #007700">).<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">The&nbsp;</span><span style="color: #007700">as&nbsp;</span><span style="color: #0000BB">operator&nbsp;can&nbsp;be&nbsp;used&nbsp;to&nbsp;cast&nbsp;an&nbsp;</span><span style="color: #007700">interface&nbsp;</span><span style="color: #0000BB">reference&nbsp;back&nbsp;to&nbsp;the&nbsp;object&nbsp;from&nbsp;which&nbsp;it&nbsp;was&nbsp;extracted</span><span style="color: #007700">.<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">The&nbsp;is&nbsp;operator&nbsp;can&nbsp;be&nbsp;used&nbsp;to&nbsp;verify&nbsp;whether&nbsp;an&nbsp;</span><span style="color: #007700">interface&nbsp;</span><span style="color: #0000BB">reference&nbsp;was&nbsp;extracted&nbsp;from&nbsp;a&nbsp;certain&nbsp;</span><span style="color: #007700">class.<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">Normal&nbsp;unsafe&nbsp;casting&nbsp;can&nbsp;be&nbsp;performed&nbsp;on&nbsp;an&nbsp;</span><span style="color: #007700">interface:&nbsp;</span><span style="color: #0000BB">TObject</span><span style="color: #007700">(</span><span style="color: #0000BB">SomeInterface</span><span style="color: #007700">).<br />&nbsp;&nbsp;&nbsp;&nbsp;new&nbsp;</span><span style="color: #0000BB">delayed&nbsp;directive&nbsp;indicates&nbsp;that&nbsp;an&nbsp;external&nbsp;library&nbsp;such&nbsp;</span><span style="color: #007700">as&nbsp;</span><span style="color: #0000BB">a&nbsp;DLL&nbsp;is&nbsp;not&nbsp;to&nbsp;be&nbsp;loaded&nbsp;at&nbsp;the&nbsp;declaration&nbsp;time&nbsp;but&nbsp;is&nbsp;to&nbsp;wait&nbsp;until&nbsp;the&nbsp;first&nbsp;call&nbsp;to&nbsp;the&nbsp;library</span><span style="color: #007700">.<br /><br /></span><span style="color: #0000BB">Delphi&nbsp;2009<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;Generic&nbsp;type&nbsp;string&nbsp;now&nbsp;maps&nbsp;to&nbsp;UnicodeString<br />&nbsp;&nbsp;&nbsp;&nbsp;Generics</span><span style="color: #007700">;<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">Smart&nbsp;pointers</span><span style="color: #007700">;<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">Anonymous&nbsp;methods<br />&nbsp;&nbsp;&nbsp;&nbsp;support&nbsp;</span><span style="color: #007700">for&nbsp;</span><span style="color: #0000BB">pointermath&nbsp;</span><span style="color: #007700">and&nbsp;</span><span style="color: #0000BB">a&nbsp;</span><span style="color: #007700">new&nbsp;</span><span style="color: #0000BB">compiler&nbsp;directive</span><span style="color: #007700">:&nbsp;</span><span style="color: #0000BB">&#36;POINTERMATH<br />&nbsp;&nbsp;&nbsp;&nbsp;Four&nbsp;</span><span style="color: #007700">new&nbsp;</span><span style="color: #0000BB">compiler&nbsp;warnings</span><span style="color: #007700">:<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">W1057&nbsp;Implicit&nbsp;string&nbsp;cast&nbsp;from&nbsp;</span><span style="color: #DD0000">'%s'&nbsp;</span><span style="color: #0000BB">to&nbsp;</span><span style="color: #DD0000">'%s'</span><span style="color: #007700">,<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">W1058&nbsp;Implicit&nbsp;string&nbsp;cast&nbsp;with&nbsp;potential&nbsp;data&nbsp;loss&nbsp;from&nbsp;</span><span style="color: #DD0000">'%s'&nbsp;</span><span style="color: #0000BB">to&nbsp;</span><span style="color: #DD0000">'%s'</span><span style="color: #007700">,<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">W1059&nbsp;Explicit&nbsp;string&nbsp;cast&nbsp;from&nbsp;</span><span style="color: #DD0000">'%s'&nbsp;</span><span style="color: #0000BB">to&nbsp;</span><span style="color: #DD0000">'%s'</span><span style="color: #007700">,<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">W1060&nbsp;Explicit&nbsp;string&nbsp;cast&nbsp;with&nbsp;potential&nbsp;data&nbsp;loss&nbsp;from&nbsp;</span><span style="color: #DD0000">'%s'&nbsp;</span><span style="color: #0000BB">to&nbsp;</span><span style="color: #DD0000">'%s'</span><span style="color: #007700">.<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">The&nbsp;</span><span style="color: #007700">Exit&nbsp;function&nbsp;</span><span style="color: #0000BB">can&nbsp;take&nbsp;a&nbsp;parameter&nbsp;specifying&nbsp;a&nbsp;result</span><span style="color: #007700">.<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">resourcestrings&nbsp;</span><span style="color: #007700">as&nbsp;</span><span style="color: #0000BB">Widestrings<br /><br />Delphi&nbsp;2007<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;No&nbsp;language&nbsp;changes&nbsp;that&nbsp;I&nbsp;know&nbsp;of</span><span style="color: #007700">.<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">Note&nbsp;that&nbsp;Delphi&nbsp;2007&nbsp;is&nbsp;a&nbsp;non</span><span style="color: #007700">-</span><span style="color: #0000BB">breaking&nbsp;release</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">DCUs&nbsp;from&nbsp;D2006&nbsp;will&nbsp;work&nbsp;unchanged&nbsp;in&nbsp;D2007<br /><br />Delphi&nbsp;2006<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;Enhanced&nbsp;records</span><span style="color: #007700">;<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">operator&nbsp;overloading</span><span style="color: #007700">;<br />&nbsp;&nbsp;&nbsp;&nbsp;class&nbsp;</span><span style="color: #0000BB">helpers<br />&nbsp;&nbsp;&nbsp;&nbsp;FastMM&nbsp;is&nbsp;the&nbsp;</span><span style="color: #007700">default&nbsp;</span><span style="color: #0000BB">memory&nbsp;manager<br /><br />Delphi&nbsp;2005<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;multi</span><span style="color: #007700">-</span><span style="color: #0000BB">unit&nbsp;namespaces</span><span style="color: #007700">,<br />&nbsp;&nbsp;&nbsp;&nbsp;for&nbsp;...&nbsp;</span><span style="color: #0000BB">in&nbsp;</span><span style="color: #007700">...&nbsp;do&nbsp;</span><span style="color: #0000BB">loops</span><span style="color: #007700">,<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">inline&nbsp;keyword<br /><br />Delphi&nbsp;7<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;three&nbsp;additional&nbsp;compiler&nbsp;warnings</span><span style="color: #007700">:<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">Unsafe_Type</span><span style="color: #007700">,<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">Unsafe_Code</span><span style="color: #007700">,&nbsp;and<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">Unsafe_Cast</span><span style="color: #007700">.&nbsp;</span><span style="color: #0000BB">These&nbsp;warnings&nbsp;are&nbsp;disabled&nbsp;by&nbsp;</span><span style="color: #007700">default,&nbsp;</span><span style="color: #0000BB">but&nbsp;can&nbsp;be&nbsp;enabled<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #007700">new&nbsp;</span><span style="color: #0000BB">compiler&nbsp;directive&nbsp;</span><span style="color: #007700">{</span><span style="color: #0000BB">&#36;WARN&nbsp;UNSAFE_CODE&nbsp;ON</span><span style="color: #007700">}<br /><br /></span><span style="color: #0000BB">Delphi&nbsp;6<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #007700">New&nbsp;</span><span style="color: #0000BB">compiler&nbsp;directives</span><span style="color: #007700">:<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{</span><span style="color: #0000BB">&#36;IFDEF&nbsp;MSWINDOWS</span><span style="color: #007700">}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{</span><span style="color: #0000BB">&#36;IFDEF&nbsp;LINUX</span><span style="color: #007700">}<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">Support&nbsp;</span><span style="color: #007700">for&nbsp;{</span><span style="color: #0000BB">&#36;IF</span><span style="color: #007700">}{</span><span style="color: #0000BB">&#36;ELSE</span><span style="color: #007700">}&nbsp;</span><span style="color: #0000BB">compiler&nbsp;directives<br />&nbsp;&nbsp;&nbsp;&nbsp;Variant&nbsp;is&nbsp;no&nbsp;longer&nbsp;based&nbsp;on&nbsp;COM&nbsp;but&nbsp;changed&nbsp;to&nbsp;be&nbsp;CLX&nbsp;compatible</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">COM&nbsp;based&nbsp;variant&nbsp;renamed&nbsp;to&nbsp;OLEVariant<br />&nbsp;&nbsp;&nbsp;&nbsp;Typed&nbsp;constants&nbsp;cannot&nbsp;be&nbsp;assigned&nbsp;to&nbsp;</span><span style="color: #007700">(</span><span style="color: #0000BB">Override&nbsp;with&nbsp;</span><span style="color: #007700">{</span><span style="color: #0000BB">&#36;J</span><span style="color: #007700">+})<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">Enumerated&nbsp;types&nbsp;can&nbsp;be&nbsp;assigned&nbsp;an&nbsp;explicit&nbsp;value&nbsp;</span><span style="color: #007700">(</span><span style="color: #0000BB">cf&nbsp;C</span><span style="color: #007700">++);<br />&nbsp;&nbsp;&nbsp;&nbsp;Interface&nbsp;</span><span style="color: #0000BB">properties<br />&nbsp;&nbsp;&nbsp;&nbsp;Support&nbsp;</span><span style="color: #007700">for&nbsp;</span><span style="color: #0000BB">calling&nbsp;varargs&nbsp;external&nbsp;functions<br /><br />Delphi&nbsp;5<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;No&nbsp;</span><span style="color: #007700">new&nbsp;</span><span style="color: #0000BB">language&nbsp;features</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">but</span><span style="color: #007700">:<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">Support&nbsp;added&nbsp;</span><span style="color: #007700">for&nbsp;</span><span style="color: #0000BB">Frames<br /><br />Delphi&nbsp;4<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;Dynamic&nbsp;arrays<br />&nbsp;&nbsp;&nbsp;&nbsp;LongWord&nbsp;</span><span style="color: #007700">and&nbsp;</span><span style="color: #0000BB">Int64</span><span style="color: #007700">;&nbsp;</span><span style="color: #0000BB">Cardinal&nbsp;is&nbsp;an&nbsp;UINT32&nbsp;</span><span style="color: #007700">(</span><span style="color: #0000BB">before&nbsp;it&nbsp;was&nbsp;unsigned&nbsp;31</span><span style="color: #007700">-</span><span style="color: #0000BB">bit&nbsp;value</span><span style="color: #007700">)<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">Real&nbsp;takes&nbsp;8&nbsp;bytes&nbsp;</span><span style="color: #007700">and&nbsp;</span><span style="color: #0000BB">is&nbsp;the&nbsp;same&nbsp;</span><span style="color: #007700">as&nbsp;</span><span style="color: #0000BB">double&nbsp;</span><span style="color: #007700">(</span><span style="color: #0000BB">previously&nbsp;it&nbsp;was&nbsp;6&nbsp;bytes</span><span style="color: #007700">);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">Override&nbsp;with&nbsp;the&nbsp;</span><span style="color: #007700">new&nbsp;{</span><span style="color: #0000BB">&#36;REALCOMPATIBILITY&nbsp;ON</span><span style="color: #007700">}&nbsp;</span><span style="color: #0000BB">compiler&nbsp;directive</span><span style="color: #007700">;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">REAL48&nbsp;replaces&nbsp;the&nbsp;old&nbsp;6</span><span style="color: #007700">-</span><span style="color: #0000BB">byte&nbsp;real</span><span style="color: #007700">;<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">Support&nbsp;</span><span style="color: #007700">for&nbsp;</span><span style="color: #0000BB">resourcestrings<br /><br />Delphi&nbsp;3<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;Wordbool</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">longbool&nbsp;</span><span style="color: #007700">and&nbsp;</span><span style="color: #0000BB">bytebool&nbsp;store&nbsp;false&nbsp;</span><span style="color: #007700">as&nbsp;-</span><span style="color: #0000BB">1&nbsp;instead&nbsp;of&nbsp;1&nbsp;</span><span style="color: #007700">(</span><span style="color: #0000BB">Boolean&nbsp;is&nbsp;unchanged</span><span style="color: #007700">)<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">Components&nbsp;must&nbsp;be&nbsp;installed&nbsp;using&nbsp;packages<br /><br />Delphi&nbsp;2<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;Support&nbsp;</span><span style="color: #007700">for&nbsp;</span><span style="color: #0000BB">32</span><span style="color: #007700">-</span><span style="color: #0000BB">bit</span><span style="color: #007700">;<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">Ansistring&nbsp;replaces&nbsp;shortstring&nbsp;</span><span style="color: #007700">as&nbsp;</span><span style="color: #0000BB">the&nbsp;</span><span style="color: #007700">default&nbsp;</span><span style="color: #0000BB">string&nbsp;type<br />&nbsp;&nbsp;&nbsp;&nbsp;Widestring<br />&nbsp;&nbsp;&nbsp;&nbsp;4&nbsp;byte&nbsp;data&nbsp;is&nbsp;4&nbsp;byte&nbsp;aligned&nbsp;</span><span style="color: #007700">new&nbsp;</span><span style="color: #0000BB">packed&nbsp;keyword&nbsp;overrides&nbsp;this&nbsp;behavior</span><span style="color: #007700">;<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">TDateTime&nbsp;starts&nbsp;at&nbsp;1899</span><span style="color: #007700">/</span><span style="color: #0000BB">12</span><span style="color: #007700">/</span><span style="color: #0000BB">30&nbsp;under&nbsp;D1&nbsp;it&nbsp;started&nbsp;at&nbsp;0000</span><span style="color: #007700">/</span><span style="color: #0000BB">00</span><span style="color: #007700">/</span><span style="color: #0000BB">00<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #007700">new&nbsp;</span><span style="color: #0000BB">finalization&nbsp;keyword<br />&nbsp;&nbsp;&nbsp;&nbsp;register&nbsp;</span><span style="color: #007700">and&nbsp;</span><span style="color: #0000BB">stdcall&nbsp;calling&nbsp;conventions&nbsp;added</span><span style="color: #007700">.<br />&nbsp;&nbsp;&nbsp;&nbsp;interface&nbsp;</span><span style="color: #0000BB">keyword&nbsp;</span><span style="color: #007700">and&nbsp;</span><span style="color: #0000BB">COM&nbsp;support&nbsp;<br /></span></code></div></div></div>تفاصيل أكثر:<br />
<br />
<a href="http://docwiki.embarcadero.com/RADStudio/en/What%27s_New_in_Delphi_and_C%2B%2BBuilder_XE3" target="_blank" rel="noopener" class="mycode_url">    What`s New in Delphi and C++Builder XE3</a><br />
<a href="http://docwiki.embarcadero.com/RADStudio/en/What%27s_New_in_Delphi_and_C++Builder_XE2" target="_blank" rel="noopener" class="mycode_url">    What's New in Delphi and C++Builder XE2</a><br />
<a href="http://docwiki.embarcadero.com/RADStudio/en/What%27s_New_in_Delphi_and_C++Builder_XE" target="_blank" rel="noopener" class="mycode_url">    What's New in Delphi and C++Builder XE</a><br />
<a href="http://docwiki.embarcadero.com/RADStudio/en/What%27s_New_in_Delphi_and_C++Builder_2010" target="_blank" rel="noopener" class="mycode_url">    What's New in Delphi and C++Builder 2010</a><br />
<a href="http://docwiki.embarcadero.com/RADStudio/en/What%27s_New_in_Delphi_and_C++Builder_2009" target="_blank" rel="noopener" class="mycode_url">    What's New in Delphi and C++Builder 2009</a><br />
<a href="http://docwiki.embarcadero.com/RADStudio/en/What%27s_New_in_RAD_Studio_%28Delphi_for_Win32_2007%29" target="_blank" rel="noopener" class="mycode_url">    What's New in RAD Studio (Delphi for Win32 2007)</a><br />
<a href="http://docwiki.embarcadero.com/RADStudio/en/What%27s_New_in_RAD_Studio_%28C++Builder_2007%29" target="_blank" rel="noopener" class="mycode_url">    What's New in RAD Studio (C++Builder 2007)</a><br />
<a href="http://edn.embarcadero.com/article/33411" target="_blank" rel="noopener" class="mycode_url">    What’s New in Delphi 2006</a><br />
<a href="http://edn.embarcadero.com/article/32778" target="_blank" rel="noopener" class="mycode_url">    What’s New in Delphi 2005</a><br />
<a href="http://edn.embarcadero.com/article/images/28980/D7_whats_new.pdf" target="_blank" rel="noopener" class="mycode_url">    What’s New in Delphi 7</a><br />
<a href="http://www.drbob42.com/examines/examin19.htm" target="_blank" rel="noopener" class="mycode_url">    What’s New in Delphi 6</a><br />
<a href="http://web.archive.org/web/20010210005242/http://www.borland.com/delphi/whatsnew.html" target="_blank" rel="noopener" class="mycode_url">    What’s New in Delphi 5</a><br />
<a href="http://www.tempest-sw.com/secrets/delphi3.htm" target="_blank" rel="noopener" class="mycode_url">    What's New in Delphi 3</a><br />
<br />
بالتوفيق.</span>]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[أنماط المجموعات Collections]]></title>
			<link>https://delphi4arab.net/forum/showthread.php?tid=3970</link>
			<pubDate>Thu, 08 Mar 2012 01:21:48 +0100</pubDate>
			<dc:creator><![CDATA[<a href="https://delphi4arab.net/forum/member.php?action=profile&uid=161">kachwahed</a>]]></dc:creator>
			<guid isPermaLink="false">https://delphi4arab.net/forum/showthread.php?tid=3970</guid>
			<description><![CDATA[<span style="color: Black;" class="mycode_color">السلام عليكم ورحمة الله<br />
<br />
قد نحتاج في حالات كثيرة زمن التشغيل إلى استخدام سلسلة من الكائنات ديناميكا<br />
الجداول الثابتة Static Array أو الديناميكية قد تفي بالغرض في حالات ضيقة<br />
لكن لاستخدامات أوسع: الحذف، الترتيب، المقارنة، البحث، الدمج... ينبغي برمجة ذلك يدويا<br />
<br />
لنفكر لتوجه غرضي، البديل استخدام TList المعرف في المكتبة Classes.pas<br />
يمثل سلسلة من الكائنات TObject فهو بذلك نمط مرن <br />
وبالتالي باستخدام القولبة يمكنك توظيفه لأي كائن آخر<br />
لتستفيد من الخصائص التقليدية للسلاسل المتصلة Exchange, Expand, Extract, First, IndexOf, Insert, Last, Move ,Remove, Pack, Sort, Capacity, Count, Items وغيرها...<br />
طبعا دون إعادة كتابة الخوارزميات الجاهزة يكفي إعادة توريثها<br />
مثال TIntegerList مصغرة:<br />
<div class="codeblock phpcodeblock"><div class="title">PHP كود :</div><div class="body"><div dir="ltr"><code><span style="color: #0000BB">type<br />&nbsp;&nbsp;TIntegerList&nbsp;</span><span style="color: #007700">=&nbsp;class(</span><span style="color: #0000BB">TList</span><span style="color: #007700">)<br />&nbsp;&nbsp;private<br />&nbsp;&nbsp;&nbsp;&nbsp;function&nbsp;</span><span style="color: #0000BB">Get</span><span style="color: #007700">(</span><span style="color: #0000BB">Index</span><span style="color: #007700">:&nbsp;</span><span style="color: #0000BB">Integer</span><span style="color: #007700">):&nbsp;</span><span style="color: #0000BB">Integer</span><span style="color: #007700">;<br />...<br />function&nbsp;</span><span style="color: #0000BB">TIntegerList</span><span style="color: #007700">.</span><span style="color: #0000BB">Get</span><span style="color: #007700">(</span><span style="color: #0000BB">Index</span><span style="color: #007700">:&nbsp;</span><span style="color: #0000BB">Integer</span><span style="color: #007700">):&nbsp;</span><span style="color: #0000BB">Integer</span><span style="color: #007700">;<br /></span><span style="color: #0000BB">begin&nbsp;<br />&nbsp;&nbsp;&nbsp;Result&nbsp;</span><span style="color: #007700">:=&nbsp;</span><span style="color: #0000BB">Integer</span><span style="color: #007700">(</span><span style="color: #0000BB">inherited&nbsp;Items</span><span style="color: #007700">[</span><span style="color: #0000BB">Index</span><span style="color: #007700">]);&nbsp;<br /></span><span style="color: #0000BB">end</span><span style="color: #007700">;&nbsp;<br /></span></code></div></div></div>تتمة الكود في المرفق IntList.rar<br />
<br />
عند استخدامه مع أصناف أخرى يستحسن عدم توريثه مباشرة<br />
وإلا قد تجبر مستخدمه على القولبة عند كل استخدام<br />
<div class="codeblock phpcodeblock"><div class="title">PHP كود :</div><div class="body"><div dir="ltr"><code><span style="color: #0000BB">type<br />&nbsp;&nbsp;TMyList&nbsp;</span><span style="color: #007700">=&nbsp;class<br />&nbsp;&nbsp;private<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">FMyList</span><span style="color: #007700">:&nbsp;</span><span style="color: #0000BB">TList</span><span style="color: #007700">;</span><span style="color: #FF8000">//&lt;--&nbsp;Best&nbsp;practice<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #007700">function&nbsp;</span><span style="color: #0000BB">GetItems</span><span style="color: #007700">(</span><span style="color: #0000BB">Index</span><span style="color: #007700">:&nbsp;</span><span style="color: #0000BB">Integer</span><span style="color: #007700">):&nbsp;</span><span style="color: #0000BB">TMyList</span><span style="color: #007700">;<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">procedure&nbsp;SetItems</span><span style="color: #007700">(</span><span style="color: #0000BB">Index</span><span style="color: #007700">:&nbsp;</span><span style="color: #0000BB">Integer</span><span style="color: #007700">;&nbsp;const&nbsp;</span><span style="color: #0000BB">Value</span><span style="color: #007700">:&nbsp;</span><span style="color: #0000BB">TMyList</span><span style="color: #007700">);<br />&nbsp;&nbsp;public<br />&nbsp;&nbsp;&nbsp;&nbsp;function&nbsp;</span><span style="color: #0000BB">Add</span><span style="color: #007700">(</span><span style="color: #0000BB">Item</span><span style="color: #007700">:&nbsp;</span><span style="color: #0000BB">TMyList</span><span style="color: #007700">):&nbsp;</span><span style="color: #0000BB">Integer</span><span style="color: #007700">;<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">property&nbsp;Items</span><span style="color: #007700">[</span><span style="color: #0000BB">Index</span><span style="color: #007700">:&nbsp;</span><span style="color: #0000BB">Integer</span><span style="color: #007700">]:&nbsp;</span><span style="color: #0000BB">TMyList&nbsp;read&nbsp;GetItems&nbsp;write&nbsp;SetItems</span><span style="color: #007700">;&nbsp;default;<br />&nbsp;&nbsp;</span><span style="color: #0000BB">end</span><span style="color: #007700">;&nbsp;<br /></span></code></div></div></div>TList خفيف ويصلح مع الأنماط الصغيرة<br />
<br />
عند التعامل مع صنفيات أكثر أهمية (مثل المكونات)<br />
أو تحتاج إلى استخدامات متقدمة<br />
يمكنك الاستفادة من خدمات المكتبة Contnrs.pas المرفقة مع دلفي (إصدار &gt;= 5 على الأقل)<br />
<div class="codeblock"><div class="title">كود :</div><div class="body" dir="ltr"><code>TObjectList
TClassList
TComponentList</code></div></div><br />
باختصار:<br />
TCollection وTCollectionItem تصميم رائع يختصر الكثير من العمل<br />
يسمح هذان الصنفان بتجسيد العلاقة واحد إلى متعدد بين أصناف دلفي<br />
<span style="color: Blue;" class="mycode_color">كيف ذلك؟</span><br />
لنشاهد المثال الآتي: نرغب بإنشاء صنفين "عامل" TEmployee و"مجموعة عمال" TEmployees<br />
عامل واحد يمثل هنا غرض من  TCollectionItem<br />
في حين تمثل مجموعة العمال بالصنف TCollection<br />
<div class="codeblock phpcodeblock"><div class="title">PHP كود :</div><div class="body"><div dir="ltr"><code><span style="color: #0000BB">type<br />&nbsp;&nbsp;TEmployee&nbsp;</span><span style="color: #007700">=&nbsp;class(</span><span style="color: #0000BB">TCollectionItem</span><span style="color: #007700">)<br />&nbsp;&nbsp;private<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">FFirstName</span><span style="color: #007700">:&nbsp;</span><span style="color: #0000BB">string</span><span style="color: #007700">;<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">FAge</span><span style="color: #007700">:&nbsp;</span><span style="color: #0000BB">SmallInt</span><span style="color: #007700">;<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">procedure&nbsp;SetFirstName</span><span style="color: #007700">(const&nbsp;</span><span style="color: #0000BB">Value</span><span style="color: #007700">:&nbsp;</span><span style="color: #0000BB">string</span><span style="color: #007700">);<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">procedure&nbsp;SetAge</span><span style="color: #007700">(const&nbsp;</span><span style="color: #0000BB">Value</span><span style="color: #007700">:&nbsp;</span><span style="color: #0000BB">SmallInt</span><span style="color: #007700">);<br />&nbsp;&nbsp;public<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">property&nbsp;FirstName</span><span style="color: #007700">:&nbsp;</span><span style="color: #0000BB">string&nbsp;read&nbsp;FFirstName&nbsp;write&nbsp;SetFirstName</span><span style="color: #007700">;<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">property&nbsp;Age</span><span style="color: #007700">:&nbsp;</span><span style="color: #0000BB">SmallInt&nbsp;read&nbsp;FAge&nbsp;write&nbsp;SetAge</span><span style="color: #007700">;<br />&nbsp;&nbsp;</span><span style="color: #0000BB">end</span><span style="color: #007700">;<br /><br />&nbsp;&nbsp;</span><span style="color: #0000BB">TEmployees&nbsp;</span><span style="color: #007700">=&nbsp;class(</span><span style="color: #0000BB">TCollection</span><span style="color: #007700">)<br />&nbsp;&nbsp;private<br />&nbsp;&nbsp;&nbsp;&nbsp;function&nbsp;</span><span style="color: #0000BB">GetItem</span><span style="color: #007700">(</span><span style="color: #0000BB">Index</span><span style="color: #007700">:&nbsp;</span><span style="color: #0000BB">Integer</span><span style="color: #007700">):&nbsp;</span><span style="color: #0000BB">TEmployee</span><span style="color: #007700">;<br />&nbsp;&nbsp;public<br />&nbsp;&nbsp;&nbsp;&nbsp;function&nbsp;</span><span style="color: #0000BB">Add</span><span style="color: #007700">:&nbsp;</span><span style="color: #0000BB">TEmployee</span><span style="color: #007700">;<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">property&nbsp;Items</span><span style="color: #007700">[</span><span style="color: #0000BB">Index</span><span style="color: #007700">:&nbsp;</span><span style="color: #0000BB">Integer</span><span style="color: #007700">]:&nbsp;</span><span style="color: #0000BB">TEmployee&nbsp;read&nbsp;GetItem</span><span style="color: #007700">;&nbsp;default;<br />&nbsp;&nbsp;</span><span style="color: #0000BB">end</span><span style="color: #007700">;&nbsp;<br /></span></code></div></div></div>انسى أمر الـ Implementation، لنشاهد الاستخدام<br />
الآن، لن نستخدم الصنف <span style="color: Blue;" class="mycode_color">TEmployee </span>(إلا مرة واحدة عند الإنشاء) لن نتعامل مع "عامل" واحد<br />
بل سنقوم بإنشاء كائن من مجموعة العمال <span style="color: Red;" class="mycode_color">TEmployees </span>ونخبره بالصنف الذي سنستخدمه كعنصر Item<br />
<div class="codeblock"><div class="title">كود :</div><div class="body" dir="ltr"><code>[color=black][COLOR="Red"]TEmployees[/color].Create([color=Blue]TEmployee[/color])[/COLOR]</code></div></div>كل ما نحن بحاجة إليه موجود في الصنف <span style="color: Red;" class="mycode_color">TEmployees</span>، للإضافة Add وDelete للحذف وغيرهما...<br />
مثال:<br />
<div class="codeblock phpcodeblock"><div class="title">PHP كود :</div><div class="body"><div dir="ltr"><code><span style="color: #007700">var<br />&nbsp;&nbsp;</span><span style="color: #0000BB">Team</span><span style="color: #007700">:&nbsp;</span><span style="color: #0000BB">TEmployees</span><span style="color: #007700">;<br />&nbsp;&nbsp;</span><span style="color: #0000BB">Officer</span><span style="color: #007700">:&nbsp;</span><span style="color: #0000BB">TEmployee</span><span style="color: #007700">;<br /></span><span style="color: #0000BB">begin<br /><br />&nbsp;&nbsp;Team&nbsp;</span><span style="color: #007700">:=&nbsp;</span><span style="color: #0000BB">TEmployees</span><span style="color: #007700">.</span><span style="color: #0000BB">Create</span><span style="color: #007700">(</span><span style="color: #0000BB">TEmployee</span><span style="color: #007700">);<br />&nbsp;&nbsp;</span><span style="color: #0000BB">Officer&nbsp;</span><span style="color: #007700">:=&nbsp;</span><span style="color: #0000BB">Team</span><span style="color: #007700">.</span><span style="color: #0000BB">Add</span><span style="color: #007700">;<br />&nbsp;&nbsp;</span><span style="color: #0000BB">Officer</span><span style="color: #007700">.</span><span style="color: #0000BB">FirstName&nbsp;</span><span style="color: #007700">:=&nbsp;</span><span style="color: #DD0000">'Mohamed'</span><span style="color: #007700">;<br />&nbsp;&nbsp;</span><span style="color: #0000BB">Officer</span><span style="color: #007700">.</span><span style="color: #0000BB">Age&nbsp;</span><span style="color: #007700">:=&nbsp;</span><span style="color: #0000BB">35</span><span style="color: #007700">;<br /><br />&nbsp;&nbsp;</span><span style="color: #0000BB">Writeln</span><span style="color: #007700">(</span><span style="color: #DD0000">'Officer:'</span><span style="color: #007700">);<br />&nbsp;&nbsp;</span><span style="color: #0000BB">with&nbsp;Team</span><span style="color: #007700">[</span><span style="color: #0000BB">0</span><span style="color: #007700">]&nbsp;do<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">Writeln</span><span style="color: #007700">(</span><span style="color: #DD0000">'Name:&nbsp;'</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">FirstName</span><span style="color: #007700">,&nbsp;</span><span style="color: #FF8000">#13#10'Age:&nbsp;',&nbsp;Age);<br />&nbsp;&nbsp;</span><span style="color: #0000BB">Team</span><span style="color: #007700">.</span><span style="color: #0000BB">Free</span><span style="color: #007700">;&nbsp;<br /></span></code></div></div></div><span style="color: Blue;" class="mycode_color">وما الذي سنستفيد من كل ذلك؟</span><br />
الصنف TCollection مشتق من الصنف TPersistent وبذلك تستفيد من كل ما يوفره من Assign، التدفقات Streaming، وOwnership إذا أضفنا TOwnedCollection...<br />
وسنختزل الكثير من الوقت مقارنة بما لو كتبنا ذلك من الصفر...<br />
صممت هذه الأنماط لأجل برمجة المكونات وهي مناسبة جدا لها:<br />
<div style="text-align: center;" class="mycode_align"><img src="http://www.delphi4arab.net/forum/attachment.php?attachmentid=3343&amp;stc=1&amp;d=1331163295" loading="lazy"  alt="[صورة: attachment.php?attachmentid=3343&amp;stc=1&amp;d=1331163295]" class="mycode_img" /></div>
معظم مكونات دلفي تستخدم هذه الأنماط  TActionListItem، TListColumn، TColumn...<br />
<br />
<span style="color: Blue;" class="mycode_color">أنماط أخرى أسهل من هذه؟</span><br />
TObjectList أسهل من حيث التعامل<br />
تنطلق من TList ولا تختلف عنها كثيرا<br />
لتضيف ميزة رائعة وهي تدمير تلقائي للأغراض المضافة (مع ضبط OwnsObjects = True وهي كذلك افتراضيا)، مثال: لنفترض الصنف TPerson له خاصية FullName ترفق له عند الإنشاء، نكتب:<br />
<div class="codeblock phpcodeblock"><div class="title">PHP كود :</div><div class="body"><div dir="ltr"><code><span style="color: #0000BB">type<br />&nbsp;&nbsp;TPersonList&nbsp;</span><span style="color: #007700">=&nbsp;class(</span><span style="color: #0000BB">TObjectList</span><span style="color: #007700">)<br />&nbsp;&nbsp;private<br />&nbsp;&nbsp;&nbsp;&nbsp;function&nbsp;</span><span style="color: #0000BB">GetItem</span><span style="color: #007700">(</span><span style="color: #0000BB">Index</span><span style="color: #007700">:&nbsp;</span><span style="color: #0000BB">Integer</span><span style="color: #007700">):&nbsp;</span><span style="color: #0000BB">TPerson</span><span style="color: #007700">;<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">procedure&nbsp;SetItem</span><span style="color: #007700">(</span><span style="color: #0000BB">Index</span><span style="color: #007700">:&nbsp;</span><span style="color: #0000BB">Integer</span><span style="color: #007700">;&nbsp;const&nbsp;</span><span style="color: #0000BB">Value</span><span style="color: #007700">:&nbsp;</span><span style="color: #0000BB">TPerson</span><span style="color: #007700">);<br />&nbsp;&nbsp;public<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">property&nbsp;Items</span><span style="color: #007700">[</span><span style="color: #0000BB">Index&nbsp;</span><span style="color: #007700">:&nbsp;</span><span style="color: #0000BB">Integer</span><span style="color: #007700">]:&nbsp;</span><span style="color: #0000BB">TPerson&nbsp;read&nbsp;GetItem&nbsp;write&nbsp;SetItem</span><span style="color: #007700">;&nbsp;default;<br />&nbsp;&nbsp;</span><span style="color: #0000BB">end</span><span style="color: #007700">;<br />...<br />&nbsp;&nbsp;</span><span style="color: #0000BB">with&nbsp;TPersonList</span><span style="color: #007700">.</span><span style="color: #0000BB">Create&nbsp;</span><span style="color: #007700">do&nbsp;</span><span style="color: #0000BB">begin</span><span style="color: #FF8000">//By&nbsp;default&nbsp;OwnsObjects&nbsp;=&nbsp;True<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">Add</span><span style="color: #007700">(</span><span style="color: #0000BB">TPerson</span><span style="color: #007700">.</span><span style="color: #0000BB">Create</span><span style="color: #007700">(</span><span style="color: #DD0000">'Ahmed'</span><span style="color: #007700">));<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">Add</span><span style="color: #007700">(</span><span style="color: #0000BB">TPerson</span><span style="color: #007700">.</span><span style="color: #0000BB">Create</span><span style="color: #007700">(</span><span style="color: #DD0000">'Said'</span><span style="color: #007700">));<br />&nbsp;&nbsp;&nbsp;&nbsp;for&nbsp;</span><span style="color: #0000BB">I&nbsp;</span><span style="color: #007700">:=&nbsp;</span><span style="color: #0000BB">0&nbsp;to&nbsp;Count&nbsp;</span><span style="color: #007700">-&nbsp;</span><span style="color: #0000BB">1&nbsp;</span><span style="color: #007700">do<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">Writeln</span><span style="color: #007700">(</span><span style="color: #DD0000">'Member:&nbsp;'</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">Items</span><span style="color: #007700">[</span><span style="color: #0000BB">I</span><span style="color: #007700">].</span><span style="color: #0000BB">FullName</span><span style="color: #007700">);<br /></span><span style="color: #FF8000">//&nbsp;&nbsp;&nbsp;&nbsp;Clear;&nbsp;//Free;&nbsp;&nbsp;&lt;-&nbsp;XE!<br />&nbsp;&nbsp;</span><span style="color: #0000BB">end</span><span style="color: #007700">;&nbsp;<br /></span></code></div></div></div>بعض إصدارات دلفي تحوي أخطاء بخصوص تسيير الذاكرة يستحسن التحقق منها ReportMemoryLeaksOnShutdown أو مكتبات خارجية أو غير ذلك...<br />
<br />
بقيت TClassList التي تمثل TList لتسيير صنف من الأصناف TClass = class of TObject<br />
أما TComponentList فتشتق من TObjectList لتضيف إمكانية التحديث التلقائي عند حذف العناصر وتحرير الذاكرة عند التدمير...<br />
كود الأمثلة السابقة في المرفق CollectionsExample.rar<br />
<br />
هذا مثال أأكد من خلاله أنه إذا عرفنا فقط كيف نستخدم ما بأيدينا من مكتبات دون اللجوء إلى المكونات الإضافية أو البحث في النت، لاختصرنا الكثير من الوقت والجهد مع تحقيق نتائج أفضل. أليس كذلك <img src="https://delphi4arab.net/forum/images/smilies/smile.png" alt="Smile" title="Smile" class="smilie smilie_1" /><br />
<br />
بالتوفيق.</span><br />
<br />
<img src="https://delphi4arab.net/forum/images/attachtypes/rar.png" title="Winrar file" border="0" alt=".rar" />
&nbsp;&nbsp;<a href="attachment.php?aid=2110" target="_blank" title="">IntList.rar</a> (الحجم : 536 بايت / التحميلات : 82)
<br />
<br />
<img src="https://delphi4arab.net/forum/images/attachtypes/image.png" title="JPG Image" border="0" alt=".jpg" />
&nbsp;&nbsp;<a href="attachment.php?aid=2111" target="_blank" title="">TCollectionDesign.JPG</a> (الحجم : 100.32 ك ب / التحميلات : 204)
<br />
<br />
<img src="https://delphi4arab.net/forum/images/attachtypes/rar.png" title="Winrar file" border="0" alt=".rar" />
&nbsp;&nbsp;<a href="attachment.php?aid=2112" target="_blank" title="">CollectionsExample.rar</a> (الحجم : 2.02 ك ب / التحميلات : 93)
]]></description>
			<content:encoded><![CDATA[<span style="color: Black;" class="mycode_color">السلام عليكم ورحمة الله<br />
<br />
قد نحتاج في حالات كثيرة زمن التشغيل إلى استخدام سلسلة من الكائنات ديناميكا<br />
الجداول الثابتة Static Array أو الديناميكية قد تفي بالغرض في حالات ضيقة<br />
لكن لاستخدامات أوسع: الحذف، الترتيب، المقارنة، البحث، الدمج... ينبغي برمجة ذلك يدويا<br />
<br />
لنفكر لتوجه غرضي، البديل استخدام TList المعرف في المكتبة Classes.pas<br />
يمثل سلسلة من الكائنات TObject فهو بذلك نمط مرن <br />
وبالتالي باستخدام القولبة يمكنك توظيفه لأي كائن آخر<br />
لتستفيد من الخصائص التقليدية للسلاسل المتصلة Exchange, Expand, Extract, First, IndexOf, Insert, Last, Move ,Remove, Pack, Sort, Capacity, Count, Items وغيرها...<br />
طبعا دون إعادة كتابة الخوارزميات الجاهزة يكفي إعادة توريثها<br />
مثال TIntegerList مصغرة:<br />
<div class="codeblock phpcodeblock"><div class="title">PHP كود :</div><div class="body"><div dir="ltr"><code><span style="color: #0000BB">type<br />&nbsp;&nbsp;TIntegerList&nbsp;</span><span style="color: #007700">=&nbsp;class(</span><span style="color: #0000BB">TList</span><span style="color: #007700">)<br />&nbsp;&nbsp;private<br />&nbsp;&nbsp;&nbsp;&nbsp;function&nbsp;</span><span style="color: #0000BB">Get</span><span style="color: #007700">(</span><span style="color: #0000BB">Index</span><span style="color: #007700">:&nbsp;</span><span style="color: #0000BB">Integer</span><span style="color: #007700">):&nbsp;</span><span style="color: #0000BB">Integer</span><span style="color: #007700">;<br />...<br />function&nbsp;</span><span style="color: #0000BB">TIntegerList</span><span style="color: #007700">.</span><span style="color: #0000BB">Get</span><span style="color: #007700">(</span><span style="color: #0000BB">Index</span><span style="color: #007700">:&nbsp;</span><span style="color: #0000BB">Integer</span><span style="color: #007700">):&nbsp;</span><span style="color: #0000BB">Integer</span><span style="color: #007700">;<br /></span><span style="color: #0000BB">begin&nbsp;<br />&nbsp;&nbsp;&nbsp;Result&nbsp;</span><span style="color: #007700">:=&nbsp;</span><span style="color: #0000BB">Integer</span><span style="color: #007700">(</span><span style="color: #0000BB">inherited&nbsp;Items</span><span style="color: #007700">[</span><span style="color: #0000BB">Index</span><span style="color: #007700">]);&nbsp;<br /></span><span style="color: #0000BB">end</span><span style="color: #007700">;&nbsp;<br /></span></code></div></div></div>تتمة الكود في المرفق IntList.rar<br />
<br />
عند استخدامه مع أصناف أخرى يستحسن عدم توريثه مباشرة<br />
وإلا قد تجبر مستخدمه على القولبة عند كل استخدام<br />
<div class="codeblock phpcodeblock"><div class="title">PHP كود :</div><div class="body"><div dir="ltr"><code><span style="color: #0000BB">type<br />&nbsp;&nbsp;TMyList&nbsp;</span><span style="color: #007700">=&nbsp;class<br />&nbsp;&nbsp;private<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">FMyList</span><span style="color: #007700">:&nbsp;</span><span style="color: #0000BB">TList</span><span style="color: #007700">;</span><span style="color: #FF8000">//&lt;--&nbsp;Best&nbsp;practice<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #007700">function&nbsp;</span><span style="color: #0000BB">GetItems</span><span style="color: #007700">(</span><span style="color: #0000BB">Index</span><span style="color: #007700">:&nbsp;</span><span style="color: #0000BB">Integer</span><span style="color: #007700">):&nbsp;</span><span style="color: #0000BB">TMyList</span><span style="color: #007700">;<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">procedure&nbsp;SetItems</span><span style="color: #007700">(</span><span style="color: #0000BB">Index</span><span style="color: #007700">:&nbsp;</span><span style="color: #0000BB">Integer</span><span style="color: #007700">;&nbsp;const&nbsp;</span><span style="color: #0000BB">Value</span><span style="color: #007700">:&nbsp;</span><span style="color: #0000BB">TMyList</span><span style="color: #007700">);<br />&nbsp;&nbsp;public<br />&nbsp;&nbsp;&nbsp;&nbsp;function&nbsp;</span><span style="color: #0000BB">Add</span><span style="color: #007700">(</span><span style="color: #0000BB">Item</span><span style="color: #007700">:&nbsp;</span><span style="color: #0000BB">TMyList</span><span style="color: #007700">):&nbsp;</span><span style="color: #0000BB">Integer</span><span style="color: #007700">;<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">property&nbsp;Items</span><span style="color: #007700">[</span><span style="color: #0000BB">Index</span><span style="color: #007700">:&nbsp;</span><span style="color: #0000BB">Integer</span><span style="color: #007700">]:&nbsp;</span><span style="color: #0000BB">TMyList&nbsp;read&nbsp;GetItems&nbsp;write&nbsp;SetItems</span><span style="color: #007700">;&nbsp;default;<br />&nbsp;&nbsp;</span><span style="color: #0000BB">end</span><span style="color: #007700">;&nbsp;<br /></span></code></div></div></div>TList خفيف ويصلح مع الأنماط الصغيرة<br />
<br />
عند التعامل مع صنفيات أكثر أهمية (مثل المكونات)<br />
أو تحتاج إلى استخدامات متقدمة<br />
يمكنك الاستفادة من خدمات المكتبة Contnrs.pas المرفقة مع دلفي (إصدار &gt;= 5 على الأقل)<br />
<div class="codeblock"><div class="title">كود :</div><div class="body" dir="ltr"><code>TObjectList
TClassList
TComponentList</code></div></div><br />
باختصار:<br />
TCollection وTCollectionItem تصميم رائع يختصر الكثير من العمل<br />
يسمح هذان الصنفان بتجسيد العلاقة واحد إلى متعدد بين أصناف دلفي<br />
<span style="color: Blue;" class="mycode_color">كيف ذلك؟</span><br />
لنشاهد المثال الآتي: نرغب بإنشاء صنفين "عامل" TEmployee و"مجموعة عمال" TEmployees<br />
عامل واحد يمثل هنا غرض من  TCollectionItem<br />
في حين تمثل مجموعة العمال بالصنف TCollection<br />
<div class="codeblock phpcodeblock"><div class="title">PHP كود :</div><div class="body"><div dir="ltr"><code><span style="color: #0000BB">type<br />&nbsp;&nbsp;TEmployee&nbsp;</span><span style="color: #007700">=&nbsp;class(</span><span style="color: #0000BB">TCollectionItem</span><span style="color: #007700">)<br />&nbsp;&nbsp;private<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">FFirstName</span><span style="color: #007700">:&nbsp;</span><span style="color: #0000BB">string</span><span style="color: #007700">;<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">FAge</span><span style="color: #007700">:&nbsp;</span><span style="color: #0000BB">SmallInt</span><span style="color: #007700">;<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">procedure&nbsp;SetFirstName</span><span style="color: #007700">(const&nbsp;</span><span style="color: #0000BB">Value</span><span style="color: #007700">:&nbsp;</span><span style="color: #0000BB">string</span><span style="color: #007700">);<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">procedure&nbsp;SetAge</span><span style="color: #007700">(const&nbsp;</span><span style="color: #0000BB">Value</span><span style="color: #007700">:&nbsp;</span><span style="color: #0000BB">SmallInt</span><span style="color: #007700">);<br />&nbsp;&nbsp;public<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">property&nbsp;FirstName</span><span style="color: #007700">:&nbsp;</span><span style="color: #0000BB">string&nbsp;read&nbsp;FFirstName&nbsp;write&nbsp;SetFirstName</span><span style="color: #007700">;<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">property&nbsp;Age</span><span style="color: #007700">:&nbsp;</span><span style="color: #0000BB">SmallInt&nbsp;read&nbsp;FAge&nbsp;write&nbsp;SetAge</span><span style="color: #007700">;<br />&nbsp;&nbsp;</span><span style="color: #0000BB">end</span><span style="color: #007700">;<br /><br />&nbsp;&nbsp;</span><span style="color: #0000BB">TEmployees&nbsp;</span><span style="color: #007700">=&nbsp;class(</span><span style="color: #0000BB">TCollection</span><span style="color: #007700">)<br />&nbsp;&nbsp;private<br />&nbsp;&nbsp;&nbsp;&nbsp;function&nbsp;</span><span style="color: #0000BB">GetItem</span><span style="color: #007700">(</span><span style="color: #0000BB">Index</span><span style="color: #007700">:&nbsp;</span><span style="color: #0000BB">Integer</span><span style="color: #007700">):&nbsp;</span><span style="color: #0000BB">TEmployee</span><span style="color: #007700">;<br />&nbsp;&nbsp;public<br />&nbsp;&nbsp;&nbsp;&nbsp;function&nbsp;</span><span style="color: #0000BB">Add</span><span style="color: #007700">:&nbsp;</span><span style="color: #0000BB">TEmployee</span><span style="color: #007700">;<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">property&nbsp;Items</span><span style="color: #007700">[</span><span style="color: #0000BB">Index</span><span style="color: #007700">:&nbsp;</span><span style="color: #0000BB">Integer</span><span style="color: #007700">]:&nbsp;</span><span style="color: #0000BB">TEmployee&nbsp;read&nbsp;GetItem</span><span style="color: #007700">;&nbsp;default;<br />&nbsp;&nbsp;</span><span style="color: #0000BB">end</span><span style="color: #007700">;&nbsp;<br /></span></code></div></div></div>انسى أمر الـ Implementation، لنشاهد الاستخدام<br />
الآن، لن نستخدم الصنف <span style="color: Blue;" class="mycode_color">TEmployee </span>(إلا مرة واحدة عند الإنشاء) لن نتعامل مع "عامل" واحد<br />
بل سنقوم بإنشاء كائن من مجموعة العمال <span style="color: Red;" class="mycode_color">TEmployees </span>ونخبره بالصنف الذي سنستخدمه كعنصر Item<br />
<div class="codeblock"><div class="title">كود :</div><div class="body" dir="ltr"><code>[color=black][COLOR="Red"]TEmployees[/color].Create([color=Blue]TEmployee[/color])[/COLOR]</code></div></div>كل ما نحن بحاجة إليه موجود في الصنف <span style="color: Red;" class="mycode_color">TEmployees</span>، للإضافة Add وDelete للحذف وغيرهما...<br />
مثال:<br />
<div class="codeblock phpcodeblock"><div class="title">PHP كود :</div><div class="body"><div dir="ltr"><code><span style="color: #007700">var<br />&nbsp;&nbsp;</span><span style="color: #0000BB">Team</span><span style="color: #007700">:&nbsp;</span><span style="color: #0000BB">TEmployees</span><span style="color: #007700">;<br />&nbsp;&nbsp;</span><span style="color: #0000BB">Officer</span><span style="color: #007700">:&nbsp;</span><span style="color: #0000BB">TEmployee</span><span style="color: #007700">;<br /></span><span style="color: #0000BB">begin<br /><br />&nbsp;&nbsp;Team&nbsp;</span><span style="color: #007700">:=&nbsp;</span><span style="color: #0000BB">TEmployees</span><span style="color: #007700">.</span><span style="color: #0000BB">Create</span><span style="color: #007700">(</span><span style="color: #0000BB">TEmployee</span><span style="color: #007700">);<br />&nbsp;&nbsp;</span><span style="color: #0000BB">Officer&nbsp;</span><span style="color: #007700">:=&nbsp;</span><span style="color: #0000BB">Team</span><span style="color: #007700">.</span><span style="color: #0000BB">Add</span><span style="color: #007700">;<br />&nbsp;&nbsp;</span><span style="color: #0000BB">Officer</span><span style="color: #007700">.</span><span style="color: #0000BB">FirstName&nbsp;</span><span style="color: #007700">:=&nbsp;</span><span style="color: #DD0000">'Mohamed'</span><span style="color: #007700">;<br />&nbsp;&nbsp;</span><span style="color: #0000BB">Officer</span><span style="color: #007700">.</span><span style="color: #0000BB">Age&nbsp;</span><span style="color: #007700">:=&nbsp;</span><span style="color: #0000BB">35</span><span style="color: #007700">;<br /><br />&nbsp;&nbsp;</span><span style="color: #0000BB">Writeln</span><span style="color: #007700">(</span><span style="color: #DD0000">'Officer:'</span><span style="color: #007700">);<br />&nbsp;&nbsp;</span><span style="color: #0000BB">with&nbsp;Team</span><span style="color: #007700">[</span><span style="color: #0000BB">0</span><span style="color: #007700">]&nbsp;do<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">Writeln</span><span style="color: #007700">(</span><span style="color: #DD0000">'Name:&nbsp;'</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">FirstName</span><span style="color: #007700">,&nbsp;</span><span style="color: #FF8000">#13#10'Age:&nbsp;',&nbsp;Age);<br />&nbsp;&nbsp;</span><span style="color: #0000BB">Team</span><span style="color: #007700">.</span><span style="color: #0000BB">Free</span><span style="color: #007700">;&nbsp;<br /></span></code></div></div></div><span style="color: Blue;" class="mycode_color">وما الذي سنستفيد من كل ذلك؟</span><br />
الصنف TCollection مشتق من الصنف TPersistent وبذلك تستفيد من كل ما يوفره من Assign، التدفقات Streaming، وOwnership إذا أضفنا TOwnedCollection...<br />
وسنختزل الكثير من الوقت مقارنة بما لو كتبنا ذلك من الصفر...<br />
صممت هذه الأنماط لأجل برمجة المكونات وهي مناسبة جدا لها:<br />
<div style="text-align: center;" class="mycode_align"><img src="http://www.delphi4arab.net/forum/attachment.php?attachmentid=3343&amp;stc=1&amp;d=1331163295" loading="lazy"  alt="[صورة: attachment.php?attachmentid=3343&amp;stc=1&amp;d=1331163295]" class="mycode_img" /></div>
معظم مكونات دلفي تستخدم هذه الأنماط  TActionListItem، TListColumn، TColumn...<br />
<br />
<span style="color: Blue;" class="mycode_color">أنماط أخرى أسهل من هذه؟</span><br />
TObjectList أسهل من حيث التعامل<br />
تنطلق من TList ولا تختلف عنها كثيرا<br />
لتضيف ميزة رائعة وهي تدمير تلقائي للأغراض المضافة (مع ضبط OwnsObjects = True وهي كذلك افتراضيا)، مثال: لنفترض الصنف TPerson له خاصية FullName ترفق له عند الإنشاء، نكتب:<br />
<div class="codeblock phpcodeblock"><div class="title">PHP كود :</div><div class="body"><div dir="ltr"><code><span style="color: #0000BB">type<br />&nbsp;&nbsp;TPersonList&nbsp;</span><span style="color: #007700">=&nbsp;class(</span><span style="color: #0000BB">TObjectList</span><span style="color: #007700">)<br />&nbsp;&nbsp;private<br />&nbsp;&nbsp;&nbsp;&nbsp;function&nbsp;</span><span style="color: #0000BB">GetItem</span><span style="color: #007700">(</span><span style="color: #0000BB">Index</span><span style="color: #007700">:&nbsp;</span><span style="color: #0000BB">Integer</span><span style="color: #007700">):&nbsp;</span><span style="color: #0000BB">TPerson</span><span style="color: #007700">;<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">procedure&nbsp;SetItem</span><span style="color: #007700">(</span><span style="color: #0000BB">Index</span><span style="color: #007700">:&nbsp;</span><span style="color: #0000BB">Integer</span><span style="color: #007700">;&nbsp;const&nbsp;</span><span style="color: #0000BB">Value</span><span style="color: #007700">:&nbsp;</span><span style="color: #0000BB">TPerson</span><span style="color: #007700">);<br />&nbsp;&nbsp;public<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">property&nbsp;Items</span><span style="color: #007700">[</span><span style="color: #0000BB">Index&nbsp;</span><span style="color: #007700">:&nbsp;</span><span style="color: #0000BB">Integer</span><span style="color: #007700">]:&nbsp;</span><span style="color: #0000BB">TPerson&nbsp;read&nbsp;GetItem&nbsp;write&nbsp;SetItem</span><span style="color: #007700">;&nbsp;default;<br />&nbsp;&nbsp;</span><span style="color: #0000BB">end</span><span style="color: #007700">;<br />...<br />&nbsp;&nbsp;</span><span style="color: #0000BB">with&nbsp;TPersonList</span><span style="color: #007700">.</span><span style="color: #0000BB">Create&nbsp;</span><span style="color: #007700">do&nbsp;</span><span style="color: #0000BB">begin</span><span style="color: #FF8000">//By&nbsp;default&nbsp;OwnsObjects&nbsp;=&nbsp;True<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">Add</span><span style="color: #007700">(</span><span style="color: #0000BB">TPerson</span><span style="color: #007700">.</span><span style="color: #0000BB">Create</span><span style="color: #007700">(</span><span style="color: #DD0000">'Ahmed'</span><span style="color: #007700">));<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">Add</span><span style="color: #007700">(</span><span style="color: #0000BB">TPerson</span><span style="color: #007700">.</span><span style="color: #0000BB">Create</span><span style="color: #007700">(</span><span style="color: #DD0000">'Said'</span><span style="color: #007700">));<br />&nbsp;&nbsp;&nbsp;&nbsp;for&nbsp;</span><span style="color: #0000BB">I&nbsp;</span><span style="color: #007700">:=&nbsp;</span><span style="color: #0000BB">0&nbsp;to&nbsp;Count&nbsp;</span><span style="color: #007700">-&nbsp;</span><span style="color: #0000BB">1&nbsp;</span><span style="color: #007700">do<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">Writeln</span><span style="color: #007700">(</span><span style="color: #DD0000">'Member:&nbsp;'</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">Items</span><span style="color: #007700">[</span><span style="color: #0000BB">I</span><span style="color: #007700">].</span><span style="color: #0000BB">FullName</span><span style="color: #007700">);<br /></span><span style="color: #FF8000">//&nbsp;&nbsp;&nbsp;&nbsp;Clear;&nbsp;//Free;&nbsp;&nbsp;&lt;-&nbsp;XE!<br />&nbsp;&nbsp;</span><span style="color: #0000BB">end</span><span style="color: #007700">;&nbsp;<br /></span></code></div></div></div>بعض إصدارات دلفي تحوي أخطاء بخصوص تسيير الذاكرة يستحسن التحقق منها ReportMemoryLeaksOnShutdown أو مكتبات خارجية أو غير ذلك...<br />
<br />
بقيت TClassList التي تمثل TList لتسيير صنف من الأصناف TClass = class of TObject<br />
أما TComponentList فتشتق من TObjectList لتضيف إمكانية التحديث التلقائي عند حذف العناصر وتحرير الذاكرة عند التدمير...<br />
كود الأمثلة السابقة في المرفق CollectionsExample.rar<br />
<br />
هذا مثال أأكد من خلاله أنه إذا عرفنا فقط كيف نستخدم ما بأيدينا من مكتبات دون اللجوء إلى المكونات الإضافية أو البحث في النت، لاختصرنا الكثير من الوقت والجهد مع تحقيق نتائج أفضل. أليس كذلك <img src="https://delphi4arab.net/forum/images/smilies/smile.png" alt="Smile" title="Smile" class="smilie smilie_1" /><br />
<br />
بالتوفيق.</span><br />
<br />
<img src="https://delphi4arab.net/forum/images/attachtypes/rar.png" title="Winrar file" border="0" alt=".rar" />
&nbsp;&nbsp;<a href="attachment.php?aid=2110" target="_blank" title="">IntList.rar</a> (الحجم : 536 بايت / التحميلات : 82)
<br />
<br />
<img src="https://delphi4arab.net/forum/images/attachtypes/image.png" title="JPG Image" border="0" alt=".jpg" />
&nbsp;&nbsp;<a href="attachment.php?aid=2111" target="_blank" title="">TCollectionDesign.JPG</a> (الحجم : 100.32 ك ب / التحميلات : 204)
<br />
<br />
<img src="https://delphi4arab.net/forum/images/attachtypes/rar.png" title="Winrar file" border="0" alt=".rar" />
&nbsp;&nbsp;<a href="attachment.php?aid=2112" target="_blank" title="">CollectionsExample.rar</a> (الحجم : 2.02 ك ب / التحميلات : 93)
]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[دلفي وإطارات العمل Delphi's Framework]]></title>
			<link>https://delphi4arab.net/forum/showthread.php?tid=3571</link>
			<pubDate>Sun, 06 Nov 2011 00:53:59 +0100</pubDate>
			<dc:creator><![CDATA[<a href="https://delphi4arab.net/forum/member.php?action=profile&uid=161">kachwahed</a>]]></dc:creator>
			<guid isPermaLink="false">https://delphi4arab.net/forum/showthread.php?tid=3571</guid>
			<description><![CDATA[<span style="color: Black;" class="mycode_color">السلام عليكم<br />
Frameworks مصطلح حديث الساعة هذه الأعوام، ومصدر قلق لكثير من المبرمجين ذلك لما له من تأثير على الإنتاجية، لكن ما هي الـ Frameworks؟<br />
هل لاحظت أن هناك تقاليد روتينية نقوم بها عند إنشاء برامج ذات صبغة معينة؟<br />
كم مرة تحاول إنشاء نموذج إضافة/حذف/تعديل ؟<br />
كم مرة قمت فيها بإنشاء واجهة للاتصال بقاعدة بيانات Login مع اسم مستخدم وكلمة مرور؟<br />
كم مرة وأنت تقوم بنسخ شيفرة من مشروع إلى آخر؟<br />
والأدهى من ذلك: كم سيتطلب منك نقل مشروع من محرك قواعد بيانات إلى آخر (مختلف تماما)، وقس على ذلك تغيير المكونات...<br />
<br />
طبعا إذا كنت محترف وتبرمج كل شيء 100% بشكل غرضي موجه (OOP) حتى الواجهات والإطارات، فلن تشعر بفرق كبير إذا انتقلت على Framework<br />
<br />
ربما لا نسمع كثيرا عن الـ Framework في في دلفي، وهذا (برأيي) يرجع إلى أن دلفي تنفرد بفلسفة المكونات ومكتبات الربط المتشاركة، التي تجعلنا غالبا نستغني عن آلاف الأسطر البرمجية بمجرد نصب مكون صغير على نموذج البرنامج!<br />
<br />
لكن مع كثرة ممارسة البرمجة ستشعر أن هناك أعمال (وأكواد) تحتاج إلى فصلها عن برامجك من أجل:<br />
<span style="text-decoration: underline;" class="mycode_u">المرونة</span>، <span style="text-decoration: underline;" class="mycode_u">قابلية التوسع</span>، <span style="text-decoration: underline;" class="mycode_u">إعادة الاستخدام</span>... وبالتالي ستقوم بإنشاء Framework خاص بك!<br />
<br />
وعوض أن يقوم كل مبرمج بإنشاء Framework خاص به، تم تصميم تجميعات Framework يتشارك جمع من المبرمجين فيها، مع تنقيحات وتحسينات واختبارات مكثفة و... لجعلها أكثر <span style="text-decoration: underline;" class="mycode_u">مرونة</span>، <span style="text-decoration: underline;" class="mycode_u">قابلية للتوسع</span>، أكثر أهلية <span style="text-decoration: underline;" class="mycode_u">للإعادة الاستخدام</span>...<br />
<br />
معظم الـ Frameworks في النت مجانية ومفتوح المصدر ومقسمة إلى أبواب تجمع كل منها وظائف روتينية عند المبرمج:<br />
<img src="http://www.delphi4arab.net/forum/attachment.php?attachmentid=3064&amp;stc=1&amp;d=1320535358" loading="lazy"  alt="[صورة: attachment.php?attachmentid=3064&amp;stc=1&amp;d=1320535358]" class="mycode_img" /><br />
<br />
delphi-spring-framework هو framework آخر مفتوح المصدر لـ Apache الرائدة في صناعة frameworks لكثير من لغات البرمجة (مستوحاة من Spring عند مبرمجي Java)<br />
موقعه:<br />
<div class="codeblock"><div class="title">كود :</div><div class="body" dir="ltr"><code>http://code.google.com/p/delphi-spring-framework/</code></div></div>G-framework هو الآخر مفتوح المصدر:<br />
<div class="codeblock"><div class="title">كود :</div><div class="body" dir="ltr"><code>http://g-framework.org/</code></div></div><br />
ORM أو Object Relation Mapping هو نوع من الـ Frameworks مخصص لتطبيقات البيانات خاصة<br />
هدفه بناء طبقة تسهل التعامل مع محركات قواعد البيانات وتشاهدها بشكل غرضي موجه (المنحى للكائن)<br />
لدلفي نصيب منها:<br />
<div class="codeblock"><div class="title">كود :</div><div class="body" dir="ltr"><code>http://sourceforge.net/projects/larryhengensopf/</code></div></div>مجانية ومفتوحة المصدر كذلك:<br />
<div class="codeblock"><div class="title">كود :</div><div class="body" dir="ltr"><code>http://tiopf.sourceforge.net/index.shtml</code></div></div>بالتوفيق للجميع.</span><br />
<br />
<img src="https://delphi4arab.net/forum/images/attachtypes/image.png" title="JPG Image" border="0" alt=".jpg" />
&nbsp;&nbsp;<a href="attachment.php?aid=1933" target="_blank" title="">delphi-spring-framework-architecture.jpg</a> (الحجم : 35.69 ك ب / التحميلات : 349)
]]></description>
			<content:encoded><![CDATA[<span style="color: Black;" class="mycode_color">السلام عليكم<br />
Frameworks مصطلح حديث الساعة هذه الأعوام، ومصدر قلق لكثير من المبرمجين ذلك لما له من تأثير على الإنتاجية، لكن ما هي الـ Frameworks؟<br />
هل لاحظت أن هناك تقاليد روتينية نقوم بها عند إنشاء برامج ذات صبغة معينة؟<br />
كم مرة تحاول إنشاء نموذج إضافة/حذف/تعديل ؟<br />
كم مرة قمت فيها بإنشاء واجهة للاتصال بقاعدة بيانات Login مع اسم مستخدم وكلمة مرور؟<br />
كم مرة وأنت تقوم بنسخ شيفرة من مشروع إلى آخر؟<br />
والأدهى من ذلك: كم سيتطلب منك نقل مشروع من محرك قواعد بيانات إلى آخر (مختلف تماما)، وقس على ذلك تغيير المكونات...<br />
<br />
طبعا إذا كنت محترف وتبرمج كل شيء 100% بشكل غرضي موجه (OOP) حتى الواجهات والإطارات، فلن تشعر بفرق كبير إذا انتقلت على Framework<br />
<br />
ربما لا نسمع كثيرا عن الـ Framework في في دلفي، وهذا (برأيي) يرجع إلى أن دلفي تنفرد بفلسفة المكونات ومكتبات الربط المتشاركة، التي تجعلنا غالبا نستغني عن آلاف الأسطر البرمجية بمجرد نصب مكون صغير على نموذج البرنامج!<br />
<br />
لكن مع كثرة ممارسة البرمجة ستشعر أن هناك أعمال (وأكواد) تحتاج إلى فصلها عن برامجك من أجل:<br />
<span style="text-decoration: underline;" class="mycode_u">المرونة</span>، <span style="text-decoration: underline;" class="mycode_u">قابلية التوسع</span>، <span style="text-decoration: underline;" class="mycode_u">إعادة الاستخدام</span>... وبالتالي ستقوم بإنشاء Framework خاص بك!<br />
<br />
وعوض أن يقوم كل مبرمج بإنشاء Framework خاص به، تم تصميم تجميعات Framework يتشارك جمع من المبرمجين فيها، مع تنقيحات وتحسينات واختبارات مكثفة و... لجعلها أكثر <span style="text-decoration: underline;" class="mycode_u">مرونة</span>، <span style="text-decoration: underline;" class="mycode_u">قابلية للتوسع</span>، أكثر أهلية <span style="text-decoration: underline;" class="mycode_u">للإعادة الاستخدام</span>...<br />
<br />
معظم الـ Frameworks في النت مجانية ومفتوح المصدر ومقسمة إلى أبواب تجمع كل منها وظائف روتينية عند المبرمج:<br />
<img src="http://www.delphi4arab.net/forum/attachment.php?attachmentid=3064&amp;stc=1&amp;d=1320535358" loading="lazy"  alt="[صورة: attachment.php?attachmentid=3064&amp;stc=1&amp;d=1320535358]" class="mycode_img" /><br />
<br />
delphi-spring-framework هو framework آخر مفتوح المصدر لـ Apache الرائدة في صناعة frameworks لكثير من لغات البرمجة (مستوحاة من Spring عند مبرمجي Java)<br />
موقعه:<br />
<div class="codeblock"><div class="title">كود :</div><div class="body" dir="ltr"><code>http://code.google.com/p/delphi-spring-framework/</code></div></div>G-framework هو الآخر مفتوح المصدر:<br />
<div class="codeblock"><div class="title">كود :</div><div class="body" dir="ltr"><code>http://g-framework.org/</code></div></div><br />
ORM أو Object Relation Mapping هو نوع من الـ Frameworks مخصص لتطبيقات البيانات خاصة<br />
هدفه بناء طبقة تسهل التعامل مع محركات قواعد البيانات وتشاهدها بشكل غرضي موجه (المنحى للكائن)<br />
لدلفي نصيب منها:<br />
<div class="codeblock"><div class="title">كود :</div><div class="body" dir="ltr"><code>http://sourceforge.net/projects/larryhengensopf/</code></div></div>مجانية ومفتوحة المصدر كذلك:<br />
<div class="codeblock"><div class="title">كود :</div><div class="body" dir="ltr"><code>http://tiopf.sourceforge.net/index.shtml</code></div></div>بالتوفيق للجميع.</span><br />
<br />
<img src="https://delphi4arab.net/forum/images/attachtypes/image.png" title="JPG Image" border="0" alt=".jpg" />
&nbsp;&nbsp;<a href="attachment.php?aid=1933" target="_blank" title="">delphi-spring-framework-architecture.jpg</a> (الحجم : 35.69 ك ب / التحميلات : 349)
]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[DWScript محرك سركيبتات]]></title>
			<link>https://delphi4arab.net/forum/showthread.php?tid=2868</link>
			<pubDate>Sat, 05 Mar 2011 16:35:38 +0100</pubDate>
			<dc:creator><![CDATA[<a href="https://delphi4arab.net/forum/member.php?action=profile&uid=161">kachwahed</a>]]></dc:creator>
			<guid isPermaLink="false">https://delphi4arab.net/forum/showthread.php?tid=2868</guid>
			<description><![CDATA[<span style="color: Black;" class="mycode_color">السلام عليكم ورحمة الله<br />
مشروع DWScript مفتوح المصدر<br />
يمثل محرك سركيبتات يهدف إلى اقتحام دلفي مجال الويب بشكل أوسع<br />
الموقع:<br />
<div class="codeblock phpcodeblock"><div class="title">PHP كود :</div><div class="body"><div dir="ltr"><code><span style="color: #0000BB">http</span><span style="color: #007700">:</span><span style="color: #FF8000">//code.google.com/p/dwscript/&nbsp;<br /></span></code></div></div></div>مدونة:<br />
<div class="codeblock"><div class="title">كود :</div><div class="body" dir="ltr"><code>http://delphitools.info/</code></div></div>للتجربة حمل المشروع ثم قم بتوليد ملف bpl<br />
المرفق bpl مترجم على دلفي XE.</span><br />
<br />
<img src="https://delphi4arab.net/forum/images/attachtypes/rar.png" title="Winrar file" border="0" alt=".rar" />
&nbsp;&nbsp;<a href="attachment.php?aid=1562" target="_blank" title="">DWScript.BPL.rar</a> (الحجم : 331.49 ك ب / التحميلات : 261)
]]></description>
			<content:encoded><![CDATA[<span style="color: Black;" class="mycode_color">السلام عليكم ورحمة الله<br />
مشروع DWScript مفتوح المصدر<br />
يمثل محرك سركيبتات يهدف إلى اقتحام دلفي مجال الويب بشكل أوسع<br />
الموقع:<br />
<div class="codeblock phpcodeblock"><div class="title">PHP كود :</div><div class="body"><div dir="ltr"><code><span style="color: #0000BB">http</span><span style="color: #007700">:</span><span style="color: #FF8000">//code.google.com/p/dwscript/&nbsp;<br /></span></code></div></div></div>مدونة:<br />
<div class="codeblock"><div class="title">كود :</div><div class="body" dir="ltr"><code>http://delphitools.info/</code></div></div>للتجربة حمل المشروع ثم قم بتوليد ملف bpl<br />
المرفق bpl مترجم على دلفي XE.</span><br />
<br />
<img src="https://delphi4arab.net/forum/images/attachtypes/rar.png" title="Winrar file" border="0" alt=".rar" />
&nbsp;&nbsp;<a href="attachment.php?aid=1562" target="_blank" title="">DWScript.BPL.rar</a> (الحجم : 331.49 ك ب / التحميلات : 261)
]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[فوائد اضافة المكونات برمجيا]]></title>
			<link>https://delphi4arab.net/forum/showthread.php?tid=2650</link>
			<pubDate>Sat, 18 Dec 2010 15:29:16 +0100</pubDate>
			<dc:creator><![CDATA[<a href="https://delphi4arab.net/forum/member.php?action=profile&uid=779">vb_manager</a>]]></dc:creator>
			<guid isPermaLink="false">https://delphi4arab.net/forum/showthread.php?tid=2650</guid>
			<description><![CDATA[اود الترحيب بابناء المنتدى<br />
احببت اليوم ان نناقش فوائد اضافة الادوات والمكونات برمجيا<br />
<br />
ا- سيعمل على تصغير حجم البريمج<br />
من المعروف ان الدلفى يكتب عنك الاكواد البرمجية والخصائص للاداة عند اضافتها للفورم<br />
يكتب كل شئ الذى هو default الى ان تقم انت بتغيير القيم<br />
يمكن يكون للعنصر الواحد عشرين خاصية فيكتبها .... ولكن انت بواسطة اكواد البرمجة تكتب سبع خواص مثلا ... لان هذه التى ستغير قيمها فقط<br />
بذلك تستغنى عن 13 خاصية تضاف اتوماتك عند ظهور المكون على الفورم وقت التشغيل ولكن بدون حفظها فى البريمج<br />
فيصغر حجم البريمج جدا<br />
<br />
2- سيعمل على سرعة تنفيذ اكواد البريمج <br />
<br />
3- وهذا الاهم هناك ادوات active X cnrols بتكون غير مجانية ولا تستطيع انت ان تستخدمها لانها اولا بتعمل error عند اضافتها للفورم وهو ole error تستطيع اضافتها برمجيا وتستفيد منها بدون اى مشاكل التسجيل وخلافه<br />
<br />
تحياتى]]></description>
			<content:encoded><![CDATA[اود الترحيب بابناء المنتدى<br />
احببت اليوم ان نناقش فوائد اضافة الادوات والمكونات برمجيا<br />
<br />
ا- سيعمل على تصغير حجم البريمج<br />
من المعروف ان الدلفى يكتب عنك الاكواد البرمجية والخصائص للاداة عند اضافتها للفورم<br />
يكتب كل شئ الذى هو default الى ان تقم انت بتغيير القيم<br />
يمكن يكون للعنصر الواحد عشرين خاصية فيكتبها .... ولكن انت بواسطة اكواد البرمجة تكتب سبع خواص مثلا ... لان هذه التى ستغير قيمها فقط<br />
بذلك تستغنى عن 13 خاصية تضاف اتوماتك عند ظهور المكون على الفورم وقت التشغيل ولكن بدون حفظها فى البريمج<br />
فيصغر حجم البريمج جدا<br />
<br />
2- سيعمل على سرعة تنفيذ اكواد البريمج <br />
<br />
3- وهذا الاهم هناك ادوات active X cnrols بتكون غير مجانية ولا تستطيع انت ان تستخدمها لانها اولا بتعمل error عند اضافتها للفورم وهو ole error تستطيع اضافتها برمجيا وتستفيد منها بدون اى مشاكل التسجيل وخلافه<br />
<br />
تحياتى]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[طريقتان مغنيتان عن إضافة مكوّنات جديدة]]></title>
			<link>https://delphi4arab.net/forum/showthread.php?tid=2197</link>
			<pubDate>Sun, 18 Jul 2010 10:12:38 +0100</pubDate>
			<dc:creator><![CDATA[<a href="https://delphi4arab.net/forum/member.php?action=profile&uid=459">أبو محمد اللحياني</a>]]></dc:creator>
			<guid isPermaLink="false">https://delphi4arab.net/forum/showthread.php?tid=2197</guid>
			<description><![CDATA[السلام عليكم ورحمة الله وبركاته<br />
<br />
الكثير من المبرمجين يبحث عن مكونات جديدة لاستخدامها ويرفقها مع مشروعه إن كان مفتوح المصدر، أو يجد تلك المكونات مُرْفَقة مع المشروع فيضطر لتركيبها.<br />
<br />
ولكن الكثير منا يستاء من إجباره على إضافة مكونات جديدة لأجل تشغيل بعض المشاريع والأمثلة، وهو لا يرغب أصلاً في تركيب هذه المكونات ثم يحذفها بعد مشاهدة المثال.<br />
<br />
الحل الآن الذي أنصح به لا يغني تركيب هذه المكونات لتلك المشاريع المبرمجة بل لا يغني عمل مكونات وباكجات جديدة، ولكني أنصح به في التعديلات البسيطة التي تجريها على المكونات <br />
<br />
الأصلية الموجودة بالدلفي ، وأراه يغني ويخفف الكثير من الحالات المرهقة لعمل تلك المكونات وإضافتها.<br />
<br />
ففي حالة استخدام مكونات دلفي وترغيب في وجود مناهج أو إجراءات أو خصائص عن متوفرة فيها فعليك استخدام إحدى الطريقتين : <br />
الطريقة الأولى : عليك كتابة المكوّن الجديد قبل التصريح عن نموذج النافذة <br />
هذا مثال تخيلي من عندي : <br />
<div class="codeblock"><div class="title">كود :</div><div class="body" dir="ltr"><code>type
  TAlignText = (atCenter, atRight, atLeft);
	TEdit = class(StdCtrls.TEdit)
  private
	FalignTex : TAlignText;
    procedure setAlignText(const Value: TAlignText);
  published
	property alignText : TAlignText read FalignTex write setAlignText;
	end;

  TForm1 = class(TForm)
	Edit1 : TEdit;
.
.
.</code></div></div><br />
مثال عملي كامل تجده هنا : <br />
<div class="codeblock"><div class="title">كود :</div><div class="body" dir="ltr"><code>http://www.stevetrefethen.com/blog/UsingGoogleMapsFromVCLSampleApplication.aspx</code></div></div>والتحميل من هنا : <br />
<div class="codeblock"><div class="title">كود :</div><div class="body" dir="ltr"><code>http://www.stevetrefethen.com/files/googlemap.zip</code></div></div><br />
<br />
الطريقة الثانية : استخدام  : TMyHelper = <span style="text-decoration: underline;" class="mycode_u"><span style="color: Red;" class="mycode_color">class helper for</span></span> TNeedObject<br />
<br />
ولعل الطريقة هذه فقط في delphi2010<br />
<br />
والطريقة وجدتها عن استخدامي للوحدة superobject.pas <br />
<br />
وجدت أن جميع الكائنات الأصلية في الدلفي بلا استثناء فيها الإجرائين : toJson و FromJson . ثم وجدت السر هنا :<br />
<div class="codeblock"><div class="title">كود :</div><div class="body" dir="ltr"><code>TSuperObjectHelper = class helper for TObject
  public
    function ToJson(ctx: TSuperRttiContext = nil): ISuperObject;
    constructor FromJson(const obj: ISuperObject; ctx: TSuperRttiContext = nil); overload;
    constructor FromJson(const str: string; ctx: TSuperRttiContext = nil); overload;
  end;</code></div></div><br />
<br />
بالتوفيق ومن كان عنده إضافة علم فلا يحرمنا منها  .]]></description>
			<content:encoded><![CDATA[السلام عليكم ورحمة الله وبركاته<br />
<br />
الكثير من المبرمجين يبحث عن مكونات جديدة لاستخدامها ويرفقها مع مشروعه إن كان مفتوح المصدر، أو يجد تلك المكونات مُرْفَقة مع المشروع فيضطر لتركيبها.<br />
<br />
ولكن الكثير منا يستاء من إجباره على إضافة مكونات جديدة لأجل تشغيل بعض المشاريع والأمثلة، وهو لا يرغب أصلاً في تركيب هذه المكونات ثم يحذفها بعد مشاهدة المثال.<br />
<br />
الحل الآن الذي أنصح به لا يغني تركيب هذه المكونات لتلك المشاريع المبرمجة بل لا يغني عمل مكونات وباكجات جديدة، ولكني أنصح به في التعديلات البسيطة التي تجريها على المكونات <br />
<br />
الأصلية الموجودة بالدلفي ، وأراه يغني ويخفف الكثير من الحالات المرهقة لعمل تلك المكونات وإضافتها.<br />
<br />
ففي حالة استخدام مكونات دلفي وترغيب في وجود مناهج أو إجراءات أو خصائص عن متوفرة فيها فعليك استخدام إحدى الطريقتين : <br />
الطريقة الأولى : عليك كتابة المكوّن الجديد قبل التصريح عن نموذج النافذة <br />
هذا مثال تخيلي من عندي : <br />
<div class="codeblock"><div class="title">كود :</div><div class="body" dir="ltr"><code>type
  TAlignText = (atCenter, atRight, atLeft);
	TEdit = class(StdCtrls.TEdit)
  private
	FalignTex : TAlignText;
    procedure setAlignText(const Value: TAlignText);
  published
	property alignText : TAlignText read FalignTex write setAlignText;
	end;

  TForm1 = class(TForm)
	Edit1 : TEdit;
.
.
.</code></div></div><br />
مثال عملي كامل تجده هنا : <br />
<div class="codeblock"><div class="title">كود :</div><div class="body" dir="ltr"><code>http://www.stevetrefethen.com/blog/UsingGoogleMapsFromVCLSampleApplication.aspx</code></div></div>والتحميل من هنا : <br />
<div class="codeblock"><div class="title">كود :</div><div class="body" dir="ltr"><code>http://www.stevetrefethen.com/files/googlemap.zip</code></div></div><br />
<br />
الطريقة الثانية : استخدام  : TMyHelper = <span style="text-decoration: underline;" class="mycode_u"><span style="color: Red;" class="mycode_color">class helper for</span></span> TNeedObject<br />
<br />
ولعل الطريقة هذه فقط في delphi2010<br />
<br />
والطريقة وجدتها عن استخدامي للوحدة superobject.pas <br />
<br />
وجدت أن جميع الكائنات الأصلية في الدلفي بلا استثناء فيها الإجرائين : toJson و FromJson . ثم وجدت السر هنا :<br />
<div class="codeblock"><div class="title">كود :</div><div class="body" dir="ltr"><code>TSuperObjectHelper = class helper for TObject
  public
    function ToJson(ctx: TSuperRttiContext = nil): ISuperObject;
    constructor FromJson(const obj: ISuperObject; ctx: TSuperRttiContext = nil); overload;
    constructor FromJson(const str: string; ctx: TSuperRttiContext = nil); overload;
  end;</code></div></div><br />
<br />
بالتوفيق ومن كان عنده إضافة علم فلا يحرمنا منها  .]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[المكونGecko]]></title>
			<link>https://delphi4arab.net/forum/showthread.php?tid=1466</link>
			<pubDate>Sun, 03 Jan 2010 21:11:30 +0100</pubDate>
			<dc:creator><![CDATA[<a href="https://delphi4arab.net/forum/member.php?action=profile&uid=459">أبو محمد اللحياني</a>]]></dc:creator>
			<guid isPermaLink="false">https://delphi4arab.net/forum/showthread.php?tid=1466</guid>
			<description><![CDATA[السلام عليكم ورحمة الله وبركاته<br />
<div class="codeblock"><div class="title">كود :</div><div class="body" dir="ltr"><code>http://www.google.com/search?q=delphi+gecko</code></div></div><br />
المكون Gecko  هو الـ WebBrowser للمتصفح الذكي والمجاني FireFox  <br />
<br />
<div class="codeblock"><div class="title">كود :</div><div class="body" dir="ltr"><code>http://ftp.newbielabs.com/Delphi%20Gecko%20SDK/Readme.htm</code></div></div><br />
ويوجد له ActiveX  تعمل مثل WebBrowser لـ المتصفح MSIE والموجودة في مكونات الدلفي.<br />
<br />
<div class="codeblock"><div class="title">كود :</div><div class="body" dir="ltr"><code>http://www.iol.ie/~locka/mozilla/control.htm Mozilla ActiveX ControL</code></div></div><br />
ويوجد في آخر الصفحة إمكانية استبدال MSIE WebBrowser بـ Gecko .<br />
<br />
وأيضاً هنا : <br />
<div class="codeblock"><div class="title">كود :</div><div class="body" dir="ltr"><code>http://delphi.mozdev.org/articles/taming_the_lizard_with_delphi.html</code></div></div><br />
وللأسف لم أجد اهتمام بهذا المكون مع تفوق FF على IE المعروف.<br />
<br />
وبدلاً من ActiveX يمكن استخدام المكون في الروابط في الاعلى .<br />
<br />
ابدأ بتثبيت GeckoSDK ثم GeckoComponents ، <br />
<br />
الآن مشروعك وليكن هو SampleApps  يجب أن يصل مباشرة إلى  محتويات المجلد Gre لكي يعمل، كأنك تنظر إلى المجلد الذي به المتصفح firefox .<br />
<br />
انسخ المجلد Gre إلى مجلد باسم جديد، ثم انسخ محتويات المجلد SampleApps إلى المجلد السابق ، ليشتغل المشروع.<br />
<br />
لأن GRE (Gecko Runtime Environment) البيئة التي يعلم عليها المكون.<br />
<br />
<br />
أتمنى  أن أكون قد وفقتُ في اختياري لهذا المكون .<br />
<br />
والسلام عليكم ورحمة الله وبركاته]]></description>
			<content:encoded><![CDATA[السلام عليكم ورحمة الله وبركاته<br />
<div class="codeblock"><div class="title">كود :</div><div class="body" dir="ltr"><code>http://www.google.com/search?q=delphi+gecko</code></div></div><br />
المكون Gecko  هو الـ WebBrowser للمتصفح الذكي والمجاني FireFox  <br />
<br />
<div class="codeblock"><div class="title">كود :</div><div class="body" dir="ltr"><code>http://ftp.newbielabs.com/Delphi%20Gecko%20SDK/Readme.htm</code></div></div><br />
ويوجد له ActiveX  تعمل مثل WebBrowser لـ المتصفح MSIE والموجودة في مكونات الدلفي.<br />
<br />
<div class="codeblock"><div class="title">كود :</div><div class="body" dir="ltr"><code>http://www.iol.ie/~locka/mozilla/control.htm Mozilla ActiveX ControL</code></div></div><br />
ويوجد في آخر الصفحة إمكانية استبدال MSIE WebBrowser بـ Gecko .<br />
<br />
وأيضاً هنا : <br />
<div class="codeblock"><div class="title">كود :</div><div class="body" dir="ltr"><code>http://delphi.mozdev.org/articles/taming_the_lizard_with_delphi.html</code></div></div><br />
وللأسف لم أجد اهتمام بهذا المكون مع تفوق FF على IE المعروف.<br />
<br />
وبدلاً من ActiveX يمكن استخدام المكون في الروابط في الاعلى .<br />
<br />
ابدأ بتثبيت GeckoSDK ثم GeckoComponents ، <br />
<br />
الآن مشروعك وليكن هو SampleApps  يجب أن يصل مباشرة إلى  محتويات المجلد Gre لكي يعمل، كأنك تنظر إلى المجلد الذي به المتصفح firefox .<br />
<br />
انسخ المجلد Gre إلى مجلد باسم جديد، ثم انسخ محتويات المجلد SampleApps إلى المجلد السابق ، ليشتغل المشروع.<br />
<br />
لأن GRE (Gecko Runtime Environment) البيئة التي يعلم عليها المكون.<br />
<br />
<br />
أتمنى  أن أكون قد وفقتُ في اختياري لهذا المكون .<br />
<br />
والسلام عليكم ورحمة الله وبركاته]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[التعامل مع ملفات ال pdf  من خلال دلفي]]></title>
			<link>https://delphi4arab.net/forum/showthread.php?tid=1402</link>
			<pubDate>Tue, 15 Dec 2009 12:28:19 +0100</pubDate>
			<dc:creator><![CDATA[<a href="https://delphi4arab.net/forum/member.php?action=profile&uid=408">issamdnn</a>]]></dc:creator>
			<guid isPermaLink="false">https://delphi4arab.net/forum/showthread.php?tid=1402</guid>
			<description><![CDATA[دعونا نرى كيفية إضهار ملفات الأكروبات(.pdf) ضمن تطبيقات دلفي . كل ما تحتاجه هو (Acrobat ActiveX control ) أي ملف (pdf.ocx and pdf.tlb) والذي يمكنك الحصول عليه مجاناً من موقع adobe<br />
وخطوات العمل كما يلي:<br />
1- إبداً دلفي وإختار Component  ثم  Import ActiveX Control<br />
2- أبحث عن 'Acrobat Control for ActiveX (Version x.x) ثم أضغط على زر Install<br />
3-قم بإختيار مسار منصة العناصر التي سستوضع عليه المكتبة المختارة.<br />
4-ربما من الأفضل أن تترك خيار الاكتف أكس فعال ثم قم بالضغط على Install<br />
5- إختار الحزمة حيث سيتم تنصيب العنصر الجديد أو قم بإنشاء حزمة جديدة تحت أسم Tpdf control<br />
6- قم بالضغط بعد ذلك على OK<br />
7- سيقوم دلفي بتنبيهك فيما إذا كنت تريد إعادة البناء للباكيج أو تعديله.<br />
8- بعد أن يتم ترجمة الباكج سيظهر دلفي رسالة تفيد بأن عنصر جديد أسمه tpdf تم تسجيله وبأنه أصبح جزاً من ال VCL<br />
9- قم بإغلاق نافذة تفاصيل الباكيج لكي تسمح لدلفي بحفظ التغييرات عليها.<br />
10-العنصر الأن فعال في صفحة ال ActiveX<br />
11-أختر الأن العنصر tpdf  الذي قمت بوضعه على الفورم.<br />
12 - بإستخدام مفتش الكائنات الموجود في دلفي قم بجعل خاصية src  تحمل أسم ملف ال pdf  الموجود على جهازك .<br />
الأن كل ما عليك فعله هو تغيير حجم العنصر وقراءة ملف ال PDF ضمن تطبيقك.<br />
<br />
<br />
ملاحظة : إذا لم يكن لديك ملف ال ocx  قمت بوضعه في المرفقات..<br />
<br />
مع التوفيق للجميع.<br />
<br />
<img src="https://delphi4arab.net/forum/images/attachtypes/rar.png" title="Winrar file" border="0" alt=".rar" />
&nbsp;&nbsp;<a href="attachment.php?aid=691" target="_blank" title="">pdf.rar</a> (الحجم : 172.84 ك ب / التحميلات : 1828)
]]></description>
			<content:encoded><![CDATA[دعونا نرى كيفية إضهار ملفات الأكروبات(.pdf) ضمن تطبيقات دلفي . كل ما تحتاجه هو (Acrobat ActiveX control ) أي ملف (pdf.ocx and pdf.tlb) والذي يمكنك الحصول عليه مجاناً من موقع adobe<br />
وخطوات العمل كما يلي:<br />
1- إبداً دلفي وإختار Component  ثم  Import ActiveX Control<br />
2- أبحث عن 'Acrobat Control for ActiveX (Version x.x) ثم أضغط على زر Install<br />
3-قم بإختيار مسار منصة العناصر التي سستوضع عليه المكتبة المختارة.<br />
4-ربما من الأفضل أن تترك خيار الاكتف أكس فعال ثم قم بالضغط على Install<br />
5- إختار الحزمة حيث سيتم تنصيب العنصر الجديد أو قم بإنشاء حزمة جديدة تحت أسم Tpdf control<br />
6- قم بالضغط بعد ذلك على OK<br />
7- سيقوم دلفي بتنبيهك فيما إذا كنت تريد إعادة البناء للباكيج أو تعديله.<br />
8- بعد أن يتم ترجمة الباكج سيظهر دلفي رسالة تفيد بأن عنصر جديد أسمه tpdf تم تسجيله وبأنه أصبح جزاً من ال VCL<br />
9- قم بإغلاق نافذة تفاصيل الباكيج لكي تسمح لدلفي بحفظ التغييرات عليها.<br />
10-العنصر الأن فعال في صفحة ال ActiveX<br />
11-أختر الأن العنصر tpdf  الذي قمت بوضعه على الفورم.<br />
12 - بإستخدام مفتش الكائنات الموجود في دلفي قم بجعل خاصية src  تحمل أسم ملف ال pdf  الموجود على جهازك .<br />
الأن كل ما عليك فعله هو تغيير حجم العنصر وقراءة ملف ال PDF ضمن تطبيقك.<br />
<br />
<br />
ملاحظة : إذا لم يكن لديك ملف ال ocx  قمت بوضعه في المرفقات..<br />
<br />
مع التوفيق للجميع.<br />
<br />
<img src="https://delphi4arab.net/forum/images/attachtypes/rar.png" title="Winrar file" border="0" alt=".rar" />
&nbsp;&nbsp;<a href="attachment.php?aid=691" target="_blank" title="">pdf.rar</a> (الحجم : 172.84 ك ب / التحميلات : 1828)
]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[شرح فلاشي لتثبيت مكونات دلفي]]></title>
			<link>https://delphi4arab.net/forum/showthread.php?tid=96</link>
			<pubDate>Sat, 22 Mar 2008 20:02:48 +0100</pubDate>
			<dc:creator><![CDATA[<a href="https://delphi4arab.net/forum/member.php?action=profile&uid=5">STRELiTZIA</a>]]></dc:creator>
			<guid isPermaLink="false">https://delphi4arab.net/forum/showthread.php?tid=96</guid>
			<description><![CDATA[بسم الله الرحمن الرحيم<br />
تم اعادة رفع الشرح الفلاشي لتركيب مكونات دلفي على المنتدى<br />
 <br />
<span style="text-decoration: underline;" class="mycode_u"><span style="font-weight: bold;" class="mycode_b">تثبيت مكونات دلفي باستعمال ثلاث طرق :</span></span><br />
مكونات بصيغة : Pas<br />
مكونات بصيغة : Dpk<br />
مكونات بصيغة : Bpl<br />
 <br />
بالتوفيق ان شاء الله<br />
<br />
<img src="https://delphi4arab.net/forum/images/attachtypes/rar.png" title="Winrar file" border="0" alt=".rar" />
&nbsp;&nbsp;<a href="attachment.php?aid=211" target="_blank" title="">InstallDelphiComponents.rar</a> (الحجم : 1.3 م ب / التحميلات : 15596)
]]></description>
			<content:encoded><![CDATA[بسم الله الرحمن الرحيم<br />
تم اعادة رفع الشرح الفلاشي لتركيب مكونات دلفي على المنتدى<br />
 <br />
<span style="text-decoration: underline;" class="mycode_u"><span style="font-weight: bold;" class="mycode_b">تثبيت مكونات دلفي باستعمال ثلاث طرق :</span></span><br />
مكونات بصيغة : Pas<br />
مكونات بصيغة : Dpk<br />
مكونات بصيغة : Bpl<br />
 <br />
بالتوفيق ان شاء الله<br />
<br />
<img src="https://delphi4arab.net/forum/images/attachtypes/rar.png" title="Winrar file" border="0" alt=".rar" />
&nbsp;&nbsp;<a href="attachment.php?aid=211" target="_blank" title="">InstallDelphiComponents.rar</a> (الحجم : 1.3 م ب / التحميلات : 15596)
]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[Delphi & ActiveX]]></title>
			<link>https://delphi4arab.net/forum/showthread.php?tid=67</link>
			<pubDate>Fri, 29 Feb 2008 23:04:35 +0100</pubDate>
			<dc:creator><![CDATA[<a href="https://delphi4arab.net/forum/member.php?action=profile&uid=0">delphi4ever</a>]]></dc:creator>
			<guid isPermaLink="false">https://delphi4arab.net/forum/showthread.php?tid=67</guid>
			<description><![CDATA[السلام عليكم ورحمة الله<br />
<br />
قمت بإنجاز هذا الدرس المتواضع حول التعامل مع الإضافات  <span style="color: Blue;" class="mycode_color">Active</span>X وكيفية تثبيتها وأخذت على سبيل المثال المكون المشهور لشركة ميكروسوفت وهو <span style="color: blue;" class="mycode_color">Microsoft Agent </span>بحيث سنتطرق في درسنا هذا إلى مفاهيم عامة + شرح عملية تثبيت المكون.<br />
<br />
<span style="color: Blue;" class="mycode_color">•Microsoft Agent ActiveX :</span><br />
	<br />
هو عبارة عن إضافة <span style="color: blue;" class="mycode_color">ActiveX </span>يمكنك تثبيتها من خلال دلفي، وهو من تطوير شركة ميكروسوفت <span style="color: blue;" class="mycode_color">Microsoft </span>بحيث يقوم هذا الأخير بنطق الكلمات التي نكتبها له ويقوم بحركات كثيرة جدا ومتنوعة وتختلف من عنصر إلى اخر ومن أشهر Agent المعروفة لدى شركة ميكروسوفت :<br />
<span style="color: Blue;" class="mycode_color">•Merlin<br />
•Peedy<br />
•Robby<br />
•Genie</span><br />
<br />
 يعد كل من <span style="color: blue;" class="mycode_color">Agent </span>السالف ذكرها عبارة عن شخصية كل على شكل حدى تظهر لنا في الشاشة بحيث تقوم على التحدث مع المستعمل مع إنجاز حركات <span style="color: blue;" class="mycode_color">Animation </span>مختلفة.<br />
<br />
<a href="http://imageshack.us" target="_blank" rel="noopener" class="mycode_url"><img src="http://img132.imageshack.us/img132/3586/agentssv0.jpg" loading="lazy"  alt="[صورة: agentssv0.jpg]" class="mycode_img" /></a><br />
<br />
 - توجد هناك على شبكة الانترنت عدة أشخاص مثل <span style="color: blue;" class="mycode_color">Merlin &amp; Robby &amp; …. </span>وهي مجانية أيضا لك نحن في درسنا هذا ستناول واحد من الأربعة المذكورين أعلاه.<br />
&#61607;	من أجل السير الحسن لأي <span style="color: blue;" class="mycode_color">Agent </span>من القائمة السالف ذكرها يجب أن يكون لدينا كل من الوسائل التالية:<br />
1.مكون Microsoft Agent Control<br />
2.اللغة التي سيتم التعامل بها من أجل نطق Agent.<br />
3.واحد أو أكثر من Agent مثل Merlin<br />
4.text-to-speech engine من أجل السير الحسن للنطق<br />
5.Speech control panel الخاص بالتحكم في Ms Agent<br />
<br />
يمكنا تحميك كل من العناصر السابق ذكرها م موقع شركة ميكروسوفت على الرابط التالي:<br />
<a href="http://www.microsoft.com/msagent/downloads/user.aspx" target="_blank" rel="noopener" class="mycode_url">http://www.microsoft.com/msagent/downloads/user.aspx</a><br />
<br />
<span style="color: blue;" class="mycode_color"> كيفية تثبيت إضافة Microsoft Agent في دلفي:</span><br />
1.في دلفي نقوم بالتوجه نحو القائمة <span style="color: blue;" class="mycode_color">Components </span>ثم نحو <span style="color: blue;" class="mycode_color">Import ActiveX Control </span>كما هو مبين في الشكل.<br />
<br />
<a href="http://imageshack.us" target="_blank" rel="noopener" class="mycode_url"><img src="http://img87.imageshack.us/img87/7056/menugu4.jpg" loading="lazy"  alt="[صورة: menugu4.jpg]" class="mycode_img" /></a><br />
<br />
2. بعدها ستظهر لنا نافذة تحتوي على مجموعة من الإضافات <span style="color: blue;" class="mycode_color">ActiveX </span>والتي سقوم باختيار <span style="color: blue;" class="mycode_color">Microsoft Agent Control 2.0(Version 2.0) </span>مها وبعدها نضغط على الزر <span style="color: blue;" class="mycode_color">Install</span><br />
<br />
<a href="http://imageshack.us" target="_blank" rel="noopener" class="mycode_url"><img src="http://img87.imageshack.us/img87/7587/activexqr0.jpg" loading="lazy"  alt="[صورة: activexqr0.jpg]" class="mycode_img" /></a><br />
<br />
3. بعد الضغط على زر   <span style="color: blue;" class="mycode_color">Install </span>ستظهر لنا نافذة أخرى تحتوي على معلومات هذا المكون الجديد الذي سنقوم بإضافته، نقوم بالضغط على الزر <span style="color: blue;" class="mycode_color">Ok </span>الموجود أسفل النافذة.<br />
<br />
<a href="http://imageshack.us" target="_blank" rel="noopener" class="mycode_url"><img src="http://img87.imageshack.us/img87/5862/installcn8.jpg" loading="lazy"  alt="[صورة: installcn8.jpg]" class="mycode_img" /></a><br />
<br />
<span style="color: Red;" class="mycode_color"> ... يتبـــع</span><br />
<br />
<img src="https://delphi4arab.net/forum/images/attachtypes/" title="pdf" border="0" alt=".pdf" />
&nbsp;&nbsp;<a href="attachment.php?aid=37" target="_blank" title="">Ms Agent ActiveX.pdf</a> (الحجم : 217.02 ك ب / التحميلات : 1580)
]]></description>
			<content:encoded><![CDATA[السلام عليكم ورحمة الله<br />
<br />
قمت بإنجاز هذا الدرس المتواضع حول التعامل مع الإضافات  <span style="color: Blue;" class="mycode_color">Active</span>X وكيفية تثبيتها وأخذت على سبيل المثال المكون المشهور لشركة ميكروسوفت وهو <span style="color: blue;" class="mycode_color">Microsoft Agent </span>بحيث سنتطرق في درسنا هذا إلى مفاهيم عامة + شرح عملية تثبيت المكون.<br />
<br />
<span style="color: Blue;" class="mycode_color">•Microsoft Agent ActiveX :</span><br />
	<br />
هو عبارة عن إضافة <span style="color: blue;" class="mycode_color">ActiveX </span>يمكنك تثبيتها من خلال دلفي، وهو من تطوير شركة ميكروسوفت <span style="color: blue;" class="mycode_color">Microsoft </span>بحيث يقوم هذا الأخير بنطق الكلمات التي نكتبها له ويقوم بحركات كثيرة جدا ومتنوعة وتختلف من عنصر إلى اخر ومن أشهر Agent المعروفة لدى شركة ميكروسوفت :<br />
<span style="color: Blue;" class="mycode_color">•Merlin<br />
•Peedy<br />
•Robby<br />
•Genie</span><br />
<br />
 يعد كل من <span style="color: blue;" class="mycode_color">Agent </span>السالف ذكرها عبارة عن شخصية كل على شكل حدى تظهر لنا في الشاشة بحيث تقوم على التحدث مع المستعمل مع إنجاز حركات <span style="color: blue;" class="mycode_color">Animation </span>مختلفة.<br />
<br />
<a href="http://imageshack.us" target="_blank" rel="noopener" class="mycode_url"><img src="http://img132.imageshack.us/img132/3586/agentssv0.jpg" loading="lazy"  alt="[صورة: agentssv0.jpg]" class="mycode_img" /></a><br />
<br />
 - توجد هناك على شبكة الانترنت عدة أشخاص مثل <span style="color: blue;" class="mycode_color">Merlin &amp; Robby &amp; …. </span>وهي مجانية أيضا لك نحن في درسنا هذا ستناول واحد من الأربعة المذكورين أعلاه.<br />
&#61607;	من أجل السير الحسن لأي <span style="color: blue;" class="mycode_color">Agent </span>من القائمة السالف ذكرها يجب أن يكون لدينا كل من الوسائل التالية:<br />
1.مكون Microsoft Agent Control<br />
2.اللغة التي سيتم التعامل بها من أجل نطق Agent.<br />
3.واحد أو أكثر من Agent مثل Merlin<br />
4.text-to-speech engine من أجل السير الحسن للنطق<br />
5.Speech control panel الخاص بالتحكم في Ms Agent<br />
<br />
يمكنا تحميك كل من العناصر السابق ذكرها م موقع شركة ميكروسوفت على الرابط التالي:<br />
<a href="http://www.microsoft.com/msagent/downloads/user.aspx" target="_blank" rel="noopener" class="mycode_url">http://www.microsoft.com/msagent/downloads/user.aspx</a><br />
<br />
<span style="color: blue;" class="mycode_color"> كيفية تثبيت إضافة Microsoft Agent في دلفي:</span><br />
1.في دلفي نقوم بالتوجه نحو القائمة <span style="color: blue;" class="mycode_color">Components </span>ثم نحو <span style="color: blue;" class="mycode_color">Import ActiveX Control </span>كما هو مبين في الشكل.<br />
<br />
<a href="http://imageshack.us" target="_blank" rel="noopener" class="mycode_url"><img src="http://img87.imageshack.us/img87/7056/menugu4.jpg" loading="lazy"  alt="[صورة: menugu4.jpg]" class="mycode_img" /></a><br />
<br />
2. بعدها ستظهر لنا نافذة تحتوي على مجموعة من الإضافات <span style="color: blue;" class="mycode_color">ActiveX </span>والتي سقوم باختيار <span style="color: blue;" class="mycode_color">Microsoft Agent Control 2.0(Version 2.0) </span>مها وبعدها نضغط على الزر <span style="color: blue;" class="mycode_color">Install</span><br />
<br />
<a href="http://imageshack.us" target="_blank" rel="noopener" class="mycode_url"><img src="http://img87.imageshack.us/img87/7587/activexqr0.jpg" loading="lazy"  alt="[صورة: activexqr0.jpg]" class="mycode_img" /></a><br />
<br />
3. بعد الضغط على زر   <span style="color: blue;" class="mycode_color">Install </span>ستظهر لنا نافذة أخرى تحتوي على معلومات هذا المكون الجديد الذي سنقوم بإضافته، نقوم بالضغط على الزر <span style="color: blue;" class="mycode_color">Ok </span>الموجود أسفل النافذة.<br />
<br />
<a href="http://imageshack.us" target="_blank" rel="noopener" class="mycode_url"><img src="http://img87.imageshack.us/img87/5862/installcn8.jpg" loading="lazy"  alt="[صورة: installcn8.jpg]" class="mycode_img" /></a><br />
<br />
<span style="color: Red;" class="mycode_color"> ... يتبـــع</span><br />
<br />
<img src="https://delphi4arab.net/forum/images/attachtypes/" title="pdf" border="0" alt=".pdf" />
&nbsp;&nbsp;<a href="attachment.php?aid=37" target="_blank" title="">Ms Agent ActiveX.pdf</a> (الحجم : 217.02 ك ب / التحميلات : 1580)
]]></content:encoded>
		</item>
	</channel>
</rss>