�����H�Fhttp://dn.codegear.com/article/10280
�|�󎞂ɎQ�Ƃ�����������������܂���B��̃����N�͌������Č��‚����������炵�����̂ł����A�|��ȍ~�ɍX�V����Ă��邩�����ꂸ�A���̖|��Ƃ͂��ꂪ���邩������܂���B

�󒍁F��O�N���X������̖����K�����������A���ꂾ���ł͋K��Ƃ��ĕs�\�����Ǝv���܂��B�K���ɕ⊮���܂��傤�B���Ȃ݂ɁA�O�u���ɏ�����Ă�����e�Ƃ͗����ɁAVCL �̃\�[�X���ɂ����̋K��ɏ]���Ă��Ȃ��\�[�X�͑��X����܂��B


�T�C�g���֘A�����N�FEconos - Delphi 4 �J���҃K�C�h �R�[�f�B���O�W�� , The Delphi Bug List ���{���




Object Pascal �X�^�C���K�C�h - by Charles Calvert

�v��:���̋L���� Delphi �R�[�h�̏����Ɋւ���W���X�^�C���ɕt���ďq�ׂĂ��܂��D���̕W���X�^�C���́CDelphi�`�[�������W�����Ă����K���Ɋ�Ă��܂��D
Object Pascal �X�^�C���K�C�h

���̋K��� Delphi �̃R�[�h�̏����Ɋւ���W���X�^�C���ɕt���ďq�ׂĂ��܂��D���̕W���X�^�C���́CDelphi �`�[�������W�����Ă����K���Ɋ�Ă��܂��D

�����̓K�؂Ɋm�������d����ł́C�����ŋK�肷����̂Ƃ͈قȂ�K���������Ă��ē��R���Ǝv���܂��D�]���āC�������͂��Ȃ��������̃R�[�h�� Borland ��v���W�F�N�gJEDI�C���邢�͂��̑��̌��̃��|�W�g���ɑ���O�ɁC���Ȃ��̃R�[�h�� Borland �X�^�C���ɕϊ�����c�[�����g�p���邱�Ƃ������������܂��D���Ȃ��̏K����ς��邱�Ƃ������������͂���܂��񂪁C�������� Borland ���i�ƂƂ��ɏo�ׂ����S�ẴR�[�h�ɑ΂��C���̏K���ɏ]�����Ƃ������v�����Ă��܂��D�ǂ̂悤�Ȍ`���ł���C���̃��|�W�g���ɃR�[�h���o����ۂɂ͂��̏K���ɏ]�����Ƃ��������サ�܂��D

Object Pascal �͔������݌v���ꂽ����ł��D���̍ő�̒����̂ЂƂ‚͉“ǐ��ł��D���̕W���́C���� Object Pascal �R�[�h�̉“ǐ�����荂�߂�悤�ɐ݌v����Ă��܂��D�J���҂����̎w�j�ɏ�����Ă���V���v���ȏK���ɏ]���΁C�ǂ݂₷�����ꂳ�ꂽ�X�^�C�����g�p���邱�Ƃɂ��C�S�Ă� Delphi �J���҂ɗ��v�������炷�W���𐄐i���邱�ƂɂȂ�ł��傤�D���̕W�����g�p����w�͂́C���ɕێ�ƃf�o�b�O�̃T�C�N���ɂ����āC�J���҂̃\�[�X�R�[�h�̉��l�𑝂����ƂɂȂ�ł��傤�D

����炪��Ƃ��čD�݂Ɋ�K���ł��邱�Ƃ͌����܂ł�����܂���D�������͂��̃y�[�W�Ő�������Ă���X�^�C����M�����C�܎^�����Ă��܂����C��������������x�����闝�R�́C���ꂪ����������ȊO���Ԉ���Ă���ƐM���Ă��邩��ł͂Ȃ��C�命���̊J���҂��]���W�������݂��邱�Ƃ̌��p��M���Ă��邩��ł��D�l�Ԃ͕W���ɓK�����C�悭�������� - �䂦�ɑf�������—e�ՂɈӖ������ݎ��� - �p�^�[���������ɔF��������@�𔭌����܂��D���̓w�͂̔w�i�ɂ́C�命���̐l���e�ՂɃR�[�h�𗝉����邱�Ƃ��”\�ɂ���W������肽���C�Ƃ����v��������܂��D�������������̃K�C�h���C������Ɏv�����Ƃ��Ă��C���΂炭�͓w�͂��Ă݂Ă��������D��������΁C���Ȃ�����ɂ��̃K�C�h���C�����g�p����悤�ɂȂ�Ɗm�M���Ă��܂��D���邢�͂��Ȃ����]�ނȂ�C�R�[�h�͂��Ȃ��Ǝ��̌`���ɕۂ��Ă����CBorland ����̃��|�W�g���ɑ���O�ɁC�������̃K�C�h���C���ɏ]�킹�邽�߂̃v���O���������s���Ă��������D

�Ⴆ�� Visual SlickEdit �̂悤�Ȉꕔ�̃e�L�X�g�G�f�B�^�́C����̃X�^�C���ɏ]���悤�ɃR�[�h�𐮌`����菕�������Ă���܂��D����Ɠ����@�\��񋟂��邻�̑��̃c�[����m���Ă���ǎ҂́C���̃Z�N�V�����̍Ō�ɂ��鎄�̃A�h���X�ɒm�点�Ă��������D

Egbert van Nes �̊J�����������̃t�H�[�}�b�^�[�͈ȉ��� URL �������”\�ł��D
http://www.dow.wau.nl/aew/delforexp.html
(�󒍁F�����̃����N�͐؂�Ă����̂ŏC�����܂���)

�s�̕i�̑I�����Ƃ��Ă� CrackerJax for Delphi ������܂��D
http://www.kineticsoftware.com/products.html
(�󒍁F�����̃����N�͐؂�Ă����̂ŏC�����܂���)

�������I���O�ɌJ��Ԃ��܂��DBorland �̃E�F�u�T�C�g��Ǝ������̐��i�Ƌ��ɏo�ׂ���� CD �ɂ����āC���̕W���͖@���ł��D�������͓��ꂳ�ꂽ�ǂ݂₷���X�^�C���ŃR�[�h��񋟂������Ǝv���Ă��܂��D���̃K�C�h���C���ɏ����ꂽ���[�����������邱�Ƃ́C���̖ڕW��B������ł��V���v���Ȏ�i�ł��D

���̋K��𑼂̃E�F�u�T�C�g�ɍڂ��Ȃ��ʼn������D����ɂ��̕����Ƀ����N���Ă��������D

�������Ă��󂯕t���Ă��܂��DCharlie Calvert �܂ŘA�����������D
(�󒍁F���Ȃ��Ƃ� 2004�N4�����_�Ń��[���A�h���X�͈���s���ƂȂ��Ă���C�A�������܂���ł����D���̂��߃����N�͍폜���܂���)


�ڎ�

(�󒍁F�����͏͗��Ă��������Ă��܂�(����8�͕ӂ�)�D���̖|��ł͓K�X�������Ă��܂�)

1 ����

���̕����� Object Pascal �̕��@���`���悤�Ƃ�����̂ł͂���܂���D�Ⴆ�� else �̑O�ɃZ�~�R������u���͕̂��@�ᔽ�ł����C���̏ꍇ�͒P�ɃR���p�C�������������Ȃ��悤�Ɏd�����邾���ł��D���������āC���̃X�^�C���K�C�h�ɂ͂��̂悤�ȃ��[���͏�����Ă��܂���D���̕����� Object Pascal �����Ȃ��ɑI������^���Ă��镔���ɂ����Ď��ׂ��K�؂ȕ��j���`���邱�Ƃ�ړI�Ƃ��Ă��܂��D

1.1 �w�i

�����Œ񋟂����K�C�h���C���� Delphi �\�[�X�̌��̕�������ɂ��Ă��܂��DDelphi �\�[�X�͂��̃K�C�h���C���ɐ��m�ɏ]���ׂ��ł��D���Ȃ������̃K�C�h���C���ɏ]���Ă��Ȃ��\�[�X�����‚����ꍇ�ł��C���̐�������O�ꂽ�\�[�X�ł͂Ȃ��C���̃K�C�h���C�������Ȃ��̕W���Ƃ݂Ȃ��ׂ��ł��D�������Ȃ���C���Ȃ��Ƃ������̃R�[�h���ǂ̂悤�Ɍ�����ׂ����Ƃ�����ʓI�Ȋ��o�𓾂�̂ɖ𗧂Œ���C���Ȃ��͂��̃\�[�X�����̃K�C�h���C���̕⑫�Ƃ��Ďg�p����ׂ��ł��D

1.2 �ӎ�

���̕����̃t�H�[�}�b�g�ƈꕔ�̗p��́CJava ����̃X�^�C���W�����`���邽�߂ɍs��ꂽ���ʂɊ�Ă��܂��DJava �� Object Pascal �\�[�X�̏����̃��[���ɂ͉e����^���Ă��܂��񂪁CSun �̃E�F�u�T�C�g�ɂ��镶���͂��̕����̊�b�ƂȂ��Ă��܂��D���ɂ��̕����̃X�^�C���ƃt�H�[�}�b�g�́CAchut Reddy �ɂ�� "A Coding Style Guide for Java WorkShop and Java Studio Programming" �̉e���������󂯂Ă��܂��D���̕����͎���URL�Ō��邱�Ƃ��ł��܂��D
URL:http://wwws.sun.com/software/sundev/whitepapers/java-style.pdf (PDF)
(�󒍁F�����̃����N�͐؂�Ă����̂ŏC�����܂���)

Delphi �`�[�������̕����̍쐬�ɑ傫���v�����܂����D���ۂ̂Ƃ���C�ނ�̏�����������΂��̕�������邱�Ƃ͏o���Ȃ������ł��傤�D

2 �\�[�X�t�@�C��

Object Pascal �̃\�[�X�̓��j�b�g�� Delphi Project �t�@�C���ɕ������C���ɓ����K��ɏ]���܂��DDelphi Project �t�@�C���̊g���q�� DPR �ŁC�v���W�F�N�g�̃��C���\�[�X�ɂȂ�܂��D�v���W�F�N�g�Ŏg�p�����S�Ẵ��j�b�g�͊g���q PAS �������܂��D�v���W�F�N�g���ł͂��̑��ɁC�o�b�`�t�@�C���� html �t�@�C���CDLL ���̒lj��t�@�C���������������܂����C���̕����ł� DPR �t�@�C���� PAS �t�@�C���̏��������������܂��D

2.1 �\�[�X�t�@�C���̖���

Object Pascal �͒����t�@�C�������T�|�[�g���Ă��܂��D�ЂƂ‚̖��O��t����̂ɕ����̒P����g�p����ꍇ�C�P�ꖈ�ɑ啶�����g�p����̂��ŗǂł�(��FMyFile.pas)�D����� InfixCaps�C�܂��� Camel Caps �Ƃ��Ēm���Ă��܂��D�g���q�͏������ł���ׂ��ł��D���j�I�ȗ��R�ɂ��CDelphi ���g�Ɋ܂܂�Ă���\�[�X�ł� 8.3 �`���ɐ�������Ă�����̂�����܂����C���͂�Ⴆ���ꂪ Delphi �`�[���ɂ���Ďg�p�����ł��낤�\�[�X�ł����Ă��C�J���҂͂��̐����ɔ�����K�v�͂���܂���D

C/C++ �̃w�b�_�t�@�C����|�󂷂�ꍇ�C�g���q�� PAS �ł��邱�Ƃ������C�Ή����� Pascal �̃w�b�_�t�@�C���͖|�󌳂̃t�@�C���Ɠ������O�����‚ł��傤�D�Ⴆ�΁CWindows.h��Windows.pas�ɂȂ�܂��DPascal�̕��@�̐����̂��߂ɕ����̃w�b�_�t�@�C������‚̃��j�b�g�Ɍ������Ȃ���΂Ȃ�Ȃ��ꍇ�C�t�@�C�����܂Ƃ߂錳�ɂȂ郆�j�b�g�̖��O���g�p���܂��D�Ⴆ�΁CWinBase.h �� Windows.h �Ɋ܂߂�ꍇ�CWindows.pas �Ɩ������܂��D

2.2 �\�[�X�t�@�C���̍\��

�S�Ă� Object Pascal �̃��j�b�g�͈ȉ��̗v�f�����̏����Ŋ܂ނׂ��ł��D

  1. Copyright/ID �u���b�N�R�����g
  2. ���j�b�g��
  3. �C���^�[�t�F�[�X��
  4. ������
  5. �I���� end �ƃs���I�h

�e�v�f�͏��Ȃ��Ƃ���s�ȏ�̋�s�ŋ�؂�ׂ��ł��D

���Ȃ����K�؂��Ǝv���ꏊ�ɒlj��̗v�f��g�ݓ���邱�Ƃ��o���܂��D�������C�t�@�C���̐擪�͏�ɃR�s�[���C�g�Ŏn�܂�C���Ƀ��j�b�g���C�����ď����R���p�C����`��R���p�C���w�߂�C���N���[�h���C���̎��� uses �߂Ƃ���������ς��Ă͂����܂���D

{*******************************************************}
{                                                       }
{       Borland Delphi Visual Component Library         }
{                                                       }
{       Copyright (c) 1995,98 Inprise Corporation       }
{                                                       }
{*******************************************************}

unit Buttons;

{$S-,W-,R-}
{$C PRELOAD}

interface

uses 
  Windows, Messages, Classes, 
  Controls, Forms, Graphics, 
  StdCtrls, ExtCtrls, CommCtrl;

type �߂�const �߂̑O�ɒu������Ctype �߂� const �߂��D���ȏ����ō����Ďg�����Ƃ��Ă���肠��܂���D

�������̏����́C�ŏ��� implementation�C����uses�߁C���ɃC���N���[�h���₻�̑��̃R���p�C���w�߂ƂȂ�ׂ��ł��D

implementation

uses 
  Consts, SysUtils, ActnList, 
  ImgList;

{$R BUTTONS.RES}

2.2.1 Copyright/ID �u���b�N�R�����g

�S�Ẵ\�[�X�t�@�C���̓o�[�W�������ƕW���I�ȃR�s�[���C�g�ʒm���܂ރu���b�N�R�����g�Ŏn�܂�ׂ��ł��D�o�[�W�������͈ȉ��̃t�H�[�}�b�g�ł���ׂ��ł��D

{*******************************************************}
{                                                       }
{       Widgets Galore                                  }
{                                                       }
{       Copyright (c) 1995,98 Your Company              }
{                                                       }
{*******************************************************}

�R�s�[���C�g�ʒm�͏��Ȃ��Ƃ��ȉ��̍s���܂ނׂ��ł��D

Copyright (c) yearlist CopyrightHolder.

�������Ȃ����CBorland �ɂ���Ďg�p�����t�@�C�����쐬���Ă���T�[�h�p�[�e�B�Ȃ�C�R�s�[���C�g�ʒm�̍Ō�ɂ��Ȃ��̖��O��lj����Ă��\���܂���D

{*******************************************************}
{                                                       }
{       Borland Delphi Visual Component Library         }
{       Copyright (c) 1995,99 Borland International     }
{       Created by Project JEDI                         }
{                                                       }
{*******************************************************}

2.2.2 ���j�b�g�錾

�S�Ẵ\�[�X�t�@�C���̓��j�b�g�錾�������Ȃ���΂Ȃ�܂���D�P�� unit �͗\���ł���C�]���ď������ł���ׂ��ł��D���j�b�g���ɂ͑啶���Ə����������݂�����ׂ��ł���COS �̃t�@�C���V�X�e�����g�p���閼�O�Ɠ����łȂ���΂Ȃ�܂���D

unit MyUnit;

���̃��j�b�g���t�@�C���V�X�e����ɒu�����ꍇ�CMyUnit.pas �Ɩ�������܂��D

2.2.3 uses �錾

���j�b�g���� uses �錾�́C�������� uses �Ŏn�܂�ׂ��ł��D�e���j�b�g���Ő錾����Ă���L���s�^���C�Y�K���ɂ��������ă��j�b�g����lj����܂��D

uses MyUnit;

�e���j�b�g�̓J���}�ŋ�؂��Ȃ���΂Ȃ炸�C�Ō�̃��j�b�g�̌��ɃZ�~�R�������u�����ׂ��ł��D

uses 
  Windows, SysUtils, Classes, Graphics, Controls, Forms, 
  TypInfo;

��̗�̂悤�� uses �߂����̎��̍s����n�߂�̂�̂��C���̂悤�Ƀ��j�b�g�̃��X�g�𓯂��s����n�߂�̂��������������ł��D

uses Windows, SysUtils, Classes, Graphics, Controls, Forms, 
  TypInfo;

uses �߂̃��j�b�g���X�g�� 80 �����ȓ��ɂȂ�悤�ɐ܂�Ԃ�����C�s���ɂЂƂ‚��ƒ��j�b�g�������Ă��\���܂���D

2.2.4 class/interface �錾

class �錾�͋�2��������n�܂�C���̌�ɑ啶�� T ����n�܂鎯�ʎq�������܂��D���ʎq�͑啶���Ŏn�߁C���ߍ��܂�Ă���P�ꖈ�ɑ啶�����g�p����ׂ��ł�(InfixCaps)�DObject Pascal �\�[�X�ł̓^�u�������g�p���Ă͂����܂���D
��F

  TMyClass

���ʎq�̌��ɂ͋�1�����C�C�R�[���L���C�������� class �Ƒ����܂��D

  TMyClass = class 

��ʃN���X���w�肵�����ꍇ�́C���ʁC��ʃN���X���C�‚����ʂ�lj����܂��D

  TMyClass = class(TObject)

�X�R�[�v�w��q�͍��[�����2�������󂯁C���̗�Ŏ��������Ő錾�����ׂ��ł��D

  TMyClass = class(TObject)
  private
  protected
  public
  published
  end;

�f�[�^�͏�� private �߂݂̂ɒu����C���̎��ʎq��F�Ŏn�܂�ׂ��ł��D�S�Ă̌^�錾�͍��[�����4�������󂯂ď������ׂ��ł��D

  TMyClass = class(TObject)
  private
    FMyData: Integer;
    function GetData: Integer;
    procedure SetData(Value: Integer);
  public
  published
    property MyData: Integer read GetData write SetData;
  end;

�C���^�[�t�F�[�X�� class �錾�Ɠ������[���ɏ]���܂��D�������C���ׂẴX�R�[�v�w��q�� private �̃f�[�^�͍폜���Ȃ���΂Ȃ炸�Cclass �ł͂Ȃ� interface �ƋL�q���Ȃ���΂����܂���D

3 �����K��

�����������ŏ������\����w�߂������CPascal �̑S�Ă̎��ʎq�ɂ� InfixCaps ���g�p���܂��D�‚܂�C�ŏ��̕������啶���ŁC���ʎq�̒��ɖ��ߍ��܂�Ă���e�P����啶���Ŏn�܂�C����������Ȃ�P����啶�����g�p���܂��D
��F

MyIdentifier
MyFTPClass

���̋K���ɑ΂����ȗ�O�́C�w�b�_�t�@�C����|�󂷂�ꍇ�ł��D���̏ꍇ�ɂ́C��ɂ��̃w�b�_�t�@�C���Ŏg�p����Ă���K���ɏ]���ׂ��ł��D�Ⴆ�΁CWM_LBUTTONDOWN �� wm_LButtonDown �Ƃ͏����܂���D

�w�b�_�t�@�C����|�󂷂�ꍇ�������C�P��̋�؂�ɃA���_�[�X�R�A���g�p���Ă͂����܂���D�N���X���͖����C�܂��͖�����ł���ׂ��ł��D�C���^�[�t�F�[�X����N���X���́C���̎�v�ȖړI��\���悤�ɂ��܂��D

�ǂ��^��:
  AddressForm, ArrayIndexOutOfBoundsException

�����^��:
  ManageLayout         // ������
  delphi_is_new_to_me  // �A���_�[�X�R�A

3.1 ���j�b�g�̖���

���̃Z�N�V�����̍ŏ��Ő������� InfixCaps ���g�p���܂��Dunit �錾 �̃Z�N�V�������Q�Ƃ��Ă��������D

3.2 �N���X/�C���^�[�t�F�[�X�̖���

���̃Z�N�V�����̍ŏ��Ő������� InfixCaps ���g�p���܂��D�e�^�錾�͑啶�� T �Ŏn�߂܂��D

TMyType 

class/interface �錾�̃Z�N�V�������Q�Ƃ��Ă��������D

3.3 �t�B�[���h�̖���

���̃Z�N�V�����̍ŏ��Ő������� InfixCaps ���g�p���܂��D�e�^�錾�͑啶�� F �Ŏn�߂܂��D�S�Ẵf�[�^�� private �߂ɒu���C���J����ꍇ�ɂ̓v���p�e�B��Q�b�^�[/�Z�b�^�[���g���܂��D�Ⴆ�΁C�t�B�[���h�l��Ԃ��֐��ɂ� GetSomething �Ƃ������O���g�p���C�l���Z�b�g����葱���ɂ� SetSomething �Ƃ������O���g�p���܂��D

�w�b�_�t�@�C���̖|��̂��߂ɕK�v�ȏꍇ�������C�S�đ啶���̒萔��錾���Ă͂����܂���D

Delphi �̓J���t�H���j�A�ō���Ă��܂��D���̂��ߎ������́C�w�b�_�t�@�C���̖|��̂��߂ɕK�v�ȏꍇ�������C�\�L�@���g�p���܂���D

������
  FMyString: string;

���
  lpstrMyString: string;

��O�I�ɁC�񋓌^�ɂ̓n���K���A���L�@���g�p���܂��D

  TBitBtnKind = (bkCustom, bkOK, bkCancel, bkHelp, 
    bkYes, bkNo, bkClose, bkAbort, bkRetry, 
    bkIgnore, bkAll);

���̏ꍇ�C�񋓌^�̊e�v�f�̑O�ɕ��� bk ��u���Ă��܂��Dbk �� ButtonKind ��\���Ă��܂��D

���O�t���K���ɂ‚��čl����ꍇ�C�ꎞ�ϐ��⃋�[�v�J�E���^�������C1 �����̃t�B�[���h���͔�����ׂ��ł��D

�ϐ� l (�������̃G��)�́C�ꕔ�̃v�����^��f�B�X�v���C��ł� 1 (�����̈�)�Ƌ�ʂ�����߁C������ׂ��ł��D

3.4 ���\�b�h�̖���

���\�b�h���ɂ� InfixCaps �X�^�C�����g�p����ׂ��ł��D�啶���Ŏn�߁C���O�̒��̊e�P��̍ŏ��̕����ɑ啶�����g�p���C����������Ȃ�P����啶�����g�p���܂��D�����ȊO�̕����͑S�ď������ɂ��܂��D�P��̋�؂�ɃA���_�[�X�R�A���g�p���Ă͂����܂���D���̋K���͔�萔�t�B�[���h�̖����K���Ɠ����ł����C���̂ӂ��‚͕����ɂ���ĊȒP�ɋ�ʂł���_�ɒ��ӂ��Ă��������D���\�b�h���͖��ߌn������������ł���ׂ��ł��D

// �ǂ����\�b�h��:
ShowStatus, DrawCircle, AddLayoutComponent

// �������\�b�h��:
MouseButton  // ������ł���C�@�\��\���Ă��Ȃ�
drawCircle   // ����������n�܂��Ă���
add_layout_component  // �A���_�[�X�R�A

// ���̃��\�b�h�̋@�\�͕������D
// ����̓T�[�o�[�@�\���J�n����̂��H
// (����Ȃ� StartServer �̕����ǂ�)
// ����Ƃ��T�[�o�[���J�n����Ă��邩�ǂ������e�X�g����̂��H
// (����Ȃ� IsServerRunning �̕����ǂ�)
ServerRunning  // �����傾���C���ߌ`�ł͂Ȃ�

�N���X�̃v���p�e�B���擾�E�ݒ肷�郁�\�b�h�́C���ꂼ�� GetProperty �� SetProperty �Ɩ�������ׂ��ł��D������ Property �͂��̃v���p�e�B�̖��O�ł��D

��:

GetHeight, SetHeight

�N���X�� boolean �^�v���p�e�B���e�X�g���郁�\�b�h�́C�Ⴆ�΂��̃v���p�e�B���� Visible �ł���΁CIsVisible �Ɩ�������ׂ��ł��D

��:

IsResizable, IsVisible

3.5 ���[�J���ϐ��̖���

���[�J���ϐ��̓t�B�[���h���Ɠ��������K���ɏ]���܂��D�������C����̓I�u�W�F�N�g�̃t�B�[���h�ł͂Ȃ��̂ŁC�ŏ��� F �͏Ȃ��܂��D(�Z�N�V���� 3.3 �Q��)

3.6 �\���

�\����w�߂͑S�ď������ŏ����ׂ��ł��D����͎��ɂ�����Ƃ��������������܂��D�Ⴆ�� Integer �̂悤�Ȍ^�͒P�Ȃ鎯�ʎq�Ȃ̂ő啶���Ŏn�߂܂����C������͗\��� string �Ƃ��Đ錾����Ă���̂ŁC�S�ď������ŏ����܂��D
(�󒍁F���Ȃ��Ƃ� Delphi 5 �̃R�[�h�⊮�@�\�ł� "String" �ƕ⊮����܂��D�P�Ȃ� Delphi ���̃~�X���C���邢�́Cstring �� Integer �Ɠ����悤�Ɉ����Ă��قƂ�ǖ��Ȃ����߂ɂ킴�Ƃ������Ă���̂��C�^���͕�����܂���)

3.7 �^�錾

�S�Ă̌^�錾�͕��� T �Ŏn�܂�C���̃Z�N�V�����̎n�����N���X�錾�̃Z�N�V�����ŏq�ׂ����̂Ɠ����L���s�^���C�Y�̋K��ɏ]���ׂ��ł��D

4 �󔒂̎g�p

4.1 ��s

�_���I�Ɋ֘A�����ƒR�[�h����s��p���ăO���[�v�����邱�Ƃɂ��C�“ǐ������コ���邱�Ƃ��o���܂��D��s�͈ȉ��̂悤�ȏꏊ�ł��g�p����ׂ��ł��D

  1. �R�s�[���C�g�̃u���b�N�R�����g�̌�C�p�b�P�[�W�錾�̌�C�C���|�[�g���̌�
  2. �e�N���X�錾�̊�
  3. �e���\�b�h�錾�̊�

4.2 �󔒕���

Object Pascal�͔��ɂ��ꂢ�œǂ݂₷������ł��D��ʂɁC�s�𕪊����邽�߂ɃR�[�h���ɑ����̋󔒂�lj�����K�v�͂���܂���D�ȉ��̃Z�N�V�����ŃR�[�h�ɋ󔒂�u���ۂɏ]���ׂ������‚��̃K�C�h���C���������܂��D

4.2.2 �󔒂��g���ׂ��ł͂Ȃ��ꏊ

  1. ���\�b�h���Ƃ��̎��̊��ʂ̊�
  2. .(�h�b�g)���Z�q�̑O��
  3. �P�����Z�q�Ƃ��̃I�y�����h�̊�
  4. �L���X�g�ƃL���X�g�Ώۂ̊�
  5. �J�����ʂ̌��C�‚����ʂ̑O
  6. �J���u���P�b�g [ �̌��C�‚��u���P�b�g ] �̑O
  7. �Z�~�R�����̑O

�������g�p��F

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

�Ԉ�����g�p��F

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

4.3 �C���f���g

�S�ẴC���f���g���x���ɂ����āC��2�������g�p����ׂ��ł��D����������ƁC�ŏ��̃��x���̃C���f���g�͋�2�����C��Ԗڂ̃��x���ɂ͋�4�����C�O�Ԗڂɂ͋�6�����ƌ������Ƃł��D�^�u�������g�p���Ă͂����܂���D

�����‚��̗�O������܂��D�\��� unit�Cuses�Ctype�Cinterface�Cimplementation�Cinitialization�Cfinalization �́C��ɍ��[����n�߂�ׂ��ł��D���j�b�g�̍Ō�� end �����[����n�߂�ׂ��ł��D�v���W�F�N�g�t�@�C�����ł́Cprogram �ƃ��C���� begin �� end �͏�ɍ��[����n�߂�ׂ��ł��Dbegin..end �u���b�N�̓����̃R�[�h�͏��Ȃ��Ƃ���2�����ŃC���f���g�����ׂ��ł��D

4.4 �s�̐܂�Ԃ�

�e�s�� 80 ���ɐ�������ׂ��ł��D80 �����z����s�͕K�v�ɉ����� 2 �s�ȏ�ɐ܂�Ԃ��܂��D�܂�Ԃ����s�͐擪�̍s�ɑ΂��� 2 �������̃C���f���g��t���ĕ��ׂ܂��Dbegin ���͂��ꂾ���ň�s�ɂ��܂��D

��:

// ������

function CreateWindowEx(dwExStyle: DWORD; 
  lpClassName: PChar; lpWindowName: PChar; 
  dwStyle: DWORD; X, Y, nWidth, nHeight: Integer;
  hWndParent: HWND; hMenu: HMENU; hInstance: HINST; 
  lpParam: Pointer): HWND; stdcall;

// ������

if ((X = Y) or (Y = X) or
  (Z = P) or (F = J) then
begin
  S := J;
end;

�p�����[�^�Ƃ��̌^�̊Ԃł́C���ꂪ�J���}��؂�̃��X�g�ł���ꍇ�������C�܂�Ԃ��Ă͂����܂���D�J���}��؂�̃��X�g�̏ꍇ�́C���̍s�Ɍ^���������悤�ɁC���Ȃ��Ƃ��Ō�̃p�����[�^�̒��O�Ő܂�Ԃ��܂��D�ϐ����ƃR�����̊Ԃɂ͋󔒂����܂���D�R�����ƌ^���̊Ԃɂ͂ЂƂ‚����󔒂����܂��D

// ������

procedure Foo(Param1: Integer; Param2: Integer);

// ���

procedure Foo( Param :Integer; Param2:Integer );

�_�����Z�q�̑O�ōs��܂�Ԃ��ׂ��ł͂���܂���D���ʂ͋󔒂�u���Ȃ��ꏊ�C�Ⴆ�΃��\�b�h���Ƃ��̌��̊��ʂ̊Ԃ�C�z�񖼂Ƃ��̌��̃u���P�b�g�̊Ԃ̂悤�ȏꏊ�ł́C�s��܂�Ԃ����Ƃ͔����Ȃ��Ă͂����܂���D�����ǂ����Ă����̂悤�ȏ󋵂Ő܂�Ԃ��Ȃ���΂Ȃ�Ȃ��ꍇ�C���s�ł���ꏊ�Ƃ��Ă̓��\�b�h���̒���̊J�����ʂ̌オ����܂��Dbegin �������̑��̃R�[�h�Ɠ����s�ɏ����Ă͂����܂���D

��:

// ������
while (LongExpression1 or LongExpression2) do begin
  // DoSomething
  // DoSomethingElse;
end;

// ������
while (LongExpression1 or LongExpression2) do 
begin
  // DoSomething
  // DoSomethingElse;
end;

// ������
if (LongExpression1) or 
  (LongExpression2) or 
  (LongExpression3) then

5 �R�����g

Object Pascal ����́C�u���b�N�R�����g�ƒP��s�R�����g�̓��ނ̃R�����g���T�|�[�g���Ă��܂��D�R�����g�̎g�p�Ɋւ��邢���‚��̈�ʓI�K�C�h���C�����ȉ��Ɏ����܂��D

i := i + 1;  // i��1��������

��:

// ???: Sort ���C�����ꂽ��CSort �̌Ăяo���ɕύX����
List.MySort;

5.1 �u���b�N�R�����g

Object Pascal �͓��ނ̃u���b�N�R�����g���T�|�[�g���Ă��܂��D�ł���ʓI�Ɏg�p�����u���b�N�R�����g�́C�u���[�X�̃y�A { } �ł��DDelphi �`�[���͂��̃^�C�v�̃R�����g���o���邾���Ȍ��ɕۂ‚̂��D�݂܂��D�Ⴆ�΁C�R�����g���ɐ���͗l����邽�߂ɃA�X�^���X�N���g���͔̂�����ׂ��ł��D���̑���C���[�v�������Ɠ����悤�ɋ�s���g�p���ăR�����g�𕪊����܂��D�ȉ��� DsgnIntf.pas ����̔����̂悤�ɁC�R�����g���̌��t�͍ŏ��̃u���[�X�Ɠ����s����n�߂�ׂ��ł��D

{ TPropertyEditor

  Edits a property of a component, or list of components, 
  selected into the Object Inspector.  The property 
  editor is created based on the type of the
  property being edited as determined by the types 
  registered by...
  
  etc...
  
    GetXxxValue
      Gets the value of the first property in the 
      Properties property.  Calls the appropriate 
      TProperty GetXxxValue method to retrieve the 
      value. 
      
    SetXxxValue Sets the value of all the properties 
      in the Properties property.  Calls the appropriate 
      TProperty SetXxxxValue methods to set the value. }

�\�[�X�t�@�C���̍ŏ��� Copyright/ID �R�����g�ɂ́C��Ƀu���b�N�R�����g���g�p����܂��D�܂��C�����s�̃R�[�h���R�����g�A�E�g����ꍇ�ɂ��g���܂��D

���\�b�h���������u���b�N�R�����g�́C���\�b�h��`�̑O�ɒu���ׂ��ł��D

��:

// ������

{ TMyObject.MyMethod
   
  This routine allows you to execute code. }

procedure TMyObject.MyMethod;
begin
end;

// ���

procedure TMyObject.MyMethod;
{******************************************************
  TMyObject.MyMethod
   
  This routine allows you to execute code. 
*******************************************************}
begin
end;

�����ЂƂ‚̃u���b�N�R�����g�́C��‚̕����C���ʂƃA�X�^���X�N���܂݂܂� (* *)�D���Ƃ��Ă����͐����ʃR�����g(starparen comments)�ƌĂ΂�܂��D��ʓI�ɁC���̃R�����g�͊J�����ɂ̂ݖ��ɗ����܂��D�Ȃ��Ȃ炱�̃R�����g�̎�ȗ��_���C2 �i�K�܂ł̃R�����g�̃l�X�g���”\�ɂ��邱�Ƃ�����ł��DObject Pascal �͓�����ނ̃R�����g�̃l�X�g���T�|�[�g���Ă��܂���D�‚܂�C���ۂɂ̓R�����g�̃l�X�g��1�i�K�������݂����C�����ʂ̒��̃u���[�X�C�u���[�X�̒��̐����ʁC�Ƃ������Ƃł��D���ꂼ�ꂪ�l�X�g���Ă��Ȃ�����C���̃^�C�v�̃R�����g�̊Ԃɂ��邻�̑��̕W���I�� Pascal �̃R�����g�͖�������܂��D���������Ă��̕��@���g���΁C�R�[�h��R�����g�̍��������傫�ȃR�[�h�̌ł܂���܂Ƃ߂ăR�����g�A�E�g���邱�Ƃ��o���܂��D

(* procedure TForm1.Button1Click(Sender: TObject);
begin
  DoThis; // Start the process
  DoThat; // Continue iteration
  { We need a way to report errors here, perhaps using
    a try finally block ??? }
  CallMoreCode; // Finalize the process
end; *)

���̗�ł́C�v���V�[�W���� begin �� end �̊Ԃɂ��鑼�̃R�����g���܂߁C���\�b�h Button1Click �S�̂��R�����g�A�E�g���Ă��܂��D

5.2 �P��s�R�����g

�P��s�R�����g�́C������ // �ƁC����ɑ����e�L�X�g�ō\������܂��D// �ƃR�����g�̊Ԃɂ͋󔒂� 1 ���������ׂ��ł��D�P��s�R�����g�́C���̌�ɑ����R�[�h�Ɠ����C���f���g���x���ɒu���ׂ��ł��D�P��s�R�����g�𕡐��p���āC���傫�ȃR�����g������Ă��\���܂���D

�P��s�R�����g��R�����g�O���[�v�̑O�ɂ́C���ꂪ�u���b�N�̍ŏ��̍s�ł͂Ȃ�����C��s�� 1 �s�u���ׂ��ł��D�����̕��ɑ΂��ĒP��s�R�����g��u���ꍇ�C���̃R�����g��R�����g�O���[�v�̌�ɂ���s��1�s�u���ׂ��ł��D�R�����g�����̕�(�������ł��ǂ�)�����ɓK�p�����ꍇ�C���̌�ɋ�s��u���Ă͂����܂���D

��:

// �f�[�^�x�[�X���J��
Table1.Open;

�P��s�R�����g�́C�R�����g�Ώۂ̃R�[�h�̌��ɑ����邱�Ƃ��o���܂��D���Ƀg���C�����O�R�����g(trailing comments)�ƌĂ΂�邱�̃R�����g�́C���̃R�����g����������R�[�h�Ɠ����s�ɒu����܂��D���̃R�����g�Ƃ��ꂪ��������R�[�h�Ƃ̊Ԃɂ͏��Ȃ��Ƃ�1�����̋󔒂�u���ׂ��ł��D�ЂƂ‚̃R�[�h�u���b�N�ɓ�ˆȏ�̃g���C�����O�R�����g�������ꍇ�C�����͑S�ē������ɑ�����ׂ��ł��D

��:

if (not IsVisible) then
  Exit;          // nothing to do
Inc(StrLength);  // reserve space for null terminator

�S�ẴR�[�h�Ƀg���C�����O�R�����g��t���邱�Ƃ͔����Ȃ���΂����܂���D�ʏ�C���\�b�h��֐��� begin..end ���ɏ����R�����g���ŏ����ɐ������邱�Ƃ͍œK�ł��D��蒷���R�����g�́C���\�b�h�錾��֐��錾�̑O�̃u���b�N�R�����g���ɒu�����Ƃ��o���܂��D

6 �N���X

6.1 �N���X�{�̂̍\��

�N���X�{�̂̐錾�͈ȉ��̏����ō\�������ׂ��ł��D

�N���X���̃t�B�[���h�C�v���p�e�B�C���\�b�h�́C���O�̃A���t�@�x�b�g���ɕ��ׂ�ׂ��ł��D

6.2 �A�N�Z�����x��

IDE �ɂ���đ}�������R�[�h�������C�N���X�̃X�R�[�v�w��q�͈ȉ��̏����Ő錾�����ׂ��ł��D

Object Pascal �ɂ̓N���X�̃����o�[�̃A�N�Z�X���x���Ƃ��āC�A�N�Z�X���x���̍������ɁCpublished�Cpublic�Cprotected�Cprivate ��4��ނ�����܂��D�f�t�H���g�̃A�N�Z�X���x���� published �ł��D��ʂɁC�����o�[�ɂ͂��̃����o�[�ɂƂ��ēK�؂ȍŒ���̃A�N�Z�X���x����^����ׂ��ł��D�Ⴆ�΁C�������j�b�g���̃N���X���炾���A�N�Z�X����郁���o�[�ɂ� private �A�N�Z�X����ݒ肷��ׂ��ł��D���Ⴂ�A�N�Z�X���x���Ő錾���邱�Ƃ́C���΂��΂�葽���̍œK���̋@����R���p�C���ɗ^���܂��D���̈���ŁCprivate �̎g�p�̓T�u�N���X���ɂ��N���X�̊g���������܂��D�����������̃N���X���T�u�N���X������邩������Ȃ��ƍl����Ȃ�C�T�u�N���X�ŕK�v�Ƃ���邩������Ȃ������o�[�� private �̑���� protected �Ő錾���Cprivate �ȃf�[�^�ւ̃A�N�Z�X�Ɏg����v���p�e�B�ɂ� protected �̒n�ʂ�^����ׂ��ł��D

�f�[�^�ւ� public �ȃA�N�Z�X�͌����ċ��‚���ׂ��ł���܂���D�f�[�^�͏�� private �߂Ő錾���Cpublic �ȃA�N�Z�X�̓Q�b�^�[�E�Z�b�^�[���\�b�h�C�܂��̓v���p�e�B���o�R����ׂ��ł��D

6.3 �R���X�g���N�^�錾

���\�b�h�̓A���t�@�x�b�g���ɕ��ׂ�ׂ��ł����C�R���X�g���N�^�ƃf�X�g���N�^�� public �߂̃��X�g�̐擪�ɒu���̂��C������ public �߂̃A���t�@�x�b�g���̈ʒu�ɒu���̂��C�ǂ�����������������ł��D

��ˆȏ�̃R���X�g���N�^�����݂��C����炪�S�ē������O�̏ꍇ�C��葽���̃p�����[�^�����ƒR���X�g���N�^����菭�Ȃ��p�����[�^�����ƒR���X�g���N�^�̌�ɗ���悤�ɂ��Ȃ���C�p�����[�^���X�g�̎������ɕ��ׂ܂��D�����(���������)���������̃R���X�g���N�^����ɐ擪�ɗ��邱�Ƃ��Ӗ����܂��DC++Builder �Ƃ̌݊����̂��߂ɂ́C�R���X�g���N�^�̃p�����[�^���X�g�����j�[�N�ɂȂ�悤�ɂ��܂��DC++ �̓R���X�g���N�^�𖼑O�ŌĂԂ��Ƃ��o�����C���������ĕ����̃R���X�g���N�^����ʂ���B��̕��@���p�����[�^���X�g�ɂȂ�܂��D

6.4 ���\�b�h�錾

�”\�Ȃ�΁C���\�b�h�錾�͈�s�ɂ���ׂ��ł��D

��:

// ���s���鎞�͍������2�������󂯂ĕ��ׂ܂��D
procedure ImageUpdate(img: Image, infoflags: Integer,
  x: Integer, y: Integer, w: Integer, h: Integer);

7 �C���^�[�t�F�[�X

�C���^�[�t�F�[�X�̓N���X�̐錾�Ɠ����悤�Ȍ`�Œ�`���܂��D

InterfaceName = interface([Inherited Interface])
  InterfaceBody
end;

�C���^�[�t�F�[�X�錾�͋� 2 �����ŃC���f���g���܂��D�C���^�[�t�F�[�X�{�̂� 4 �����ŃC���f���g���܂��D�I��� end ������ 2 �����ŃC���f���g���܂��D�I���� end ���̒���ɃZ�~�R������u���ׂ��ł��D

�C���^�[�t�F�[�X�錾�ɂ̓t�B�[���h�͂���܂���D�������C�v���p�e�B�͋�����܂��D

�C���^�[�t�F�[�X�̑S�Ẵ��\�b�h�́C�������Ȃ��Ă� public ���� abstract �ł��D�C���^�[�t�F�[�X���\�b�h�̐錾�̒��ɂ����̃L�[���[�h�𖾎��I�Ɋ܂߂Ă͂����܂���D

��ɏ��������Ƃ������C�C���^�[�t�F�[�X�錾�̓N���X�̏ꍇ�Ɠ����K�C�h���C���ɏ]���܂��D

7.1 �C���^�[�t�F�[�X�{�̂̍\��

�C���^�[�t�F�[�X�錾�̖{�͈̂ȉ��̏����ō\�������ׂ��ł��D

  1. �C���^�[�t�F�[�X���\�b�h�錾
  2. �C���^�[�t�F�[�X�v���p�e�B�錾

�C���^�[�t�F�[�X�̃��\�b�h�ƃv���p�e�B�̐錾�X�^�C���́C�N���X�̃��\�b�h�ƃv���p�e�B�̃X�^�C���Ɠ����ł��D

8 ��

���� 1 �s�ȏ�̃R�[�h�ƁC����ɑ����Z�~�R�������琬��܂��D�P�ꕶ�̓Z�~�R�������ЂƂ‚����܂݂܂��D����C�������͓�ˆȏ�̃Z�~�R�������܂݁C�����̒P�ꕶ���܂݂܂��D

����͒P�ꕶ�ł��D

A := B; 

����͕���(���邢�͍\����)���ł��D

begin
  B := C;
  A := B;
end;

8.1 �P�ꕶ

�P�ꕶ�͂ЂƂ‚̃Z�~�R�������܂݂܂��D����܂�Ԃ��Ȃ���΂Ȃ�Ȃ��ꍇ�C��s�ڂ͒��O�̍s�ɑ΂��ċ� 2 �������C���f���g���܂��D

  MyValue := 
    MyValue + (SomeVeryLongStatement / OtherLongStatement);

8.1.1 ������Ǝ�

�e�s�͂����ЂƂ‚̕����܂ނׂ��ł��D�Ⴆ�΁C

a := b + c; Inc(Count);  // ���
a := b + c;              // ������
Inc(Count);              // ������

8.1.2 ���[�J���ϐ��錾

���[�J���ϐ��� Camel Caps (�啶���Ŏn�܂�C���ߍ��܂�Ă���e�P��̐擪���啶��)�ɏ]���ׂ��ł��D�ϐ����̑O�� F ��t�������Ă͂����܂���D����̓N���X�錾�̃t�B�[���h�p�ɗ\�񂳂�Ă���K��������ł��D

var
  MyData: Integer;
  MyString: string;

�����^�̕����̎��ʎq����s�Ő錾���Ă��\���܂���D

var
  ArraySize, ArrayCount: Integer;

�������C�N���X�錾�ł͂��̋K�����g��Ȃ��ʼn������D�N���X�錾�̏ꍇ�͊e�t�B�[���h�����̌^�Ƌ��ɕʁX�̍s�ɏ����ׂ��ł��D

8.1.3 �z��錾

�J���u���P�b�g "[" �̑O�ƕ‚��u���P�b�g "]" �̌�ɁC��ɋ󔒂� 1 �����u���ׂ��ł��D

type
  TMyArray = array [0..100] of Char;

8.2 ������

�������͏�ɃZ�~�R�����ŏI���܂����C���̒��オ end ���̏ꍇ�Ɍ���C�Z�~�R������u�����ǂ����͎��R�ł��D

begin
  MyStatement;
  MyNextStatement;
  MyLastStatement   // �����ɂ̓Z�~�R�����������Ă������Ă��ǂ�
end;

8.2.1 if

if���͏�ɍŒ� 2 �s�ŏ����ׂ��ł��D

��:

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

�\���� if ���ł́C���𕪂���e�v�f�����ꂼ��V�����s�ɏ����܂��D

��:

  // ���
  if A < B then begin
    DoSomething; 
    DoSomethingElse;
  end else begin
    DoThis;
    DoThat;
  end;
  
  // ������
  if A < B then 
  begin
    DoSomething; 
    DoSomethingElse;
  end 
  else 
  begin
    DoThis;
    DoThat;
  end;

�ȉ��́C�L�����ƍl�������‚��̃o���G�[�V�����ł��D

  // ������
  if Condition then
  begin
    DoThis;
  end else
  begin
    DoThat;
  end;

  // ������
  if Condition then
  begin
    DoThis;
  end
  else
    DoSomething;

  // ������
  if Condition then
  begin
    DoThis;
  end else
    DoSomething;

�ȉ��̏������͍D�܂�܂��񂪐�������ł��D

  if Condition then
    DoThis
  else DoThat;

8.2.2 for

��:

  // ���
  for i := 0 to 10 do begin
    DoSomething; 
    DoSomethingElse;
  end;
  

  // ������
  for i := 0 to 10 do
  begin
    DoSomething; 
    DoSomethingElse;
  end;

8.2.3 while

��:

  // ���
  while x < j  do begin
    DoSomething; 
    DoSomethingElse;
  end;
  

  // ������
  while x < j do 
  begin
    DoSomething; 
    DoSomethingElse;
  end;

8.2.4 repeat until

��:

  // ������
  repeat
    x := j;
    j := UpdateValue;
  until j > 25;

8.2.5 case

��:

  // ������
  case Control.Align of
    alLeft, alNone: NewRange := Max(NewRange, Position);
    alRight: Inc(AlignMargin, Control.Width);
  end;
  

  // ������
  case x of

    csStart:
      begin
        j := UpdateValue;
      end;

    csBegin: x := j;

    csTimeOut:
      begin
        j := x;
        x := UpdateValue;
      end;
      
  end;
      
  // ������
  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;

8.2.6 try

��:

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