<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	xmlns:media="http://search.yahoo.com/mrss/"
	>

<channel>
	<title>CtrlF9 Catatan saja</title>
	<atom:link href="http://ctrlf9.wordpress.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://ctrlf9.wordpress.com</link>
	<description></description>
	<lastBuildDate>Thu, 01 May 2008 02:59:06 +0000</lastBuildDate>
	<generator>http://wordpress.com/</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<cloud domain='ctrlf9.wordpress.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://www.gravatar.com/blavatar/8a2bf98b4b354eb976e59793655a81ee?s=96&#038;d=http://s.wordpress.com/i/buttonw-com.png</url>
		<title>CtrlF9 Catatan saja</title>
		<link>http://ctrlf9.wordpress.com</link>
	</image>
			<item>
		<title>Submenu yang tertutupi oleh flash</title>
		<link>http://ctrlf9.wordpress.com/2008/05/01/submenu-yang-tertutupi-oleh-flash/</link>
		<comments>http://ctrlf9.wordpress.com/2008/05/01/submenu-yang-tertutupi-oleh-flash/#comments</comments>
		<pubDate>Thu, 01 May 2008 02:43:37 +0000</pubDate>
		<dc:creator>ctrlf9</dc:creator>
				<category><![CDATA[Pemrograman]]></category>

		<guid isPermaLink="false">http://ctrlf9.wordpress.com/?p=20</guid>
		<description><![CDATA[Saat menggunakan menu drop down TransMenus, ada beberapa sub menu yang tidak terlihat karena tertutupi oleh banner flash yang posisinya persis dibawah menu itu dan ini cukup mengganggu. Usut punya usut ternyata perlu ditambahkan opsi &#8216;wmode&#8217;=&#62;&#8217;opaque&#8217; di paramater flashnya. Dengan plugin sfSwfObjectHelperPlugin di Symfony settingnya menjadi
use_helper( 'Flash' );
&#60;?php $id = 'banner_atas'; ?&#62;
&#60;?php
$params = array( 'id' [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=ctrlf9.wordpress.com&blog=1171651&post=20&subd=ctrlf9&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>Saat menggunakan menu drop down <a title="TransMenus" href="http://youngpup.net/projects/transmenus/demos/photos/" target="_blank">TransMenus</a>, ada beberapa sub menu yang tidak terlihat karena tertutupi oleh <em>banner</em> flash yang posisinya persis dibawah menu itu dan ini cukup mengganggu. Usut punya usut ternyata perlu ditambahkan opsi &#8216;wmode&#8217;=&gt;&#8217;opaque&#8217; di paramater flashnya. Dengan plugin <a title="SwfObjectHelperPlugin" href="http://trac.symfony-project.com/wiki/sfSwfObjectHelperPlugin" target="_blank">sfSwfObjectHelperPlugin</a> di <a href="http://www.symfony-project.org/" target="_blank">Symfony</a> settingnya menjadi<br />
<code>use_helper( 'Flash' );<br />
&lt;?php $id = 'banner_atas'; ?&gt;<br />
&lt;?php<br />
$params = array( 'id'        =&gt; 'flash_movie',<br />
'movie'            =&gt; 'conto_iklan',<br />
'size'             =&gt; '417x50',<br />
'version'          =&gt; '8',<br />
'background_color' =&gt; '',<br />
'params'           =&gt; array( 'allowScriptAccess' =&gt; 'sameDomain','quality'  =&gt; 'high','wmode'=&gt;'opaque' ),<br />
'create_proxy'     =&gt; true );<br />
?&gt;<br />
&lt;div style="position:relative; top:4px; left:10px;"&gt;<br />
&lt;?php  echo flash_object( $id, $params ); ?&gt;<br />
&lt;/div&gt;<br />
</code></p>
<p>dan sub menu drop down akan muncul berada diatas tampilan flash</p>
<img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/ctrlf9.wordpress.com/20/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/ctrlf9.wordpress.com/20/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/ctrlf9.wordpress.com/20/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/ctrlf9.wordpress.com/20/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/ctrlf9.wordpress.com/20/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/ctrlf9.wordpress.com/20/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/ctrlf9.wordpress.com/20/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/ctrlf9.wordpress.com/20/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/ctrlf9.wordpress.com/20/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/ctrlf9.wordpress.com/20/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/ctrlf9.wordpress.com/20/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/ctrlf9.wordpress.com/20/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=ctrlf9.wordpress.com&blog=1171651&post=20&subd=ctrlf9&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://ctrlf9.wordpress.com/2008/05/01/submenu-yang-tertutupi-oleh-flash/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/61cfa5199c7a641f2badd022802f9299?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">ctrlf9</media:title>
		</media:content>
	</item>
		<item>
		<title>Virtual Host di Apache</title>
		<link>http://ctrlf9.wordpress.com/2008/04/01/virtual-host-di-apache/</link>
		<comments>http://ctrlf9.wordpress.com/2008/04/01/virtual-host-di-apache/#comments</comments>
		<pubDate>Tue, 01 Apr 2008 01:27:21 +0000</pubDate>
		<dc:creator>ctrlf9</dc:creator>
				<category><![CDATA[Pemrograman]]></category>

		<guid isPermaLink="false">http://ctrlf9.wordpress.com/?p=19</guid>
		<description><![CDATA[Berikut adalah setting virtual host di apache yang biasa saya gunakan bersama Symfony

NameVirtualHost 127.0.0.1

&#60;VirtualHost 127.0.0.1:80&#62;
DocumentRoot "C:\AppServ\www"
ServerName localhost
&#60;/VirtualHost&#62;

&#60;VirtualHost 127.0.0.1:80&#62;
DocumentRoot "C:\AppServ\www\cms3\web"
ServerName www.cms3.com
&#60;Directory "C:\AppServ\www\cms3\web"&#62;
Options Indexes FollowSymLinks Includes
AllowOverride All
Order deny,allow
Deny from all
Allow from 127.0.0.1
DirectoryIndex index.php
&#60;/Directory&#62;

DirectoryIndex index.php
Alias /sf C:\AppServ\php5\PEAR\data\symfony\web\sf

&#60;Directory "C:\AppServ\php5\PEAR\data\symfony\web\sf"&#62;
AllowOverride All
Allow from All
&#60;/Directory&#62;

&#60;/VirtualHost&#62;

&#60;VirtualHost 127.0.0.1:80&#62;
DocumentRoot "C:\AppServ\www\cmsku\web"
ServerName www.cmsku.com
&#60;Directory "C:\AppServ\www\cmsku\web"&#62;
Options Indexes FollowSymLinks Includes
AllowOverride All
Order deny,allow
Deny from all
Allow from 127.0.0.1
DirectoryIndex index.php
&#60;/Directory&#62;

DirectoryIndex index.php
Alias /sf C:\AppServ\php5\PEAR\data\symfony\web\sf

&#60;Directory [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=ctrlf9.wordpress.com&blog=1171651&post=19&subd=ctrlf9&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>Berikut adalah setting virtual host di apache yang biasa saya gunakan bersama <a title="Symfony" href="http://www.symfony-project.org/" target="_blank">Symfony</a><br />
<code><br />
NameVirtualHost 127.0.0.1<br />
</code><code><br />
&lt;VirtualHost 127.0.0.1:80&gt;<br />
DocumentRoot "C:\AppServ\www"<br />
ServerName localhost<br />
&lt;/VirtualHost&gt;<br />
</code><code><br />
&lt;VirtualHost 127.0.0.1:80&gt;<br />
DocumentRoot "C:\AppServ\www\cms3\web"<br />
ServerName www.cms3.com<br />
&lt;Directory "C:\AppServ\www\cms3\web"&gt;<br />
Options Indexes FollowSymLinks Includes<br />
AllowOverride All<br />
Order deny,allow<br />
Deny from all<br />
Allow from 127.0.0.1<br />
DirectoryIndex index.php<br />
&lt;/Directory&gt;<br />
</code><code><br />
DirectoryIndex index.php<br />
Alias /sf C:\AppServ\php5\PEAR\data\symfony\web\sf<br />
</code><code><br />
&lt;Directory "C:\AppServ\php5\PEAR\data\symfony\web\sf"&gt;<br />
AllowOverride All<br />
Allow from All<br />
&lt;/Directory&gt;<br />
</code><code><br />
&lt;/VirtualHost&gt;<br />
</code><code><br />
&lt;VirtualHost 127.0.0.1:80&gt;<br />
DocumentRoot "C:\AppServ\www\cmsku\web"<br />
ServerName www.cmsku.com<br />
&lt;Directory "C:\AppServ\www\cmsku\web"&gt;<br />
Options Indexes FollowSymLinks Includes<br />
AllowOverride All<br />
Order deny,allow<br />
Deny from all<br />
Allow from 127.0.0.1<br />
DirectoryIndex index.php<br />
&lt;/Directory&gt;<br />
</code><code><br />
DirectoryIndex index.php<br />
Alias /sf C:\AppServ\php5\PEAR\data\symfony\web\sf<br />
</code><code><br />
&lt;Directory "C:\AppServ\php5\PEAR\data\symfony\web\sf"&gt;<br />
AllowOverride All<br />
Allow from All<br />
&lt;/Directory&gt;<br />
</code><code><br />
&lt;/VirtualHost&gt;<br />
</code><br />
Juga isi dari file hosts di lingkungan windows (C:\WINDOWS\system32\drivers\etc\hosts)<br />
<code><br />
127.0.0.1 localhost<br />
127.0.0.1 www.cms3.com<br />
127.0.0.1 www.cmsku.com<br />
</code></p>
<img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/ctrlf9.wordpress.com/19/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/ctrlf9.wordpress.com/19/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/ctrlf9.wordpress.com/19/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/ctrlf9.wordpress.com/19/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/ctrlf9.wordpress.com/19/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/ctrlf9.wordpress.com/19/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/ctrlf9.wordpress.com/19/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/ctrlf9.wordpress.com/19/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/ctrlf9.wordpress.com/19/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/ctrlf9.wordpress.com/19/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/ctrlf9.wordpress.com/19/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/ctrlf9.wordpress.com/19/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=ctrlf9.wordpress.com&blog=1171651&post=19&subd=ctrlf9&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://ctrlf9.wordpress.com/2008/04/01/virtual-host-di-apache/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/61cfa5199c7a641f2badd022802f9299?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">ctrlf9</media:title>
		</media:content>
	</item>
		<item>
		<title>802.11a, 802.11b atau 802.11g</title>
		<link>http://ctrlf9.wordpress.com/2007/12/15/80211a-80211b-atau-80211g/</link>
		<comments>http://ctrlf9.wordpress.com/2007/12/15/80211a-80211b-atau-80211g/#comments</comments>
		<pubDate>Sat, 15 Dec 2007 11:01:24 +0000</pubDate>
		<dc:creator>ctrlf9</dc:creator>
				<category><![CDATA[Telekomunikasi]]></category>

		<guid isPermaLink="false">http://ctrlf9.wordpress.com/2007/12/15/80211a-80211b-atau-80211g/</guid>
		<description><![CDATA[
802.11a, b atau g, secara singkat yang membedakan ketiganya adalah :
802.11a :

    Memakai frekuensi 5 GHz


    Kecepatan sampai dengan 54 Mbps


    Jangkauan mencapai 75 feet (22 meter)

802.11b :

    Memakai frekuensi 2.4 GHz


    Kecepatan sampai dengan 11 Mbps


    [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=ctrlf9.wordpress.com&blog=1171651&post=18&subd=ctrlf9&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p><img src="http://i59.photobucket.com/albums/g315/punyadony/WifiABG3.jpg" align="texttop" /></p>
<p>802.11a, b atau g, secara singkat yang membedakan ketiganya adalah :<br />
802.11a :</p>
<ul>
<li>    Memakai frekuensi 5 GHz</li>
</ul>
<ul>
<li>    Kecepatan sampai dengan 54 Mbps</li>
</ul>
<ul>
<li>    Jangkauan mencapai 75 feet (22 meter)</li>
</ul>
<p>802.11b :</p>
<ul>
<li>    Memakai frekuensi 2.4 GHz</li>
</ul>
<ul>
<li>    Kecepatan sampai dengan 11 Mbps</li>
</ul>
<ul>
<li>    Jangkauan mencapai 150 feet (45 meter)</li>
</ul>
<p>802.11g :</p>
<ul>
<li>    Memakai frekuensi 2.4 GHz</li>
</ul>
<ul>
<li>    Kecepatan sampai dengan 54 Mbps</li>
</ul>
<ul>
<li>    Jangkauan mencapai 100 feet (30 meter) atau 150 feet (45 meter) dengan mengurangi kecepatannya</li>
</ul>
<ul>
<li>    Kompatibel dengan 802.11b pada kecepatan 11 Mbps</li>
</ul>
<img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/ctrlf9.wordpress.com/18/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/ctrlf9.wordpress.com/18/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/ctrlf9.wordpress.com/18/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/ctrlf9.wordpress.com/18/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/ctrlf9.wordpress.com/18/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/ctrlf9.wordpress.com/18/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/ctrlf9.wordpress.com/18/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/ctrlf9.wordpress.com/18/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/ctrlf9.wordpress.com/18/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/ctrlf9.wordpress.com/18/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/ctrlf9.wordpress.com/18/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/ctrlf9.wordpress.com/18/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=ctrlf9.wordpress.com&blog=1171651&post=18&subd=ctrlf9&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://ctrlf9.wordpress.com/2007/12/15/80211a-80211b-atau-80211g/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/61cfa5199c7a641f2badd022802f9299?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">ctrlf9</media:title>
		</media:content>

		<media:content url="http://i59.photobucket.com/albums/g315/punyadony/WifiABG3.jpg" medium="image" />
	</item>
		<item>
		<title>Stored Procedure di Database</title>
		<link>http://ctrlf9.wordpress.com/2007/11/28/database-stored-procedure/</link>
		<comments>http://ctrlf9.wordpress.com/2007/11/28/database-stored-procedure/#comments</comments>
		<pubDate>Wed, 28 Nov 2007 08:24:51 +0000</pubDate>
		<dc:creator>ctrlf9</dc:creator>
				<category><![CDATA[Pemrograman]]></category>

		<guid isPermaLink="false">http://ctrlf9.wordpress.com/2007/11/28/database-stored-procedure/</guid>
		<description><![CDATA[Kelebihan query di stored procedure dibandingkan dengan query yang diletakkan di aplikasi tier adalah

 membuat proses query SQL menjadi terpusat di data tier


 mengurangi kepadatan trafik jaringan untuk proses query, terutama bila query itu dilakukan berulang-ulang


 menjadikan kode query menjadi bersifat reusability atau bisa dipakai ulang untuk proses yang lain tanpa membuat query yang sama [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=ctrlf9.wordpress.com&blog=1171651&post=17&subd=ctrlf9&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>Kelebihan query di stored procedure dibandingkan dengan query yang diletakkan di aplikasi tier adalah</p>
<ul>
<li> membuat proses query SQL menjadi terpusat di data tier</li>
</ul>
<ul>
<li> mengurangi kepadatan trafik jaringan untuk proses query, terutama bila query itu dilakukan berulang-ulang</li>
</ul>
<ul>
<li> menjadikan kode query menjadi bersifat reusability atau bisa dipakai ulang untuk proses yang lain tanpa membuat query yang sama lagi</li>
</ul>
<ul>
<li> dapat melakukan perubahan di data tier tanpa mengubah kode di sisi aplikasi tier</li>
</ul>
<ul>
<li> memiliki stabilitas waktu respon untuk tiap query-nya</li>
</ul>
<p>Di Borland Delphi, stored procedure digunakan dengan perantara TADOStoredProc dengan database yang dipakai sesuai dengan property ‘ConnectionString’ yang diset pada komponen ini dan kemudian nama stored procedure (property ‘ProcedureName’) serta parameter-parameternya (property ‘Parameters’) dapat langsung diakses dari sisi client</p>
<p>Berikut adalah contoh stored procedure dengan T-SQL di MSSQL Server untuk proses insert, update dan delete data table :</p>
<p><code>	create procedure retrieveData									</code><br />
<code>	@select varchar(1),									</code><br />
<code>	@id int = null,									</code><br />
<code>	@cat_id int = null,									</code><br />
<code>	@dateposted datetime = null,									</code><span id="more-17"></span><br />
<code>	@subject varchar(100) = null,									</code><br />
<code>	@body varchar(max) = null									</code><br />
<code>	as									</code><br />
<code>	  if @select='I' 									</code><br />
<code>	  begin									</code><br />
<code>	    insert entries (cat_id,dateposted,subject,body) 									</code><br />
<code>	    values (@cat_id,getdate(),@subject,@body)									</code><br />
<code>	    if @@ERROR  0 goto err_handle									</code><br />
<code>	    return 0									</code><br />
<code>	  end									</code><br />
<code></code><br />
<code>	  if @select='U' 									</code><br />
<code>	  begin									</code><br />
<code>	    update entries set cat_id=@cat_id, dateposted=@dateposted, subject=@subject, body=@body									</code><br />
<code>	    where id=@id									</code><br />
<code>	    if @@ERROR  0 goto err_handle									</code><br />
<code>	    return 0    									</code><br />
<code>	  end									</code><br />
<code></code><br />
<code>	  if @select='D' 									</code><br />
<code>	  begin									</code><br />
<code>	    delete entries where id=@id									</code><br />
<code>	    if @@ERROR  0 goto err_handle									</code><br />
<code>	    return 0       									</code><br />
<code>	  end 									</code><br />
<code></code><br />
<code>	  err_handle:									</code><br />
<code>	  begin									</code><br />
<code>	    rollback transaction									</code><br />
<code>	    return -101 									</code><br />
<code>	  end									</code><br />
<code></code><br />
<code>	go									</code></p>
<p>Contoh berikut untuk meretrieve data penjualan dengan melakukan penyaringan data (fungsi ‘case’) pada query-nya</p>
<p><code>	create procedure Retrieve_Penjualan						</code><br />
<code>	as						</code><br />
<code>	select substring (judul, 1, 20) as Judul,						</code><br />
<code>	       case jenis						</code><br />
<code>	          when 'Pemrograman Komputer' then ' Buku Komputer'						</code><br />
<code>	          when 'Jaringan Komputer'  then ' Buku Komputer'						</code><br />
<code>	          when 'Masakan Modern'  then ' Buku Memasak'						</code><br />
<code>	          else ' Buku Lain'						</code><br />
<code>	       end as Type,						</code><br />
<code>	       'Penjualan : ' +						</code><br />
<code>	       case						</code><br />
<code>	          when penjualan &lt; 10 then 'kurang'						</code><br />
<code>	          when penjualan between 10 and 20 then 'sedang'						</code><br />
<code>	          when penjualan &gt; 20 then 'banyak'						</code><br />
<code>	          else 'Unknown'						</code><br />
<code>	       end as Penjualan						</code><br />
<code>	   from buku						</code><br />
<code>	go						</code></p>
<img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/ctrlf9.wordpress.com/17/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/ctrlf9.wordpress.com/17/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/ctrlf9.wordpress.com/17/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/ctrlf9.wordpress.com/17/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/ctrlf9.wordpress.com/17/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/ctrlf9.wordpress.com/17/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/ctrlf9.wordpress.com/17/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/ctrlf9.wordpress.com/17/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/ctrlf9.wordpress.com/17/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/ctrlf9.wordpress.com/17/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/ctrlf9.wordpress.com/17/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/ctrlf9.wordpress.com/17/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=ctrlf9.wordpress.com&blog=1171651&post=17&subd=ctrlf9&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://ctrlf9.wordpress.com/2007/11/28/database-stored-procedure/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/61cfa5199c7a641f2badd022802f9299?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">ctrlf9</media:title>
		</media:content>
	</item>
		<item>
		<title>Interpreter dan Compiler</title>
		<link>http://ctrlf9.wordpress.com/2007/11/28/interpreter-dan-compiler/</link>
		<comments>http://ctrlf9.wordpress.com/2007/11/28/interpreter-dan-compiler/#comments</comments>
		<pubDate>Wed, 28 Nov 2007 08:02:28 +0000</pubDate>
		<dc:creator>ctrlf9</dc:creator>
				<category><![CDATA[Pemrograman]]></category>

		<guid isPermaLink="false">http://ctrlf9.wordpress.com/2007/11/28/interpreter-dan-compiler/</guid>
		<description><![CDATA[Pemrograman high-level dibagi menjadi dua, interpreted dan compiled. Interpreted diubah ke bahasa mesin dengan bantuan program lain, yaitu interpreter. Interpreter mengubah setiap statement program ke bahasa mesin dan langsung mengeksekusinya sebelum statement selanjutnya di proses. Compiled diubah ke bahasa mesin oleh compiler. Compiler mengubah semua statement program ke bahasa mesin dahulu sebelum dieksekusi, hasil proses [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=ctrlf9.wordpress.com&blog=1171651&post=16&subd=ctrlf9&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>Pemrograman high-level dibagi menjadi dua, interpreted dan compiled. Interpreted diubah ke bahasa mesin dengan bantuan program lain, yaitu interpreter. Interpreter mengubah setiap statement program ke bahasa mesin dan langsung mengeksekusinya sebelum statement selanjutnya di proses. Compiled diubah ke bahasa mesin oleh compiler. Compiler mengubah semua statement program ke bahasa mesin dahulu sebelum dieksekusi, hasil proses compiler ini biasa disebut sebagai executable<br />
Interpreted harus selalu diubah ke bahasa mesin dahulu untuk setiap pemakaiannya (running), Compiled diubah ke bahasa mesin hanya sekali dan dapat digunakan terus tanpa mengubah ke bahasa mesin lagi.</p>
<img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/ctrlf9.wordpress.com/16/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/ctrlf9.wordpress.com/16/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/ctrlf9.wordpress.com/16/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/ctrlf9.wordpress.com/16/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/ctrlf9.wordpress.com/16/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/ctrlf9.wordpress.com/16/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/ctrlf9.wordpress.com/16/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/ctrlf9.wordpress.com/16/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/ctrlf9.wordpress.com/16/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/ctrlf9.wordpress.com/16/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/ctrlf9.wordpress.com/16/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/ctrlf9.wordpress.com/16/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=ctrlf9.wordpress.com&blog=1171651&post=16&subd=ctrlf9&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://ctrlf9.wordpress.com/2007/11/28/interpreter-dan-compiler/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/61cfa5199c7a641f2badd022802f9299?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">ctrlf9</media:title>
		</media:content>
	</item>
		<item>
		<title>Delphi Thread</title>
		<link>http://ctrlf9.wordpress.com/2007/11/21/delphi-thread/</link>
		<comments>http://ctrlf9.wordpress.com/2007/11/21/delphi-thread/#comments</comments>
		<pubDate>Wed, 21 Nov 2007 08:02:06 +0000</pubDate>
		<dc:creator>ctrlf9</dc:creator>
				<category><![CDATA[Pemrograman]]></category>

		<guid isPermaLink="false">http://ctrlf9.wordpress.com/2007/11/21/delphi-thread/</guid>
		<description><![CDATA[Dengan thread, aplikasi dapat mengerjakan satu atau lebih perintah secara bersama, dalam artian perintah satu tidak menunggu selesainya perintah sebelumnya bila akan dikerjakan. Variabel-variabel dalam tiap perintah dapat independen dan tidak saling mengganggu untuk tiap-tiap perintah yang ada. Sistem operasi yang mendukung multitasking mengijinkan perintah-perintah dikerjakan secara bersamaan dengan thread.
Thread dipakai bila:

 diperlukan proses-proses yang [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=ctrlf9.wordpress.com&blog=1171651&post=15&subd=ctrlf9&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>Dengan thread, aplikasi dapat mengerjakan satu atau lebih perintah secara bersama, dalam artian perintah satu tidak menunggu selesainya perintah sebelumnya bila akan dikerjakan. Variabel-variabel dalam tiap perintah dapat independen dan tidak saling mengganggu untuk tiap-tiap perintah yang ada. Sistem operasi yang mendukung multitasking mengijinkan perintah-perintah dikerjakan secara bersamaan dengan thread.</p>
<p>Thread dipakai bila:</p>
<ul>
<li> diperlukan proses-proses yang independent, misalnya : hardware pooling, animasi obyek</li>
<li> aplikasi dengan multiprosessor</li>
<li> diperlukan proses &#8216;idle&#8217; dalam waktu kerjanya</li>
<li> ingin belajar thread tentunya..</li>
</ul>
<p>Contoh sederhana ini menggunakan tiga thread yang masing-masing melakukan counter mandiri dari 0 ke 100000</p>
<p>Inisialisasi thread :<br />
<code>	type							</code><br />
<code>	  TThreadSatu = class(TThread)							</code><br />
<code>	  private							</code><br />
<code>	    VarLokal: Integer;							</code><span id="more-15"></span><br />
<code>	  protected							</code><br />
<code>	  public							</code><br />
<code>	    constructor CreateIt;							</code><br />
<code>	    procedure Execute; override;							</code><br />
<code>	    destructor Destroy; override;							</code><br />
<code>	  end;							</code><br />
<code>								</code><br />
<code>	  TThreadDua = class(TThread)							</code><br />
<code>	  private							</code><br />
<code>	    VarLokal: Integer;							</code><br />
<code>	  protected							</code><br />
<code>	  public							</code><br />
<code>	    constructor CreateIt;							</code><br />
<code>	    procedure Execute; override;							</code><br />
<code>	    destructor Destroy; override;							</code><br />
<code>	  end;							</code><br />
<code>								</code><br />
<code>	  TThreadTiga = class(TThread)							</code><br />
<code>	  private							</code><br />
<code>	    VarLokal: Integer;							</code><br />
<code>	  protected							</code><br />
<code>	  public							</code><br />
<code>	    constructor CreateIt;							</code><br />
<code>	    procedure Execute; override;							</code><br />
<code>	    destructor Destroy; override;							</code><br />
<code>	  end;							</code><br />
<code>								</code><br />
<code>	TForm1 = class(TForm)							</code><br />
<code>	    Button1: TButton;							</code><br />
<code>	    Label1: TLabel;							</code><br />
<code>	    Label2: TLabel;							</code><br />
<code>	    Label3: TLabel;							</code><br />
<code>	    Label4: TLabel;							</code><br />
<code>	    Label5: TLabel;							</code><br />
<code>	    Label6: TLabel;							</code><br />
<code>	    procedure FormCreate(Sender: TObject);							</code><br />
<code>	    procedure FormClose(Sender: TObject; var Action: TCloseAction);							</code><br />
<code>	    procedure Button1Click(Sender: TObject);							</code><br />
<code>	    procedure pesan1(Sender:TObject);							</code><br />
<code>	    procedure pesan2(Sender:TObject);							</code><br />
<code>	    procedure pesan3(Sender:TObject);    							</code><br />
<code>	  private							</code><br />
<code>	    CriticalSection: TCriticalSection;							</code><br />
<code>	    tred1:TThreadSatu;							</code><br />
<code>	    tred2:TThreadDua;							</code><br />
<code>	    tred3:TThreadTiga;							</code><br />
<code>	  public							</code><br />
<code>								</code><br />
<code>	  end;</code></p>
<p>Jangan lupa menjabarkan constructor, destructor dan executenya :<br />
<code>	constructor TThreadSatu.CreateIt;									</code><br />
<code>	begin									</code><br />
<code>	  inherited Create(true); // thread di suspend dulu									</code><br />
<code>	  FreeOnTerminate:=true;									</code><br />
<code>	  Form1.Label3.Caption:='';									</code><br />
<code>	  Suspended:=false; // suspend dilepas, thread dieksekusi									</code><br />
<code>	end;									</code><br />
<code>										</code><br />
<code>	constructor TThreadDua.CreateIt;									</code><br />
<code>	begin									</code><br />
<code>	  inherited Create(true); // thread di suspend dulu									</code><br />
<code>	  FreeOnTerminate:=true;									</code><br />
<code>	  Form1.Label4.Caption:='';									</code><br />
<code>	  Suspended:=false;  // suspend dilepas, thread dieksekusi									</code><br />
<code>	end;									</code><br />
<code>										</code><br />
<code>	constructor TThreadTiga.CreateIt;									</code><br />
<code>	begin									</code><br />
<code>	  inherited Create(true); // thread di suspend dulu									</code><br />
<code>	  FreeOnTerminate:=true;									</code><br />
<code>	  Form1.Label6.Caption:='';									</code><br />
<code>	  Suspended:=false; // suspend dilepas, thread dieksekusi									</code><br />
<code>	end;									</code><br />
<code>										</code><br />
<code>	procedure TThreadSatu.Execute;									</code><br />
<code>	begin									</code><br />
<code>	  repeat									</code><br />
<code>	    Form1.CriticalSection.Acquire;									</code><br />
<code>	    try									</code><br />
<code>	      Application.ProcessMessages;									</code><br />
<code>	      Inc(VarLokal);									</code><br />
<code>	      Form1.Label1.Caption:=inttostr(VarLokal);									</code><br />
<code>	    finally									</code><br />
<code>	      Form1.CriticalSection.Release;									</code><br />
<code>	    end;									</code><br />
<code>	  until VarLokal=100000;									</code><br />
<code>	end;									</code><br />
<code>										</code><br />
<code>	procedure TThreadDua.Execute;									</code><br />
<code>	begin									</code><br />
<code>	  repeat									</code><br />
<code>	    Form1.CriticalSection.Acquire;									</code><br />
<code>	    try									</code><br />
<code>	      Application.ProcessMessages;									</code><br />
<code>	      Inc(VarLokal);									</code><br />
<code>	      Form1.Label2.Caption:=inttostr(VarLokal);									</code><br />
<code>	    finally									</code><br />
<code>	      Form1.CriticalSection.Release;									</code><br />
<code>	    end;									</code><br />
<code>	  until VarLokal=100000;									</code><br />
<code>	end;									</code><br />
<code>										</code><br />
<code>	procedure TThreadTiga.Execute;									</code><br />
<code>	begin									</code><br />
<code>	  repeat									</code><br />
<code>	    Form1.CriticalSection.Acquire;									</code><br />
<code>	    try									</code><br />
<code>	      Application.ProcessMessages;									</code><br />
<code>	      Inc(VarLokal);									</code><br />
<code>	      Form1.Label5.Caption:=inttostr(VarLokal);									</code><br />
<code>	    finally									</code><br />
<code>	      Form1.CriticalSection.Release;									</code><br />
<code>	    end;									</code><br />
<code>	  until VarLokal=100000;									</code><br />
<code>	end;									</code><br />
<code>										</code><br />
<code>	destructor TThreadSatu.Destroy;									</code><br />
<code>	begin									</code><br />
<code>	  inherited Destroy;									</code><br />
<code>	end;									</code><br />
<code>										</code><br />
<code>	destructor TThreadDua.Destroy;									</code><br />
<code>	begin									</code><br />
<code>	  inherited Destroy;									</code><br />
<code>	end;									</code><br />
<code>										</code><br />
<code>	destructor TThreadTiga.Destroy;									</code><br />
<code>	begin									</code><br />
<code>	  inherited Destroy;									</code><br />
<code>	end;									</code><br />
<code>										</code><br />
<code>	procedure TForm1.FormCreate(Sender: TObject);									</code><br />
<code>	begin									</code><br />
<code>	  CriticalSection:=TCriticalSection.Create; // Critical Section dibuat									</code><br />
<code>	end;									</code><br />
<code>										</code><br />
<code>	procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);									</code><br />
<code>	begin									</code><br />
<code>	  CriticalSection.Free; // Critical Section dilepas									</code><br />
<code>	end;									</code><br />
<code>										</code><br />
<code>	procedure TForm1.pesan1(Sender:TObject);									</code><br />
<code>	begin									</code><br />
<code>	  Label3.Caption:='Thread satu selesai';									</code><br />
<code>	end;									</code><br />
<code>										</code><br />
<code>	procedure TForm1.pesan2(Sender:TObject);									</code><br />
<code>	begin									</code><br />
<code>	  Label4.Caption:='Thread dua selesai';									</code><br />
<code>	end;									</code><br />
<code>										</code><br />
<code>	procedure TForm1.pesan3(Sender:TObject);									</code><br />
<code>	begin									</code><br />
<code>	  Label6.Caption:='Thread tiga selesai';									</code><br />
<code>	end;									</code><br />
<code>										</code><br />
<code>	procedure TForm1.Button1Click(Sender: TObject);									</code><br />
<code>	begin									</code><br />
<code>	  tred1:=TThreadSatu.CreateIt;									</code><br />
<code>	  tred1.OnTerminate:=pesan1; // tred1 utk akhir operasinya berada di proses pesan1									</code><br />
<code>	  tred2:=TThreadDua.CreateIt;									</code><br />
<code>	  tred2.OnTerminate:=pesan2; // tred2 utk akhir operasinya berada di proses pesan2									</code><br />
<code>	  tred3:=TThreadTiga.CreateIt;									</code><br />
<code>	  tred3.OnTerminate:=pesan3; // tred3 utk akhir operasinya berada di proses pesan3									</code><br />
<code>	end;</code></p>
<p>CriticalSection dipakai bila thread mengakses variabel global, kelas TCriticalSection memerlukan &#8220;SyncObjs&#8221; di deklarasi global uses</p>
<img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/ctrlf9.wordpress.com/15/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/ctrlf9.wordpress.com/15/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/ctrlf9.wordpress.com/15/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/ctrlf9.wordpress.com/15/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/ctrlf9.wordpress.com/15/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/ctrlf9.wordpress.com/15/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/ctrlf9.wordpress.com/15/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/ctrlf9.wordpress.com/15/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/ctrlf9.wordpress.com/15/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/ctrlf9.wordpress.com/15/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/ctrlf9.wordpress.com/15/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/ctrlf9.wordpress.com/15/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=ctrlf9.wordpress.com&blog=1171651&post=15&subd=ctrlf9&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://ctrlf9.wordpress.com/2007/11/21/delphi-thread/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/61cfa5199c7a641f2badd022802f9299?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">ctrlf9</media:title>
		</media:content>
	</item>
		<item>
		<title>Delphi Client &#8211; Server dengan TServerSocket dan TClientSocket</title>
		<link>http://ctrlf9.wordpress.com/2007/11/21/delphi-client-server-dengan-tserversocket-dan-tclientsocket/</link>
		<comments>http://ctrlf9.wordpress.com/2007/11/21/delphi-client-server-dengan-tserversocket-dan-tclientsocket/#comments</comments>
		<pubDate>Wed, 21 Nov 2007 07:44:56 +0000</pubDate>
		<dc:creator>ctrlf9</dc:creator>
				<category><![CDATA[Pemrograman]]></category>

		<guid isPermaLink="false">http://ctrlf9.wordpress.com/2007/11/21/delphi-client-server-dengan-tserversocket-dan-tclientsocket/</guid>
		<description><![CDATA[Sebagai contoh, server diidentifikasikan oleh 4 byte IP address (misal 10.231.14.124) dengan port yang disediakan untuk melayani client (misal port 1234).
Ketika client (misal 10.231.12.12) melakukan koneksi ke server itu melalui client socket 983, server membuat socket baru yang unik (server client socket) yang meng-handle koneksi client  itu misalnya 755. Dan koneksi yang ada adalah [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=ctrlf9.wordpress.com&blog=1171651&post=14&subd=ctrlf9&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>Sebagai contoh, server diidentifikasikan oleh 4 byte IP address (misal 10.231.14.124) dengan port yang disediakan untuk melayani client (misal port 1234).<br />
Ketika client (misal 10.231.12.12) melakukan koneksi ke server itu melalui client socket 983, server membuat socket baru yang unik (server client socket) yang meng-handle koneksi client  itu misalnya 755. Dan koneksi yang ada adalah server 10.231.14.124 (755) &#8211; client 10.231.12.12 (983),</p>
<p>Bila ada client melakukan koneksi ke server port 1234 lagi (misal client 10.231.12.14 dengan socket 678) maka hal yang sama terjadi lagi, koneksi bertambah menjadi server 10.231.14.124 (755) &#8211; client 10.231.12.12 (983), server 10.231.14.124 (757) &#8211; client 10.231.12.14 (678), Bila ada client melakukan koneksi lagi menjadi<br />
server 10.231.14.124 (755) &#8211; client 10.231.12.12 (983),<br />
server 10.231.14.124 (757) &#8211; client 10.231.12.14 (678),<br />
server 10.231.14.124 (761) &#8211; client 10.231.12.17 (378)</p>
<p>Yang dilakukan server dan client dalam proses ini adalah:<br />
Untuk Server:</p>
<ul>
<li>Socket membuat record dan menunjuk handle pada record ini</li>
</ul>
<ul>
<li>Melakukan proses bind yang menyiapkan alamat dari server untuk menerima permintaan data</li>
</ul>
<ul>
<li>Listen, siap menerima client</li>
</ul>
<ul>
<li>Ketika client datang, menerima dan membuat socket untuk client</li>
</ul>
<ul>
<li>Menerima dan mengirim data</li>
</ul>
<ul>
<li>Menutup (close) koneksi client</li>
</ul>
<p>Untuk Client:</p>
<ul>
<li>Socket membuat record dan menunjuk handle pada record ini</li>
</ul>
<ul>
<li>Melakukan koneksi ke server dan menunggu hingga server membuat socket baru</li>
</ul>
<ul>
<li>Menerima dan mengirim data</li>
</ul>
<ul>
<li>Menutup (close) koneksi client</li>
</ul>
<p>Contoh berikut implementasi     menggunakan TServerSocket untuk server dan TClientSocket untuk client. Prosesnya adalah, client meminta data tertentu dan server merespond dengan data string dengan panjang data 325 char.</p>
<p>Server :<br />
<code>	unit Servunit;								</code></p>
<p><code>	interface								</code><br />
<code>	uses								</code><br />
<span id="more-14"></span><code>	  Windows, Messages, SysUtils, Classes, Graphics, Controls, 								</code><br />
<code>	  Forms, Dialogs,  ScktComp, StdCtrls, ComCtrls, Math;								</code><br />
<code>	type								</code><br />
<code>	  TForm1 = class(TForm)								</code><br />
<code>	    ServSock: TServerSocket;								</code><br />
<code>	    Memo1: TMemo;								</code><br />
<code>	    btnBroadcast: TButton;								</code><br />
<code>	    CbEcho: TCheckBox;								</code><br />
<code>	    Edit1: TEdit;								</code><br />
<code>	    StaticText1: TStaticText;								</code><br />
<code>	    Edit2: TEdit;								</code><br />
<code>	    RichEdit1: TRichEdit;								</code><br />
<code>	    StaticText2: TStaticText;								</code><br />
<code>	    Edit3: TEdit;								</code><br />
<code>	    procedure ServSockClientConnect(Sender: TObject;								</code><br />
<code>	      Socket: TCustomWinSocket);								</code><br />
<code>	    procedure ServSockClientDisconnect(Sender: TObject;								</code><br />
<code>	      Socket: TCustomWinSocket);								</code><br />
<code>	    procedure ServSockClientRead(Sender: TObject;								</code><br />
<code>	      Socket: TCustomWinSocket);								</code><br />
<code>	    procedure ServSockListen(Sender: TObject; Socket:  								</code><br />
<code>	              TCustomWinSocket);								</code><br />
<code>	    procedure FormCreate(Sender: TObject);								</code><br />
<code>	    procedure FormDestroy(Sender: TObject);								</code><br />
<code>	    procedure btnBroadcastClick(Sender: TObject);								</code><br />
<code>	    procedure ServSockClientError(Sender: TObject;								</code><br />
<code>	      Socket: TCustomWinSocket; ErrorEvent: TErrorEvent;								</code><br />
<code>	      var ErrorCode: Integer);								</code><br />
<code>	    procedure fillMemo(data:string);      								</code><br />
<code>	  private								</code><br />
<code>	     tekskirim:string;								</code><br />
<code>	    { Private declarations }								</code><br />
<code>	  public								</code><br />
<code>	    { Public declarations }								</code><br />
<code>	  end;								</code></p>
<p><code>	  procedure SockRead( Socket: TCustomWinSocket;								</code><br />
<code>	                        var pMem: Pointer;								</code><br />
<code>	                        var SizeRead: integer);								</code><br />
<code>	var								</code><br />
<code>	  Form1: TForm1;								</code></p>
<p><code>	Implementation								</code></p>
<p><code>	{$R *.DFM}								</code></p>
<p><code>	procedure SockRead( Socket     : TCustomWinSocket;								</code><br />
<code>	                   var pMem    : Pointer;								</code><br />
<code>	                   var SizeRead: integer);								</code><br />
<code>	var								</code><br />
<code>	 Stream    : TMemoryStream;								</code><br />
<code>	 BlockSize : integer;								</code><br />
<code>	begin								</code><br />
<code>	  if Socket.Receivelength &gt; 0 then								</code><br />
<code>	  begin								</code><br />
<code>	    BlockSize := Socket.ReceiveLength;								</code><br />
<code>	    Stream    := TMemoryStream.Create;								</code><br />
<code>	    pMem      := AllocMem( BlockSize );								</code><br />
<code>	    while BlockSize &gt; 0 do								</code><br />
<code>	    begin								</code><br />
<code>	      Socket.ReceiveBuf( pMem^, BlockSize );								</code><br />
<code>	      Stream.Write( pMem^, BlockSize );     								</code><br />
<code>	      BlockSize := Socket.ReceiveLength;								</code><br />
<code>	      if BlockSize &gt; 0 then                 								</code><br />
<code>	       ReAllocMem(pMem, BlockSize)          								</code><br />
<code>	    end;								</code><br />
<code>	    Stream.Position := 0;								</code><br />
<code>	    ReAllocMem ( pMem, Stream.Size );     								</code><br />
<code>	    Stream.Read( pMem^, Stream.Size );    								</code><br />
<code>	    SizeRead := Stream.Size;								</code><br />
<code>	    Stream.Free;								</code><br />
<code>	  end								</code><br />
<code>	  else begin								</code><br />
<code>	   pMem := nil;								</code><br />
<code>	   SizeRead := 0;								</code><br />
<code>	  end;								</code><br />
<code>	end;								</code></p>
<p><code>	procedure TForm1.FormCreate(Sender: TObject);								</code><br />
<code>	begin								</code><br />
<code>	  ServSock.Port:=strtoint(Edit3.Text);								</code><br />
<code>	  ServSock.Active := true;								</code><br />
<code>	end;								</code></p>
<p><code>	procedure TForm1.FormDestroy(Sender: TObject);								</code><br />
<code>	begin								</code><br />
<code>	  ServSock.Close;								</code><br />
<code>	end;								</code></p>
<p><code>	procedure TForm1.ServSockClientConnect(Sender: TObject;								</code><br />
<code>	  Socket: TCustomWinSocket);								</code><br />
<code>	begin								</code><br />
<code>	   with Socket do								</code><br />
<code>	   Memo1.Lines.Add('connected with: &lt;' + RemoteHost+'&gt; 								</code><br />
<code>	   ['+RemoteAddress+']');								</code><br />
<code>	   Edit2.Text := IntToStr( ServSock.Socket.ActiveConnections );								</code><br />
<code>	end;								</code></p>
<p><code>	procedure TForm1.ServSockClientDisconnect(Sender: TObject;								</code><br />
<code>	  Socket: TCustomWinSocket);								</code><br />
<code>	begin								</code><br />
<code>	  with Socket do								</code><br />
<code>	     memo1.lines.add('disconnect: &lt;' + RemoteHost+'&gt; 								</code><br />
<code>	     ['+RemoteAddress+']');								</code><br />
<code>	  Edit2.Text := IntToStr( ServSock.Socket.ActiveConnections );								</code><br />
<code>	end;								</code></p>
<p><code>	procedure TForm1.fillMemo(data:string);								</code><br />
<code>	var l_answer:string;								</code><br />
<code>	begin								</code><br />
<code>	  if (pos('r1',data)&lt;&gt;0) then								</code><br />
<code>	    l_answer:='m_number:1'+'*';								</code><br />
<code>	  if (pos('r2',data)&lt;&gt;0) then								</code><br />
<code>	    l_answer:='m_number:2'+'*';  								</code><br />
<code>	  if (pos('r3',data)&lt;&gt;0) then								</code><br />
<code>	  l_answer:='m_number:3'+'*';								</code><br />
<code>	  l_answer:=l_answer+'vart:'+								</code><br />
<code>	  inttostr(randomrange(1000,10000))+'*';          								</code><br />
<code>	  l_answer:=l_answer+'batch_1:'+								</code><br />
<code>	  inttostr(randomrange(1000000,9000000))+'*';								</code><br />
<code>	  l_answer:=l_answer+'batch_2:'+								</code><br />
<code>	  inttostr(randomrange(1000000,9000000))+'*';								</code><br />
<code>	  l_answer:=l_answer+'batch_3:'+								</code><br />
<code>	  inttostr(randomrange(1000000,9000000))+'*';								</code><br />
<code>	  l_answer:=l_answer+'c_tote_1:'+								</code><br />
<code>	  inttostr(randomrange(1000000,9000000))+'*';    								</code><br />
<code>	  l_answer:=l_answer+'c_tote_2:'+								</code><br />
<code>	  inttostr(randomrange(1000000,9000000))+'*';								</code><br />
<code>	  l_answer:=l_answer+'c_tote_3:'+								</code><br />
<code>	  inttostr(randomrange(1000000,9000000))+'*';    								</code><br />
<code>	  l_answer:=l_answer+'l_tote_1:'+								</code><br />
<code>	  inttostr(randomrange(1000000,9000000))+'*';								</code><br />
<code>	  l_answer:=l_answer+'l_tote_2:'+								</code><br />
<code>	  inttostr(randomrange(1000000,9000000))+'*';								</code><br />
<code>	  l_answer:=l_answer+'l_tote_3:'+								</code><br />
<code>	  inttostr(randomrange(1000000,9000000))+'*';    								</code><br />
<code>	  l_answer:=l_answer+'preset:'+								</code><br />
<code>	  inttostr(randomrange(1000000,9000000))+'*';								</code><br />
<code>	  l_answer:=l_answer+'comp:'+								</code><br />
<code>	  inttostr(randomrange(1,9))+'*';       								</code><br />
<code>	  l_answer:=l_answer+'batch_no:'+								</code><br />
<code>	  inttostr(randomrange(1000000,9000000))+'*';     								</code><br />
<code>	  l_answer:=l_answer+'n_flo:'+								</code><br />
<code>	  inttostr(randomrange(1000000,9000000))+'*';  								</code><br />
<code>	  l_answer:=l_answer+'a_flo:'+								</code><br />
<code>	  inttostr(randomrange(1000000,9000000))+'*';								</code><br />
<code>	  l_answer:=l_answer+'temp:'+								</code><br />
<code>	  inttostr(randomrange(10,90))+'*';   								</code><br />
<code>	  l_answer:=l_answer+'dens:'+								</code><br />
<code>	  inttostr(randomrange(1000000,9000000))+'*';								</code><br />
<code>	  if data='r1' then								</code><br />
<code>	  begin								</code><br />
<code>	    l_answer:=l_answer+'s_off:'+'f'+'*';								</code><br />
<code>	    l_answer:=l_answer+'s_id:'+'f'+'*';								</code><br />
<code>	    l_answer:=l_answer+'s_del1:'+'f'+'*';								</code><br />
<code>	    l_answer:=l_answer+'s_del2:'+'f'+'*';								</code><br />
<code>	    l_answer:=l_answer+'s_del3:'+'f'+'*';								</code><br />
<code>	    l_answer:=l_answer+'s_stand:'+'t'+'*';								</code><br />
<code>	    l_answer:=l_answer+'e_tx1:'+'t'+'*';								</code><br />
<code>	    l_answer:=l_answer+'e_tx2:'+'t'+'*';								</code><br />
<code>	    l_answer:=l_answer+'e_param:'+'t'+'*';								</code><br />
<code>	    l_answer:=l_answer+'e_pres:'+'t'+'*';								</code><br />
<code>	    l_answer:=l_answer+'e_tx:'+'t'+'*';								</code><br />
<code>	    l_answer:=l_answer+'e_temp:'+'t'+'*';								</code><br />
<code>	    l_answer:=l_answer+'e_syst:'+'t'+'*';								</code><br />
<code>	    l_answer:=l_answer+'e_low2:'+'t'+'*';								</code><br />
<code>	    l_answer:=l_answer+'c_type:'+								</code><br />
<code>	    inttostr(randomrange(10,90))+'*';								</code><br />
<code>	    l_answer:=l_answer+'c_data:'+								</code><br />
<code>	    inttostr(randomrange(10,90))+'*';								</code><br />
<code>	    l_answer:=l_answer+'ID:'+'123'+'*';								</code><br />
<code>	  end;								</code><br />
<code>	  if data='r2' then								</code><br />
<code>	  begin								</code><br />
<code>	    l_answer:=l_answer+'s_off:'+'t'+'*';								</code><br />
<code>	    l_answer:=l_answer+'s_id:'+'t'+'*';								</code><br />
<code>	    l_answer:=l_answer+'s_del1:'+'t'+'*';								</code><br />
<code>	    l_answer:=l_answer+'s_del2:'+'t'+'*';								</code><br />
<code>	    l_answer:=l_answer+'s_del3:'+'t'+'*';								</code><br />
<code>	    l_answer:=l_answer+'s_stand:'+'f'+'*';								</code><br />
<code>	    l_answer:=l_answer+'e_tx1:'+'f'+'*';								</code><br />
<code>	    l_answer:=l_answer+'e_tx2:'+'f'+'*';								</code><br />
<code>	    l_answer:=l_answer+'e_param:'+'f'+'*';								</code><br />
<code>	    l_answer:=l_answer+'e_pres:'+'f'+'*';								</code><br />
<code>	    l_answer:=l_answer+'e_tx:'+'t'+'*';								</code><br />
<code>	    l_answer:=l_answer+'e_temp:'+'t'+'*';								</code><br />
<code>	    l_answer:=l_answer+'e_sys:'+'t'+'*';								</code><br />
<code>	    l_answer:=l_answer+'e_low2:'+'t'+'*';								</code><br />
<code>	    l_answer:=l_answer+'c_type:'+								</code><br />
<code>	    inttostr(randomrange(10,90))+'*';								</code><br />
<code>	    l_answer:=l_answer+'c_data:'+								</code><br />
<code>	    inttostr(randomrange(10,90))+'*';								</code><br />
<code>	    l_answer:=l_answer+'id:'+'456'+'*';								</code><br />
<code>	  end;								</code><br />
<code>	  if data='r3' then								</code><br />
<code>	  begin								</code><br />
<code>	    l_answer:=l_answer+'s_off:'+'t'+'*';								</code><br />
<code>	    l_answer:=l_answer+'s_id:'+'t'+'*';								</code><br />
<code>	    l_answer:=l_answer+'s_del1:'+'t'+'*';								</code><br />
<code>	    l_answer:=l_answer+'s_del2:'+'t'+'*';								</code><br />
<code>	    l_answer:=l_answer+'s_del3:'+'t'+'*';								</code><br />
<code>	    l_answer:=l_answer+'s_stand:'+'t'+'*';								</code><br />
<code>	    l_answer:=l_answer+'e_tx1:'+'t'+'*';								</code><br />
<code>	    l_answer:=l_answer+'e_tx2:'+'t'+'*';								</code><br />
<code>	    l_answer:=l_answer+'e_param:'+'t'+'*';								</code><br />
<code>	    l_answer:=l_answer+'e_pres:'+'t'+'*';								</code><br />
<code>	    l_answer:=l_answer+'e_tx:'+'f'+'*';								</code><br />
<code>	    l_answer:=l_answer+'e_temp:'+'f'+'*';								</code><br />
<code>	    l_answer:=l_answer+'e_sys:'+'f'+'*';								</code><br />
<code>	    l_answer:=l_answer+'e_low2:'+'f'+'*';								</code><br />
<code>	    l_answer:=l_answer+'c_type:'+								</code><br />
<code>	    inttostr(randomrange(10,90))+'*';								</code><br />
<code>	    l_answer:=l_answer+'c_data:'+								</code><br />
<code>	    inttostr(randomrange(10,90))+'*';								</code><br />
<code>	    l_answer:=l_answer+'ID:'+'789'+'*';								</code><br />
<code>	  end;								</code><br />
<code>	  tekskirim:=l_answer;								</code><br />
<code>	end;								</code></p>
<p><code>	procedure TForm1.ServSockClientRead(Sender: TObject;								</code><br />
<code>	  Socket: TCustomWinSocket);								</code><br />
<code>	var								</code><br />
<code>	 sBuf      : string;								</code><br />
<code>	 pData     : pointer;								</code><br />
<code>	 Size      : integer;								</code><br />
<code>	begin								</code><br />
<code>	  SockRead( Socket, pData, Size );								</code><br />
<code>	  if Size &gt; 0 then								</code><br />
<code>	  begin								</code><br />
<code>	   SetLength( sBuf, Size );								</code><br />
<code>	   Move( pData^, sBuf[1], Size);								</code><br />
<code>	   memo1.lines.add('received from ' + 								</code><br />
<code>	   Socket.remotehost+'('+inttostr(Socket.RemotePort)+								</code><br />
<code>	   '-'+inttostr(Socket.SocketHandle)+')'+':'+sBuf);								</code><br />
<code>	   FreeMem(pData); 								</code><br />
<code>	   RichEdit1.Lines.Clear;								</code><br />
<code>	   if (pos('r1',sBuf)&lt;&gt;0) or (pos('r2',sBuf)&lt;&gt;0) or 								</code><br />
<code>	   (pos('r3',sBuf)&lt;&gt;0) then								</code><br />
<code>	   begin								</code><br />
<code>	     fillMemo(sBuf);								</code><br />
<code>	     RichEdit1.Lines.Add(tekskirim+' **'+								</code><br />
<code>	     inttostr(length(tekskirim))+' char');     								</code><br />
<code>	   end else								</code><br />
<code>	     RichEdit1.Lines.Add('Echo from Server');								</code><br />
<code>	     Socket.SendText(tekskirim);								</code><br />
<code>	  end;								</code><br />
<code>	end;								</code></p>
<p><code>	procedure TForm1.ServSockListen(Sender: TObject; Socket: TCustomWinSocket);								</code><br />
<code>	begin								</code><br />
<code>	  with Socket do								</code><br />
<code>	    Memo1.Lines.Add( LocalHost + ' [' +LocalAddress + 								</code><br />
<code>	    '] listening on port ' + IntToStr(LocalPort) + '...');								</code><br />
<code>	end;								</code></p>
<p><code>	procedure TForm1.btnBroadcastClick(Sender: TObject);								</code><br />
<code>	var								</code><br />
<code>	 i : integer;								</code><br />
<code>	begin								</code><br />
<code>	  if ServSock.Socket.ActiveConnections &gt; 0 then								</code><br />
<code>	    for i:=0 to pred(ServSock.Socket.ActiveConnections) do								</code><br />
<code>	      ServSock.Socket.Connections[i].SendText( Edit1.Text );								</code><br />
<code>	end;								</code></p>
<p><code>	procedure TForm1.ServSockClientError(Sender: TObject;								</code><br />
<code>	  Socket: TCustomWinSocket; ErrorEvent: TErrorEvent;								</code><br />
<code>	  var ErrorCode: Integer);								</code><br />
<code>	begin								</code><br />
<code>	   ErrorCode := 0;								</code><br />
<code>	   memo1.lines.add('IP-error:'+IntToStr(integer(ErrorEvent)));								</code><br />
<code>	end;								</code></p>
<p><code>	end.								</code></p>
<p><code>	// Author  : Dirk Claessens</code></p>
<p>Client :<br />
<code>	unit ClientUnit;								</code></p>
<p><code>	interface								</code><br />
<code>	uses								</code><br />
<code>	  Windows, Messages, SysUtils, Classes, Graphics, Controls, 								</code><br />
<code>	  Forms, Dialogs,ScktComp, StdCtrls;								</code><br />
<code>	type								</code><br />
<code>	  TForm1 = class(TForm)								</code><br />
<code>	    ClSock: TClientSocket;								</code><br />
<code>	    Memo1: TMemo;								</code><br />
<code>	    btnconnect: TButton;								</code><br />
<code>	    btnDiscon: TButton;								</code><br />
<code>	    Button1: TButton;								</code><br />
<code>	    Edit1: TEdit;								</code><br />
<code>	    Edit3: TEdit;								</code><br />
<code>	    Label1: TLabel;								</code><br />
<code>	    Label2: TLabel;								</code><br />
<code>	    Edit2: TEdit;								</code><br />
<code>	    Button2: TButton;								</code><br />
<code>	    procedure btnconnectClick(Sender: TObject);								</code><br />
<code>	    procedure ClSockConnect(Sender: TObject; 								</code><br />
<code>	       Socket: TCustomWinSocket);								</code><br />
<code>	    procedure btnDisconClick(Sender: TObject);								</code><br />
<code>	    procedure ClSockDisconnect(Sender: TObject; Socket: 								</code><br />
<code>	       TCustomWinSocket);								</code><br />
<code>	    procedure Button1Click(Sender: TObject);								</code><br />
<code>	    procedure ClSockRead(Sender: TObject; 								</code><br />
<code>	       Socket: TCustomWinSocket);								</code><br />
<code>	    procedure ClSockError(Sender: TObject; 								</code><br />
<code>	       Socket: TCustomWinSocket;								</code><br />
<code>	       ErrorEvent: TErrorEvent; var ErrorCode: Integer);								</code><br />
<code>	    procedure Button2Click(Sender: TObject);								</code><br />
<code>	  private								</code><br />
<code>	    { Private declarations }								</code><br />
<code>	  public								</code><br />
<code>	    { Public declarations }   								</code><br />
<code>	  end;								</code><br />
<code>	  procedure SockRead( Socket: TCustomWinSocket;								</code><br />
<code>	                        var pMem: Pointer;								</code><br />
<code>	                        var SizeRead: integer);								</code><br />
<code>	var								</code><br />
<code>	  Form1: TForm1;								</code></p>
<p><code>	implementation								</code><br />
<code>	{$R *.DFM}								</code><br />
<code>	procedure SockRead( Socket     : TCustomWinSocket;								</code><br />
<code>	                   var pMem    : Pointer;								</code><br />
<code>	                   var SizeRead: integer);								</code><br />
<code>	var								</code><br />
<code>	 Stream    : TMemoryStream;								</code><br />
<code>	 BlockSize : integer;								</code><br />
<code>	begin								</code><br />
<code>	  if Socket.Receivelength &gt; 0 then								</code><br />
<code>	  begin								</code><br />
<code>	    BlockSize := Socket.ReceiveLength;								</code><br />
<code>	    Stream    := TMemoryStream.Create;								</code><br />
<code>	    pMem      := AllocMem( BlockSize );								</code><br />
<code>	    // loop until all read								</code><br />
<code>	    while BlockSize &gt; 0 do								</code><br />
<code>	    begin								</code><br />
<code>	      Socket.ReceiveBuf( pMem^, BlockSize ); 								</code><br />
<code>	      Stream.Write( pMem^, BlockSize );      								</code><br />
<code>	      BlockSize := Socket.ReceiveLength;								</code><br />
<code>	      if BlockSize &gt; 0 then                 								</code><br />
<code>	       ReAllocMem(pMem, BlockSize)          								</code><br />
<code>	    end;								</code><br />
<code>	    Stream.Position := 0;								</code><br />
<code>	    ReAllocMem ( pMem, Stream.Size );     								</code><br />
<code>	    Stream.Read( pMem^, Stream.Size );    								</code><br />
<code>	    SizeRead := Stream.Size;								</code><br />
<code>	    Stream.Free;								</code><br />
<code>	  end								</code><br />
<code>	  else begin								</code><br />
<code>	   pMem := nil;								</code><br />
<code>	   SizeRead := 0;								</code><br />
<code>	  end;								</code><br />
<code>	end;								</code></p>
<p><code>	procedure TForm1.btnconnectClick(Sender: TObject);								</code><br />
<code>	begin								</code><br />
<code>	  clSock.Host := edit1.Text;								</code><br />
<code>	  ClSock.Port:= StrToInt(Edit2.Text);								</code><br />
<code>	  clSock.Active := true;								</code><br />
<code>	end;								</code></p>
<p><code>	procedure TForm1.ClSockConnect(Sender: TObject; Socket: TCustomWinSocket);								</code><br />
<code>	begin								</code><br />
<code>	  with Socket do								</code><br />
<code>	    Memo1.Lines.Add('connected to &lt;' + RemoteHost+'&gt; 								</code><br />
<code>	    ['+RemoteAddress+']');								</code><br />
<code>	  button1.enabled := true;								</code><br />
<code>	end;								</code></p>
<p><code>	procedure TForm1.btnDisconClick(Sender: TObject);								</code><br />
<code>	begin								</code><br />
<code>	  ClSock.Close;								</code><br />
<code>	  button1.enabled := false;								</code><br />
<code>	end;								</code></p>
<p><code>	procedure TForm1.ClSockDisconnect(Sender: TObject;								</code><br />
<code>	  Socket: TCustomWinSocket);								</code><br />
<code>	begin								</code><br />
<code>	  with Socket do								</code><br />
<code>	    Memo1.Lines.Add('disconnected from : &lt;' + RemoteHost+'&gt; 								</code><br />
<code>	    ['+RemoteAddress+']');								</code><br />
<code>	  button1.enabled := false;								</code><br />
<code>	end;								</code></p>
<p><code>	procedure TForm1.Button1Click(Sender: TObject);								</code><br />
<code>	begin								</code><br />
<code>	  if ClSock.Active then								</code><br />
<code>	     ClSock.Socket.SendText( edit3.text + #13);								</code><br />
<code>	end;								</code></p>
<p><code>	procedure TForm1.ClSockRead(Sender: TObject; 								</code><br />
<code>	   Socket: TCustomWinSocket);								</code><br />
<code>	var								</code><br />
<code>	 sBuf      : string;								</code><br />
<code>	 pData     : pointer;								</code><br />
<code>	 Size      : integer;								</code><br />
<code>	begin								</code><br />
<code>	  SockRead( Socket, pData, Size );								</code><br />
<code>	  if Size &gt; 0 then								</code><br />
<code>	  begin								</code><br />
<code>	    SetLength( sBuf, Size );								</code><br />
<code>	    Move( pData^, sBuf[1], Size);								</code><br />
<code>	    memo1.lines.add(sBuf+' *** Size:'+								</code><br />
<code>	    inttostr(length(sBuf))+' Char');								</code><br />
<code>	    FreeMem(pData); 								</code><br />
<code>	  end;								</code><br />
<code>	end;								</code></p>
<p><code>	procedure TForm1.ClSockError(Sender: TObject; 								</code><br />
<code>	  Socket: TCustomWinSocket;								</code><br />
<code>	  ErrorEvent: TErrorEvent; var ErrorCode: Integer);								</code><br />
<code>	begin								</code><br />
<code>	   ErrorCode := 0;								</code><br />
<code>	   memo1.lines.add( 'IP-error :' + 								</code><br />
<code>	   IntToStr(integer(ErrorEvent)));								</code><br />
<code>	end;								</code></p>
<p><code>	procedure TForm1.Button2Click(Sender: TObject);								</code><br />
<code>	begin								</code><br />
<code>	  memo1.Lines.Clear;								</code><br />
<code>	end;								</code></p>
<p><code>	end.								</code></p>
<p><code>	// Author : D. Claessens								</code></p>
<img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/ctrlf9.wordpress.com/14/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/ctrlf9.wordpress.com/14/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/ctrlf9.wordpress.com/14/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/ctrlf9.wordpress.com/14/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/ctrlf9.wordpress.com/14/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/ctrlf9.wordpress.com/14/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/ctrlf9.wordpress.com/14/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/ctrlf9.wordpress.com/14/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/ctrlf9.wordpress.com/14/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/ctrlf9.wordpress.com/14/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/ctrlf9.wordpress.com/14/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/ctrlf9.wordpress.com/14/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=ctrlf9.wordpress.com&blog=1171651&post=14&subd=ctrlf9&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://ctrlf9.wordpress.com/2007/11/21/delphi-client-server-dengan-tserversocket-dan-tclientsocket/feed/</wfw:commentRss>
		<slash:comments>11</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/61cfa5199c7a641f2badd022802f9299?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">ctrlf9</media:title>
		</media:content>
	</item>
		<item>
		<title>Dua Form yang beriringan</title>
		<link>http://ctrlf9.wordpress.com/2007/11/21/dua-form-yang-beriringan/</link>
		<comments>http://ctrlf9.wordpress.com/2007/11/21/dua-form-yang-beriringan/#comments</comments>
		<pubDate>Wed, 21 Nov 2007 07:32:03 +0000</pubDate>
		<dc:creator>ctrlf9</dc:creator>
				<category><![CDATA[Pemrograman]]></category>

		<guid isPermaLink="false">http://ctrlf9.wordpress.com/2007/11/21/dua-form-yang-beriringan/</guid>
		<description><![CDATA[Kadangkala diperlukan dua buah form, misalnya form1 dan form2 berjalan beriringan. Maksudnya beriringan yaitu bila form1 sebagai form utama dipindah/didrag maka form2 juga mengikuti pergerakan form1 itu kemanapun posisi pindahnya ya.. form2 yang setia sama form1 ceritanya.
Prosesnya pada message WM_MOVE yang muncul bila form1 digerakkan dan fungsi windows API MoveWindow untuk menggerakkan form2 ke posisi [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=ctrlf9.wordpress.com&blog=1171651&post=13&subd=ctrlf9&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>Kadangkala diperlukan dua buah form, misalnya form1 dan form2 berjalan beriringan. Maksudnya beriringan yaitu bila form1 sebagai form utama dipindah/didrag maka form2 juga mengikuti pergerakan form1 itu kemanapun posisi pindahnya ya.. form2 yang setia sama form1 ceritanya.<br />
Prosesnya pada message WM_MOVE yang muncul bila form1 digerakkan dan fungsi windows API MoveWindow untuk menggerakkan form2 ke posisi form1 yang baru :<br />
<code>	unit Unit1;								</code><br />
<code>									</code><br />
<code>	interface								</code><br />
<code>									</code><br />
<code>	uses								</code><br />
<code>	  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,								</code><br />
<code>	  Dialogs, StdCtrls;								</code><br />
<code>									</code><br />
<code>	type								</code><br />
<code>	  TForm1 = class(TForm)								</code><br />
<code>	    Button1: TButton;								</code><br />
<code>	    Edit1: TEdit;								</code><br />
<code>	    procedure FormShow(Sender: TObject);								</code><br />
<code>	  private								</code><br />
<code>	    { Private declarations }								</code><br />
<code>	    { meng-override message WM_MOVE}								</code><br />
<code>	    procedure WMMove(var Msg: TWMMove); message WM_MOVE;								</code><br />
<code>	  public								</code><br />
<code>	    { Public declarations }								</code><br />
<code>	  end;								</code><br />
<code>									</code><br />
<code>	var								</code><br />
<code>	  Form1: TForm1;								</code><br />
<code>									</code><br />
<code>	implementation								</code><br />
<code>									</code><br />
<code>	uses Unit2;								</code><br />
<code>									</code><br />
<code>	{$R *.dfm}								</code><br />
<code>									</code><br />
<code>	procedure TForm1.FormShow(Sender: TObject);								</code><br />
<code>	begin								</code><br />
<code>	  form2.Show;								</code><br />
<code>	end;								</code><br />
<code>									</code><br />
<code>	{procedure berikut akan dijalankan bila form1/window utama digerakkan/moved}								</code><br />
<code>	procedure TForm1.WMMove(var Msg: TWMMove);								</code><br />
<code>	begin								</code><br />
<code>	  {if the toolbar window exists...}								</code><br />
<code>	  if Form2&lt;&gt;nil then								</code><br />
<code>	  {...move the toolbar window alongside the main window.}								</code><br />
<code>	    MoveWindow(Form2.Handle, Form1.Left+Form1.Width+5, Form1.Top, Form2.Width,								</code><br />
<code>	  Form2.Height, true);								</code><br />
<code>	end;								</code><br />
<code>									</code><br />
<code>	end.								</code></p>
<img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/ctrlf9.wordpress.com/13/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/ctrlf9.wordpress.com/13/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/ctrlf9.wordpress.com/13/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/ctrlf9.wordpress.com/13/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/ctrlf9.wordpress.com/13/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/ctrlf9.wordpress.com/13/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/ctrlf9.wordpress.com/13/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/ctrlf9.wordpress.com/13/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/ctrlf9.wordpress.com/13/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/ctrlf9.wordpress.com/13/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/ctrlf9.wordpress.com/13/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/ctrlf9.wordpress.com/13/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=ctrlf9.wordpress.com&blog=1171651&post=13&subd=ctrlf9&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://ctrlf9.wordpress.com/2007/11/21/dua-form-yang-beriringan/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/61cfa5199c7a641f2badd022802f9299?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">ctrlf9</media:title>
		</media:content>
	</item>
		<item>
		<title>Development phases</title>
		<link>http://ctrlf9.wordpress.com/2007/11/12/development-phases/</link>
		<comments>http://ctrlf9.wordpress.com/2007/11/12/development-phases/#comments</comments>
		<pubDate>Mon, 12 Nov 2007 06:41:22 +0000</pubDate>
		<dc:creator>ctrlf9</dc:creator>
				<category><![CDATA[Pemrograman]]></category>

		<guid isPermaLink="false">http://ctrlf9.wordpress.com/2007/11/12/development-phases/</guid>
		<description><![CDATA[
Phase 1. Analyze the requirement : Identify what your program is required to do


Phase 2. Design the Program : Determine how the program will meet the requirements


Phase 3. Implement the design : Write the code


Phase 4. Test your program : Make sure it works for all legal entries

       <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=ctrlf9.wordpress.com&blog=1171651&post=10&subd=ctrlf9&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><ul>
<li>Phase 1. Analyze the requirement : Identify what your program is required to do</li>
</ul>
<ul>
<li>Phase 2. Design the Program : Determine how the program will meet the requirements</li>
</ul>
<ul>
<li>Phase 3. Implement the design : Write the code</li>
</ul>
<ul>
<li>Phase 4. Test your program : Make sure it works for all legal entries</li>
</ul>
<img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/ctrlf9.wordpress.com/10/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/ctrlf9.wordpress.com/10/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/ctrlf9.wordpress.com/10/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/ctrlf9.wordpress.com/10/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/ctrlf9.wordpress.com/10/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/ctrlf9.wordpress.com/10/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/ctrlf9.wordpress.com/10/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/ctrlf9.wordpress.com/10/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/ctrlf9.wordpress.com/10/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/ctrlf9.wordpress.com/10/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/ctrlf9.wordpress.com/10/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/ctrlf9.wordpress.com/10/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=ctrlf9.wordpress.com&blog=1171651&post=10&subd=ctrlf9&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://ctrlf9.wordpress.com/2007/11/12/development-phases/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/61cfa5199c7a641f2badd022802f9299?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">ctrlf9</media:title>
		</media:content>
	</item>
		<item>
		<title>CD NetBeans IDE 5.5.1</title>
		<link>http://ctrlf9.wordpress.com/2007/11/08/cd-netbeans-ide-551/</link>
		<comments>http://ctrlf9.wordpress.com/2007/11/08/cd-netbeans-ide-551/#comments</comments>
		<pubDate>Thu, 08 Nov 2007 05:06:07 +0000</pubDate>
		<dc:creator>ctrlf9</dc:creator>
				<category><![CDATA[Pemrograman]]></category>

		<guid isPermaLink="false">http://ctrlf9.wordpress.com/2007/11/08/cd-netbeans-ide-551/</guid>
		<description><![CDATA[
Akhirnya datang juga kiriman CD NetBeans IDE 5.5.1, CD ini berisi antara lain   
         

NetBeans IDE 5.5.1 Multilingual (Microsoft Windows, Linux, Solaris(TM) SPARC, Solaris(TM) x86, Mac OS X)


NetBeans Mobility Pack for NetBeans IDE 5.5.1 Multilingual (Microsoft Windows, Linux)


NetBeans Profiler for NetBeans IDE 5.5.1 Multilingual (Microsoft [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=ctrlf9.wordpress.com&blog=1171651&post=9&subd=ctrlf9&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p><img src="http://i59.photobucket.com/albums/g315/punyadony/NetBeansCD.jpg" alt="NetBeans CD" align="top" height="366" width="426" /></p>
<p><span style="font-size:10pt;font-family:Verdana;">Akhirnya datang juga kiriman CD NetBeans IDE 5.5.1, CD ini berisi antara lain<span>   </span></span></p>
<p><!--[if !supportLists]--><span style="font-size:10pt;line-height:150%;font-family:Symbol;"><span><span style="font-family:'Times New Roman';font-style:normal;font-variant:normal;font-weight:normal;font-size:7pt;line-height:normal;">         </span></span></span><!--[endif]--></p>
<ul>
<li><span style="font-size:10pt;line-height:150%;font-family:Verdana;">NetBeans IDE 5.5.1 Multilingual (Microsoft Windows, Linux, Solaris(TM) SPARC, Solaris(TM) x86, Mac OS X)</span></li>
</ul>
<ul>
<li><!--[if !supportLists]--><span style="font-size:10pt;line-height:150%;font-family:Symbol;"><span><span style="font-family:'Times New Roman';font-style:normal;font-variant:normal;font-weight:normal;font-size:7pt;line-height:normal;"></span></span></span><!--[endif]--><span style="font-size:10pt;line-height:150%;font-family:Verdana;">NetBeans Mobility Pack for NetBeans IDE 5.5.1 Multilingual (Microsoft Windows, Linux)</span></li>
</ul>
<ul>
<li><!--[if !supportLists]--><span style="font-size:10pt;line-height:150%;font-family:Symbol;"><span><span style="font-family:'Times New Roman';font-style:normal;font-variant:normal;font-weight:normal;font-size:7pt;line-height:normal;"></span></span></span><span style="font-size:10pt;line-height:150%;font-family:Verdana;">NetBeans Profiler for NetBeans IDE 5.5.1 Multilingual (Microsoft Windows, Linux, Solaris(TM) SPARC, Solaris(TM) x86, Mac OS X)</span></li>
</ul>
<ul>
<li><!--[if !supportLists]--><span style="font-size:10pt;line-height:150%;font-family:Symbol;"><span><span style="font-family:'Times New Roman';font-style:normal;font-variant:normal;font-weight:normal;font-size:7pt;line-height:normal;"></span></span></span><span style="font-size:10pt;line-height:150%;font-family:Verdana;">Sun Java System Application Server Platform Edition 9.0 Update 1 (Microsoft Windows, Linux, Solaris(TM) SPARC, Solaris(TM) x86, Mac OS X)</span></li>
</ul>
<ul>
<li><!--[if !supportLists]--><span style="font-size:10pt;line-height:150%;font-family:Symbol;"><span><span style="font-family:'Times New Roman';font-style:normal;font-variant:normal;font-weight:normal;font-size:7pt;line-height:normal;">         </span></span></span><!--[endif]--><span style="font-size:10pt;line-height:150%;font-family:Verdana;">NetBeans 5.5.1 Documentation</span></li>
</ul>
<p class="MsoNormal" style="line-height:150%;"> <span style="font-size:10pt;line-height:150%;font-family:Verdana;">Thank’s Sun..</span></p>
<img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/ctrlf9.wordpress.com/9/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/ctrlf9.wordpress.com/9/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/ctrlf9.wordpress.com/9/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/ctrlf9.wordpress.com/9/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/ctrlf9.wordpress.com/9/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/ctrlf9.wordpress.com/9/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/ctrlf9.wordpress.com/9/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/ctrlf9.wordpress.com/9/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/ctrlf9.wordpress.com/9/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/ctrlf9.wordpress.com/9/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/ctrlf9.wordpress.com/9/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/ctrlf9.wordpress.com/9/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=ctrlf9.wordpress.com&blog=1171651&post=9&subd=ctrlf9&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://ctrlf9.wordpress.com/2007/11/08/cd-netbeans-ide-551/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/61cfa5199c7a641f2badd022802f9299?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">ctrlf9</media:title>
		</media:content>

		<media:content url="http://i59.photobucket.com/albums/g315/punyadony/NetBeansCD.jpg" medium="image">
			<media:title type="html">NetBeans CD</media:title>
		</media:content>
	</item>
	</channel>
</rss>