±ÍÇÏ´Â ¼Õ´Ô À̽ʴϴÙ
·Î±×ÀÎ
ȸ¿ø°¡ÀÔ
  
  µ¨¸¶´ç °ø½Ä ÀºÇà°èÁÂ
  ÇϳªÀºÇà 227-910235-83607
  ¿¹±ÝÁÖ ÀÌ»ó±¹(¿î¿µÁø)
ÇÁ·ÎÁ§Æ® °Ô½ÃÆÇ
ÅõÇ¥°Ô½ÃÆÇ
µ¨¸¶´ç¼Ò°³
±âÃʺÎÅÍ È°¿ë±îÁö! µ¨ÆÄÀÌ ±³À° - µ¥ºê±â¾î
°­ÁÂ, ÆÁ, Á¤º¸ °­ÁÂ, ÆÁ, Á¤º¸ ÀÔ´Ï´Ù.
±Û³»¿ë - °­ÁÂ, ÆÁ, Á¤º¸
 [angel] Æ÷ÀÎÅÍ 2
Ÿ¶ôõ»ç
(±è¼ºÈÆ)
2014-12-13 ¿ÀÈÄ 9:46:46
Ä«Å×°í¸®: ÆÁ
3266ȸ Á¶È¸



µî·ÏµÈ ÆÄÀÏÀÌ ¾ø½À´Ï´Ù.
¾È³çÇϼ¼¿ä. Å¸¶ôõ»ç ÀÔ´Ï´Ù.

³×À̹ö À¥Å÷ Áß¿¡ "µ§¸¶" ¶ó´Â ¸¸È­¿¡ 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