¾È³çÇϼ¼¿ä. Ÿ¶ôõ»ç ÀÔ´Ï´Ù.
³×À̹ö À¥Å÷ Áß¿¡ "µ§¸¶" ¶ó´Â ¸¸È¿¡ X, Y ÁÂÇ¥¸¦ ¾Ë¸é ¾îµð¿¡ ÀÖµçÁö ¹Ù²ãÄ¡±â ÇÒ ¼ö ÀÖ´Â ´É·ÂÀÌ ³ª¿É´Ï´Ù. Àá±ä »ç¹«½ÇÀÇ Àá±ä ±Ý°í ¾ÈÀÇ ¹Ú½º ¾ÈÀÇ ¹°°ÇÀ» ¹Ù²ãÄ¡±â Çصµ ¾î¶² ¡Á¶³ª ¾î¶² Áõ°Åµµ ¾ø½À´Ï´Ù.
Æ÷ÀÎÅÍ´Â ¾Ë°í ÀÖ´Â µ¥ÀÌÅÍÀÇ ÁÂÇ¥¸¦ ÀÌ¿ëÇØ µ¥ÀÌÅ͸¦ ¼öÁ¤ ÇÏ´Â °Í ÀÔ´Ï´Ù.
Á¦°¡ Æ÷ÀÎÅ͸¦ ¹«Ã´ ÁÁ¾Æ ÇÕ´Ï´Ù¸¸, Delphi ¿¡¼´Â Æ÷ÀÎÅÍ »ç¿ëÀ» ±ÇÇÏÁö ¾Ê½À´Ï´Ù. Delphi7 ¶§ ºÎÅÍ »ç¿ëÇÏ´Â °³ÀÎ ¶óÀ̺귯¸®°¡, Delph 2010, Delphi XE, Delphi XE6 µî »õ¹öÁ¯ÀÌ ³ª¿Ã ¶§ ¸¶´Ù Æ÷ÀÎÅÍ »ç¿ëÇÏ´Â ºÎºÐÀÌ °è¼Ó ¿¡·¯¸¦ ³»°í, ¼öÁ¤Çϱ⵵ ¾î·Á¿ü½À´Ï´Ù.
Delphi ¿¡¼ Æ÷ÀÎÅ͸¦ »ç¿ëÀ» ´ë½Å ÇÒ ¼ö ÀÖ´Â ±â´ÉÀÌ ÀÖ½À´Ï´Ù.
1. Call by Reference
** C/C++ void Swap(int* ANum1, int* ANum2) { int nTemp = 0; nTemp = *ANum1; *ANum1 = *ANum2; *ANum2 = nTemp; } ... int nNum1, nNum2; Swap(&nNum1, &nNum2);
** Delphi procedure Swap(var ANum1: integer; var ANum2: integer); var nTemp: integer; begin nTemp := ANum1; ANum1 := ANum2; ANum2 := nTemp; end; ... nNum1, nNum2: integer; Swap(nNum1, nNum2);
2. char*
** C/C++ char* pTemp; char* pText = "This is sample"; // ¸Þ¸ð¸® ÇÒ´ç 1 pText += 3; *pText = 'e'; // µ¥ÀÌÅÍ ¼öÁ¤ pTemp = (char*)malloc(15); // ¸Þ¸ð¸® ÇÒ´ç 2 memcpy(pText, pTemp, 15); // µ¥ÀÌÅÍ º¹»ç pTemp += 4; *pTemp = 'n'; // µ¥ÀÌÅÍ ¼öÁ¤
** Delphi pTemp, pText: string; pText := 'This is sample'; // ¸Þ¸ð¸® ÇÒ´ç 1 pText[4] := 'e'; // µ¥ÀÌÅÍ ¼öÁ¤ pTemp := pText; pTemp[5] := 'n'; // ¸Þ¸ð¸® ÇÒ´ç 2, µ¥ÀÌÅÍ º¹»ç, µ¥ÀÌÅÍ ¼öÁ¤
3. Structure C/C++ ¿¡¼´Â Structure ÀÇ ¸â¹ö º¯¼ö ÀÏÀÏÀÌ ´ëÀÔÇÏ´Â°Ô Èûµé¾î¼, Æ÷ÀÎÅͷΠŬ·¡½º³ª ÇÔ¼ö¿¡ ³Ñ±é´Ï´Ù. Delphi ¿¡¼´Â ¸â¹ö º¯¼ö ÀÏ°ý ´ëÀÔÇØ ÁÝ´Ï´Ù.
** C/C** Struct tagTest { int nAttack, nDefend, nStr, nInt, nDex, nVal; } ... tagTest Test1, Test2; ... Test2->nAttack = Test1->nAttack; Test2->nDefend = Test1->nDefend; Test2->nStr = Test1->nStr; Test2->nInt = Test1->nInt; Test2->nDex = Test1->nDex; Test2->nVal = Test1->nVal;
** Delphi tagTest = record nAttack, nDefend, nStr, nInt, nDex, nVal: integer; end; ... Test1, Test2: tagTest; ... Test2 := Test1;
4. void * ** C/C** º¸À̵å Æ÷ÀÎÅ͸¦ ½á¾ß¸¸ ÇÏ´Â °æ¿ì°¡ Àִµ¥, Áö±ÝÀº Àû´çÇÑ ¿¹°¡ ¶°¿À¸£Áö ¾Ê³×¿ä. void* MyFunc(void* SumType, int Size) { char* pBuf; pBuf = SumType; ... } ... MyFunc(&sText, 10); MyFunc(&Test1, sizeof(tagTest)); MyFunc(&nNum1, sizeof(integer));
** Delphi procedure MyFunc(const SumType; Size: integer); // º¯¼ö ŸÀÔÀÌ ¾ø½¿ var pBuf: PChar; begin pBuf := PChar(@SumType); ... end; ... MyFunc(sText[1], 10); MyFunc(Test1, sizeof(tagTest)); MyFunc(nNum1, sizeof(integer));
5. String
** C/C++ char* pTest = (char*)malloc(100); // ¸Þ¸ð¸® ÇÒ´ç memset(pTest, 100) ; // ÃʱâÈ
** Delphi pTest: PChar; ... SetLength(pTest, 100); // ¸Þ¸ð¸® ÇÒ´ç FillChar(pTest, 0, 100); // ÃʱâÈ
6. ¸â¹ö º¯¼ö Delphi ´Â Æ÷ÀÎÅÍ º¯¼ö¸¦ Æ÷ÀÎÅÍ ¾È¾²°í ó¸® ÇÒ¼ö ÀÖ°Ô ¼ºñ½º ÇÏ°í ÀÖ½À´Ï´Ù. Window API ¸¦ ¾²´Â °æ¿ì ¿Í °°ÀÌ Æ÷ÀÎÅÍ »ç¿ëÀÌ ºÒ°¡ÇÇÇÑ °æ¿ì¿¡µµ Æ÷ÀÎÅÍ »ç¿ëÇÏÁö ¾Ê¾Æµµ µÇµµ·Ï ÇÑ °Í °°½À´Ï´Ù.
*** easy example.
PTestData = ^TTestData; TTestData = record  
|