Сţµç×ÓÊé > ÆäËûµç×ÓÊé > VB2008´ÓÈëÃŵ½¾«Í¨(PDF¸ñʽӢÎÄ°æ) >

µÚ90ÕÂ

VB2008´ÓÈëÃŵ½¾«Í¨(PDF¸ñʽӢÎÄ°æ)-µÚ90ÕÂ

С˵£º VB2008´ÓÈëÃŵ½¾«Í¨(PDF¸ñʽӢÎÄ°æ) ×ÖÊý£º ÿҳ3500×Ö

°´¼üÅÌÉÏ·½Ïò¼ü ¡û »ò ¡ú ¿É¿ìËÙÉÏÏ·­Ò³£¬°´¼üÅÌÉ쵀 Enter ¼ü¿É»Øµ½±¾ÊéĿ¼ҳ£¬°´¼üÅÌÉÏ·½Ïò¼ü ¡ü ¿É»Øµ½±¾Ò³¶¥²¿£¡
¡ª¡ª¡ª¡ªÎ´ÔĶÁÍꣿ¼ÓÈëÊéÇ©ÒѱãÏ´μÌÐøÔĶÁ£¡





¡¡¡¡¡¡¡¡o¡¡¡¡Binary2Text£º¡¡A¡¡console¡¡program¡¡that¡¡is¡¡used¡¡to¡¡convert¡¡a¡¡binary¡¡lottery¡¡ticket¡¡stream¡¡into¡¡¡¡

¡¡¡¡¡¡¡¡¡¡¡¡¡¡a¡¡text¡¡stream¡£¡¡



¡¡¡¡¡¡¡¡o¡¡¡¡LottoLibrary£º¡¡A¡¡class¡¡library¡¡that¡¡contains¡¡the¡¡definition¡¡of¡¡the¡¡Ticket¡¡type¡¡that¡¡repre

¡¡¡¡¡¡¡¡¡¡¡¡¡¡sents¡¡a¡¡lottery¡¡ticket¡¡in¡¡memory¡£¡¡

¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡249¡¡


¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­Page¡¡272¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­

250¡¡¡¡¡¡¡¡¡¡¡¡¡¡CH¡¡AP¡¡T¡¡E¡¡R¡¡¡¡¡¡1¡¡0¡¡¡¡¡¡¡ö¡¡¡¡¡¡¡¡L¡¡E¡¡A¡¡R¡¡N¡¡I¡¡N¡¡G¡¡¡¡¡¡A¡¡B¡¡OU¡¡T¡¡¡¡¡¡P¡¡E¡¡R¡¡S¡¡IS¡¡TE¡¡N¡¡CE¡¡



¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡o¡¡¡¡ReaderWriter£º¡¡A¡¡class¡¡library¡¡that¡¡contains¡¡the¡¡infrastructure¡¡code¡¡for¡¡processing¡¡streams¡¡¡¡

¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡and¡¡mand¡­line¡¡arguments¡£¡¡



¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡o¡¡¡¡Text2Binary£º¡¡A¡¡console¡¡program¡¡that¡¡is¡¡used¡¡to¡¡convert¡¡a¡¡text¡¡lottery¡¡ticket¡¡stream¡¡into¡¡a¡¡¡¡

¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡binary¡¡stream¡£¡¡



¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡o¡¡¡¡TextProcessor£º¡¡A¡¡console¡¡application¡¡that¡¡will¡¡read¡¡and¡¡write¡¡a¡¡text¡¡file¡£¡¡This¡¡application¡¡¡¡

¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡will¡¡bee¡¡a¡¡prototype¡¡example¡¡of¡¡how¡¡to¡¡write¡¡a¡¡console¡­based¡¡application¡£¡¡It¡¡¡¡

¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡contains¡¡a¡¡reference¡¡to¡¡the¡¡ReaderWriter¡¡class¡¡library¡£¡¡



¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Piping¡¡Data¡¡Using¡¡a¡¡Console¡¡



¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Console¡¡applications¡¡are¡¡not¡¡very¡¡interactive£»¡¡for¡¡the¡¡most¡¡part£»¡¡they¡¡are¡¡keyboard¡­based¡¡appli

¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡cations¡£¡¡The¡¡main¡¡advantage¡¡of¡¡console¡¡applications¡¡is¡¡their¡¡ability¡¡to¡¡dynamically¡¡string¡¡data

¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡stream¡¡manipulations¡¡together£»¡¡a¡¡process¡¡called¡¡piping¡£¡¡¡¡

¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡For¡¡the¡¡lottery¡­prediction¡¡example£»¡¡TextProcessor¡¡is¡¡a¡¡console¡¡application¡¡that¡¡will¡¡be¡¡fed¡¡¡¡

¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡data¡¡by¡¡a¡¡pipe¡¡and¡¡generate¡¡data¡¡using¡¡a¡¡pipe£»¡¡as¡¡illustrated¡¡Figure¡¡10¡­1¡£¡¡A¡¡file¡¡feeds¡¡a¡¡pipe£»¡¡which¡¡¡¡

¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡feeds¡¡the¡¡console¡¡application¡¡that¡¡manipulates¡¡the¡¡data£»¡¡which¡¡then¡¡feeds¡¡an¡¡outgoing¡¡pipe¡¡¡¡

¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡that¡¡could¡¡be¡¡used¡¡to¡¡feed¡¡another¡¡console¡¡application¡£¡¡



¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Figure¡¡10¡­1¡£¡¡Pipeline¡¡approach¡¡to¡¡processing¡¡



¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡TextProcessor¡¡will¡¡read¡¡a¡¡file¡¡of¡¡lottery¡¡numbers£»¡¡clean¡¡them¡¡up¡¡£¨for¡¡example£»¡¡by¡¡removing¡¡¡¡

¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡empty¡¡lines¡¡of¡¡text£©£»¡¡and¡¡remove¡¡any¡¡duplicates¡£¡¡The¡¡console¡¡program¡¡will¡¡not¡¡worry¡¡about¡¡how¡¡¡¡

¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡the¡¡data¡¡is¡¡used¡£¡¡The¡¡main¡¡focus¡¡of¡¡TextProcessor¡¡is¡¡to¡¡read¡¡data£»¡¡clean¡¡it¡¡up£»¡¡and¡¡write¡¡out¡¡¡¡

¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡semantically¡¡correct¡¡data¡£¡¡



¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Reading¡¡Data¡¡from¡¡the¡¡Console¡¡



¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Reading¡¡data¡¡from¡¡the¡¡console¡¡can¡¡happen¡¡in¡¡two¡¡ways£º¡¡



¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡o¡¡¡¡Supply¡¡the¡¡path¡¡of¡¡the¡¡file¡¡to¡¡be¡¡read¡¡to¡¡the¡¡application¡¡as¡¡a¡¡console¡¡argument¡£¡¡¡¡



¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡o¡¡¡¡Pipe¡¡the¡¡data¡¡from¡¡another¡¡application¡¡to¡¡the¡¡console¡¡application¡£¡¡¡¡



¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Our¡¡example¡¡will¡¡be¡¡able¡¡to¡¡accept¡¡data¡¡streams¡¡in¡¡both¡¡ways¡£¡¡


¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­Page¡¡273¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­

¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡CH¡¡A¡¡PT¡¡E¡¡R¡¡¡¡¡¡1¡¡0¡¡¡¡¡¡¡ö¡¡¡¡¡¡¡¡L¡¡E¡¡A¡¡R¡¡N¡¡I¡¡N¡¡G¡¡¡¡¡¡A¡¡B¡¡O¡¡U¡¡T¡¡¡¡P¡¡E¡¡R¡¡S¡¡IS¡¡T¡¡E¡¡N¡¡CE¡¡251¡¡



Reading¡¡from¡¡a¡¡File¡¡



Reading¡¡from¡¡a¡¡file¡¡is¡¡programmatically¡¡the¡¡simplest¡¡way¡¡of¡¡obtaining¡¡the¡¡data¡£¡¡In¡¡our¡¡case£»¡¡¡¡

we¡¯ll¡¡use¡¡a¡¡mand¡­line¡¡argument¡¡to¡¡get¡¡the¡¡file¡¯s¡¡name¡£¡¡For¡¡example£»¡¡to¡¡simply¡¡load¡¡a¡¡file¡¡¡¡

named¡¡lotto¡£txt¡¡into¡¡the¡¡TextProcessor¡¡program£»¡¡the¡¡mand¡¡line¡¡is¡¡as¡¡follows£º¡¡



TextProcessor¡£exe¡¡lotto¡£txt¡¡



¡¡¡¡¡¡¡¡¡¡A¡¡single¡¡mand¡­line¡¡parameter£»¡¡¡¡lotto¡£txt£»¡¡is¡¡passed¡¡as¡¡a¡¡string¡¡to¡¡TextProcessor¡£exe¡£¡¡¡¡

mand¡­line¡¡arguments¡¡are¡¡separated¡¡from¡¡each¡¡other¡¡using¡¡spaces¡£¡¡In¡¡the¡¡context¡¡of¡¡Windows£»¡¡¡¡

this¡¡is¡¡a¡¡problem£»¡¡because¡¡paths¡¡can¡¡contain¡¡spaces¡£¡¡For¡¡example£»¡¡the¡¡following¡¡mand¡¡line¡¡¡¡

would¡¡be¡¡passed¡¡as¡¡two¡¡mand¡­line¡¡arguments¡£¡¡



TextProcessor¡£exe¡¡c£ºMy¡¡Documentsuserlotto¡£txt¡¡



¡¡¡¡¡¡¡¡¡¡The¡¡space¡¡between¡¡My¡¡and¡¡Documents¡¡tells¡¡the¡¡console¡¡that¡¡there¡¡are¡¡two¡¡arguments¡£¡¡To¡¡fix¡¡¡¡

that¡¡problem£»¡¡you¡¡need¡¡to¡¡enclose¡¡the¡¡path¡¡in¡¡quotation¡¡marks£º¡¡



TextProcessor¡£exe¡¡¡¨c£ºMy¡¡Documentsuserlotto¡£txt¡¨¡¡



¡¡¡¡¡¡¡¡¡¡The¡¡mand¡¡line¡¡may¡¡also¡¡include¡¡additional¡¡parameters£»¡¡as¡¡in¡¡this¡¡example£º¡¡



TextProcessor¡£exe¡¡¡­count¡¡10¡¡lotto¡£txt¡¡



¡¡¡¡¡¡¡¡¡¡The¡¡parameter¡¡¡¡¡­count¡¡expects¡¡a¡¡value£»¡¡which¡¡is¡¡¡¡10¡¡in¡¡this¡¡example¡£¡¡Traditionally£»¡¡options¡¡¡¡

are¡¡specified¡¡using¡¡key/value¡¡pairs£»¡¡because¡¡console¡¡applications¡¡allow¡¡the¡¡options¡¡to¡¡be¡¡placed¡¡¡¡

in¡¡any¡¡order¡£¡¡The¡¡exception¡¡is¡¡the¡¡last¡¡argument£»¡¡which¡¡is¡¡usually¡¡the¡¡data¡¡on¡¡which¡¡to¡¡operate¡£¡¡



¡öNote¡¡¡¡For¡¡more¡¡information¡¡about¡¡the¡¡permutations¡¡and¡¡binations¡¡of¡¡mand¡¡lines£»¡¡and¡¡what¡¡a¡¡¡¡

console¡¡can¡¡do£»¡¡see¡¡http£º//en¡£wikipedia¡£org/wiki/mand_line_interface¡£¡¡



Piping¡¡Data¡¡



Another¡¡solution¡¡is¡¡to¡¡use¡¡a¡¡mand¡¡that¡¡reads¡¡the¡¡file¡¡and¡¡pipes¡¡the¡¡contents¡¡of¡¡the¡¡file¡¡to¡¡¡¡

a¡¡stream¡£¡¡The¡¡console¡¡application¡¡reads¡¡the¡¡stream¡¡and¡¡processes¡¡the¡¡data¡£¡¡The¡¡following¡¡is¡¡¡¡

an¡¡example¡¡of¡¡a¡¡mand¡¡line¡¡that¡¡pipes¡¡data¡£¡¡The¡¡pipe¡¡operation¡¡is¡¡indicated¡¡by¡¡the¡¡pipe¡¡¡¡

character¡¡£¨¡¡£ü£©¡£¡¡



type¡¡lotto¡£txt¡¡£ü¡¡TextProcessor¡£exe¡¡



¡¡¡¡¡¡¡¡¡¡In¡¡the¡¡example£»¡¡the¡¡mand¡¡type£»¡¡which¡¡ordinarily¡¡reads¡¡a¡¡file¡¡and¡¡displays¡¡it¡¡on¡¡the¡¡¡¡

console£»¡¡reads¡¡in¡¡the¡¡lotto¡£txt¡¡file¡¡and¡¡pipes¡¡it¡¡to¡¡the¡¡console¡£¡¡Then¡¡TextProcessor¡£exe¡¡reads¡¡¡¡

from¡¡the¡¡console£»¡¡processes¡¡the¡¡data£»¡¡and¡¡pipes¡¡it¡¡back¡¡to¡¡the¡¡console¡£¡¡¡¡


¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­Page¡¡274¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­

252¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡CH¡¡AP¡¡T¡¡E¡¡R¡¡¡¡¡¡1¡¡0¡¡¡¡¡¡¡ö¡¡¡¡¡¡¡¡L¡¡E¡¡A¡¡R¡¡N¡¡I¡¡N¡¡G¡¡¡¡¡¡A¡¡B¡¡OU¡¡T¡¡¡¡¡¡P¡¡E¡¡R¡¡S¡¡IS¡¡TE¡¡N¡¡CE¡¡



¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡For¡¡the¡¡scope¡¡of¡¡the¡¡TextProcessor¡¡application£»¡¡the¡¡mand¡¡lines¡¡listed¡¡in¡¡Table¡¡10¡­1¡¡¡¡

¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡are¡¡valid¡£¡¡



¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Table¡¡10¡­1¡£¡¡¡¡TextProcessor¡¡mand¡¡Lines¡¡



¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡mand¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Description¡¡



¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡TextProcessor¡£exe¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Without¡¡any¡¡arguments£»¡¡the¡¡data¡¡will¡¡be¡¡read¡¡from¡¡the¡¡console¡¡¡¡

¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡pipe¡¡and¡¡written¡¡back¡¡to¡¡the¡¡console¡¡pipe¡£¡¡



¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡TextProcessor¡£exe¡¡£§filename£§¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Using¡¡one¡¡argument£»¡¡the¡¡data¡¡will¡¡be¡¡read¡¡from¡¡the¡¡specified¡¡¡¡

¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡file¡¡and¡¡written¡¡to¡¡the¡¡console¡¡pipe¡£¡¡



¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡TextProcessor¡£exe¡¡¡­out¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Using¡¡the¡¡¡¡¡­out¡¡parameter¡¡with¡¡two¡¡arguments£»¡¡the¡¡first¡¡file¡¡¡¡

¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡£§filename£§¡¡£§filename£§¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡specified¡¡is¡¡where¡¡the¡¡data¡¡will¡¡be¡¡written£»¡¡and¡¡the¡¡last¡¡file¡¡¡¡

¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡specified¡¡is¡¡the¡¡file¡¡to¡¡read¡£¡¡



¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡TextProcessor¡£exe¡¡¡­out¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Using¡¡the¡¡¡¡¡­out¡¡parameter¡¡with¡¡one¡¡argument£»¡¡the¡¡data¡¡is¡¡read¡¡¡¡

¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡£§filename£§¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡from¡¡the¡¡console¡¡pipe¡¡and¡¡written¡¡to¡¡a¡¡file¡£¡¡Notice¡¡that¡¡the¡¡¡¡

¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡output¡¡file¡¡name¡¡is¡¡explicitly¡¡defined£»¡¡otherwise£»¡¡if¡¡a¡¡single¡¡¡¡

¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡identifier¡¡is¡¡given£»¡¡the¡¡console¡¡application¡¡would¡¡not¡¡know¡¡¡¡

¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡whether¡¡you¡¡are¡¡reading¡¡or¡¡writing¡¡to¡¡a¡¡file¡£¡¡



¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡TextProcessor¡£exe¡¡¡­help¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Outputs¡¡to¡¡the¡¡console¡¡how¡¡to¡¡use¡¡TextProcessor¡£¡¡The¡¡help¡¡is¡¡¡¡

¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡also¡¡generated¡¡when¡¡the¡¡parameters¡¡are¡¡specified¡¡incorrectly¡£¡¡



¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Building¡¡a¡¡Shell¡¡



¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Implementing¡¡TextProcessor¡¡from¡¡an¡¡architectural¡¡perspective¡¡involves¡¡writing¡¡two¡¡pieces¡¡of¡¡¡¡

¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡code£º¡¡a¡¡module¡¡to¡¡read/write¡¡to¡¡a¡¡stream¡¡and¡¡a¡¡module¡¡to¡¡process¡¡the¡¡stream¡£¡¡By¡¡separating¡¡the¡¡¡¡

¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡two¡¡modules£»¡¡the¡¡processor¡¡is¡¡not¡¡dependent¡¡on¡¡where¡¡the¡¡data¡¡originated¡£¡¡This¡¡also¡¡allows¡¡the¡¡¡¡

¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡developer¡¡to¡¡define¡¡an¡¡interface¡¡that¡¡is¡¡implemented¡¡to¡¡process¡¡the¡¡data¡£¡¡¡¡



¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Assembling¡¡the¡¡Pieces¡¡Using¡¡an¡¡Echo¡¡Program¡¡



¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡The¡¡lottery¡­prediction¡¡program¡¡is¡¡a¡¡case¡¡where¡¡I¡¡know¡¡something¡¡about¡¡the¡¡topic£»¡¡but¡¡not¡¡all¡¡¡¡

¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡the¡¡details¡£¡¡Developing¡¡code¡¡is¡¡a¡¡constant¡¡challenge¡¡of¡¡figuring¡¡out¡¡which¡¡APIs¡¡to¡¡use¡£¡¡In¡¡this¡¡¡¡

¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡type¡¡of¡¡situation£»¡¡so¡¡that¡¡I¡¡don¡¯t¡¡get¡¡bogged¡¡down¡¡in¡¡API¡¡hunting£»¡¡I¡¡first¡¡assemble¡¡all¡¡of¡¡the¡¡pieces¡¡¡¡

¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡I¡¡need¡¡for¡¡the¡¡application¡£¡¡I¡¡develop¡¡what¡¡I¡¡call¡¡an¡¡echo¡¡program¡£¡¡An¡¡echo¡¡program¡¡has¡¡all¡¡of¡¡its¡¡¡¡

¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡pieces¡¡in¡¡place£»¡¡and¡¡when¡¡called¡¡will¡¡seem¡¡like¡¡it¡¡functions¡£¡¡The¡¡echo¡¡part¡¡

·µ»ØĿ¼ ÉÏÒ»Ò³ ÏÂÒ»Ò³ »Øµ½¶¥²¿ ÔÞ£¨2£© ²È£¨2£©

Äã¿ÉÄÜϲ»¶µÄ