[¥Ý¥¤¥ó¥¿]

·¿ÊÑ´¹¤Ç¤Ï¤¢¤ê¤Þ¤»¤ó¤¬¡¢¥Ý¥¤¥ó¥¿¤Ë¤Ä¤¤¤Æ£²¤Ä¤Î¥µ¥ó¥×¥ë¤ò¼¨¤·¤Þ¤¹¡£

¡¦¥Ý¥¤¥ó¥¿¤Î¼¨¤¹¥¢¥É¥ì¥¹¡¢Ãæ¿È¤òɽ¼¨¤µ¤»¤Þ¤¹¡£
¡¦Ê¸»úÎó¤ò¥Ý¥¤¥ó¥¿¤ò»È¤Ã¤ÆÃÖ¤­´¹¤¨¤Þ¤¹¡£


¢¡¥Ý¥¤¥ó¥¿¤Ë¤Ä¤¤¤Æ

Ä̾ï¤ÎÊÑ¿ô¤Ï¡¢Ãͤ½¤Î¤â¤Î¤ò³ÊǼ¤·¤Þ¤¹¤¬¡¢¥á¥â¥ê¾å¤Î¥¢¥É¥ì¥¹¤ò³ÊǼ¤¹¤ë¤³¤È¤Î¤Ç¤­¤ëÆÃÊ̤ÊÊÑ¿ô¤ò¡¢¥Ý¥¤¥ó¥¿¤È¸Æ¤Ó¤Þ¤¹¡£

¢¡¥Ý¥¤¥ó¥¿ÊÑ¿ô¤ÎÀë¸À¡¡
¡¡Àë¸ÀÊýË¡¤Ï£²¼ïÎढ¤ê¤Þ¤¹¡£¤É¤Á¤é¤ò»È¤Ã¤Æ¤â¤«¤Þ¤¤¤Þ¤»¤ó
¡¦·¿Ì¾¤ÎÁ°¤Ë¡Ö^¡×¡Ê¥­¥ã¥ì¥Ã¥È¡Ë¤òÉÕ¤±¤Æ¡¢ÊÑ¿ô¤òÀë¸À¤¹¤ë
¡¡Îã¡Ëvar c:^Char; b:^Byte; i:^Integer; d:^Double; 
¡¦·¿Ì¾¤ËP¤òÉÕ¤±¤Æ¡¢ÊÑ¿ôÀë¸À¤¹¤ë
¡¡Îã¡Ëvar c:PChar; b:PByte; i:PInteger; d:PDouble; 
¢¡¥Ý¥¤¥ó¥¿¤Î»ÈÍÑ
­¡¥Ý¥¤¥ó¥¿ÊÑ¿ô̾¤Î¤ßµ­½Ò¤¹¤ë¡¡Îã¡ËP
¡¡¢ª¥Ý¥¤¥ó¥¿ÊÑ¿ô¤Ë³ÊǼ¤µ¤ì¤Æ¤¤¤ë¥¢¥É¥ì¥¹¤Î¼¨¤¹¡¢¡Ö¥Ç¡¼¥¿¼«¿È¡×¤ò»Ø¤·¤Þ¤¹¡£
¡¡¡¡¥Ç¡¼¥¿¼«¿È¤¬¡Ö¥Ì¥ë¤Ç½ª¤ï¤ëʸ»úÎó¡×¤Î¾ì¹ç¡¢#0¡Ê¥Ì¥ë¡Ë¤Þ¤Ç¤¬½èÍýÂоݤˤʤê¤Þ¤¹
¡¡¡¡²¼¿Þ¤Î­¡'abcd'¤ò»Ø¤·¤Þ¤¹
­¢ÊÑ¿ô̾¤òInteger¤Ç¥­¥ã¥¹¥È¤¹¤ë¡¡Îã¡Ëinteger(P)
¡¡¢ªÊÑ¿ô¤¬ÇÛÃÖ¤µ¤ì¤Æ¤¤¤ë¡¢¥á¥â¥ê¾å¤Î¥¢¥É¥ì¥¹¤ò¼¨¤·¤Þ¤¹
¡¡¡¡ÍÑÅӤϤۤȤó¤É¤¢¤ê¤Þ¤»¤ó¤¬¡¢ÊÑ¿ô¤¬¥á¥â¥ê¾å¤Î¤É¤³¤ËÇÛÃÖ¤µ¤ì¤Æ¤¤¤ë¤«¸«¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£»î¤·¤Æ¤ß¤Æ¡ª
¡¡¡¡²¼¿Þ¤Î­¢¤Î£ÁÈÖÃϤò»Ø¤·¤Þ¤¹
­£ÊÑ¿ô̾¤ÎÁ°¤Ë¡Ö@¡×¡Ê¥¢¥Ã¥È¥Þ¡¼¥¯¡Ë¤òÉÕ¤±¤ë¡¡Îã¡Ë@P
¡¡¢ª¥Ý¥¤¥ó¥¿ÊÑ¿ô¤Ë³ÊǼ¤µ¤ì¤Æ¤¤¤ë¥¢¥É¥ì¥¹¤ò¼¨¤·¤Þ¤¹¡£
¡¡¡¡¡Ö¥Ç¡¼¥¿¼«¿È¡×¤¬¥á¥â¥ê¾å¤Î¤É¤³¤Ë³ÊǼ¤µ¤ì¤Æ¤¤¤ë¤«¸«¤ë¤³¤È¤¬½ÐÍè¤Þ¤¹¡£
¡¡¡¡²¼¿Þ¤Î­£¤Î¥Ç¡¼¥¿¥¢¥É¥ì¥¹¤Î£ÂÈÖÃϤò»Ø¤·¤Þ¤¹¡¡
­¤¥Ý¥¤¥ó¥¿ÊÑ¿ô̾¤Î¸å¤í¤Ë¡Ö^¡×¡Ê¥­¥ã¥ì¥Ã¥È¡Ë¤òÉÕ¤±¤ë¡¡Îã¡ËP^
¡¡¢ª¥Ý¥¤¥ó¥¿ÊÑ¿ô¤Î¼¨¤¹¥¢¥É¥ì¥¹¤ÎÃæ¿È¤Î£±¥Ð¥¤¥È¤ò¼¨¤·¤Þ¤¹¡£
¡¡¡¡²¼¿Þ¤Î­¤¡Ç£á¡Ç¤Î£±¥Ð¥¤¥È¤ò»Ø¤·¤Þ¤¹
¿Þ¡§¥Ý¥¤¥ó¥¿ÊÑ¿ô¤Ï¥Ç¡¼¥¿¤Î¥¢¥É¥ì¥¹¤ò¥Ý¥¤¥ó¥È¤·¤Æ¤¤¤Þ¤¹
¡¡¡¡¡¡¡¡¡¡¥Ý¥¤¥ó¥¿ÊÑ¿ô¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¥Ç¡¼¥¿ 
¡¡£ÁÈÖÃÏ[¥Ç¡¼¥¿¤Î¥¢¥É¥ì¥¹]¡Ý¡Ý¡Ý¡ä¡¡¡¡£ÂÈÖÃÏ[ 'abcd' ]
¡¡¡¡­¢¡¡¡¡¡¡¡¡¡¡­£¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡­£¡¡¡¡­¡¡¢­¤'a'¤Î¤ß
¥Ý¥¤¥ó¥¿¤Î¼¨¤¹¥¢¥É¥ì¥¹¡¢Ãæ¿È¤òɽ¼¨¤µ¤»¤Þ¤¹¡£
¡Ú¥½¡¼¥¹¥³¡¼¥É¡Û¡¡[tips0013.pas]
program tips0013;
{$APPTYPE CONSOLE}
uses SysUtils;
var
 a:string;
 b:PChar;
 c:PChar;
begin
 a:='abc';
 b:=PChar(a);
 WriteLn('¢¡stringÊÑ¿ô');
 WriteLn('a<ÊÑ¿ô>¤Î¥¢¥É¥ì¥¹¤Ï¡¡¡¡¡¡¡¡¡¡¡¡¡¡:',IntToHex(Integer(@a),6));   //@a¤òInteger¤Ë¥­¥ã¥¹¥È
 WriteLn('a<ÊÑ¿ô>¤Î»Ø¤¹¥¢¥É¥ì¥¹¤Ï¡¡¡¡¡¡    :',IntToHex(Integer(a),6));    //a¤òInteger¤Ë¥­¥ã¥¹¥È
 WriteLn('a<ÊÑ¿ô>¤ÎÃæ¿È¤Ï¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡:',a); 

 WriteLn('¢¡PCharÊÑ¿ô');
 WriteLn('b(¥Ý¥¤¥ó¥¿)¤Î¥¢¥É¥ì¥¹¤Ï¡¡¡¡¡¡¡¡¡¡:',IntToHex(Integer(@b),6));   //@b¤òInteger¤Ë¥­¥ã¥¹¥È
 WriteLn('b(¥Ý¥¤¥ó¥¿)¤Î»Ø¤¹¥¢¥É¥ì¥¹¤Ï¡¡¡¡¡¡:',IntToHex(Integer(b),6));    //b¤òInteger¤Ë¥­¥ã¥¹¥È
 WriteLn('b(¥Ý¥¤¥ó¥¿)¤Î»Ø¤¹¥¢¥É¥ì¥¹¤ÎÃæ¿È¤Ï:',b);
 WriteLn('b(¥Ý¥¤¥ó¥¿)¤ÎµÕ»²¾È¤ÎÃæ¿È¤Ï¡¡¡¡¡¡:',b^);

 WriteLn('¢¡PCharÊÑ¿ô ¥á¥â¥ê³ÎÊÝ');
 GetMem(c,Length(a));
 StrCopy(c,PChar(a));
 WriteLn('c(¥Ý¥¤¥ó¥¿)¤Î¥¢¥É¥ì¥¹¤Ï¡¡¡¡¡¡¡¡¡¡:',IntToHex(Integer(@c),6));   //@b¤òInteger¤Ë¥­¥ã¥¹¥È
 WriteLn('c(¥Ý¥¤¥ó¥¿)¤Î»Ø¤¹¥¢¥É¥ì¥¹¤Ï¡¡¡¡¡¡:',IntToHex(Integer(c),6));    //b¤òInteger¤Ë¥­¥ã¥¹¥È
 WriteLn('c(¥Ý¥¤¥ó¥¿)¤Î»Ø¤¹¥¢¥É¥ì¥¹¤ÎÃæ¿È¤Ï:',c);
 WriteLn('c(¥Ý¥¤¥ó¥¿)¤ÎµÕ»²¾È¤ÎÃæ¿È¤Ï¡¡¡¡¡¡:',c^);
 FreeMem(c); 

end.
¡Ú¥³¥ó¥Ñ¥¤¥ë¡õ¼Â¹Ô¡Û¡¡[tips0013.bat]
dcc32 tips0013.pas 
tips0013.exe  > tips0013.txt
pause
¡Ú¼Â¹Ô·ë²Ì¡Û¡¡[tips0013.txt]
¢¡stringÊÑ¿ô
a<ÊÑ¿ô>¤Î¥¢¥É¥ì¥¹¤Ï¡¡¡¡¡¡¡¡¡¡¡¡¡¡:411D8C
a<ÊÑ¿ô>¤Î»Ø¤¹¥¢¥É¥ì¥¹¤Ï¡¡¡¡¡¡    :A06AA4
a<ÊÑ¿ô>¤ÎÃæ¿È¤Ï¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡:abc
¢¡PCharÊÑ¿ô
b(¥Ý¥¤¥ó¥¿)¤Î¥¢¥É¥ì¥¹¤Ï¡¡¡¡¡¡¡¡¡¡:411D90
b(¥Ý¥¤¥ó¥¿)¤Î»Ø¤¹¥¢¥É¥ì¥¹¤Ï¡¡¡¡¡¡:A06AA4
b(¥Ý¥¤¥ó¥¿)¤Î»Ø¤¹¥¢¥É¥ì¥¹¤ÎÃæ¿È¤Ï:abc
b(¥Ý¥¤¥ó¥¿)¤ÎµÕ»²¾È¤ÎÃæ¿È¤Ï¡¡¡¡¡¡:a
¢¡PCharÊÑ¿ô ¥á¥â¥ê³ÎÊÝ
c(¥Ý¥¤¥ó¥¿)¤Î¥¢¥É¥ì¥¹¤Ï¡¡¡¡¡¡¡¡¡¡:411D94
c(¥Ý¥¤¥ó¥¿)¤Î»Ø¤¹¥¢¥É¥ì¥¹¤Ï¡¡¡¡¡¡:A0D9D0
c(¥Ý¥¤¥ó¥¿)¤Î»Ø¤¹¥¢¥É¥ì¥¹¤ÎÃæ¿È¤Ï:abc
c(¥Ý¥¤¥ó¥¿)¤ÎµÕ»²¾È¤ÎÃæ¿È¤Ï¡¡¡¡¡¡:a
¢¡¥Ý¥¤¥ó¥¿°Ê³°¤ÎÊÑ¿ô¤Ë¤Ä¤¤¤Æ¤ÎÃí°Õ»ö¹à
¾åµ­¤Î·ë²Ì¤«¤é¡¢stringÊÑ¿ô¤âÆâÉôŪ¤Ë¤Ï¥Ý¥¤¥ó¥¿¤Î¹½Â¤¤Ë¤Ê¤Ã¤Æ¤¤¤Þ¤¹¡£
¥Ý¥¤¥ó¥¿¤È¥Ç¡¼¥¿¤Î´Ø·¸¤ò¿Þ¤Ë¤·¤Æ¤ß¤Þ¤·¤¿¡£
¡¡¡¡¡¡¡¡¡¡ÊÑ¿ôa¤Î¥Ý¥¤¥ó¥¿¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¥Ç¡¼¥¿ 
¡¡£ÁÈÖÃÏ[¥Ç¡¼¥¿¤Î¥¢¥É¥ì¥¹]¡Ý¡Ý¡Ý¡ä¡¡¡¡£ÂÈÖÃÏ[ 'abc' ]
¡¡411D8C¡¡¡¡A06AA4¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡A06AA4¡¡¡¡

¡¡¡¡¡¡¡¡¡¡¥Ý¥¤¥ó¥¿b¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¥Ç¡¼¥¿ 
¡¡£ÁÈÖÃÏ[¥Ç¡¼¥¿¤Î¥¢¥É¥ì¥¹]¡Ý¡Ý¡Ý¡ä¡¡¡¡£ÂÈÖÃÏ[ 'abc' ]
¡¡411D90¡¡¡¡A06AA4¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡A06AA4¡¡¡¡

¡¡¡¡¡¡¡¡¡¡¥Ý¥¤¥ó¥¿c¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¥Ç¡¼¥¿ 
¡¡£ÁÈÖÃÏ[¥Ç¡¼¥¿¤Î¥¢¥É¥ì¥¹]¡Ý¡Ý¡Ý¡ä¡¡¡¡£ÂÈÖÃÏ[ 'abc' ]
¡¡411D94¡¡¡¡A0D9D0¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡A0D9D0¡¡¡¡
¥Ý¥¤¥ó¥¿b¤ËstringÊÑ¿ôa¤Î¥¢¥É¥ì¥¹¤ò¥»¥Ã¥È¤¹¤ë¤Ë¤Ï²¼µ­¤Î£²¤Ä¤ÎÊýË¡¤¬¹Í¤¨¤é¤ì¤Þ¤¹¡£
¡¡ b:=PChar(a);    //PChar¤Ç¥­¥ã¥¹¥È¤¹¤ëÊýË¡
¡¡ b:=@a;          //@¤òÉÕ¤±¤ëÊýË¡
£²¤Ä¤Î·ë²Ì¤Ï°Û¤Ê¤ê¤Þ¤¹¤Î¤ÇÃí°Õ¤¬É¬ÍפǤ¹¡£
¡¡PChar¤Ç¥­¥ã¥¹¥È¤¹¤ëÊýË¡¡§¡¡¥Ç¡¼¥¿Éôʬ¤Î¥¢¥É¥ì¥¹¡Ê¾åµ­¤Î¿Þ¤Î£ÂÈÖÃÏ:A06AA4¡Ë¤¬³ÊǼ¤µ¤ì¤Þ¤¹¡£
¡¡@¤òÉÕ¤±¤ëÊýË¡¡¡¡¡¡¡¡¡¡¡¡§¡¡¥Ý¥¤¥ó¥¿¤Ç¤Ï¤Ê¤¤ÊÑ¿ôa¤Ï¡¢ÆâÉôŪ¤Ë¤Ï¥Ý¥¤¥ó¥¿¤Î¹½Â¤¤Ë¤Ê¤Ã¤Æ¤¤¤Þ¤¹¡£
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ÊÑ¿ôa¤Î¥Ý¥¤¥ó¥¿Éô¡Ê¾åµ­¤Î¿Þ¤Î£ÁÈÖÃÏ:411D8C¡Ë¤¬³ÊǼ¤µ¤ì¤Þ¤¹¡£


ʸ»úÎó¤ò¥Ý¥¤¥ó¥¿¤ò»È¤Ã¤ÆÃÖ¤­´¹¤¨¤Þ¤¹¡£
¡Ú¥½¡¼¥¹¥³¡¼¥É¡Û¡¡[tips0013_2.pas]
//¾®Ê¸»ú¤Îa¤òÂçʸ»úA¤ËÃÖ¤­´¹¤¨¤ë¡£¾®Ê¸»úb¤òÂçʸ»úBBBBB¤ËÃÖ¤­´¹¤¨¤ë
program tips0013_2;
{$APPTYPE CONSOLE}
uses SysUtils;
var
 S,R  :string;
 Sp,Rp:PChar;  //Char·¿¤Î¥Ý¥¤¥ó¥¿ÄêµÁ
begin
 S:='abcabc&amss&lco&gen';
 R:='                         ';

 Sp:=PChar(S);  //ÊÑ¿ôS¤òPChar¤Ç¥­¥ã¥¹¥È¡Ê·¿ÊÑ´¹¡Ë¤·¤Æ¡¢ÊÑ¿ôS¤Î¥¢¥É¥ì¥¹¤ò¥Ý¥¤¥ó¥¿¡¼¤ËÂåÆþ¤¹¤ë
 Rp:=PChar(R);  //ÊÑ¿ôR¤òPChar¤Ç¥­¥ã¥¹¥È¡Ê·¿ÊÑ´¹¡Ë¤·¤Æ¡¢ÊÑ¿ôR¤Î¥¢¥É¥ì¥¹¤ò¥Ý¥¤¥ó¥¿¡¼¤ËÂåÆþ¤¹¤ë

 while Sp^ <> #0 do //ÊÑ¿ôS¤ÎËöÈø¤ò¸¡½Ð¤¹¤ë¤Þ¤Ç¥ë¡¼¥×¤¹¤ë¡¡#0¤Ïnull
  begin
   case Sp^ of  //ÊÑ¿ôS¤Î¥Ý¥¤¥ó¥¿¤Î¼¨¤¹ÆâÍƤòÄ´¤Ù¤ë
    'a':        //'a'¤Ê¤é¤ÐÂçʸ»ú¤Î'A'¤òÊÑ¿ôR¤Ë¥»¥Ã¥È¤¹¤ë
      Rp^:='A'; 
    'b':        //'b'¤Ê¤é¤Ð5¥Ð¥¤¥È¤Î'BBBBB'¤òÊÑ¿ôR¤Ë¥»¥Ã¥È¤·¡¢ÊÑ¿ôR¤Î¥Ý¥¤¥ó¥¿¤ò¥¤¥ó¥¯¥ê¥á¥ó¥È¡Ê+4¡Ë¤¹¤ë
     begin
      StrCopy(Rp,'BBBBB');
      inc(Rp,4);
     end;
    else
     Rp^ := Sp^;  //¾åµ­°Ê³°¤Îʸ»ú¤Ê¤é¤Ð¡¢ÊÑ¿ôS¤«¤éÊÑ¿ôR¤Ø£±¥Ð¥¤¥È¥³¥Ô¡¼¤¹¤ë
   end;
   inc(Sp);  //ÊÑ¿ôS¤Î¥Ý¥¤¥ó¥¿¤ò¥¤¥ó¥¯¥ê¥á¥ó¥È¡Ê+1¡Ë¤¹¤ë
   inc(Rp);  //ÊÑ¿ôR¤Î¥Ý¥¤¥ó¥¿¤ò¥¤¥ó¥¯¥ê¥á¥ó¥È¡Ê+1¡Ë¤¹¤ë
  end;

 WriteLn(S); //ÊÑ¿ôS¤ò½ÐÎϤ¹¤ë
 WriteLn(R); //ÊÑ¿ôR¤ò½ÐÎϤ¹¤ë

end.

¡Ú¥³¥ó¥Ñ¥¤¥ë¡õ¼Â¹Ô¡Û¡¡[tips0013_2.bat]
dcc32 tips0013_2.pas 
tips0013_2.exe  > tips0013_2.txt
pause
¡Ú¼Â¹Ô·ë²Ì¡Û¡¡[tips0013_2.txt]
abcabc&<>
ABBBBBcABBBBBc&<>