<?xml version="1.0" encoding="utf-8" ?>
<?xml-stylesheet type="text/xsl" href="RSS_xslt_style.asp" version="1.0" ?>
<rss version="2.0" xmlns:WebWizForums="http://syndication.webwizguide.com/rss_namespace/">
 <channel>
  <title>.:: &#1575;&#1606;&#1580;&#1605;&#1606; &#1607;&#1575;&#1610; &#1575;&#1605;&#1606;&#1610;&#1578;&#1610; &#1662;&#1575;&#1585;&#1587;&#1610; &#1711;&#1575;&#1585;&#1583; ::.</title>
  <link>http://www.parsiguard.com/</link>
  <description>This is an XML content feed of; .:: &#1575;&#1606;&#1580;&#1605;&#1606; &#1607;&#1575;&#1610; &#1575;&#1605;&#1606;&#1610;&#1578;&#1610; &#1662;&#1575;&#1585;&#1587;&#1610; &#1711;&#1575;&#1585;&#1583; ::. : آخرين 10 ارسال ها</description>
  <copyright>Copyright (c) 2006-2010 Web Wiz Forums - All Rights Reserved.</copyright>
  <pubDate>Fri, 30 Jul 2010 08:52:22 +0000</pubDate>
  <lastBuildDate>Wed, 14 Jul 2010 20:45:54 +0000</lastBuildDate>
  <docs>http://blogs.law.harvard.edu/tech/rss</docs>
  <generator>Web Wiz Forums 9.69</generator>
  <ttl>30</ttl>
  <WebWizForums:feedURL>www.parsiguard.com/RSS_topic_feed.asp</WebWizForums:feedURL>
  <image>
   <title>.:: &#1575;&#1606;&#1580;&#1605;&#1606; &#1607;&#1575;&#1610; &#1575;&#1605;&#1606;&#1610;&#1578;&#1610; &#1662;&#1575;&#1585;&#1587;&#1610; &#1711;&#1575;&#1585;&#1583; ::.</title>
   <url>http://www.parsiguard.com/forum_images/web_wiz_forums_black.png</url>
   <link>http://www.parsiguard.com/</link>
  </image>
  <item>
   <title>&#1586;&#1576;&#1575;&#1606; Java , Java Script : معرفي نسخه هاي Java</title>
   <link>http://www.parsiguard.com/forum_posts.asp?TID=31&amp;PID=31#31</link>
   <description>
    <![CDATA[<strong>نويسنده:</strong> <a href="http://www.parsiguard.com/member_profile.asp?PF=1" rel="nofollow">vvel3</a><br /><strong>موضوع:</strong> معرفي نسخه هاي Java<br /><strong>ارسال شده :</strong> 14 تیر 2010  در ساعت  9:15عصر<br /><br /><br><br><font face="Tahoma"><font size="2">زمان انتشار اولين نسخه جاوا</font> </font><b><font face="Arial"><font size="2">(</font></font><font size="2"><font face="Arial">java 1.0</font></font><font face="Arial"><font size="2">)</font></font></b><font size="2"><font face="Tahoma">تا به امروز، شركت </font><b><font face="Arial">Sun </font></b></font><font face="Tahoma"><font size="2">تقريباهر دو سال يكبار نسخه اي جديد از زبان برنامه سازي جاوا را منتشر مينمايد. در اين نسخه تازه، معمولا قابليت هاي جديدي افزوده شده و ايرادهاينسخه قبل رفع مي شوند.</font></font><br> <font face="Tahoma"><font size="2">نكته قابل توجه در مورد  شماره گذاري نسخه هاي مختلف جاوا آن است كه تا چهارمين نسخه آن شماره گذاري  بصورت</font> </font><b><font face="Arial"><font size="2">Java  1.x</font></font></b><font face="Tahoma">  <font size="2">بود كه</font> </font><b><font face="Arial"><font size="2">x</font></font></b><font face="Tahoma"> <font size="2">همان شماره نسخه مورد  نظر مي باشد. از نسخه پنجم به بعد شماره گذاري بصورت</font> </font><font face="Arial"><font size="2">Java  x</font></font><font face="Tahoma"> <font size="2">تغيير يافت. يعني بجاي اينكه نسخه پنجم را بصورت</font> </font><font face="Arial"><font size="2">Java  1.5</font></font><font face="Tahoma">  <font size="2">نامگذاري كنند، بصورت</font> </font><b><font face="Arial"><font size="2">java  5.0</font></font></b><font face="Tahoma">  <font size="2">نامگذاري كردند.</font></font><br> <font size="2"><font face="Tahoma">در ادامه به معرفي نسخه هاي مختلف جاوا بر اساس نسخه  پايه اي آن يا همان نسخه استاندارد جاوا</font></font><font face="Arial"><font size="2">(</font></font><b><font face="Arial"><font size="2">(Standard Edition(SE)</font></font></b><font size="2"><font face="Tahoma">مي پردازيم. اين نسخه شامل همه ملزومات  مورد نياز جهت</font></font><b><font face="Arial"><font size="2">Desktop  Programming</font></font></b><font size="2"><font face="Tahoma">مي باشد. </font></font><br>  <br>     <div align="left"><div align="right"><font color="#ffffff"><font face="Arial">1995<font face="Arial">       java  1.0</font></font></font></div></div>  <font color="#ffffff"><img src="http://pnu-club.com/pic/tickle5.gif" border="0" /></font><br>   <ul><li> <div align="right"><font face="Tahoma"><font size="2">شامل 8 بسته</font> </font><b><font face="Arial"><font size="2">(</font></font><font size="2"><font face="Arial">package</font></font><font face="Arial"><font size="2">)</font></font></b><font face="Tahoma"> <font size="2">با 212 كلاس</font></font> </div></li><li> <div align="right"><font face="Tahoma"><font size="2">مرورگر</font></font><b><font face="Arial"><font size="2">Netscape</font></font></b><font face="Tahoma"> <font size="2">نسخه 2 تا 4 از  </font></font><b><font face="Arial"><font size="2">java 1.0</font></font></b><font face="Tahoma"> <font size="2">پشتيباني مي كنند.</font></font> </div></li><li> <div align="right"><font face="Tahoma"><font size="2">مايكروسافت و ساير كمپاني هاي بزرگ نرم  افزاري جاوا را تاييد مي نمايند.</font></font> </div></li></ul>   <br>   <div align="left"><div align="right"><font color="#ffffff"><font face="Arial">1997         java  1.1</font></font></div></div>  <font color="#ffffff"><img src="http://pnu-club.com/pic/tickle5.gif" border="0" /></font><br>   <ul><li> <div align="right"><font face="Tahoma"><font size="2">شامل 23 بسته با 504 كلاس</font></font>  </div></li><li> <div align="right"><font face="Tahoma"><font size="2">بهبود در مديريت  رويدادها</font></font><b><font face="Arial"><font size="2">(event handeling)</font></font></b><font face="Tahoma">، </font><font face="Tahoma"><font size="2">كلاس هاي داخلي و</font></font><b><font face="Arial"><font size="2">JVM (Java Virtual  Machine)</font></font></b> </div></li><li> <div align="right"><font face="Tahoma"><font size="2">مايكروسافت قابليت پشتيباني  از</font></font><b><font face="Arial"><font size="2">java 1.1</font></font></b><font face="Tahoma"><font size="2">را در  مرورگر</font></font><b><font face="Arial"><font size="2">IE</font></font></b><font face="Tahoma"> اضافه  مي كند.</font><font face="Tahoma"><font size="2"> در اين زمان اكثر  مرورگرها از جاوا پشتيباني مي كنند.</font></font> </div></li><li> <div align="right"><font face="Tahoma"><font size="2">بسته</font></font><b><font face="Arial"><font size="2">swing</font></font></b><font face="Tahoma"><font size="2">با افزايش قابل توجهي در قابليت هاي  گرافيكي جاوا در اين زمان بصورت مستقل از هسته مركزي جاوا، منتشر  گرديد.</font></font> </div></li><li> <div align="right"><b><font face="Arial"><font size="2">JavaBeans</font></font></b> </div></li><li> <div align="right"><b><font face="Arial"><font size="2">JDBC</font></font></b> </div></li><li> <div align="right"><b><font face="Arial"><font size="2">RMI</font></font></b> </div></li></ul>   <br>   <div align="left"><div align="right"><font color="#ffffff"><font face="Arial">1999     J2SE 1.2</font></font></div></div>  <font color="#ffffff"><img src="http://pnu-club.com/pic/tickle5.gif" border="0" /></font><br>   <ul><li> <div align="right"><font face="Tahoma"><font size="2">نام كد:</font></font><b><font face="Arial"><font size="2">playground</font></font></b><font face="Tahoma"><font size="2">(به معني زمين  بازي)</font></font> </div></li><li> <div align="right"><font face="Tahoma"><font size="2">شامل 59 بسته با 1520 كلاس</font></font>  </div></li><li> <div align="right"><font face="Tahoma"><font size="2">از اين تاريخ به بعد نسخه هاي جاوا  بصورت</font></font><b><font face="Arial"><font size="2">Java 2 platform</font></font></b><font face="Tahoma"><font size="2">ناميده مي شوند.</font></font> </div></li><li> <div align="right"><font face="Tahoma"><font size="2">تمامي كدها و ابزارهاي توليد شده تا به  اين تاريخ بصورت متمركز در يك بسته نرم افزاري متمركز قرار گرفته و در واقع  بصورت</font></font><b><font face="Arial"><font size="2">Software Development Kit</font></font></b><font face="Tahoma"><font size="2">به بازار عرضه گشت.</font></font> </div></li><li> <div align="right"><font face="Tahoma"><font size="2">ايجاد</font></font><b><font face="Arial"><font size="2">JFC  (Java Foundation Classes)</font></font></b><font face="Tahoma">  <font size="2">كه</font> <font size="2">بر مبناي</font> </font><b><font face="Arial"><font size="2">swing</font></font></b><font face="Tahoma"><font size="2">پايه ريزي شده و به جهت بهبود وضعيت گرافيكي مورد استفاده قرار مي  گيرد.</font></font> </div></li><li> <div align="right"><font face="Tahoma"><font size="2">توجه: </font></font><b><font face="Arial"><font size="2">JFC</font></font></b><font face="Tahoma"><font size="2">از اصول</font></font><b><font face="Arial"><font size="2">Internet  Foundation Classes</font></font></b><font face="Tahoma"><font size="2">محصول  شركت</font></font><b><font face="Arial"><font size="2">Netscape Communications</font></font></b><font face="Tahoma"><font size="2">استفادهمي كند. با فراهم نمودن اجزاء رابط هاي گرافيكي جهت استفاده در توليدبرنامه هاي كاربردي تجاري و اينترنتي جاوا، سبب افزايش قابليت هاي</font></font><b><font face="Arial"><font size="2">AWT (Abstract Window Toolkit)</font></font></b><font face="Tahoma"><font size="2">شده است.</font></font> </div></li><li> <div align="right"><font face="Tahoma"><font size="2">ايجاد يك</font></font><b><font face="Arial"><font size="2">IDL</font></font></b><font face="Tahoma"><font size="2">جهت پياده سازي</font></font><b><font face="Arial"><font size="2">CORBA</font></font></b> </div></li><li> <div align="right"><font face="Tahoma"><font size="2">افزودن مجموعه اي از</font></font><b><font face="Arial"><font size="2">API</font></font></b><font face="Tahoma"><font size="2">ها جهت  پشتيباني از انواع</font></font><b><font face="Arial"><font size="2">List,Set,Hash maps</font></font></b><font face="Tahoma"><font size="2">و</font></font><b><font face="Arial"><font size="2">...</font></font></b>  </div></li></ul>     <div align="left"><div align="right"><font color="#ffffff"><font face="Arial">2000     J2SE  1.3</font></font></div></div>  <font color="#ffffff"><img src="http://pnu-club.com/pic/tickle5.gif" border="0" /></font><br>   <ul><li> <div align="right"><font face="Tahoma"><font size="2">ن</font></font><font face="Tahoma"><font size="2">ام كد: </font></font><b><font face="Arial"><font size="2">Kestrel</font></font></b><font face="Tahoma"><font size="2">(به معني نوعي باز ريز  اندام اروپايي)</font></font> </div></li><li> <div align="right"><font face="Tahoma"><font size="2">شامل 76 بسته  با 1842  كلاس</font></font> </div></li><li> <div align="right"><font face="Tahoma"><font size="2">افزايش كارايي با افزوده  شدن</font></font><b><font face="Arial"><font size="2">Hotspot virtual machine</font></font></b> </div></li><li> <div align="right"><b><font face="Arial"><font size="2">JavaSound</font></font></b> </div></li><li> <div align="right"><b><font face="Arial"><font size="2">Java platform Debugger Architecture  (JPDA)</font></font></b> </div></li><li> <div align="right"><font face="Tahoma"><font size="2">قرارگيري</font></font><b><font face="Arial"><font size="2">Java Naming and Directory Interface (JNDI)</font></font></b><font face="Tahoma"><font size="2">در كتابخانه اصلي و مركزي جاوا</font></font> </div></li></ul>     <div align="left"><div align="right"><font color="#ffffff"><font face="Arial">2002   J2SE 1.4  </font></font></div></div>  <font color="#ffffff"><img src="http://pnu-club.com/pic/tickle5.gif" border="0" /></font><br>   <ul><li> <div align="right"><font face="Tahoma"><font size="2">نام كد:</font></font><b><font face="Arial"><font size="2">Merlin</font></font></b> </div></li><li> <div align="right"><font face="Tahoma"><font size="2">شامل 135 بسته  با 2991  كلاس</font></font> </div></li><li> <div align="right"><font face="Tahoma"><font size="2">پشتيباني از</font></font><b><font face="Arial"><font size="2">IPv6 (Internet  Protocol version 6)</font></font></b> </div></li><li> <div align="right"><font face="Tahoma"><font size="2">بهبود</font></font><b><font face="Arial"><font size="2">API</font></font></b><font face="Tahoma"><font size="2">مربوط به</font></font><b><font face="Arial"><font size="2">I/O</font></font></b><font face="Tahoma"><font size="2">بخصوص در بخش كار با تصاوير با فرمت هاي  </font></font><b><font face="Arial"><font size="2">JPEG</font></font></b><font face="Tahoma"><font size="2">و</font></font><b><font face="Arial"><font size="2">PNG</font></font></b><font face="Tahoma"><font size="2">(خواندن و  نوشتن)</font></font> </div></li><li> <div align="right"><b><font face="Arial"><font size="2">JAXP</font></font></b><font face="Tahoma"><font size="2">(يك</font></font><b><font face="Arial"><font size="2">XML</font></font></b><b><font face="Arial"><font size="2">Parser</font></font></b><font face="Tahoma"><font size="2">متمركز</font></font><font face="Tahoma"> <font size="2">ب</font></font><font face="Tahoma"><font size="2">ه همراه يك پردازشگر</font></font><b><font face="Arial"><font size="2">XSLT</font></font></b><font face="Tahoma"><font size="2">)</font></font> </div></li><li> <div align="right"><font face="Tahoma"><font size="2">توسعه بخش امنيتي با متمركز كردن و بهبود  بخش امنيت و رمزنگاري</font></font><b><font face="Arial"><font size="2">(JCE</font></font></b><font face="Tahoma">,</font><b><font face="Arial"><font size="2"> JSSE,</font></font></b><b><font face="Arial"><font size="2">JAAS)</font></font></b> </div></li></ul>     <div align="left"><div align="right"><font face="Arial"><font color="#ffffff">2004   J2SE 5.0</font></font></div></div>  <font color="#ffffff"><img src="http://pnu-club.com/pic/tickle5.gif" border="0" /></font><br>   <ul><li> <div align="right"><font size="2"><font face="Tahoma">نام كد:</font></font><b><font face="Arial"><font size="2">Tiger</font></font></b><font face="Tahoma"><font size="2">(به معني ببر)</font></font> </div></li><li> <div align="right"><font face="Tahoma"><font size="2">شامل 165 بسته  با 3000  كلاس</font></font> </div></li><li> <div align="right"><font face="Tahoma"><font size="2">بهبود ساختار جاوا در جهت افزايش سرعت   آغاز به كار و كاهش ميزان فضاي مورد نياز از حافظه جهت كار</font></font><b><font face="Arial"><font size="2">(FootPoint)</font></font></b> </div></li><li> <div align="right"><font face="Tahoma"><font size="2">بهبود زمان كامپايل</font></font><b><font face="Arial"><font size="2">(compile  time)</font></font></b> </div></li><li> <div align="right"><font size="2"><font face="Tahoma">بهبود وضعيت تبديل انواع به  يكديگر</font></font><b><font face="Arial"><font size="2">(Type conversion)</font></font></b> </div></li><li> <div align="right"><font size="2"><font face="Tahoma">تقويت كارايي حلقه</font></font><b><font face="Arial"><font size="2">for</font></font></b><font face="Tahoma">، </font><font face="Tahoma"><font size="2">در اين نسخه ساختار  حلقه</font></font><b><font face="Arial"><font size="2">For</font></font></b><font size="2"><font face="Tahoma">بهگونه اي توسعه يافت كه قادر بود فعاليت شمارش خود را بر روي اعضايساختارهايي مثل مجموعه ها و ديگر ساختار هاي سلسله مراتبي انجام د</font></font><font face="Tahoma"><font size="2">هد.</font></font> </div></li></ul> <div align="left"><div align="right"><b><font face="Arial"><font size="2"><font color="#ff0000">Example:</font></font></font></b></div></div> <div align="left"><div align="right"><b><font face="Arial"><font size="2">void    displayWidgets(Iterable &lt;widget&gt; widgets){</font></font></b></div></div> <div align="left"><div align="right"><b><font face="Arial"><font size="2">       for (widget    w:widgets){</font></font></b></div></div> <div align="left"><div align="right"><b><font face="Arial"><font size="2">                       w.display();</font></font></b></div></div> <div align="left"><div align="right"><b><font face="Arial"><font size="2">        }</font></font></b></div></div> <div align="left"><div align="right"><b><font face="Arial"><font size="2">}</font></font></b></div></div> <div align="right"><font face="Tahoma"><font size="2">در اين مثال، شمارش بر روي شيء قابل  شمارش</font></font><b><font face="Arial"><font size="2">widgets</font></font></b><font face="Tahoma"><font size="2">انجام مي شود. با تغيير  مقدار متغير</font></font><b><font face="Arial"><font size="2">w</font></font></b><font face="Tahoma"><font size="2">توسط قرارگيري هر يك از اعضاي </font></font><b><font face="Arial"><font size="2">widgets</font></font></b><font face="Tahoma"><font size="2">درون آن</font></font><font face="Tahoma"><font size="2">يكبار متد</font></font><b><font face="Arial"><font size="2">display</font></font></b><font face="Tahoma"><font size="2"> براي هر يك از اعضاي</font></font><b><font face="Arial"><font size="2">widgets</font></font></b><font face="Tahoma"><font size="2">اجرا خواهد شد.</font></font></div>  <ul><li> <div align="right"><font face="Tahoma"><font size="2">افزوده شدن قابليت توليد  خودكار</font></font><b><font face="Arial"><font size="2">stub</font></font></b><font face="Tahoma"><font size="2">براي</font></font><b><font face="Arial"><font size="2">RMI</font></font></b> </div></li></ul>     <div align="left"><div align="right"><font face="Arial"><font color="#ffffff">2006      Java SE 6</font></font></div></div>  <font color="#ffffff"><img src="http://pnu-club.com/pic/tickle5.gif" border="0" /></font><br>   <ul><li> <div align="right"><font face="Tahoma"><font size="2">نام كد:</font></font><b><font face="Arial"><font size="2">Mustang</font></font></b><font face="Tahoma"><font size="2">(به معني اسب ريز اندام وحشي بومي  امريكا)</font></font> </div></li><li> <div align="right"><b><font face="Arial"><font size="2">Sun</font></font></b><font face="Tahoma"><font size="2">از اين نسخه به بعد نام</font></font><b><font face="Arial"><font size="2">J2SE</font></font></b><font face="Tahoma"><font size="2">را به</font></font><b><font face="Arial"><font size="2">Java</font></font></b><b><font face="Arial"><font size="2">SE</font></font></b><font face="Tahoma"><font size="2">تغيير نام داد و  </font></font><b><font face="Arial"><font size="2">“.0”</font></font></b><font face="Tahoma"><font size="2">را از شماره نسخه هاي جديد  خود حذف نمود. اما هنوز سيستم نام گذاري قديمي نسخه هاي جاوا در بين توسعه دهندگان  باقي مانده است.</font></font><b><font face="Arial"><font size="2">(1.6.0)</font></font></b> </div></li><li> <div align="right"><font face="Tahoma"><font size="2">از اين نسخه به بعد ديگر سيستم عامل هاي قديمي مثل</font></font><b><font face="Arial"><font size="2">win9x</font></font></b><font face="Tahoma"><font size="2">يا</font></font><b><font face="Arial"><font size="2">win  Me</font></font></b><font face="Tahoma"><font size="2">پشتيباني نمي شود. آخرين نسخه اي كه از  سيستم عامل هاي گروه فوق پشتيباني مي كرد</font></font><b><font face="Arial"><font size="2">j2SE 5.0 update  16</font></font></b><font face="Tahoma"><font size="2">بود.</font></font> </div></li><li> <div align="right"><font face="Tahoma"><font size="2">بهبود وضعيت پشتيباني از وب سرويس  ها</font></font> </div></li><li> <div align="right"><b><font face="Arial"><font size="2">JDBC 4.0</font></font></b> </div></li><li> <div align="right"><font face="Tahoma"><font size="2">ارتقاء</font></font><b><font face="Arial"><font size="2">JAXB</font></font></b><font face="Tahoma"><font size="2">به نسخه 2 </font></font></div></li><li> <div align="right"><font size="2"><font face="Tahoma">بهبود وضعيت</font></font><b><font face="Arial"><font size="2">GUI</font></font></b><font face="Tahoma"><font size="2">در جاوا، مانند</font></font><b><font face="Arial"><font size="2">APIهاي</font></font></b><b><font face="Arial"><font size="2">Swing</font></font></b><font face="Tahoma">، </font><font face="Tahoma"><font size="2">قابليت</font></font><b><font face="Arial"><font size="2">sort</font></font></b><font face="Tahoma"> و</font><font face="Arial"><font size="2"><b>filtering</b></font></font><font size="2"><font face="Tahoma">در</font></font><font face="Arial"><font size="2"><b>table</b></font></font><font size="2"><font face="Tahoma">ها</font></font><font face="Tahoma"><font size="2">و ..</font></font> </div></li><li> <div align="right"><b><font face="Arial"><font size="2">Java</font></font></b><b><font face="Arial"><font size="2">Deployment</font></font></b><b><font face="Arial"><font size="2">ToolKit</font></font></b><font face="Tahoma">،  </font><font face="Tahoma"><font size="2">يك مجموعه از توابع جاوا  اسكريپتي براي راحتي بيشتر توسعه و كار با</font></font><b><font face="Arial"><font size="2">applet</font></font></b><font face="Tahoma"><font size="2">ها</font></font> </div></li><li> <div align="right"><font face="Tahoma"><font size="2">كوچكتر كردن</font></font><b><font face="Arial"><font size="2">Kernel</font></font></b><font face="Tahoma"><font size="2">جاوابه منضور كم حجم تر كردن و سريع تر شدن جاوا در هنگام نصب و كم شدن مصرفحافظه . در چنين حالتي هرگاه به بسته هاي ديگري كه بر روي سيستم نصب نشدهاست نياز بود، كافيست آنها را دانلود كنيد.</font></font> </div></li><li> <div align="right"><font face="Tahoma"><font size="2">بهبود كارايي گرافيك  در</font></font><b><font face="Arial"><font size="2">Java</font></font></b><b><font face="Arial"><font size="2">2D</font></font></b><font face="Tahoma"><font size="2">و استفاده از</font></font><b><font face="Arial"><font size="2">Direct3D</font></font></b><font face="Tahoma"> <font size="2">و  </font></font><b><font face="Arial"><font size="2">Hardware</font></font></b><b><font face="Arial"><font size="2">Acceleration</font></font></b> </div></li><li> <div align="right"><font face="Tahoma"><font size="2">آخرين </font></font><b><font face="Arial"><font size="2">Update</font></font></b><font face="Tahoma"><font size="2">موجود</font></font><b><font face="Arial"><font size="2">Java</font></font></b><b><font face="Arial"><font size="2">SE</font></font></b><b><font face="Arial"><font size="2"> 6  Update 14</font></font></b><font face="Tahoma"><font size="2">مي باشد.</font></font>  </div></li></ul>     <div align="left"><div align="right"><font color="#ffffff"><font face="Arial">20??        Java SE 7     (Java  7)</font></font></div></div>  <font color="#ffffff"><img src="http://pnu-club.com/pic/tickle5.gif" border="0" /></font><br>   <ul><li> <div align="right"><font face="Tahoma"> <font size="2">نام كد: </font></font><b><font face="Arial"><font size="2">Dolphin</font></font></b> </div></li><li> <div align="right"><font face="Tahoma"><font size="2">اين نسخه در آينده نزديك به بازار عرضه خواهد شد. اين نسخه  در</font></font><b><font face="Arial"><font size="2">August 2006</font></font></b><font face="Tahoma"><font size="2">شروع شده و قرار است در سال</font></font><b><font face="Arial"><font size="2">2009</font></font></b><font face="Tahoma"><font size="2">به بازار عرضه  گردد.</font></font> </div></li><li> <div align="right"><font size="2"><font face="Tahoma">پشتيباني از تكنيك</font></font><b><font face="Arial"><font size="2">Dynamic Languages</font></font></b><font size="2"><font face="Tahoma">توسط</font></font><b><font face="Arial"><font size="2">JVM  (Multi Language Virtual Machine)</font></font></b> </div></li><li> <div align="right"><font face="Tahoma"><font size="2">ايجاد يك كتابخانه جديد براي پردازش  موازي روي پردازنده هاي چند هسته اي</font></font> </div></li><li> <div align="right"><font size="2"><font face="Tahoma">و ...</font></font></div></li></ul><br>]]>
   </description>
   <pubDate>Wed, 14 Jul 2010 20:45:54 +0000</pubDate>
   <guid isPermaLink="true">http://www.parsiguard.com/forum_posts.asp?TID=31&amp;PID=31#31</guid>
  </item> 
  <item>
   <title>&#1586;&#1576;&#1575;&#1606; Java , Java Script : چرا جاوا زباني جالب است ؟</title>
   <link>http://www.parsiguard.com/forum_posts.asp?TID=30&amp;PID=30#30</link>
   <description>
    <![CDATA[<strong>نويسنده:</strong> <a href="http://www.parsiguard.com/member_profile.asp?PF=1" rel="nofollow">vvel3</a><br /><strong>موضوع:</strong> چرا جاوا زباني جالب است ؟<br /><strong>ارسال شده :</strong> 14 تیر 2010  در ساعت  9:13عصر<br /><br />در يكي از مقالات در باره ي زبان شركتSun جاوا را با اين خصوصيات  شرح مي دهد : <br><br>جاوا يك زبان ساده ، شي گرا ،‌توزيع شده ، تفسير شده ، قدرتمند ، ايمن ،با معماري خنثي ، قابل حمل ، با عملكرد سطح بالا چند نخ كشي شده و پويااست . <br><br>Sun تصديق ميكند كه به طور قطع اين كلمات رشته هايي از واژه هاي متداول درزبان برنامه نويسي هستند ، اما حقيقت اين است كه اين واژه ها به طورماهرانه اي خصوصيات اين زبان را شرح ميدهند . <br><br>حال به برخي از خصلت هاي جاوا در پشت اين واژه ها ميپردازيم . <br><br><br><br>شي گرا :Object Oriented <br><br><br><br>جاوا يك زبان برنامه نويسي شي گرا است . براي يك برنامه نويس اين به اينمعنا است كه به جاي فكر كردن به قسمت هاي رويه برنامه ، بايد به كاربردداده ها و روش هايي كه روي آن داده ها عمل ميكنند ، توجه شود. <br><br>اگر شما به برنامه نويسي با اعلان رويه در C عادت كرده ايد ،ممكن استدريابيد كه به هنگام استفاده از جاوا مجبور به تغيير در روش و چگونگيبرنامه تان هستيد . هنگامي كه فهميديد اين الگوي جديد چقدر قدرتمند است ،به سرعت با آن هماهنگ ميشويد . <br><br>در يك سيستم شي گرا ، يك كلاس مجموعه اي از داده ها و روش هايي است كه رويآن داده عمل ميكنند. همراه بودن داده ها و متد ها رفتار و حالت يك شي رابيان مي دارد . كلاس ها به صورت سلسله مراتبي مرتب شده اند ، بنابر اين يكزير كلاس ميتواند رفتار هايي را از كلاس بالاتر به ارث ببرد . يك كلاسسلسله مراتبي هميشه يك كلاس ريشه دارد كه كلاسي است با رفتار هاي كاملاعمومي . <br><br>جاوا به همراه دسته ي گسترده اي از كلاس هايي است كه در بسته هايي مرتبشده اند و شما مي توانيد از آنها در برنامه ي خود استفاده كنيد . برايمثال جاوا كلاس هايي را ايجاد ميكند كه : <br><br>بخش هاي رابط گرافيكي را ميسازند (the java.awt package) ،كلاس هايي كهعمليات ورودي و خروجي را به عهده دارند(the java.io package) و كلاس هاييكه از شبكه پشتيباني ميكنند (the java.net package ) . <br><br>يك شي كلاس(in the java.lang package) به عنوان ريشه كلاس سلسله مراتبي جاوا انجام وظيفه ميكند . <br><br>جاوا بر خلاف C++ طوري طراحي شده است كه از همان ابتدا به صورت شي گراباشد . اكثر چيز ها در جاوا اشيا هستند . ارقام ابتدايي ، كاراكترها و مدلهاي منطقي تنها استثناء ها هستند . حتي رشته ها هم در جاوا به وسيله اشياحاضر ميشوند ،همان طور كه ساختمان هاي مهم ديگر اين زبان ، مثل نخ هااحضار ميشوند . يك كلاس يك واحد پايه براي كامپايل و اجرا شدن در جاوا است. تمام برنامه هاي جاوا متشكل از كلاس ها است . <br><br> درست است كه جاوا طوري طراحي شده است كه مثل C++ باشد و خاصيت هاي آنرا داشته باشد ، اما هنگامي كه با آن كار كنيد خواهيد فهميد كه بسياري ازپيچيده گي هاي آن زبان را از بين برده است . <br><br>اگر شما يك برنامه نويس C++ هستيد حتما لازم است كه ساختار هاي شي گراييدر جاوا را به دقت مطالعه كنيد . اگرچه تركيب و نحوه دستورات آن تقريباشبيه C++ است ،‌اما رفتار هاي آن خيلي مشابه نيست . <br><br><br><br>تفسير شده :Interpreted <br><br><br><br>جاوا يك زبان تفسير شده است . كامپايلر جاوا به جاي ايجاد كد محلي ماشين ،كد بايتي براي ماشين مجازي جاوا ايجاد ميكند . براي اجراي دقيق برنامه ،از مفسر جاوا براي اجراي كد هاي بايتي كامپايل شده استفاده ميشود . بهدليل اينكه كد هاي بايتي جاوا به نوع كامپيوتر بستگي ندارند ، برنامه هايجاوا ميتوانند روي هر نوع كامپيوتري كه JVM (Java Virtual Machine) رادارند ، اجرا شوند . <br><br>در محيط تفسير شده ، مرحله لينك استاندارد توسعه برنامه از ديد كاربرپنهان است . اگر جاوا تنها يك مرحله لينك داشت ، فقط بارگذاري كلاس جديدبه محيط پردازش ميشد كه يك پردازش نموي سبك وزن است كه در زمان اجرامشاهده ميشود . كه اين خصوصيت با چرخه كامپايل-لينك-اجرا ي آرام و طاقتفرساي زبان هايي مانند C يا C++ در تضاد است . <br><br><br><br>معماري خنثي و قابل حمل : <br><br>Architecture Neutral and Portable <br><br><br><br>به دليل اينكه برنامه هاي جاوا در فرمت كد بايتي با معماري خنثي كامپايلشده اند ، برنامه كاربردي جاوا ميتواند در هر سيستمي اجرا شود. <br><br>البته با اين شرط كه آن سيستم توانايي پياده سازي ماشين مجازي جاوا راداشته باشد . اين مسئله تقريبا براي كاربرد هاي توزيع سده روي اينترنت ويا ديگر شبكه هاي ناهمگن مهم است . اما روش معماري خنثي براي كاربرد هايبر مبناي شبكه مفيد است . <br><br>به عنوان يك توسعه دهنده برنامه هاي كاربردي در بازار نرم افزاري امروزممكن است بخواهيد مدل هاي كاربردي خود را توسعه دهيد ، به طوري كه بتواندروي Pc ، مكينتاش و سيستم عامل Unix اجرا شود .با وجود گونه هاي مختلفUnix ، Windows روي Pc و مكينتاش قوي جديد ، رفته رفته توليد نرم افزاربراي همه انواع اين كامپيوتر ها سخت مي شود . اگر شما برنامه تان را درجاوا بنويسيد ميتواند روي همه ي اين كامپيوترها اجرا شود . <br><br>در حقيقت تفسير شده بودن جاوا وتعريف يك استاندارد ، معماري خنثي داشتن وفورمت كد بايتي آن از بزرگترين دلايل قابل حمل بودن آن به شمار مي آيند . <br><br>اما جاوا باز از اين هم بيشتر گام برميدارد ،‌ با اطمينان حاصل كردن ازاينكه هيچيك از جنبه هاي وابستگي اجرايي زبان را ندارد . براي مثال جاوابه طور صريح اندازه هريك از انواع داده را تعريف ميكند كه اين با C تفاوتدارد ، برای مثال هريک از انواع صحيح می تواند بسته به نوع کامپيوتر16-32يا 64 بيت طول داشته باشد . <br><br>هنگامی که به صورت تکنيکی امکان نوشتن برنامه های غير قابل حمل در جاوافراهم شد ، جلوگيری از چند خاصيت وابسته به نوع کامپيوتر که توسط جاوا APIتوليد شده و به طور قطع قابل حمل نوشته شده است ، آسان است . <br><br>يك برنامه جاوا به توليد كنندگان نرم افزار كمك ميكند تا از قابل حمل بودنكد هايشان اطمينان حاصل كنند . برنامه نويسان فقط براي پرهيز از دام غيرقابل حمل بودن برنامه احتياج به يك تلاش ساده دارند كه شعار تجارتيشركتSun را زنده نگهدارند و آن شعار اين است : <br><br>« يك بار بنويس ، همه جا اجرا كن » . <br><br><br><br>پويا و توزيع شده <img src="http://www.centralclubs.com/images/smilies/happy.gif" border="0" />ynamic and Distributed <br><br>جاوا يك زبان پويا است . هر كلاس جاوا ميتواند در هر زماني روي مفسر جاوابارگذاري شود . سپس اين كلاس هاي بارگذاري شده ي پويا ميتوانند به صورتپويا معرفي شوند . حتي كتابخانه كد هاي محلي ميتواند به طور پويا بارگذاريشود .كلاس ها در جاوا با كلاس Class فراخواني ميشوند ؛ شما ميتوانيد بهطور پويا در مورد يك كلاس در زمان اجرا اطلاعاتي بدست بياوريد . اينخصوصيت در جاوا 1-1 به طور درستي موجود است . با وجود بازتاب API اضافهشده (Application Program Interface ) كه به برنامه ساز امكان ميدهد كه بابرنامه از طريق يك برنامه كاربردي ديگر ارتباط برقرار كند . <br><br>جاوا حتي با نام زبان توزيع شده نيز خوانده ميشود . به طور ساده اين بهاين معنا است كه اين زبان پشتيباني سطح بالايي براي شبكه به وجود مي آورد. براي مثال كلاس URL و كلاس هاي مرتبط با آن در بسته ي Java.net ، خواندنفايل هاي دوردست را به همان سادگي خواندن فايل هاي محلي كرده است . به طورمشابه در جاوا 1-1 ، احضار روش كنترلي RMI <br><br>(Remote Method Invocation ) ، API به يك برنامه جاوا اجازه ميدهد كه روشهايي از اشياء دور دست جاوا را به همان صورتي كه اگر آن اشياء محلي بدندآنها را ميخواند ، بخواند .( جاوا حتي از سيستم شبكه اي سطح پايين كه شاملآدرس مقصد و مسير جرياني كه توسط سوكت ها متصل شده است ، نيز پشتيبانيميكند .) <br><br>طبيعت توزيع شده ي جاوا زمانيكه با امكانات پوياي بارگذاري كلاس همراهميشود ، واقعا درخشنده است . اين خصوصيات با هم اين امكان را براي مفسرجاوا به وجود مي آورند كه كد ها را از اينترنت بارگذاري و اجرا كند . (همان طور كه بعدا خواهيم ديد جاوا باعث ميشود كه با وجود ابزار قدرتمند وايمن اين كار به طور مطمئن انجام شود .) اين چيزي است كه در هنگامبارگذاري و اجراي يك برنامه كاربردي از اينترنت توسط مرورگر وب ، اتفاق ميافتد . اما داستان پيچيده تر از اين هم ميتواند باشد . تصور كنيد يكپردازشگر كلمه چند رسانه اي در جاوا نوشته شده است . وقتي از اين برنامهپرسيده ميشود كه چند نوع از داده هايي را كه قبلا هرگز وارد نشده را نمايشدهد ، ممكن است به طور ديناميكي يك كلاس را كه ميتواند داده را شناساييكند ، از شبكه بارگذاري كند و بعد كلاس ديگري را كه بتواند داده را ازدرون يك پوشه تركيبي بخواند ، باز به طور ديناميكي بارگذاري ميكند .برنامه اي مانند اين از منابع توزيع شده در شبكه براي رشد و سازگاريخودكار كاربران استفاده ميكند . <br><br><br>ساده :Simple <br><br>جاوا يك زبان ساده است . طراحان جاوا سعي در اين داشتند تا زباني بوجودبياورند كه برنامه نويسان بتوانند به سرعت آن را ياد بگيرند . بنابراينتعداد ساختار هاي اين زبان تقريبا كم است . هدف ديگر طراحي اين زبان اينبود كه به منظور راحتي انتقال آن ، آن را طوري طراحي كنند كه براي عده يزيادي از برنامه نويسان آشنا باشد . اگر شما يك برنامه نويس C يا C++هستيد ، خواهيد فهميد كه جاوا از بسياري از ساختار هاي C و ‍ C++ استفادهميكند . <br><br>براي اينكه اين زبان را هم به طور ساده و هم آشنا و ملموس و هم كوچك نگهدارند بسياري از خصوصيات C و C++ را در آن حذف كردند . اينها خصوصياتيبودند كه باعث مي شدند برنامه نويسي ضعيفي صورت بگيرد يا آنهايي بودند كهبه ندرت در برنامه استفاده مي شدند . براي مثال جاوا از دستور gotoاستفاده نمي كند ، در عوض از دستورهاي break , continue در مواقع نيازاستفاده مي كند . <br><br>جاوا از سر فايل ها(header files) استفاده نمي كند و پردازشگر C را هم حذفكرده است . به اين دليل كه جاوا يك زبان شي گرا است ، ساختار هاي C مثلstruct , union از آن برداشته شده است . جاوا حتي بارگذاري مجدد و خواصچندگانه ارث بري از C++ را هم حذف كرده است . شايد مهمترين پارامتر سادهبودن جاوا عدم استفاده اين زبان از اشاره گر ها باشد . اشاره گر ها يكي ازبيشترين موجوديت هاي دردسرساز در C , C++ هستند . چون جاوا ساختمان نداردو آرايه ها و رشته ها اشياء آن هستند ، بنابراين احتياجي به اشاره گر نيست.جاوا به طور خودكار آدرس دهي و دستذسي به محتواي موجود در يك آدرس رابراي شما انجام ميدهد . <br><br>جاوا حتي زباله هاي حافظه اي را هم به طور خودكار جمع آوري ميكند.(Garbage Collectin) (* جمع آوري آشغال فرايندي است براي ترميم خودكارحافظه انباشته شده . بلوك هايي از حافظه كه زماني به فايل ها اختصاصداشتند اما مدتي است كه از آنها استفاده نمي شود و بلوك هايي از حافظه كههنوز مورد استفاده قرار ميگيرند ممكن است حركت داده شوند تا از به همپيوستن فضاهاي خالي حافظه بلوك هاي خالي بزرگتري بدست آيد . <br><br>&#091; از كتاب : Microsoft computer dictionary&#093; * ) بنابراين لازم نيست كهنسبت به موضوع مديريت حافظه نگران باشيد ، همه اينها شما را از نگراني درمورد اشاره گر هاي بي ارزش ، خطرناك و هرز هاي حافظه رها ميكنند . بنابراين شما ميتوانيد وقت خود را صرف بهبود برنامه تان كنيد . <br><br><br><br>قدرتمند :Robust <br><br>جاوا براي نوشتن نرم افزارهاي قدرتمند و بسيار ايمن ساخته شده است . جاواهنوز هم به طور قطع نرم افزار ها را تضمين نميكند . تقريبا هنوز هم امكاننوشتن برنامه هاي مشكل ساز در جاوا وجود دارد ، هرچند كه جاوا برخي ازانواع مشخص خطاهاي برنامه نويسي را حذف كرده كه به طرز چشمگيري نوشتن نرمافزار هاي ايمن را آسان تر كرده است . <br><br>جاوا يك زبان تايپ شده قدرتمند است ،‌ كه اجازه چك شدن مشكلات و خطاهايتايپي را در زمان كامپايل مي دهد . جاوا بسيار قويتر از C++ تايپ شده استكه بسياري از خصوصيات انعطاف پذير در زمان كامپايل را از C به ارث بردهاست . مخصوصا هنگام اعلان توابع .جاوا به مدل اعلان صريح احتياج دارد ،زيرا كه از مدل اعلان صريح C پشتيباني نميكند . اين مسئله مارا از اينكهكامپايلر ميتواند خطاهاي زمان اعلان را بدست آورد ، مطمئن ميكند . مسئلهاي كه منجر به ايجاد برنامه هاي ايمن تري ميشود . <br><br>يكي از چيزهايي كه باعث شده كه جاوا ساده باشد عدم وجود اشاره گر هاومحاسبات بر روي آنها است . اين ويژگي حتي قدرت جاوا را هم با از ميانبردن يك كلاس سراسري اشاره گر افزايش ميدهد . <br><br>به طور مشابه تمام دسترسي به آرايه ها و رشته ها در زمان اجرا چك مي شوندتا از قطعي بودن آنها اطمينان حاصل شود .با از بين بردن امكان دوبارهنويسي حافظه و داده هاي هرزه ، تعويض نقش اشياء از نوعي به نوع ديگر هم درزمان اجرا كنترل ميشود تا از مجاز بودن آن اطمينان حاصل شود . <br><br>سرانجام زباله جمع كن خودكار جاوا بسياري از عمليات پاكسازي مرتبط بامعماري حافظه را راه اندازي ميكند . چيزي كه از خطاهاي خطر ساز مرتبط باتخصيص و آزاد سازي حافظه جلوگيري ميكند . <br><br><br>ايمن : Secure <br><br><br><br>يكي از دلايل پرطرفدار بودن جاوا اين است كه يك زبان ايمن است . اين ويژگيمخصوصا به خاطر طبيعت توزيع شده ي آن بسيار مهم است .بدون وجود امنيت شماقطعا نميخواهيد كه يك كد را از يك سايت تصادفي اينترنت بارگذاري كنيد و بهآن اجازه اجرا شدن روي كامپيوتر خودتان را هم بدهيد . اين دقيقا همان چيزياست كه مردم هرروز با يك كد جاوا انجام ميدهند . جاوا به صورت ايمن طراحيشده و چندين لايه كنترل امنيت به وجود مي آورد كه شما را در برابر كد هايخطرساز محافظت مي كنند و به كاربر اجازه ميدهد كه برنامه هاي ناشناخته رابا خيال راحت اجرا كند . <br><br>همان طور كه ديديم ، برنامه جاوا نميتواند اشاره گر ها را به حافظه ياآرايه هاي سرريز يا حافظه خواندني خارج از محدوده يك آرايه يا رشته اشاره، اشاره دهد. اين خصوصيت يكي از اصلي ترين وسايل دفاع جاوا در برابر كدهايخطرساز است . دومين راه دفاع در برابر كد هاي خطرساز ، پردازش كدهاي بايتيبه صورت قابل تصديق و تاييد است كه مفسر جاوا به روي هر كدي كه در حال بارگذاري باشد اعمال ميكند . اين مراحل تاييد از اينكه كد به صورت درستيساخته شده اطمينان حاصل ميكنند ، كه براي مثال پشته سرريزي يا زيرريزينداشته باشد ، يا شامل كد هاي بايتي غير مجاز نباشد . <br><br>كدهاي بايتي خراب يا خطرساز ممكن است از ضعف هاي اجرايي در مفسر جاوا سوء‌استفاده كنند . لايه اي كه در اينجا ما را به طور ايمن محافظت ميكند ، مدلجعبه شني (Sand box) است : كدهاي ناشناخته در يك جعبه شني قرار ميگيرندجايي كه ميتوانند به صورت ايمن اجرا شوند ، بدون اينكه هيچ صدمه اي بهبقيه اجزاء يا محيط جاوا بزنند . <br><br>وقتي يك برنامه كاربردي يا ديگر كدهاي ناشناخته در جعبه شني در حال اجرااست ،‌ چند محدوديت در مورد كاري كه ميتواند انجام دهد ، وجود دارد . واضحترين اين محدوديت ها اين است كه هيچ دسترسي به هيچ يك از فايل هاي محليسيستم وجود ندارد . در جعبه شني محدوديت ديگري هم وجود دارد كه به وسيلهكلاس مديريت امنيت اعمال ميشود . اين مدل در ابتدا از اينكه سيستم هايامنيتي را نصب كرده ايد يا نه ، مطمئن ميشود ، چرا كه همه كلاس هاي جاوانياز به عمليات حساسي مانند دسترسي به سيستم فايل را دارند . اگر فراخوانيبه وسيله يك كد ناشناخته به صورت مستقيم يا غير مستقيم انجام شد ،‌ مديرامنيت مورد استثناء‌ را مي فرستد و عمليات صورت نمي گيرد . <br><br>و سرانجام در جاوا 1-1 يك راه حل ممكن ديگر براي مشكلات امنيتي وجود دارد، به وسيله ضميمه كردن يك امضاء ديجيتالي به كد جاوا كه اصل آن كد ميتواندبه صورت پنهاني و نهفته ساخته شود . اگر شما اعتماد خود را به يك شخص يايك سازمان مشخص كرده باشيد ، كدي كه امضاء آن هويت مورد اعتماد روي آنقرار دارد ،‌ ايمن و مطمئن است . حتي زمانيكه در حال بارگذاري شدن در شبكهاست و ممكن است حتي بدون جلوگيري توسط جعبه شني اجرا شود . <br><br><br><br>عملكرد سطح بالا :High Performance <br><br>جاوا يك زبان تفسير شده است ، بنابر اين هرگز به سرعت زبان كامپايل شده ايمثل C نخواهد بود . گفته ميشود كه جاوا 0-1 به اندازه 20 برابر از C كندتر است . جاوا 1-1 تقريبا سرعتي دو برابر جاوا 1-1 دارد . بنابراين ممكناست عاقلانه باشد اينكه بگوييم كد C كامپايل شده 10 برابر سريع تر از كدهاي تفسير شده ي جاوا اجرا ميشود . اما قبل از اينكه به خاطر اين موضوعمايوس شويد ، آگاه باشيد كه اين سرعت بيشتر از آن چيزي است كه براي برنامههاي پرسرعت ، كاربردهاي GUI (Graphical User Interface ) ، برنامه هايبرمبناي شبكه ، جايي كه برنامه كاربردي معمولا آماده براي اجرا شدن است ،انتظار براي كاربر كه يك دستوري اعمال كند و يا انتظار براي دريافت ازشبكه ، لازم است . <br><br>به علاوه قسمت هايي كه به سرعت هاي بالا نياز دارند ، كه كارهايي از قبيلالحاق رشته ها و مقايسه را انجام ميدهند ، با كد محلي جاوا اجرا ميشوند . <br><br>علاوه بر اين كارايي ، بسياري از مفسر هاي جاوا اكنون شامل كامپايلر هايفقط در زمان " just in time " نيز هستند كه ميتواند كدهاي بايتي جاوا رابراي هر نوعCPU در زمان اجرا به كد ماشين ترجمه كند . فرمت كد بايتي جاوابا اين كامپايلر هاي در زمان در مركز كافي و مناسب است و انصافا كدهايخوبي توليد ميكند . در حقيقت Sun ادعا ميكند كه كارايي كد هاي بايتي كه بهكد ماشين تبديل شده اند ، تقريبا به خوبي كارآيي آن در C و C++ است . <br><br>اگر شما خواهان اين هستيد كه قابل حمل بودن كد ها را قرباني بهبود در سرعتآن كنيد ، ميتوانيد بخش قابل توجهي از برنامه خود را در C و C++ بنويسيد واز روش هاي مخصوص جاوا براي مشترك كردن با اين كد محلي جاوا استفاده كنيد. <br><br><br>چند نخ كشي شده :Multitbreaded <br><br>در يك برنامه كاربردي بر مبناي GUI شبكه اي ، مثل مرورگر وب ، تصور اينكهچند چيز بتوانند به طور همزمان اجرا شوند ، آسان است . يك كاربر ميتواندهمزمان با اينكه دارد يك صفحه وب را ميخواند به يك كليپ صوتي گوش دهد وهمزمان در پس زمينه مرورگر يك عكس را بارگذاري كند . <br><br>جاوا يك زبان چندنخ كشي شده است ، كه از چندين رشته اجرايي (گاهي پردازشسبك وزن خوانده ميشود) پشتيباني ميكند و ميتواند چندين كار را انجام دهد .يكي از مزيت هاي چندنخ كشي شده اين است كه عملكرد سطح بالايي برايكاربردهاي گرافيكي براي كاربر فراهم ميكند . <br><br>اگر شما سعي كرده ايد كه با نخ ها در C و C++ كار كنيد ، ميدانيد كه كميمشكل است . جاوا برنامه نويسي با نخ ها را بسيار آسان تر كرده است ، با بهوجود آوردن زبان درون ساخته شده اي كه از نخ ها پشتيباني ميكند . بستهjana.lang يك كلاس بوجود آورده است كه از روش هايي براي شروع و پايان يكنخ ، و مرتب كردن ترتيب گره ها در ميان چيز هاي ديگر ، پشتيباني ميكند . <br><br>حتي دستورات زبان جاوا از نخ ها پشتيباني ميكنند ، كه با استفاده از كلماتكليدي مطابق شده . اين كلمات كليدي علامت گذاري بخش هاي كد يا تمامي روشهايي را كه بايد فقط با يك نخ در يك زمان اجرا شوند را به شدت آسان كردهاست . <br><br>به دليل اينكه جاوا استفاده از نخ ها را بسيار ساده ميكند ، كلاس جاوا درشماري از جاها از اين نخ ها استفاده ميكند . براي مثال هر برنامه كاربرديكه انيميشن اجرا ميكند ، از نخ ها استفاده كرده است . <br><br>به طور مشابه جاوا از برنامه هاي نا همگام ، ورودي ها و خروجي هاي بلاكنشده با اخطاري به وسيله سيگنال ها يا وقفه ها پشتيباني نميكند ، در اينصورت شما بايد يك نخ بسازيد كه روي هر كانال ورودي خروجي كه با آن كارميكنيد بلاك شده باشد .]]>
   </description>
   <pubDate>Wed, 14 Jul 2010 20:43:44 +0000</pubDate>
   <guid isPermaLink="true">http://www.parsiguard.com/forum_posts.asp?TID=30&amp;PID=30#30</guid>
  </item> 
  <item>
   <title>&#1586;&#1576;&#1575;&#1606; Delphi , Delphi.Net : محدودكردن تغییر اندازه فرم در دلفی</title>
   <link>http://www.parsiguard.com/forum_posts.asp?TID=29&amp;PID=29#29</link>
   <description>
    <![CDATA[<strong>نويسنده:</strong> <a href="http://www.parsiguard.com/member_profile.asp?PF=1" rel="nofollow">vvel3</a><br /><strong>موضوع:</strong> محدودكردن تغییر اندازه فرم در دلفی<br /><strong>ارسال شده :</strong> 14 تیر 2010  در ساعت  9:10عصر<br /><br /><br><div id="post_message_60074"><b>محدودكردن تغییر اندازه فرم در دلفی </b><br>گاهی اوقات نیاز است فرم ما از نظر اندازه پیرو یک الگو باشد و کاربرنتواند خارج از محدوده این فرم را تغییر اندازه دهد، راهی که پیشنهاد میشود، استفاده از Windows Messages، تابع WM_GetMinMaxInfo میباشد. <br><br><br><br><div style="margin: 5px 20px 20px;">	<div ="smallfont" style="margin-bottom: 2px;">کد:</div>	<pre ="alt2" dir="ltr" style="border: 1px inset ; margin: 0px; padding: 6px; overflow: auto; width: 640px; height: 498px; text-align: left;"><div align="left"> unit MinMax; <br><br>interface  <br><br>uses <br>SysUtils, WinTypes, WinProcs, Messages, Classes, Graphics,  Controls, <br>Forms, Dialogs; <br><br>type <br>TForm1 = class(TForm) <br>private  <br>{ Private declarations } <br>procedure WMGetMinMaxInfo(var MSG: Tmessage);  message WM_GetMinMaxInfo; <br>public <br>{ Public declarations } <br>end;  <br><br>var <br>Form1: TForm1; <br><br>implementation <br><br>{$R *.DFM}  <br><br>procedure TForm1.WMGetMinMaxInfo(var MSG: Tmessage); <br>Begin  <br>inherited; <br>with PMinMaxInfo(MSG.lparam)^ do <br>begin <br>with  ptMinTrackSize do <br>begin <br>X := 300; <br>Y := 150; <br>end; <br>with  ptMaxTrackSize do <br>begin <br>X := 350; <br>Y := 250; <br>end; <br>end;  <br>end; <br><br>end.</div></pre></div></div>		<!-- / message -->								<!-- sig -->							<br>]]>
   </description>
   <pubDate>Wed, 14 Jul 2010 20:40:24 +0000</pubDate>
   <guid isPermaLink="true">http://www.parsiguard.com/forum_posts.asp?TID=29&amp;PID=29#29</guid>
  </item> 
  <item>
   <title>&#1586;&#1576;&#1575;&#1606; Delphi , Delphi.Net : استفاده از dllها در دلفی</title>
   <link>http://www.parsiguard.com/forum_posts.asp?TID=28&amp;PID=28#28</link>
   <description>
    <![CDATA[<strong>نويسنده:</strong> <a href="http://www.parsiguard.com/member_profile.asp?PF=1" rel="nofollow">vvel3</a><br /><strong>موضوع:</strong> استفاده از dllها در دلفی<br /><strong>ارسال شده :</strong> 14 تیر 2010  در ساعت  9:9عصر<br /><br /><div id="post_message_60073">ایجاد یک DLL <br>با استفاده از منو فایل گزینه New Items را انتخاب کنید و آیتم DLL Wizardرا انتخاب نمایید. حال به فایل ایجاد شده، یک فرم با استفاده از روش بالااضافه نمایید. دقت نمایید که Application را بجای فرم انتخاب ننمایید. حالاگر فرض کنیم که نام فرم شما Demo باشد و بانام UDemo.pas آنرا ذخیره کردهباشید. باید در فایل DLL بصورت زیر کد نویسی نمایید: <br><br><br><div style="margin: 5px 20px 20px;">	<div ="smallfont" style="margin-bottom: 2px;">کد:</div>	<pre ="alt2" dir="ltr" style="border: 1px inset ; margin: 0px; padding: 6px; overflow: auto; width: 640px; height: 498px; text-align: left;"><div align="left"> <br>library demodll; <br><br>{ Important note about  DLL memory management: ShareMem must be the <br>first unit in your library's  USES clause AND your project's (select <br>Project-View Source) USES clause if  your DLL exports any procedures or <br>functions that pass strings as parameters  or function results. This <br>applies to all strings passed to and from your  DLL--even those that <br>are nested in records and classes. ShareMem is the  interface unit to <br>the BORLNDMM.DLL shared memory manager, which must be  deployed along <br>with your DLL. To avoid using BORLNDMM.DLL, pass string  information <br>using PChar or ShortString parameters. } <br><br>uses  <br>SysUtils, <br>Classes, <br>UDemo in 'UDemo.pas' {Demo}; <br><br>{$R *.res}  <br>procedure ShowdemoForm;stdcall; <br>begin <br>Demo :=Tdemo.Create(nil);  <br>demo.Show; <br>end; <br><br>function ShowdemoFormModal:integer;stdcall;  <br>begin <br>demo :=Tdemo.Create(nil); <br>Result := demo.ShowModal; <br>end;  <br><br>Exports <br>ShowDemoForm, <br>ShowdemoFormModal; <br>begin <br>end.  <br><br></div></pre></div>دقت کنید که نام DLL فوق DemoDll می باشد و با نام DemoDll.dpr ذخیره  گردیده است. <br><br>حال بر روی فرم موجود تمام دکمه‌ها و آبجکت‌های مورد نظرتان را اضافه و کدنویسی کنید (اختیاری). در پایان در منو Project گذینه Build DemoDll راانتخاب کرده و اجرا نمایید. فایلی با نام DemoDll.dll ایجاد می گردد کهبرای استفاده آماده است. <br><br><br>استفاده از یک DLL بصورت دینامیکی <br>برای استفاده  از یک DLL ‌بصورت دینامیکی، ابتدا نام توابعی را که در فایل DLL شما موجود است  بصورت زیر تعریف نمایید: <br><br><br><div style="margin: 5px 20px 20px;">	<div ="smallfont" style="margin-bottom: 2px;">کد:</div>	<pre ="alt2" dir="ltr" style="border: 1px inset ; margin: 0px; padding: 6px; overflow: auto; width: 640px; height: 290px; text-align: left;"><div align="left"> <br><br>unit UMain; <br><br>interface  <br><br>uses <br>Windows, Messages, SysUtils, Variants, Classes, Graphics,  Controls, Forms, <br>Dialogs, StdCtrls, ExtCtrls; <br><br>type  <br>TShowdemoFormModal= Function :integer; <br>. <br>. <br>. <br><br></div></pre></div>دقت کنید که نام برنامه انتخابی پیش فرض Main و با نام UMain.pasذخیره گشته است. حال برای لود کردن DLL یادشده، یک دکمه بر روی فرمقرارداده آنرا بصورت زیر کد نویسی کنید: <br><br><br><div style="margin: 5px 20px 20px;">	<div ="smallfont" style="margin-bottom: 2px;">کد:</div>	<pre ="alt2" dir="ltr" style="border: 1px inset ; margin: 0px; padding: 6px; overflow: auto; width: 640px; height: 434px; text-align: left;"><div align="left"> <br><br>var <br>hndDLLHandle:THandle;  <br>ShowdemoFormModal:TShowdemoFormModal; <br><br>procedure  TFMain.Button1Click(Sender: TObject); <br>begin <br>try  <br>hndDLLHandle:=LoadLibrary('Demodll.dll'); <br><br>if hndDLLHandle &lt;&gt; 0  then begin  <br>@ShowdemoFormModal:=getProcAddress(hndDLLHandle,'ShowdemoFormModal');  <br><br>if addr(ShowdemoFormModal) &lt;&gt; nil then begin  <br>ShowdemoFormModal; <br>end <br>else <br>showmessage ('function not exists  ...'); <br>end <br>else <br>showMessage('Dll Not Found!'); <br>finally  <br>freelibrary(hndDLLHandle); <br>end; <br>end;</div></pre></div></div>		<!-- / message -->								<!-- sig -->							]]>
   </description>
   <pubDate>Wed, 14 Jul 2010 20:39:47 +0000</pubDate>
   <guid isPermaLink="true">http://www.parsiguard.com/forum_posts.asp?TID=28&amp;PID=28#28</guid>
  </item> 
  <item>
   <title>&#1586;&#1576;&#1575;&#1606; Delphi , Delphi.Net : نصب ProgressBar روی StatusBar در دلفی</title>
   <link>http://www.parsiguard.com/forum_posts.asp?TID=27&amp;PID=27#27</link>
   <description>
    <![CDATA[<strong>نويسنده:</strong> <a href="http://www.parsiguard.com/member_profile.asp?PF=1" rel="nofollow">vvel3</a><br /><strong>موضوع:</strong> نصب ProgressBar روی StatusBar در دلفی<br /><strong>ارسال شده :</strong> 14 تیر 2010  در ساعت  9:13عصر<br /><br /><div id="post_message_60071"><b>نصب ProgressBar روی StatusBar در دلفی </b><br>StatusBar می باشد. انجام این کار بسیار ساده است. برای این کار کافی استبر روی فرم خود یک StatusBar اضافه نمایید حالا در قسمت تعاریف متغیر هایعمومی کد زیر را بنویسید: <br>ProgressBar1: TprogressBar; <br><br>در ادامه دستورات زیر را در خاصیت  OnCreate فرم خود بنویسید: <br><br><br><br><div style="margin: 5px 20px 20px;">	<div ="smallfont" style="margin-bottom: 2px;">کد:</div>	<pre ="alt2" dir="ltr" style="border: 1px inset ; margin: 0px; padding: 6px; overflow: auto; width: 640px; height: 386px; text-align: left;"><div align="left"> var <br>ProgressBarStyle: LongInt;  <br>begin <br>{create a run progress bar in the status bar} <br>ProgressBar1 :=  TProgressBar.Create(StatusBar1); <br>ProgressBar1.Parent := StatusBar1;  <br>{remove progress bar border} <br>ProgressBarStyle :=  GetWindowLong(ProgressBar1.Handle, GWL_EXSTYLE); <br>ProgressBarStyle :=  ProgressBarStyle - WS_EX_STATICEDGE; <br>SetWindowLong(ProgressBar1.Handle,  GWL_EXSTYLE, ProgressBarStyle); <br>{set progress bar position and size - put in  Panel&#091;2&#093;} <br>ProgressBar1.Left := StatusBar1.Panels.Items&#091;0&#093;.Width +  <br>StatusBar1.Panels.Items&#091;1&#093;.Width + 4; <br>ProgressBar1.Top := 4;  <br>ProgressBar1.Height := StatusBar1.Height - 6; <br>ProgressBar1.Width :=  StatusBar1.Panels.Items&#091;2&#093;.Width - 6; <br>{set range and initial state}  <br>ProgressBar1.Min := 0; <br>ProgressBar1.Max := 100; <br>ProgressBar1.Step :=  1; <br>ProgressBar1.Position := 0; <br>end; <br></div></pre></div>حالا برای آنکه پس از  خارج شدن از فرم حافظه اشغال شده آزاد گردد، در قسمت OnDestroy در Event فرمتان  دستور زیر را اضافه نمایید: <br><br><br><br><div style="margin: 5px 20px 20px;">	<div ="smallfont" style="margin-bottom: 2px;">کد:</div>	<pre ="alt2" dir="ltr" style="border: 1px inset ; margin: 0px; padding: 6px; overflow: auto; width: 640px; height: 34px; text-align: left;"><div align="left"> ProgressBar1.free;</div></pre></div></div>		<!-- / message -->								<!-- sig -->							]]>
   </description>
   <pubDate>Wed, 14 Jul 2010 20:43:36 +0000</pubDate>
   <guid isPermaLink="true">http://www.parsiguard.com/forum_posts.asp?TID=27&amp;PID=27#27</guid>
  </item> 
  <item>
   <title>&#1586;&#1576;&#1575;&#1606; Delphi , Delphi.Net : نمایش میزان كپی شدن فایل با ProgressBar در دلفی</title>
   <link>http://www.parsiguard.com/forum_posts.asp?TID=26&amp;PID=26#26</link>
   <description>
    <![CDATA[<strong>نويسنده:</strong> <a href="http://www.parsiguard.com/member_profile.asp?PF=1" rel="nofollow">vvel3</a><br /><strong>موضوع:</strong> نمایش میزان كپی شدن فایل با ProgressBar در دلفی<br /><strong>ارسال شده :</strong> 14 تیر 2010  در ساعت  9:12عصر<br /><br /><br><div id="post_message_60070"><div align="right">نمایش میزان كپی شدن فایل با ProgressBar در دلفی <br><br>چطور  میتوان زمان کپی شدن فایل را با استفاده از ProgressBar نمایش داد؟ <br>برای انجام  این کار ابتدا بر روی یک فرم یک ProgressBar اضافه کنید سپس تابع زیر را تایپ کنید:  <br><br><div style="margin: 5px 20px 20px;">	<div ="smallfont" style="margin-bottom: 2px;">کد:</div>	<pre ="alt2" dir="ltr" style="border: 1px inset ; margin: 0px; padding: 6px; overflow: auto; width: 640px; height: 498px; text-align: left;"><div align="left"> <br><br>procedure TForm1.CopyFileWithProgressBar1(Source, Destination:  string); <br>var <br>FromF, ToF: file of byte; <br>Buffer: array&#091;0..4096&#093; of  char; <br>NumRead: integer; <br>FileLength: longint; <br>begin  <br>AssignFile(FromF, Source); <br>reset(FromF); <br>AssignFile(ToF,  Destination); <br>rewrite(ToF); <br>FileLength := FileSize(FromF); <br>with  Progressbar1 do <br>begin <br>Min := 0; <br>Max := FileLength; <br>while  FileLength &gt; 0 do <br>begin <br>BlockRead(FromF, Buffer&#091;0&#093;, SizeOf(Buffer),  NumRead); <br>FileLength := FileLength - NumRead; <br>BlockWrite(ToF, Buffer&#091;0&#093;,  NumRead); <br>Position := Position + NumRead; <br>end; <br>CloseFile(FromF);  <br>CloseFile(ToF); <br>end; <br>end; <br></div></pre></div>در این تابع شما در واقع فایل  مبدا را خوانده و در مقصد مینویسید. حالا یک دکمه اضافه کرده کد زیر رو اضافه  نمایید: <br><br><br><br><div style="margin: 5px 20px 20px;">	<div ="smallfont" style="margin-bottom: 2px;">کد:</div>	<pre ="alt2" dir="ltr" style="border: 1px inset ; margin: 0px; padding: 6px; overflow: auto; width: 640px; height: 114px; text-align: left;"><div align="left"> procedure TForm1.Button1Click(Sender: TObject);  <br>begin <br>CopyFileWithProgressBar1('c:\Welcome.exe', 'c:\temp\Welcome.exe');  <br>end; <br><br></div></pre></div>چطور می توان زمان کپی شدن فایل را محاسبه و نمایش داد؟  <br>برای این کار نیز میتوانید از تابع زیر استفاده کنید:  <br><br><br><div style="margin: 5px 20px 20px;">	<div ="smallfont" style="margin-bottom: 2px;">کد:</div>	<pre ="alt2" dir="ltr" style="border: 1px inset ; margin: 0px; padding: 6px; overflow: auto; width: 640px; height: 498px; text-align: left;"><div align="left"> <br>procedure TForm1.CopyFileWithProgressBar1(Source, Destination:  string); <br>var <br>FromF, ToF: file of byte; <br>Buffer: array&#091;0..4096&#093; of  char; <br>NumRead: integer; <br>FileLength: longint; <br>t1, t2: DWORD;  <br>maxi: integer; <br>begin <br>AssignFile(FromF, Source); <br>reset(FromF);  <br>AssignFile(ToF, Destination); <br>rewrite(ToF); <br>FileLength :=  FileSize(FromF); <br>with Progressbar1 do <br>begin <br>Min := 0; <br>Max :=  FileLength; <br>t1 := TimeGetTime; <br>maxi := Max div 4096; <br>while  FileLength &gt; 0 do <br>begin <br>BlockRead(FromF, Buffer&#091;0&#093;, SizeOf(Buffer),  NumRead); <br>FileLength := FileLength - NumRead; <br>BlockWrite(ToF, Buffer&#091;0&#093;,  NumRead); <br>t2 := TimeGetTime; <br>Min := Min + 1; <br>// Show the time in  Label1 <br>label1.Caption := FormatFloat('0.00', ((t2 - t1) / min * maxi - t2 +  t1) / 100); <br>Application.ProcessMessages; <br>Position := Position + NumRead;  <br>end; <br>CloseFile(FromF); <br>CloseFile(ToF); <br>end; <br>end;  <br></div></pre></div>در این تابغ ابتدا زمان اولیه در متغیر t1 ذخیره شده و سپس پس ازکپی شدن هر قسمت از فایل، زمان در متغیر t2 ذخیره میشود و توسط فرمول زیرمقدار زمان باقی مانده تا کپی کامل فایل بدست می آید. <br><br><br><br><div style="margin: 5px 20px 20px;">	<div ="smallfont" style="margin-bottom: 2px;">کد:</div>	<pre ="alt2" dir="ltr" style="border: 1px inset ; margin: 0px; padding: 6px; overflow: auto; width: 640px; height: 34px; text-align: left;"><div align="left"> ((t2 - t1) / min * maxi  - t2 + t1) / 100</div></pre></div></div></div>		<!-- / message -->								<!-- sig -->							<br>]]>
   </description>
   <pubDate>Wed, 14 Jul 2010 20:42:58 +0000</pubDate>
   <guid isPermaLink="true">http://www.parsiguard.com/forum_posts.asp?TID=26&amp;PID=26#26</guid>
  </item> 
  <item>
   <title>&#1586;&#1576;&#1575;&#1606; Delphi , Delphi.Net : تغییر Hint برای هر ستون از DBGrid در دلفی</title>
   <link>http://www.parsiguard.com/forum_posts.asp?TID=25&amp;PID=25#25</link>
   <description>
    <![CDATA[<strong>نويسنده:</strong> <a href="http://www.parsiguard.com/member_profile.asp?PF=1" rel="nofollow">vvel3</a><br /><strong>موضوع:</strong> تغییر Hint برای هر ستون از DBGrid در دلفی<br /><strong>ارسال شده :</strong> 14 تیر 2010  در ساعت  9:12عصر<br /><br /><b>تغییر Hint برای هر ستون از DBGrid در دلفی </b><br>ابتدا باید یک عنصر جدید مبتنی بر  TDBGrid ایجاد کنید و رویداد OnMouseMove را فراخوانی کنید: <br><br><br><br><div style="margin: 5px 20px 20px;">	<div ="smallfont" style="margin-bottom: 2px;">کد:</div>	<pre ="alt2" dir="ltr" style="border: 1px inset ; margin: 0px; padding: 6px; overflow: auto; width: 640px; height: 114px; text-align: left;"><div align="left"> type  <br>TMyDBGrid = class(TDBGrid) <br>published <br>property OnMouseMove; <br>end;  <br></div></pre></div>اگرچه شما در رویداد OnMouseMove مختصات X و Y را بدست خواهید آورد،اما شما باید ستون مورد نظر را پیدا کنید. برای ادامه کار لازم است که سطرزیر را در قسمت protected قرار دهید: <br><br><br><br><br><div style="margin: 5px 20px 20px;">	<div ="smallfont" style="margin-bottom: 2px;">کد:</div>	<pre ="alt2" dir="ltr" style="border: 1px inset ; margin: 0px; padding: 6px; overflow: auto; width: 640px; height: 50px; text-align: left;"><div align="left"> procedure WMMouseMove(var  Message : TWMMouse); message WM_MOUSEMOVE; <br></div></pre></div>همچنین متغیر های زیر را  در قسمت public اضافه نمایید: <br><br><br><br><br><div style="margin: 5px 20px 20px;">	<div ="smallfont" style="margin-bottom: 2px;">کد:</div>	<pre ="alt2" dir="ltr" style="border: 1px inset ; margin: 0px; padding: 6px; overflow: auto; width: 640px; height: 66px; text-align: left;"><div align="left"> MouseRow : integer;  <br>MouseCol : integer; <br></div></pre></div>بنابراین متد WMMouseMove بصورت ریر خواهد  بود: <br><br><br><div style="margin: 5px 20px 20px;">	<div ="smallfont" style="margin-bottom: 2px;">کد:</div>	<pre ="alt2" dir="ltr" style="border: 1px inset ; margin: 0px; padding: 6px; overflow: auto; width: 640px; height: 210px; text-align: left;"><div align="left"> <br><br>procedure TMyDBGrid.WMMouseMove(var Message :  TWMMouse); <br>var <br>t : TGridCoord; <br>begin <br>t :=  MouseCoord(Message.XPos, Message.YPos); <br>MouseCol := t.x; <br>MouseRow :=  t.y; <br>inherited; <br>end; <br></div></pre></div>ما ابتدا فیلدهای XPost و YPos را از  ساختار WMMouseMove تنظیم میکنیم: <br><br><br><br><div style="margin: 5px 20px 20px;">	<div ="smallfont" style="margin-bottom: 2px;">کد:</div>	<pre ="alt2" dir="ltr" style="border: 1px inset ; margin: 0px; padding: 6px; overflow: auto; width: 640px; height: 258px; text-align: left;"><div align="left"> <br>procedure  TForm2.MyDBGrid1MouseMove(Sender: TObject; Shift: TShiftState; X, Y:  <br>Integer); <br>begin <br>if (((dgIndicator in MyDBGrid1.Options) and  (MyDBGrid1.MouseCol &gt; 0)) or <br>((not (dgIndicator in MyDBGrid1.Options))  and (MyDBGrid1.MouseCol &lt;&gt; -1))) <br>and (MyDBGrid1.MouseCol &lt;&gt;  OldMouseCol) then begin <br>OldMouseCol := MyDBGrid1.MouseCol; <br>if  dgIndicator in MyDBGrid1.Options then <br>MYDBGrid1.Hint :=  MyDBGrid1.Columns&#091;MyDBGrid1.MouseCol - 1&#093;.FieldName <br>else <br>MYDBGrid1.Hint  := MyDBGrid1.Columns&#091;MyDBGrid1.MouseCol&#093;.FieldName; <br>end; <br>end;  <br></div></pre></div>حالا مجددا" تعریف زیر را در قسمت public قرار دهید:  <br><br><br><br><div style="margin: 5px 20px 20px;">	<div ="smallfont" style="margin-bottom: 2px;">کد:</div>	<pre ="alt2" dir="ltr" style="border: 1px inset ; margin: 0px; padding: 6px; overflow: auto; width: 640px; height: 66px; text-align: left;"><div align="left"> <br>HintMouseMessage(Control : TControl; var Message : TMessage)  <br></div></pre></div>در قسمت OnMouseMove از TDBGrid نیز فرامین زیر را اضافه نمایید:  <br><br><br><br><br><div align="left"><div style="margin: 5px 20px 20px;">	<div ="smallfont" style="margin-bottom: 2px;">کد:</div>	<pre ="alt2" dir="ltr" style="border: 1px inset ; margin: 0px; padding: 6px; overflow: auto; width: 640px; height: 162px; text-align: left;"> var <br>r : TMessage; <br>begin  <br><br>Application.HintMouseMessage(self, r); <br>TWMMouse(r).XPos := X;  <br>TWMMouse(r).YPos := Y; <br>Application.HintMouseMessage(MyDBGrid1, r);  <br>end;</pre></div></div> <br><br>همه کارها انجام شد. حالا شما میتوانید نتیجه را مشاهده کنید]]>
   </description>
   <pubDate>Wed, 14 Jul 2010 20:42:01 +0000</pubDate>
   <guid isPermaLink="true">http://www.parsiguard.com/forum_posts.asp?TID=25&amp;PID=25#25</guid>
  </item> 
  <item>
   <title>&#1586;&#1576;&#1575;&#1606; Delphi , Delphi.Net : آرایه‌ها در دلفی</title>
   <link>http://www.parsiguard.com/forum_posts.asp?TID=24&amp;PID=24#24</link>
   <description>
    <![CDATA[<strong>نويسنده:</strong> <a href="http://www.parsiguard.com/member_profile.asp?PF=1" rel="nofollow">vvel3</a><br /><strong>موضوع:</strong> آرایه‌ها در دلفی<br /><strong>ارسال شده :</strong> 14 تیر 2010  در ساعت  9:11عصر<br /><br /><div id="post_message_60068"><b>آرایه‌ها در دلفی </b><br>دلفی به ما امکان می دهد آرایه‌هایی از  هر نوع متغییری را ایجاد کنیم. برای تعریف آرایه به صورت زیر عمل میکنیم: <br><div style="margin: 5px 20px 20px;">	<div ="smallfont" style="margin-bottom: 2px;">کد:</div>	<pre ="alt2" dir="ltr" style="border: 1px inset ; margin: 0px; padding: 6px; overflow: auto; width: 640px; height: 66px; text-align: left;"><div align="left">var  <br>array&#091;indexType1, ..., indexTypen&#093; of baseType; <br></div></pre></div>در این تعریف برای نامگذاری آرایه، از قانون نامگذاری متغییرهااستفاده میکنیم و مقدار اولیه را نیز درون یک جفت کروشه قرار می دهیم. <br><br>نکته: شما می توانید به جای استفاده از  کروشه &#091;&#093; از ترکیب پرانتز نقطه استفاده کنید: <br><div style="margin: 5px 20px 20px;">	<div ="smallfont" style="margin-bottom: 2px;">کد:</div>	<pre ="alt2" dir="ltr" style="border: 1px inset ; margin: 0px; padding: 6px; overflow: auto; width: 640px; height: 50px; text-align: left;"><div align="left"> d(.i.):= 3 + i; // Equivalent  d:= 3 + i; <br></div></pre></div>نکته: وقتی که شما یک آرایه را تعریف می کنید احتیاجی ندارید که  به آن مقدار کمترین یا بیشترین بدهید: <br><div style="margin: 5px 20px 20px;">	<div ="smallfont" style="margin-bottom: 2px;">کد:</div>	<pre ="alt2" dir="ltr" style="border: 1px inset ; margin: 0px; padding: 6px; overflow: auto; width: 640px; height: 130px; text-align: left;"><div align="left"> var <br>A : array &#091;Boolean&#093; of integer;  <br>begin <br>A&#091;True&#093; := 50; <br>A&#091;False&#093; := 100; <br>end; <br></div></pre></div>نکته: توابع  Low و High کران‌های پایین وبالای یک متغییر آرایه‌ای یا نوعی یا ترتیبی را بر  میگردانند: <br><div style="margin: 5px 20px 20px;">	<div ="smallfont" style="margin-bottom: 2px;">کد:</div>	<pre ="alt2" dir="ltr" style="border: 1px inset ; margin: 0px; padding: 6px; overflow: auto; width: 640px; height: 50px; text-align: left;"><div align="left">for I := 0 to High(X) do S := S + X; <br></div></pre></div>آرایه‌های ثابت:  <br>آرایه های ثابت می توانند توسط ساختار ثابت نوع دلفی تعریف شود. نوع ثابتکه همیشه با عبارت Const تعریف می شود، نه تنها مانع تغییر مقدار پارامترمی شود، بلکه کدهای بهینه بیشتری برای رشته‌ها و رکوردهای رد شده به توابعتولید می کند. ما هنگامی از این نوع استفاده می کنیم که نخواهیم مقدار ردشده به یک تابع تغییر کند. <br><div style="margin: 5px 20px 20px;">	<div ="smallfont" style="margin-bottom: 2px;">کد:</div>	<pre ="alt2" dir="ltr" style="border: 1px inset ; margin: 0px; padding: 6px; overflow: auto; width: 640px; height: 258px; text-align: left;"><div align="left"> type <br>TDay = (Sunday, Monday, Tuesday, Wednesday, Thursday, Friday,  Saturday); <br><br>const <br>DayNames : array &#091;TDay&#093; of String&#091;9&#093; = ('Sunday',  'Monday', 'Tuesday', <br>'Wednesday', 'Thursday', <br>'Friday', 'Saturday');  <br>var <br>Today : TDay; <br><br>begin <br>Today := TDay(DayOfWeek(Date) - 1);  <br>ShowMessage('Today is ' + DayNames&#091;Today&#093; + '!'); <br>end;  <br></div></pre></div>آرایه‌های دینامیکی: <br>آرایه‌های دینامیکی، آرایه‌های تحلیلی پویایی هستند که ابعاد آنها موقعکامپایل شدن شناخته شده نیست. برای اعلان آنها کافی است یک آرایه بدون بعدتعریف کنید: <br><div style="margin: 5px 20px 20px;">	<div ="smallfont" style="margin-bottom: 2px;">کد:</div>	<pre ="alt2" dir="ltr" style="border: 1px inset ; margin: 0px; padding: 6px; overflow: auto; width: 640px; height: 50px; text-align: left;"><div align="left"> var MyFlexibleArray: array of Real;  <br></div></pre></div>قبل از به کار گیری آرایه‌های دینامیکی، ابتدا باید از رویه SetLength برای  تخصیص حافظه آرایه استفاده کرد: <br><div style="margin: 5px 20px 20px;">	<div ="smallfont" style="margin-bottom: 2px;">کد:</div>	<pre ="alt2" dir="ltr" style="border: 1px inset ; margin: 0px; padding: 6px; overflow: auto; width: 640px; height: 50px; text-align: left;"><div align="left"> SetLength (MyFlexibleArray, 2; (  <br></div></pre></div>نکته: آرایه‌های دینامیکی همیشه مبتنی بر صفر می باشند. <br><br>نکته: شما  می‌توانید آرایه‌های دینامیکی را قبل از رسیدن به ترک قلمرو از حافظه خارج کنید:  <br><div style="margin: 5px 20px 20px;">	<div ="smallfont" style="margin-bottom: 2px;">کد:</div>	<pre ="alt2" dir="ltr" style="border: 1px inset ; margin: 0px; padding: 6px; overflow: auto; width: 640px; height: 50px; text-align: left;"><div align="left"> MyFlexibleArray := nil; <br></div></pre></div>نکته: مقدار حافظه‌ای که در اختیار آرایه قرار میگیرد، به طول آرایهونوع عناصر آن بستگی دارد. به عنوان مثال اگر آرایه‌ای از نوع صحیح به طول10 داشته باشیم 4*10 بایت حافظه به آن اختصاص می‌یابد. <br><br><br>فشرده‌سازی آرایه‌ها: <br>در دلفی شما هنگامی که ساختار خود را تعیین کردید می‌توانید با استفاده ازکلمه کلیدی packed اطلاعات ذخیره شده خود را متراکم کنید: <br><div style="margin: 5px 20px 20px;">	<div ="smallfont" style="margin-bottom: 2px;">کد:</div>	<pre ="alt2" dir="ltr" style="border: 1px inset ; margin: 0px; padding: 6px; overflow: auto; width: 640px; height: 50px; text-align: left;"><div align="left"> type TNumbers = packed array&#091;1..100&#093; of Real; <br></div></pre></div>نکته: استفاده از  packed سرعت دسترسی به اطلاعات را کند میکند. در مورد آرایه‌ای از کاراکترها این  مورد سازگارتر می‌باشد. <br><br><br>آرایه‌های چند بعدی دینامیکی: <br>برای تعریف  آرایه‌های چند بعدی دینامیکی، تنها کافی است ...array of را در ساختار خود تکرار  کنید. به طور مثال: <br><div style="margin: 5px 20px 20px;">	<div ="smallfont" style="margin-bottom: 2px;">کد:</div>	<pre ="alt2" dir="ltr" style="border: 1px inset ; margin: 0px; padding: 6px; overflow: auto; width: 640px; height: 114px; text-align: left;"><div align="left">type <br>TMessageGrid = array of array of string;  <br><br>var <br>Msgs: TMessageGrid; <br></div></pre></div>این تعریف یک آرایه دو بعدی از  رشته‌ها می باشد. سپس باید به آرایه خود فضا نسبت داد: <br><div style="margin: 5px 20px 20px;">	<div ="smallfont" style="margin-bottom: 2px;">کد:</div>	<pre ="alt2" dir="ltr" style="border: 1px inset ; margin: 0px; padding: 6px; overflow: auto; width: 640px; height: 50px; text-align: left;"><div align="left"> SetLength(Msgs, I, J);  <br></div></pre></div>شما می‌توانید آرایه‌های چند بعدی دینامیکی خود را به صورت غیرمستطیلی (Not Rectangular) ایجاد کنید. ابتدا رویه SetLength را صدا زده وپارامتر بعد اول را بدهید: <br><div style="margin: 5px 20px 20px;">	<div ="smallfont" style="margin-bottom: 2px;">کد:</div>	<pre ="alt2" dir="ltr" style="border: 1px inset ; margin: 0px; padding: 6px; overflow: auto; width: 640px; height: 98px; text-align: left;"><div align="left">var <br>Ints: array of array of Integer; <br><br>SetLength(Ints,  10); <br></div></pre></div><div align="left"> ما 10 سطر به آرایه خود اختصاص دادیم. از این پس، شما می توانید  ستونهای خود را در هر زمان (با اندازه‌های مختلف) تخصیص دهید:  <br>SetLength(Ints&#091;2&#093;, 5);</div></div>		<!-- / message -->								<!-- sig -->&nbsp;]]>
   </description>
   <pubDate>Wed, 14 Jul 2010 20:41:26 +0000</pubDate>
   <guid isPermaLink="true">http://www.parsiguard.com/forum_posts.asp?TID=24&amp;PID=24#24</guid>
  </item> 
  <item>
   <title>&#1586;&#1576;&#1575;&#1606; Delphi , Delphi.Net : نكات مفید كار در محیط دلفی</title>
   <link>http://www.parsiguard.com/forum_posts.asp?TID=23&amp;PID=23#23</link>
   <description>
    <![CDATA[<strong>نويسنده:</strong> <a href="http://www.parsiguard.com/member_profile.asp?PF=1" rel="nofollow">vvel3</a><br /><strong>موضوع:</strong> نكات مفید كار در محیط دلفی<br /><strong>ارسال شده :</strong> 14 تیر 2010  در ساعت  9:10عصر<br /><br /><br><br>نكات مفید كار در محیط دلفی <br>محیط دلفی برای برنامه نویسی یکی از بهترین محیطهای برنامه نویسی استگذشته از کارکرد داخلی و کمپایلر آن که بسیار قوی و سریع است، محیط آنیعنی IDE آنهم قدرت بسیار زیادی دارد که باعث شده یکی از بهترین ادیتورهاباشد. در این مقاله من سعی بر این داشته ام تا با ارائه یک سری از نکات وکلیدهای میانبر که می توانند برای کار در دلفی بسیار مفید و کارا باشند،کمک کنم تا شما بتوانید با قدرت بیشتر به برنامه نویسی و کار در این محیطقدرتمند ادامه دهید. <br><br>در قسمت اول مقاله که در حال حاضر در مقابل شماست من یک سری از کلیدهایمیانبر و ترکیبی مورد استفاده در IDE دلفی را بصورت لیست وار و همراه یکتوضیح کوچک آورده ام. دوستان عزیز برنامه نویس ممکنه که شما مدتها با دلفیمشغول برنامه نویسی بوده باشید اما من یقین دارم که در این لیست نکات وروشهای جدیدی را خواهید آموخت. <br><br>جستجو در متن بصورت مستقیم: <br>برای اینکار کلیدهای Ctrl+E را بفشارید و بدنبال آن شروع به تایپ کلمهمورد نظر کنید نتیجه آن را خود ببینید. برای اینکه به کلمه بعدی برویدکافیست کلید F3 را بزنید. <br><br>ایجاد فرورفتگی در کد: <br>بعضی اوقات - که خیلی هم پیش می‌آید - لازم است که یک مقداری از متن رابصورت بلوک شده به جلو و یا عقب ببریم. منظور دندانه دار کردن متن است کهبه خوانایی برنامه کمک می کند. برای اینکار می تونید از کلید Ctrl+Shift+I برای جلو بردن و Ctrl+Shift+U برای عقب برگرداندن متن بلوک شدهاستفاده کنید. <br><br>پرش به قسمت تعریف یک شی (Object): <br>ببنید شی مورد نظرتون (از قبیل VCL, Procedure, Function,...) در کجا وچطور تعریف شده می توانید کلید Crtl رو پایین نگه داشته و روی شی مورد نظرClick کنید. <br><br>برای تغییر حالت  کاراکترها: <br>شما می توانید یک قسمت از متن (که ممکن است با حروف بزرگ و یا کوچک تایپشده باشد) را انتخاب کنید و با زدن کلیدهای Ctrl+O+U به ترتیب تمامی حروفکوچک آن قسمت از متن را به حروف بزرگ و تمامی حروف بزرگ آنرا به حروف کوچکتبدیل کنید. برای تعییر حالت یک کلمه نیز میتوانید روی کلمه مورد نظر رفتهو کلیدهای Ctrl+K+F برای بزرگ کردن و کلیدهای Ctrl+K+E را برای کوچک کردنحروف آن کلمه بکار برد. <br><br>درست کردن ماکرو متنی: <br>این امکان بسیار مفید است و می تواند بسیاری از کارهای نوشتاری را کاهشدهد با اینکار شما میتوانید یک سری از کارهای تکراری که روی متون انجام میدهید را بصورت ماکرو در آورده و از آنها به راحتی استفاده کنید. برای شروعبه ضبط ماکرو کلیدهای Ctrl+Shift+R را بفشارید و آن سری کارهایی را که میخواهید را انجام دهید و سپس برای اینکه به کار ضبط ماکرو پایان دهیدکلیدهای Ctrl+Shift+R را دوباره بزنید. حال برای استفاده از ماکرو کافیستدر هر جا که لازم بود کلیدهای Ctrl+Shift+P را بفشارید. <br><br>انتخاب متن بصورت مربعی: <br>اگر شما از کهنه کارهای کامپیوتر باشید حتما از زمان داس یادتون هست کهبرنامه ای بود به نام PE2 که یکی از امکانات بسیار جالبش این بود که یکمربع از متن رو میتوانستین انتخاب کنید و آنرا کپی یا حذف کنید. بله درستمتوجه شدید در محیط دلفی هم شما اینکار را میتوانید انجام دهید اما نه بهمشکلی PE2 بلکه اینکار را میتوانید فقط با گرفتن کلید Alt و کشیدن موس رویمتن انجام دهید. هر چند ممکن است در نگاه اول زیاد این امکان مفید به نظرنیاید ولی بعضی وقتهای خیلی کار را راحت میکنه، که حتماً تجربه خواهیدکرد. <br><br>گذاشتن علامت روی متن: <br>این کار که به BookMark معروف است بسیار مفید و کارا می باشد. در هنگامیکه شما روی قسمتی از متن برنامه کار میکنید و می خواهید به یک قسمت دیگربروید ممکن است برای برگشتن به مکان اول خود کمی مشکل پیدا کنید. ولی شمامیتوانید با زدن چند دکمه به محل مورد نظرتون باز گردید. برای اینکار درخطی که قصد دارید علامت بگذارید کلیدهای Ctrl+Shift+0..9 را بفشارید.منظور اینست که کلیدهای Ctrl+Shift را نگه دارید و یکی از اعداد 0 تا 9 راوارد کنید تا آن خط به همان شماره علامت گذاری شود و سپس هر جا که خواستیدبروید و سپس هر بار که کلید Ctrl را نگه دارید و شماره مورد نظر را واردکنید به همان خط باز خواهید گشت. البته توجه داشته باشید که فقط می توانید10 خط را با این روش علامت گذاری بکنید و برای برداشتن علامت ها کافیستروی همان خط دوباره کلید Ctrl+shift و شماره‌ای که برای آن خط وارد کردهاید را بفشارید با اینکار علامت آن خط برداشته می شود. <br><br>ایجاد کلاس مورد نظر: <br>شما هنگامی که در قسمت Private و یا Public یک type، روال یا تابع درستکردید لازم دارید که قسمتی را برای قرار دادن کدهای مربوط به آن روال یاتابع را ایجاد کنید. برای اینکار شما پس از اینکه نام تابع را تایپ کردیدمی توانید کلیدهای Ctrl+Shift+C را فشار دهید تا دلفی یک قسمت برای نوشتنکدهای مورد نظرتان ایجاد کند. <br><br>ظاهر کردن پنجره Code  insight: <br>شما حتما به اهمیت و مفید بودن این قسمت دلفی واقفید که در هنگام کد نویسیتا چه حد می تواند کارها را راحت کند. بله در هنگام وارد کردن کدها بعد ازوارد کردن نام یک کلاس و یا Object با زدن یک نقطه (.) پنجره Code Insightظاهر می شود. حال در بعضی وقتها شما ممکن است که نقطه را قبلا وارد کردهباشید و یا در مواقع دیگر این پنجره ظاهر نشود. در این صورت برای اینکهپنجره را ظاهر کنید باید دوباره نقطه را وارد کنید ولی راه آسانتری هموجود دارد و آن اینست که کلیدهای Ctrl+Speacebar را فشار دهید. <br><br>ظاهر کردن پنجره Code Parameter: <br>همانند بالا در هنگام ظاهر شدن Hint مربوط به راهنمای توابع که معمولاًبعد از گذاشتن پرانتز مربوط ظاهر میشود و در مورد پارامترهای لازم می باشدنیز می توانید از کلیدهای Ctrl+Shift+SpaceBar استفاده کنید. <br><br>رفتن از قسمت تعریف توابع و  روالها به قسمت کد آنها: <br>همیشه این نیاز وجود خواهد داشت که شما در هنگامی که دارید به دنبال یکروال در قسمت type میگردید بعد از پیدا کردن نام آن می خواهید که خود آنتابع یا روال را نیز ببنید. برای اینکار خوب حتما نام آن را جستجو میکنیدولی یک راه آسانتر اینست که شما روی نام آن تابع قرار گیرید و کلیدهایCtrl+Shift+Up/Down را بزنید. در اینحالت اگر روی کد تابع باشید به قسمتتعریف آن خواهید رفت.<br><br><br>]]>
   </description>
   <pubDate>Wed, 14 Jul 2010 20:40:43 +0000</pubDate>
   <guid isPermaLink="true">http://www.parsiguard.com/forum_posts.asp?TID=23&amp;PID=23#23</guid>
  </item> 
  <item>
   <title>&#1586;&#1576;&#1575;&#1606; Delphi , Delphi.Net : مدیریت حافظه در دلفی</title>
   <link>http://www.parsiguard.com/forum_posts.asp?TID=22&amp;PID=22#22</link>
   <description>
    <![CDATA[<strong>نويسنده:</strong> <a href="http://www.parsiguard.com/member_profile.asp?PF=1" rel="nofollow">vvel3</a><br /><strong>موضوع:</strong> مدیریت حافظه در دلفی<br /><strong>ارسال شده :</strong> 14 تیر 2010  در ساعت  9:10عصر<br /><br />تخصیص خودکار حافظه <br>وقتی شما از نوع‌های پایه (Integer ،real ،word و…) برای ایجاد متغییرهایخود استفاده می کنید، هیچ نگرانی درباره تخصیص حافظه آن وجود ندارد چوندلفی خودش آنرا تخصیص حافظه می کند و سپس آزاد میکند. <br><br><div style="margin: 5px 20px 20px;">	<div ="smallfont" style="margin-bottom: 2px;">کد:</div>	<pre ="alt2" dir="ltr" style="border: 1px inset ; margin: 0px; padding: 6px; overflow: auto; width: 640px; height: 162px; text-align: left;"><div align="left"> <br>type <br>TDay = (Sunday, Monday,  Tuesday, Wednesday, Thursday, Friday, Saturday) <br>var <br>Name : String; {256  Bytes} <br>X, Y : Integer; {4 + 4 = 8 Bytes} <br>List : array &#091;0..10&#093; of Double;  {8 * 11 = 88 Bytes} <br>Today : TDay; {1 Byte} <br></div></pre></div>دراین نمونه پس از  پایان برنامه، تمام حافظه تخصیص داده شده فراخوانی و آزاد می شود.  <br><br><br>تخصیص حافظه دینامیکی <br>در این حالت برنامه نویس احتیاج دارد تا  انباره حافظه را شخصا" تخصیص و آزاد کند. <br><br>نوع Pointer <br>اشاره‌گرها در دلفی می‌توانند شکل‌های مختلفی را در برگیرد. نخست، نوعاشاره‌گری که یک آدرس حافظه را برای نوع ویژه‌ای از داده، همانند صحیح،رشته و غیره نگه میدارد (Typed Pointer). <br><br><br><div style="margin: 5px 20px 20px;">	<div ="smallfont" style="margin-bottom: 2px;">کد:</div>	<pre ="alt2" dir="ltr" style="border: 1px inset ; margin: 0px; padding: 6px; overflow: auto; width: 640px; height: 114px; text-align: left;"><div align="left"> <br><br>var <br>;Number : ^Integer <br>;Name : ^String  <br></div></pre></div>دوم، اشاره‌گرهای بدون نوع. اشاره‌گرهای بدون نوع (UntypedPointers) خیلی به نوع معمولی خود شبیه هستند. اما محدودیت‌هایی مثل اینکهباید به نوع خاصی اشاره (Point) کند را ندارد. <br><br><br><br><div style="margin: 5px 20px 20px;">	<div ="smallfont" style="margin-bottom: 2px;">کد:</div>	<pre ="alt2" dir="ltr" style="border: 1px inset ; margin: 0px; padding: 6px; overflow: auto; width: 640px; height: 82px; text-align: left;"><div align="left"> <br>var <br>;Something : Pointer  <br></div></pre></div>حال اشاره‌گر بدون نوع ما می تواند به هر نوعی از داده اشاره کند.برای تخصیص حافظه آن، از کمپلکس بیش از یک بیت استفاده میکنیم. برای مثالبرنامه زیر کامپایل می شود ولی در زمان اجرا حافظه‌ای تخصیص نمیشود. <br><br><br><br><br><div style="margin: 5px 20px 20px;">	<div ="smallfont" style="margin-bottom: 2px;">کد:</div>	<pre ="alt2" dir="ltr" style="border: 1px inset ; margin: 0px; padding: 6px; overflow: auto; width: 640px; height: 98px; text-align: left;"><div align="left"> begin  <br>New(Something); <br>Dispose(Something); <br>end; <br></div></pre></div>برای تخصیص  حافظه کامپایلر باید بداند که نوع داده ما برای تخصیص حافظه چیست:  <br><br><br><br><div style="margin: 5px 20px 20px;">	<div ="smallfont" style="margin-bottom: 2px;">کد:</div>	<pre ="alt2" dir="ltr" style="border: 1px inset ; margin: 0px; padding: 6px; overflow: auto; width: 640px; height: 210px; text-align: left;"><div align="left"> <br>type <br>IntPtr = ^Integer; <br><br>var <br>Something :  Pointer; <br>begin <br>Something := New(IntPtr); <br>Integer(Something^) := 10;  <br>Dispose(Something); <br>end; <br></div></pre></div><br>تخصیص بلاکی از حافظه <br>ما می‌توانیم از اشاره به بلاک‌هایی از تخصیص حافظه در سیستم استفادهکنیم. این کار را با رویه‌های GetMem و FreeMem برای تخصیص و آزاد سازیحافظه استفاده میکنیم. <br><br><br><br><br><div style="margin: 5px 20px 20px;">	<div ="smallfont" style="margin-bottom: 2px;">کد:</div>	<pre ="alt2" dir="ltr" style="border: 1px inset ; margin: 0px; padding: 6px; overflow: auto; width: 640px; height: 130px; text-align: left;"><div align="left"> var <br>Something : Pointer <br>begin <br>GetMem(Something,  100); <br>FreeMem(Something, 100); <br>end; <br></div></pre></div><br>اشاره به حافظه از  قبل تخصیص داده شده <br>هر دو نوع اشاره‌گرها می توانند به هر جایی از حافظه اشاره بکنند. اینبدان معناست که آنها می‌توانند اشاره به فضای اشغال شده با داده‌هایی کهدر حال حاضر موجودند داشته باشند. این نمونه اشاره‌گر احتیاجی به تخصیصحافظه ندارد. <br><br><br><br><br><div style="margin: 5px 20px 20px;">	<div ="smallfont" style="margin-bottom: 2px;">کد:</div>	<pre ="alt2" dir="ltr" style="border: 1px inset ; margin: 0px; padding: 6px; overflow: auto; width: 640px; height: 194px; text-align: left;"><div align="left"> var <br>Something : Pointer; <br>MyString : PChar; //  type PChar = ^Char; <br><br>begin <br>GetMem(Something, 100); <br>MyString :=  Something; <br>StrCopy(Something, 'Hello World'); <br>FreeMem(Something, 100);  <br>end; <br></div></pre></div><br>حافظه Heap <br>Heap شامل قسمتی از حافظه موجود در یک برنامه است که آنرا حافظه پویا مینامیم. Heap بخشی است که در آن تخصیص و تعریف حافظه به صورت تصادفی(Random) اتفاق می‌افتد. این به آن معناست که اگر شما سه بلاک از حافظه رابه طور متوالی تخصیص دهید، می توانید بعد از هر دستور آنرا از بین ببرید.مدیر Heap جزئیات را برای شما نگهداری می کند. بنابراین شما به سادگی میتوانید یک حافظه جدید را با GetMem و یا بوسیله صدا زدن constructor هنگامساختن یک شی درخواست کنید و دلفی به شما یک بلاک جدید را برخواهد گرداند.Heap یکی از سه فضای موجود در برنامه کاربردی را استفاده کرده و دوتایدیگر به صورت فضای یکپارچه (Global) و پشته قرار می گیرند. <br><br><br>حافظه Stack <br>Stack شامل قسمتی از یک بخش از حافظه موجود یک برنامه است که دینامیکی استاما برای تخصیص و آزادسازی فرامین مخصوص دارد. تخصیص Stack به صورت LIFOمی باشد. این بدان معناست که آخرین حافظه شیء شما تخصیص داه خواهد شد وسپس حذف می شود. حافظه پشته در روتین‌های نوعی استفاده می‌شود. وقتی شمایک روتین را صدا میزنید، پارامترهایش و روتین نوع آن در پشته ریخته میشود. همچنین پارامترهایی که در یک روتین تعریف میشوند، در پشته ذخیرهمیشوند و وقتی روتین خاتمه پیدا می کند تمام آنها به طور خودکار از بین میرود.]]>
   </description>
   <pubDate>Wed, 14 Jul 2010 20:40:08 +0000</pubDate>
   <guid isPermaLink="true">http://www.parsiguard.com/forum_posts.asp?TID=22&amp;PID=22#22</guid>
  </item> 
 </channel>
</rss>