¶ó. »èÁ¦ ±â·Ï

´ÙÀ½Àº »èÁ¦ µ¿ÀÛÀ» ±â·ÏÇÏ´Â URDelete ÇÔ¼ö¸¦ ÀÛ¼ºÇغ¸ÀÚ. ÀÌ ÇÔ¼öµµ ¸ÕÀú ¼ø¼­µµ¸¦ ±×·Á º¸°í ¼ø¼­´ë·Î Äڵ带 ÀÛ¼ºÇÑ´Ù. URInsert¿Í À¯»çÇÏÁö¸¸ ´Ù¸¥ ºÎºÐµµ ¸î ±ºµ¥ ÀÖ´Ù.

ÀÌ ¼ø¼­µµ¸¦ ±×´ë·Î ÄÚµå·Î ¿Å±â¸é ´ÙÀ½ ÇÔ¼ö°¡ ¸¸µé¾îÁø´Ù.

 

void CApiEdit::URDelete(int nPos, TCHAR *str)

{

     TCHAR *t;

 

     if (CanRedo()) {

          ClearRedo();

     } else {

          if (pUR[nowur].action==UR_DELETE) {

              if (str[0]==¡® ¡® || str[0]==¡®\r¡¯) {

                   NextRecord();

              } else {

                   if (pUR[nowur].pos - lstrlen(str)==nPos) {

                        AllocURData(nowur,lstrlen(pUR[nowur].data)+lstrlen(str)+1,5);

 

                        t=(TCHAR *)malloc(_msize(pUR[nowur].data));

                        lstrcpy(t,str);

                        lstrcat(t,pUR[nowur].data);

                        lstrcpy(pUR[nowur].data,t);

                        free(t);

 

                        pUR[nowur].pos = nPos;

                        return;

                   } else if (pUR[nowur].pos == nPos) {

                        AllocURData(nowur,lstrlen(pUR[nowur].data)+lstrlen(str)+1,5);

 

                        lstrcat(pUR[nowur].data,str);

                        return;

                   } else {

                        NextRecord();

                   }

              }

          } else {

              if (pUR[nowur].action != UR_NONE) {

                   NextRecord();

              }

          }

     }

 

     AllocURData(nowur,lstrlen(str)+8,0);

     pUR[nowur].action=UR_DELETE;

     pUR[nowur].pos=nPos;

     lstrcpy(pUR[nowur].data,str);

}

 

¾Æ·¡ÂÊÀÇ 4ÁÙÀÌ º´ÇÕÀ̳ª Ãë¼Ò ·¹ÄÚµå »èÁ¦¾øÀÌ »èÁ¦ µ¿ÀÛ¸¸ ±â·ÏÇÏ´Â °¡Àå °£´ÜÇÑ °æ¿ìÀÇ ÄÚµåÀÌ´Ù. »ðÀÔ µ¿ÀÛ°ú °ÅÀÇ µ¿ÀÏÇ쵂 action¿¡ 2¸¦ ±â·ÏÇÑ´Ù´Â Á¡¸¸ ´Ù¸£´Ù. Ãë¼Ò ·¹Äڵ带 »èÁ¦ÇÏ´Â Äڵ嵵 URInsert¿Í ¿ÏÀüÈ÷ µ¿ÀÏÇÏ´Ù. ÀÌ ÇÔ¼ö°¡ URInsert¿Í ´Ù¸¥ Á¡Àº °ø¹é¿¡ ÀÇÇØ ·¹Äڵ带 ºÐÇÒÇÏ´Â ½ÃÁ¡°ú À§Ä¡ ¿¬¼Ó Á¶°ÇÀ» Á¡°ËÇÏ´Â ¹æ¹ýÀÌ´Ù.

»ðÀÔÇÒ ¶§´Â °ø¹éÀÇ ÀԷ¿¡ ÀÇÇØ ·¹Äڵ带 ³ª´©¹Ç·Î ÀÏ´Ü °ø¹é±îÁö º´ÇÕÇسõ°í Á¡°ËÀ» ÇÏÁö¸¸ »èÁ¦ÇÒ ¶§´Â °ø¹éÀÌ ³ª¿ÀÀÚ¸¶ÀÚ »õ ·¹ÄÚµå·Î À̵¿ÇÑ ÈÄ »èÁ¦ ·¹Äڵ带 ÀÛ¼ºÇÑ´Ù. ÀÌ·¸°Ô ÇØ¾ß °ø¹éÀÌ °¡±ÞÀûÀÌ¸é ´Ü¾îÀÇ µÚ¿¡ À§Ä¡ÇÏ°Ô µÈ´Ù. »ðÀÔÇÒ ¶§´Â °ø¹éÀÌ ´Ü¾îÀÇ ³¡¿¡ ÀÖÁö¸¸ ÀÌ ´Ü¾î¸¦ »èÁ¦ÇÒ ¶§´Â °ø¹éÀÌ Á¦ÀÏ ¸ÕÀú »èÁ¦µÈ´Ù´Â Á¡À» »ý°¢Çغ¸±â ¹Ù¶õ´Ù.

»èÁ¦ À§Ä¡°¡ ¿¬¼ÓÀΰ¡ ¾Æ´Ñ°¡¸¦ ÆÇ´ÜÇÏ´Â ¹æ¹ýµµ Á» ´Ù¸£´Ù. »ðÀÔÇÒ ¶§´Â »õ·Î ÀÔ·ÂµÈ ¹®ÀÚ¿­ÀÌ µÚÂÊ¿¡ µ¡ºÙ¿©Áö¹Ç·Î Á¶°ÇÀÌ Çϳª»ÓÀÌÁö¸¸ »èÁ¦ÇÒ ¶§´Â BS¿¡ ÀÇÇØ »èÁ¦µÇ´Â °æ¿ì¿Í Del¿¡ ÀÇÇØ »èÁ¦µÇ´Â µÎ °¡Áö À¯ÇüÀ¸·Î ³ª´©¾îÁø´Ù. µÎ À¯ÇüÀº º´ÇÕ ¿©ºÎ¸¦ ÆÇ´ÜÇÏ´Â ¹æ¹ýµµ ´Ù¸£Áö¸¸ º´ÇÕÇÏ´Â ¹æ¹ýµµ ´Ù¸£´Ù. ±¸Ã¼ÀûÀÎ ¿¹¸¦ µé¾î º¸ÀÚ. ¿ÀÇÁ¼Â 0¿¡¼­ ¡°´ëÇѹα¹¡±À» ÀÔ·ÂÇÑ ÈÄ ¡°¹Î¡±ÀÚ¸¦ »èÁ¦ÇÑ »óȲÀÌ´Ù.

È­¸é¿¡´Â ¡°´ëÇѱ¹¡±±îÁö¸¸ ³²¾Æ ÀÖ°í ij·µÀº ¿ÀÇÁ¼Â 4¿¡ À§Ä¡ÇØ ÀÖ´Ù. ¡°¹Î¡±ÀÚ »èÁ¦¿¡ ´ëÇÑ »èÁ¦ ·¹ÄÚµå´Â ¿ÀÇÁ¼Â 4¿¡¼­ ¡°¹Î¡±ÀÚ¸¦ »èÁ¦ÇßÀ½À» ±â·ÏÇÏ°í ÀÖÀ» °ÍÀÌ´Ù. ÀÌ »óÅ¿¡¼­ <BS>Å°¸¦ ´­·¯ ¾ÕÂÊÀÇ ¡°ÇÑ¡±ÀÚ¸¦ »èÁ¦Çß´Ù°í Çغ¸ÀÚ. ±×·¯¸é À̶§ ¿ÀÇÁ¼Â 2¿¡¼­ ¡°ÇÑ¡±ÀÚ°¡ »èÁ¦µÇ¾ú´Ù´Â ·¹Äڵ尡 »ý¼ºµÇ´Âµ¥ ÀÌ ·¹ÄÚµå´Â ±âÁ¸¿¡ »èÁ¦µÈ ¡°¹Î¡±ÀÚ¿Í ¾ÕÂÊÀ¸·Î À§Ä¡°¡ ¿¬¼ÓÀûÀ̹ǷΠº´ÇÕµÉ ¼ö ÀÖ´Ù.

pUR[nowur].pos - lstrlen(str)==nPos Á¶°ÇÀº »èÁ¦ ·¹ÄÚµåÀÇ À§Ä¡¿¡¼­ »õ·Î »èÁ¦µÇ´Â ¹®ÀÚ¿­ÀÇ ±æÀ̸¦ »« À§Ä¡°¡ »õ·Î »èÁ¦µÇ´Â À§Ä¡¿Í °°´Ù´Â ¶æÀ̸ç BS¿¡ ÀÇÇØ ¹®ÀÚ°¡ »èÁ¦µÉ ¶§ À§Ä¡°¡ ¾ÕÂÊÀ¸·Î ¿¬¼ÓÀûÀÎÁö¸¦ ÆÇ´ÜÇÑ´Ù. ÀÌ Á¶°ÇÀÌ ÀÏÄ¡ÇÑ´Ù¸é ¹Ù·Î ¾ÕÂÊ ¹®ÀÚ°¡ Ãß°¡·Î »èÁ¦µÈ °ÍÀ̸ç À̶§ ·¹ÄÚµå´Â º´ÇյȴÙ. ¾ÕÂÊÀÇ ¹®ÀÚ°¡ »èÁ¦µÇ¾úÀ¸¹Ç·Î »õ·Î »èÁ¦µÈ ¹®ÀÚ°¡ dataÀÇ ¾ÕÂÊ¿¡ Ãß°¡µÇ¾î¾ß ÇÏ¸ç »èÁ¦ ·¹ÄÚµåÀÇ À§Ä¡(pos)´Â ¾ÕÂÊÀ¸·Î À̵¿µÇ¾î¾ß ÇÑ´Ù.

<Del>Å°¸¦ ´­·¯ µÚÂÊÀÇ ¹®ÀÚ¸¦ »èÁ¦ÇÒ ¶§´Â Á¶°Ç½ÄÀÌ Á» ´Ù¸£´Ù. µÚÂÊÀ¸·Î ¹®ÀÚ°¡ »èÁ¦µÉ ¶§´Â ¿ÀÇÁ¼ÂÀÇ º¯È­°¡ ¾øÀ¸¹Ç·Î pUR[nowur].pos == nPos Á¶°Ç½ÄÀ¸·Î µÚÂÊ ¿¬¼ÓÀÎÁö Á¶»çÇÑ´Ù. <Del>Å°´Â ¾Æ¹«¸® ´­·¯µµ ij·µÀÌ º¯È­°¡ ¾øÀ¸¹Ç·Î »èÁ¦ ·¹ÄÚµåÀÇ À§Ä¡°¡ »õ·Î »èÁ¦µÇ´Â ¹®ÀÚ¿­ÀÇ À§Ä¡¿Í °°ÀºÁö¸¦ º¸¸é µÈ´Ù. º´ÇÕÇÏ´Â ¹æ¹ýÀº data µÚ¿¡ »õ·Î »èÁ¦µÈ ¹®ÀÚ¸¦ µ¡ºÙÀ̱⸸ ÇÏ¸é µÈ´Ù. µÎ À¯Çü ¸ðµÎ »õ·Î »èÁ¦µÇ´Â ¹®ÀÚ¿¡ ÀÇÇØ data ¹öÆÛ°¡ ºÎÁ·ÇÒ ¼ö ÀÖÀ¸¹Ç·Î AllocURData ÇÔ¼ö·Î ¸Þ¸ð¸®¸¦ Á¡°ËÇÒ ÇÊ¿ä°¡ ÀÖ´Ù.