±ÍÇÏ´Â ¼Õ´Ô À̽ʴϴÙ
·Î±×ÀÎ
ȸ¿ø°¡ÀÔ
  
ÇÁ·ÎÁ§Æ® °Ô½ÃÆÇ
°øÁö»çÇ×
ÅõÇ¥°Ô½ÃÆÇ
µ¨¸¶´ç¼Ò°³
µ¨ÆÄÀÌ Á¦ÀÛ ÇÁ·Î±×·¥
°³¼± °ÇÀÇÇÔ
  µ¨¸¶´ç °ø½Ä ÀºÇà°èÁÂ
  ÇϳªÀºÇà 227-910235-83607
  ¿¹±ÝÁÖ ÀÌ»ó±¹(¿î¿µÁø)
È«º¸¸¶´ç È«º¸¸¶´ç ÀÔ´Ï´Ù.
±Û³»¿ë - È«º¸¸¶´ç
 ¡Ü µ¨ÆÄÀÌ ÄÚµù °¡À̵å for µ¨¸¶´ç ( version 1.0 )
°ü¸®ÀÚ
(delmadang)
2008-01-04 ¿ÀÀü 11:04:36
1868ȸ Á¶È¸


µî·ÏµÈ ÆÄÀÏÀÌ ¾ø½À´Ï´Ù.
µ¨¸¶´ç ÄÚµù Ç¥ÁØ

µ¨ÆÄÀÌ ÄÚµù °¡À̵å for µ¨¸¶´ç ( version 1.0 )

 

¿ä¾à

 

    º» ¹®¼­´Â µ¨ÆÄÀÌ ÄÚµå Çü½Ä¿¡ ´ëÇÑ Borland Ç¥ÁØ ½ºÅ¸ÀÏ ¹®¼­(¸µÅ©)¸¦ ¹ÙÅÁÀ¸·Î ¸¸µé¾îÁ³´Ù.

    µ¨¸¶´ç Ç¥ÁØÀÇ ¿øÄ¢Àº ¼Ò½º¿¡ Æ÷ÇԵȠ³í¸®¸¦ º¸´Ù ¸íÈ®ÇÏ°Ô Ç¥ÇöÇϱâ À§ÇÔÀÌ´Ù.

    µû¶ó¼­ º¼·£µå Ç¥Áذú´Â ´Ù¸£°Ô ½ºÅ¸ÀÏÀÌ °­¿äµÇÁö´Â ¾ÊÀ¸¸ç,

    ´©±¸³ª Äڵ带 ÀÌÇØÇϱ⠽±°í, Äڵ忡 Ç¥ÇöµÈ ³í¸®°¡ ¸íÈ®ÇÑ ¹üÀ§³»¿¡¼­ °³ÀÎÀûÀÎ ÃëÇâ¿¡ µû¶ó º¯°æÇÒ ¼ö ÀÖÀ½À» ¸í½ÃÇÑ´Ù.

 

º¯°æ³»¿ª

 

¸ñÀû

 

    µ¨ÆÄÀÌÀÇ ¿ÀºêÁ§Æ® ÆÄ½ºÄ® ¾ð¾î´Â ¾Æ¸§´Ù¿ï Á¤µµ·Î Àß µðÀÚÀÎµÈ ¾ð¾îÀ̸ç, °¡Àå Å« ÀåÁ¡Áß¿¡ Çϳª°¡ Àб⠽±´Ù´Â Á¡ÀÌ´Ù.

    º» Ç¥ÁØÀÇ ¸ñÀûÀº ÀÌ·¯ÇÑ µ¨ÆÄÀÌ - ¿ÀºêÁ§Æ® ÆÄ½ºÄ® ÄÚµåÀÇ ÀåÁ¡À» ´õ¿í ±Ø´ëÈ­½ÃŰ´Â µ¥ ÀÖ´Ù.

    ¸¹Àº °³¹ßÀÚµéÀÌ »ç¿ëÇÏ´Â ¹æ½ÄÀ» Á¾ÇÕ´Ü °£´ÜÇÑ Ç¥ÁØ ¹æ½ÄÀ» µû¸¥´Ù¸é, Á» ´õ º¸±â ÁÁ°í ½¬¿î Äڵ尡 »ý±æ °ÍÀ̸ç

    µð¹ö±ë Áֱ⳪ À¯Áöº¸¼ö ±â°£À» ÁÙÀÏ ¼ö ÀÖ°í, ¼Ò½º ÄÚµåÀÇ °ª¾îÄ¡¸¦ ³ôÀÏ ¼ö ÀÖÀ» °ÍÀÌ´Ù.

     

    ¹°·Ð ÄÚµù ¹æ½ÄÀ̳ª °³¹ß ÀÛ¾÷ ½ºÅ¸ÀÏÀº °³¹ßÀÚ ÀÚ½ÅÀÇ ÀÔ¸À¿¡ µû¶ó ´Ù¸¥ ¹®Á¦ÀÌ´Ù.

    ±×·³¿¡µµ ºÒ±¸Çϰí ÀÌ·¸°Ô ÄÚµù Ç¥ÁØ ½ºÅ¸ÀÏÀ» ÁغñÇÏ´Â °ÍÀº ³ª¸§ÀÇ ¹æ½ÄÀÌ ¿Ç°í-±×¸§À» µûÁöÀÚ´Â °ÍÀÌ ¾Æ´Ï¶ó,

    ´ëºÎºÐÀÇ °³¹ßÀÚµéÀÌ »ç¿ëÇϴ ǥÁØÀ» ¸¸µé¾î È¿À²¼ºÀ» ³ôÀÌÀÚ´Â °ÍÀÌ´Ù.

    Àΰ£Àº Ç¥ÁØÀ» µû¶ó »ç¿ëÇϸ鼭 ÅøÀÌ ´õ Ä£¼÷ÇØÁö¸ç, Àß ¾²´Â ÆÐÅϵéÀ» º¸´Ù ºü¸£°í Á¤È®ÇϰԠÀνÄÇÏ´Â ½À¼ºÀÌ ÀÖ´Ù.

     

    ¾Æ¸¶µµ ÀÌ·¯ÇÑ Ç¥ÁØ ¹æ½ÄÀÌ ³¸¼³´õ¶óµµ Ç¥ÁØ¿¡ µû¶ó¼­ »ç¿ëÇÏ´Ùº¸¸é Æí¸®ÇÔÀ» ´À³¢°Ô µÉ °ÍÀÌ´Ù.

    ±×·¡µµ ÀÚ½ÅÀÇ ¹æ½ÄÀ» Áö۰íÀÚ ÇÏ´Â »ç¶÷µéÀº, Àû¾îµµ ÀÌ °÷ µ¨¸¶´ç³ª °øÀ¯ ÀÚ·á·Î ¿Ã¸± °æ¿ì¿¡´Â

    ´Ù¸¥ »ç¶÷µé°úÀÇ °øÀ¯ Â÷¿ø¿¡¼­ ¹ü¿ëÀûÀΠǥÁØ ¹æ½ÄÀ» »ç¿ëÇßÀ¸¸é ÇÑ´Ù.

 

¶óÀ̼¾½º

 

    ÄÚµù Ç¥ÁØ¿¡ ´ëÇÑ ¶óÀ̼¾½º °°Àº °ÍÀº ´ç¿¬È÷ ¾ø´Ù.

    ´Ù¸¸ º» ¹®¼­ ÀÚü¸¦ ¹«´Ü ¹èÆ÷Çϰųª º¹Á¦Çؼ­ »ç¿ëÇÏ¸é ¾ÈµÇ°í, ¹Ýµå½Ã µ¨¸¶´ç¿¡¼­ ¸¸µç Ç¥ÁØ ¹®¼­ÀÓÀ» ¹àÇô¾ß ÇÑ´Ù.

 

Â÷·Ê

 

 

 

1. ±âº»±¸¼º

    1.1 µé¿©¾²±â

      ºí·°/·¹º§°£ÀÇ È®Àΰ¡´ÉÇϰí ÀÏÁ¤ÇÏ°Ô ÁöÄÑÁø´Ù¸é, µé¿©¾²±â¿¡ ´ëÇÑ Á¦¾àÀº ÀüÇô µÎÁö ¾Ê±â·Î ÇÑ´Ù.

      ´Ü, º¼·£µå ¹æ½ÄÀÎ ·¹º§¸¶´Ù 2Ä­ÀÇ Åǰ£°ÝÀ» ÃßõÇÑ´Ù.

       

      ƯÈ÷ Á¶°Ç¹®À̳ª Ãâ·Â¹®ÀÇ ³»¿ëÀÌ ±æ¾îÁ®¼­ ¿·ÁÙ·Î ±æ¾îÁø °æ¿ì, ´ÙÀ½ÁÙ·Î ³»·Á¾²°í µé¿©¾²±âÇÏ¿© ±¸ºÐÇÒ ¼ö ÀÖµµ·Ï ÇÑ´Ù.

     

    1.2 ÁÖ¼®

      ±âº»ÀûÀÎ ÁÖ¼®Àº Áß°ýÈ£ { } ·Î ÇÑ´Ù.

      ºÎ¼öÀûÀ¸·Î (* *) ¹æ½ÄÀº °³¹ßÁß¿¡ Àӽ÷Π»ç¿ëµÇ´Â ÁÖ¼® ¿ëµµ·Î¸¸ »ç¿ëÇÑ´Ù.

      // ¹æ½Ä ÁÖ¼®Àº ÇÑ ÁÙ¸¸ ÁÖ¼®Ã³¸® ÇÒ ¶§ »ç¿ëÇϵµ·Ï ÇÑ´Ù.

       

      À¯´Ö ÆÄÀÏ °¡Àå À§¿¡´Â ´ÙÀ½°ú °°Àº ÆÄÀÏ Çì´õ¸¦ ºÙÀδÙ.

      {***************************************************************}
      {                                                               }
      {  This line describes the purpose of the unit                  }
      {                                                               }
      {  Copyright (c) 2001 godrm@netsgo.com                          }
      {                                                               }
      {     All rights reserved.                                      }
      {                                                               }
      {***************************************************************}
      

       

    1.3 ÄÁµð¼Ç ¼³Á¤

      ¿ÀºêÁ§Æ® ÆÄ½ºÄ® ÄÄÆÄÀÏ·¯ Áö½ÃÀÚ¿¡ »ç¿ëµÇ´Â °Í°ú ¸¶Âù°¡Áö·Î { } ·Î ÄÁƼ¼Ç ¼³Á¤À» ÇÑ´Ù.

        if ... then
        begin
          {$IFDEF VER90}
            raise Exception.CreateRes(SError);
          {$ELSE}
            raise Exception.Create(SError);
          {$ENDIF VER90}
        end;
      

     

    1.4 ºó°ø°£

      ÇÑÁÙ ¶ç¿ì±â(Blank Lines)´Â ÀúÀÛ±Ç ÁÖ¼®À̳ª, ÆÐŰÁö ¼±¾ð, Ŭ·¡½º ¼±¾ð, ¸Þ¼Òµå ¼±¾ðµé »çÀÌ¿¡ ÇÑ´Ù.

      ´ÙÀ½ÀÇ °æ¿ì¿¡´Â ºó°ø°£À» ÁÖÁö ¾Ê´Â´Ù.

      (1) ¸Þ¼Òµå À̸§°ú ¿©´Â °ýÈ£ »çÀÌ

      (2) .(Á¡) ¿¬»êÀÚ ¾ÕµÚ

      (3) ´ÜÇ׿¬»çÀÚ¿Í ¿¬»ê°ª »çÀÌ

      (4) Çüº¯È¯À» À§ÇÑ Çü°ú º¯¼ö

      (5) ¿©´Â ¼Ò°ýÈ£ '(' ´ÙÀ½°ú ´Ý´Â ¼Ò°ýÈ£ ')' ¾Õ

         ´Ü, ()¾È¿¡¼­ ÇÔ¼ö°¡ µé¾î°¥ °æ¿ì³ª °­Á¶ÇÒ °æ¿ì´Â ¶ç¾î½áµµ ¹«¹æÇÏ´Ù.

      (6) ¿©´Â ´ë°ýÈ£ '[' ´ÙÀ½°ú ´Ý´Â ¼Ò°ýÈ£ ']' ¾Õ

      (7) ¼¼¹ÌÄÝ·Ð ¾Õ

       

        //CORRECT
        function TMyClass.MyFunc(var Value: Integer);
        MyPointer := @MyRecord;
        MyClass := TMyClass(MyPointer);
        MyInteger := MyIntegerArray[5];
        ShowMessage( IntToStr(MyInteger) );
      

       

        //INCORRECT
        function TMyClass.MyFunc( var Value: Integer ) ;
        MyPointer := @ MyRecord;
        MyClass := TMyClass ( MyPointer ) ;
        MyInteger := MyIntegerArray [ 5 ] ;

     

    1.5 ±âŸ( ÅäÅ« ºÐ¸®ÀÚ, ¿¬»êÀÚ, begin-end )

      ´ëºÎºÐÀÇ ÅäÅ« ºÐ¸®ÀÚ³ª ¿¬»êÀÚ´Â ºÙ¿©¾²´Â °ÍÀ» ¿øÄ¢À¸·Î ÇÑ´Ù.

      ´Ü, »çÄ¢¿¬»ê( +, -, *, /, div, mod )¿Í ºÎµîÈ£( >, <, = ) ±×¸®°í ´ëÀÔ¿¬»êÀÚ( := )´Â ¶ç¾î¾´´Ù.

       

      begin-end ´Â °°Àº ·¹º§¿¡ ¸ÂÃç ¾´´Ù.

      ´Ü, if-else ¹®°ú »ç¿ëµÇ´Â °æ¿ì¿¡´Â ¿¹¿Ü¸¦ µÐ´Ù. (3.5Àå (1)if¹® ÂüÁ¶)

        for I := 0 to 10 do begin // Incorrect, begin on same line as for
        for I := 0 to 10 do       // Correct, begin appears on a separate line
        begin
      

       

      ºí·°¹®³»ÀÇ ¸¶Áö¸· ¸í·ÉÁÙÀÇ »ý·Â°¡´ÉÇÑ ¼¼¹ÌÄݷеµ Âï¾îÁÖ´Â °ÍÀ» ¿øÄ¢À¸·Î ÇÑ´Ù.

      begin
        MyStatement;
        MyNextStatement;
        MyLastStatement;   // semicolon optional
      end;

     

2. ÆÄÀÏÀ̸§

    ÆÄÀÏÀ̸§¿¡´Â InfixCaps ȤÀº Camel Caps ¹æ½ÄÀÎ ´Ü¾î ù ¾ËÆÄºª¸¸ ´ë¹®ÀÚ¸¦ ¾²´Â ¹æ½ÄÀ¸·Î ÇÑ´Ù.

    ´Ü, È®ÀåÀÚ´Â ¼Ò¹®ÀÚ·Î ÇÑ´Ù.

     

    2.1 ÇÁ·ÎÁ§Æ® ÆÄÀÏ

      ÇÁ·ÎÁ§Æ®¸íÀº µÉ ¼ö ÀÖÀ¸¸é ÇÁ·ÎÁ§Æ®ÀÇ ³»¿ëÀ» ¼³¸íÇϵµ·Ï ¸¸µé¸ç,

      Á¤ÇØÁø ÇÁ·ÎÁ§Æ® ÄÚµå¸íÀÌ ÀÖÀ» °æ¿ì¿¡´Â ÄÚµå¸íÀ» »ç¿ëÇÑ´Ù.

       

    2.2 Æû ÆÄÀÏ

      Æû ÆÄÀϸíÀº ±â´Éº° ȤÀº ±¸¼ºº°·Î ºÙÀÏ ¼ö ÀÖ´Â ±â´É¼ºÀ̸§°ú FormÀ̶ó´Â postfix¸¦ »ç¿ëÇÑ´Ù.

      ( ½ÇÁ¦·Î ÆûÀÇ .dfm ÆÄÀÏÀº À¯´Ö ÆÄÀϸíÀ» ÀúÀåÇÒ ¶§, °°Àº À̸§À¸·Î ±×´ë·Î ÀúÀåµÈ´Ù. )

      À¯ÀÇ»çÇ×: Æû ÆÄÀϸíÀº µðÀÚÀÎÇÑ Æû Ŭ·¡½ºÀÇ ÀνºÅϽº¸íÀÌ ¾Æ´Ï´Ù.

      ÆûÀÇ ÀνºÅϽº´Â TForm Ŭ·¡½º¸íÀΠFormÀ̶ó´Â prefix¸¦ ºÙÀδÙ. (3.8 ÀνºÅϽº¸í ÂüÁ¶)

      Æû ¼³¸í

      Æû ÆÄÀϸí

      About Form

      AboutForm.dfm

      Main Form

      MainForm.dfm

     

    2.3 À¯´Ö ÆÄÀÏ

      µ¨ÆÄÀÌ ÆûÀÇ À¯´Ö À̸§Àº ÀÚµ¿ÀûÀ¸·Î Æû ÆÄÀϰú °°Àº À̸§À» »ç¿ëÇÑ´Ù. (2.2 Æû ÆÄÀÏÀ̸§ ÂüÁ¶),

      ¹Ý¸é¿¡ ÀÏ¹Ý À¯´ÖÀÏ °æ¿ì¿¡´Â UnitÀ̶ó´Â postfix¸¦ »ç¿ëÇÑ´Ù.

      ´Ü, C/C++ÀÇ Çì´õÆÄÀÏÀ» º¯È¯ÇÏ´Â °æ¿ì¿¡´Â È®ÀåÀÚ¸¦ Á¦¿ÜÇÑ ÆÄÀϸíÀ» ±×´ë·Î »ç¿ëÇÑ´Ù.

      À¯´Ö ¼³¸í

      À¯´Ö ÆÄÀϸí

      About Form Unit

      AboutForm.pas

      Service Unit

      ServiceUnit.pas

      Windows.c

      Windows.pas

       

    2.4 µ¥ÀÌÅ͸ðµâ ÆÄÀÏ

      µ¥ÀÌÅÍ ¸ðµâÀÇ ÆÄÀÏ¸í¿¡´Â DMÀ̶ó´Â postfix¸¦ »ç¿ëÇÑ´Ù.

      DM ¼³¸í

      DM ÆÄÀϸí

      Client Data Module

      ClientDM.dfm

      Customer Data Module

      CustomerDM.dfm

     

    2.5 ÆÐŰÁö ÆÄÀÏ

      ÆÐŰÁö ÆÄÀÏ¸í¿¡´Â ±¸ºÐÇÒ ¼ö ÀÖ´Â prefix¿¡

      µðÀÚÀΟÀÓÆÐ۱â¿Í ·±Å¸ÀÓÆÐŰÁö¸¦ ±¸ºÐÇÒ ¼ö ÀÖ´Â infix¿Í

      Áö¿øÇÏ´Â µ¨ÆÄÀ̹öÀüÀ» ³ªÅ¸³»±â À§ÇÑ D4, D5, D6¿Í °°Àº postfix·Î ±¸¼ºÇÑ´Ù.

      "iiilibvv.pkg" - design package

      "iiistdvv.pkg" - runtime package

     

3. ¿ÀºêÁ§Æ®ÆÄ½ºÄ®

    3.1 ¿¹¾à¾î

      ¸ðµç ¿ÀºêÁ§Æ®ÆÄ½ºÄ® ¿¹¾à¾î´Â ¼Ò¹®ÀÚ·Î ¾²µµ·Ï ÇÑ´Ù.

     

    3.2 ÇÔ¼ö¸í

      ÇÔ¼ö¸íÀº µ¿»ç(+¸ñÀû¾î) ÇüÅ·Π»ç¿ëÇϸç, °ªÀ» °¡Á®¿À´Â °æ¿ì Get, °ªÀ» ¼³Á¤ÇÏ´Â °æ¿ì SetÀ» ¾´´Ù.

      InfixCaps ¹æ½ÄÀ» »ç¿ëÇÑ´Ù.

        procedure ThisIsMuchMoreReadableRoutineName;
      

       

        procedure FormatHardDrive;
      

       

        procedure SetUserName;
      

       

        function GetUserName: string;
      

       

    3.3 º¯¼ö¸í

      º¯¼ö¸íÀº ¸í»ç ÇüÅ·Π»ç¿ëÇϸç, InfixCaps ¹æ½ÄÀ» »ç¿ëÇÑ´Ù.

      º¯¼ö¼±¾ðÀ» ÇÒ ¶§´Â °°Àº Çü³¢¸®´Â º¹¼ö¼±¾ðÇϸç, ´Ù¸¥ Çü³¢¸®´Â ´Ü¼ö¼±¾ð¸¸ ÇÑ´Ù.

      µ¨ÆÄÀÌ¿¡¼­´Â WIN32 Çü½ÄÀÎ Çë°¡¸®¾ð Ç¥±â¹ýÀ» ±ÇÀåÇÏÁö ¾Ê´Â´Ù.

      ÇÏÁö¸¸, WIN32 API¸¦ »ç¿ëÇÒ °æ¿ì³ª, VisualStudio¿Í °°Àº ´Ù¸¥ Åø°úÀÇ ¿¬µ¿À» À§Çؼ­´Â »ç¿ëÇØµµ ¹«¹æÇÏ´Ù.

        var
          nLoop, MyNumber: Integer; // Correct
          lpstrMyString: String; // Incorrect
      

       

      Ŭ·¡½ºÀÇ ¸â¹ö º¯¼öÀÏ °æ¿ì, F(Field) prefix¸¦ ÁÖ·Î »ç¿ëÇÑ´Ù.

      Çʿ信 µû¶ó¼­ P(Pointer-Æ÷ÀÎÅÍÇüº¯¼ö), G(Global-Àü¿ªº¯¼ö), L(Local-Áö¿ªº¯¼ö), X(temp-Àӽú¯¼ö), A(argument-ÇÔ¼öÆÄ¶ó¹ÌÅÍ)µîÀÇ prefix¸¦ ºÙÀÏ ¼ö ÀÖ´Ù.

     

    3.4 µ¥ÀÌÅÍŸÀÔ

      ³»ºÎ Å×ÀÌÅÍÇüÀº ¼Ò¹®ÀڷΠǥ±âÇϸç, WIN32 API µ¥ÀÌÅÍÇüÀº ´ë¹®ÀڷΠǥ±âÇÑ´Ù.

        var
          MyString: string;  // reserved word
          WindowHandle: HWND; // Win32 API type
          I: Integer;         // type identifier introduced in System unit
      

       

      ¿­°ÅÇüÀº ¼±¾ðÇÒ ¶§´Â T(Type) prefix¸¦ ºÙÀ̸ç, ¿­°ÅÇü ³»ºÎ ¸ñ·Ï¿¡´Â ¿­°ÅÇü¿¡ ´ëÇÑ ±¸ºÐÀÚ(ȤÀº ¾àÀÚ)¸¦ 2-3±ÛÀÚ prefix·Î ºÙÀδÙ. 

        TSongType = (stRock, stClassical, stCountry);
      

       

      ¹è¿­ÇüÀÇ °æ¿ì¿¡´Â T prefix, Array postfix¸¦ ºÙÀ̸ç, 

      ¶ÇÇÑ µ¥ÀÌÅÍÀÇ Æ÷ÀÎÅÍÇüÀº P(Pointer) prefix¸¦ µ¡ºÙÀδÙ.

        type
          PCycleArray = ^TCycleArray;
          TCycleArray = array[1..100] of Integer;
      

       

      ·¹ÄÚµåÀÇ °æ¿ì¿¡µµ T prefix¸¦ »ç¿ëÇϸç, ·¹ÄÚµå ³»ºÎ º¯¼ö¿¡´Â ºÙÀÌÁö ¾Ê´Â´Ù. 

        type
          PEmployee = ^TEmployee;
          TEmployee = record
            Name: string;
            Rate: Double;
          end;
      

     

    3.5 ±¸¹®

      (1) if¹®

      if¹®Àº Àû¾îµµ µÎ ÁÙ·Î ³»·Á¾´´Ù.

      ´Ù¸¸ ¼öÇ๮ÀÌ ÂªÀ¸¸é ÇÑ ÁÙ·Î ½áµµ ¹«¹æÇÏ´Ù.

        // CORRECT
        if A < B then DoSomething; 
        
        // CORRECT
        if A < B then 
          DoSomething;
      

       

      if-else¹®ÀÇ °æ¿ì ¼Ò½ºÀÇ ³í¸® ±¸Á¶¸¦ Ç¥ÇöÇÏ´Â ¼ö´ÜÀÌ´Ù.

      °¢ ³í¸® ºí·Ï°£ÀÇ °ü°è°¡ ¸íÈ®ÇÏ°Ô ±¸ºÐµÈ´Ù¸é, ÀÚÀ¯·Î¿î ·¹º§°£ÀÇ µé¿©¾²±â¿Í begin-end Ç¥½Ã°¡ Çã¿ëµÈ´Ù.

      ±×¸®°í ƯÈ÷ if¹®ÀÌ ¹Ýº¹µÇ¼­ ±æ °Ô »ç¿ëµÉ °æ¿ì begin-end¸¦ Ç¥½ÃÇÏ¿© ¹üÀ§¸¦ ¸íÈ®ÇÏ°Ô ÇÑ´Ù.

      °¡´ÉÇϸé if-else¸¦ ¹Ýº¹Çؼ­ »ç¿ëÇÏÁö ¾Êµµ·Ï Çϸç, µÉ ¼ö ÀÖÀ¸¸é case¹®À¸·Î ±¸¼ºÇÑ´Ù.

        // INCORRECT
        if A < B then     
        if C < B then 
          DoSomething
        else if D < B then 
          DoSomething;
        // CORRECT
        if A < B then     
        begin 
          if C < B then 
            DoSomething;
        end
        else if D < B then 
          DoSomething;

       

      if¹®¾È¿¡ if¹®ÀÇ ±¸Á¶°¡ 5´Ü°èÀÌ»ó µé¾î°¡Áö ¾Êµµ·Ï Äڵ带 °£°áÈ­ÇÑ´Ù.

      ¿©·¯ Á¶°ÇµéÀº ³ª¿­ÇÒ ¶§´Â ¿ÞÂʺÎÅÍ ºóµµ°¡ ³ô°í, °¡´É¼ºÀÌ ³ôÀº °ÍÀ» ¼±ÅÃÇÑ´Ù.

        if Condition1 and Condition2 and Condition3 then
      

       

      (2) case¹®

      case¹®Àº ¼ø¼­°¡ ÀÖ´Â µ¥ÀÌÅÍÇü¿¡¸¸ »ç¿ëÇÒ ¼ö ÀÖ´Ù.

      case-else¹®µµ if-else¿Í °°ÀÌ ³í¸® ºí·Ï°£ÀÌ ¸íÈ®ÇÏ°Ô ±¸ºÐµÇ´Â ¹üÀ§¿¡¼­ µé¿©¾²±â°¡ Çã¿ëµÈ´Ù.

       

      if¹®°ú ¸¶Âù°¡Áö·Î Á߿䵵¿Í ºóµµ°¡ ³ôÀº °ÍÀÌ À­ÂÊ¿¡ ÀÖµµ·Ï ÇÑ´Ù.

      °¢ case¸¶´Ù 4-5ÁÙÀ» ³Ñ¾î°¡Áö ¾Êµµ·Ï Çϸç, ±æ¾îÁú °æ¿ì µû·Î ÇÔ¼ö¸¦ ÀÛ¼ºÇϵµ·Ï ÇÑ´Ù.

        // CORRECT
        case Control.Align of
          alLeft, alNone: NewRange := Max(NewRange, Position);
          alRight: Inc(AlignMargin, Control.Width);
        end;
       
        // CORRECT
        case x of
          csStart:
            begin
              j := UpdateValue;
            end;
          csBegin: x := j;
          csTimeOut:
            begin
              j := x;
              x := UpdateValue;
            end;
         end;
            
        // CORRECT
        case ScrollCode of
          SB_LINEUP, SB_LINEDOWN:
          begin
            Incr := FIncrement div FLineDiv;
            FinalIncr := FIncrement mod FLineDiv;
            Count := FLineDiv;
          end;
          SB_PAGEUP, SB_PAGEDOWN:
          begin
            Incr := FPageIncrement;
            FinalIncr := Incr mod FPageDiv;
            Incr := Incr div FPageDiv;
            Count := FPageDiv;
          end;
          else
            Count := 0;
            Incr := 0;
            FinalIncr := 0;
        end;
        
        // CORRECT (º¼·£µå ½ºÅ¸ÀÏ)
        case ScrollCode of
          SB_LINEUP, SB_LINEDOWN:
            begin
              Incr := FIncrement div FLineDiv;
              FinalIncr := FIncrement mod FLineDiv;
              Count := FLineDiv;
            end;
          SB_PAGEUP, SB_PAGEDOWN:
            begin
              Incr := FPageIncrement;
              FinalIncr := Incr mod FPageDiv;
              Incr := Incr div FPageDiv;
              Count := FPageDiv;
            end;
        else
          Count := 0;
          Incr := 0;
          FinalIncr := 0;
        end;  
      

        

      (3) while¹® (repeat¹®)

      while¹®¿¡¼­´Â °¡´ÉÇÏ¸é ·çÇÁÁß¿¡ ºüÁöÁö¾Ê°í, loopÁ¶°ÇÀ¸·Î¸¸ Á¾·áµÇµµ·Ï ±¸¼ºÇÑ´Ù.

       // INCORRECT
        while x < j  do begin
          DoSomething; 
          DoSomethingElse;
        end;
        // CORRECT
        while x < j do 
        begin
          DoSomething; 
          DoSomethingElse;
        end;
        
        // CORRECT
        repeat
          x := j;
          j := UpdateValue;
        until j > 25;
        
      

       

      (4) for¹®

      ¸¸¾à 1¾¿ Áõ°¡°¡ ¾Æ´Ñ °æ¿ì¶ó¸é, while¹®À» ÀÌ¿ëÇØ¼­ ¸¶Áö¸·°ªºÎÅÍ °Å²Ù·Î ·çÇÁ¸¦ µ¹µµ·Ï ÇÑ´Ù.

        // INCORRECT
        for i := 0 to 10 do begin
          DoSomething; 
          DoSomethingElse;
        end;
        
        // CORRECT
        for i := 0 to 10 do 
        begin
          DoSomething; 
          DoSomethingElse;
        end;
        
        // CORRECT
        i := AList.Count-1;
        while i => 0 do
          i := i - 2;
      

       

      (5) with¹®

      with¹®À» »ç¿ëÇÒ °æ¿ì¿¡´Â º¹¼ö°´Ã¼³ª ±¸Á¶Ã¼¸¦ ÂüÁ¶ÇÏÁö ¾Êµµ·Ï ÁÖÀÇÇϸç,

      °°Àº À̸§ÀÇ ´Ù¸¥ °´Ã¼ÀÇ ÇÁ·ÎÆÛƼ³ª ¸Þ¼Òµå¸¦ ÂüÁ¶ÇÏÁö ¾Ê´ÂÁö È®ÀÎÇØ¾ß ÇÑ´Ù.

        with Record1, Record2 do
      

     

    3.6 ¿¡·¯Ã³¸®±¸¹®

      ¿¡·¯Ã³¸® (Exception Handling)´Â ¿¡·¯ º¹±¸¿Í ¸®¼Ò½º º¸È£ÀÇ ¿ªÇÒÀ» ÇÑ´Ù.

       

      (1) try..finally

      µÇµµ·Ï °¢ µ¿ÀûÇҴ縶´Ù try..finally ±¸¹®À» »ç¿ëÇÏ¿© ¿¹¿Ü»çÇ׿¡ ´ëºñÇÑ´Ù.

      ´ÙÀ½ÀÇ ¿¹Á¦´Â µ¿ÀûÇÒ´çµÈ Ŭ·¡½º¸¦ ÂüÁ¶ÇÒ ¶§, ¿¹¿Ü°¡ ¹ß»ýÇÒ ¼ö ÀÖ´Â ¼û°ÜÁø ¹ö±×°¡ ÀÖ´Ù.

        SomeClass1 := TSomeClass.Create
        SomeClass2 := TSomeClass.Create;
        try
          { do some code }
        finally
          SomeClass1.Free;
          SomeClass2.Free;
        end;
      

       

      ´ÙÀ½ÀÇ ¿¹Á¦´Â ¼û°ÜÁø ¹ö±×¸¦ ¾ø¾Ö´Â ¿Ã¹Ù¸¥ ¹æ¹ýÀÌ´Ù.

        SomeClass1 := TSomeClass.Create
        try
          SomeClass2 := TSomeClass.Create;
          try
            { do some code }
          finally
            SomeClass2.Free;
          end;
        finally
          SomeClass1.Free;
        end;
      

       

      (2) try..except

      ƯÁ¤ ¿¹¿Ü »çÇ×ÀÌ ¹ß»ýÇßÀ» ¶§ÀÇ ÇൿÀ» À§ÇØ »ç¿ëÇÑ´Ù.

        // Correct
        try
          try
            EnumThreadWindows(CurrentThreadID, @Disable, 0);
            Result := TaskWindowList;
          except
            EnableTaskWindows(TaskWindowList);
            raise;
          end;
        finally
          TaskWindowList := SaveWindowList;
          TaskActiveWindow := SaveActiveWindow;
        end;
      

       

      (3) try..except..else

      Ȥ½Ã 󸮵ÇÁö ¾Ê´Â ¿¡·¯À» À§Çؼ­´Â else ±¸¹®À» »ç¿ëÇÑ´Ù.

     

    3.7 Ŭ·¡½º¸í

      Ŭ·¡½ºÀÇ Access LevelÀº Private, Protected, Public, Published ¼øÀ¸·Î ³·À¸¸ç,

      µ¥ÀÌÅÍ´Â µÉ ¼ö ÀÖÀ¸¸é Public ·¹º§À» »ç¿ëÇÏÁö ¾Ê°í, Private ·¹º§À» »ç¿ëÇϸ鼭 Access Method¸¦ Ȱ¿ëÇÑ´Ù.

      Ŭ·¡½º¸íÀº T(Type) prefix¸¦ ºÙÀÌ°í ±â´É/¸ñÀû»óÀÇ À̸§À» ºÙÀδÙ.

       

    3.8 ÀνºÅϽº¸í

      Ŭ·¡½ºÀÇ ÀνºÅϽº¸íÀº Ŭ·¡½º¸íÀ» ¾Õ¿¡ ºÙÀ̰í, ±â´É/¸ñÀû»óÀÇ À̸§À» ºÙÀδÙ.

        ¿¹) FormMain, FormAbout, ButtonShowList , ButtonLoadImage

      ´Ü, À¯»çÇÑ ±â´ÉÀÇ Å¬·¡½º´Â °°Àº Ŭ·¡½º·Î ¹­¾îµµ ¹«¹æÇÏ´Ù

        ¿¹) TButton°ú TSpeedButtonÀÇ ¿¹

      °­Á¶¸¦ À§Çؼ­³ª, µÚ¿¡ ºÙ´Â À̸§°ú Ưº°È÷ ±¸ºÐÀÌ ÇÊ¿äÇÒ °æ¿ì¿¡´Â '_' ¸¦ ³Ö¾îµµ µÈ´Ù.

        ¿¹) FormMain, Form_About, Button_SaveToFile , Button_LoadFromFile

       

    3.9 ÀÎÅÍÆäÀ̽º

      Ŭ·¡½º¿Í °°Àº ¹æ½ÄÀ¸·Î ¼±¾ðÇϵµ·Ï ÇÑ´Ù.

     

ÀÚ·áÁ¤¸® : ±èÁ¤(°íµå¸§)