문장 및 연산자

DelphiScript 문장

DelphiScript에서 문장은 다른 문장을 포함하지 않을 때 ‘단순(simple)’ 문장으로 간주됩니다. 단순 문장의 예로는 대입문과 프로시저 호출이 있습니다.

Simple statements:

X := Y + 10; // assignment

ShowMessage('Hello World!'); // procedure call

복합(compound) 문장은 여러 개의 문장으로 구성됩니다.

Compound statements:

Begin
  If A > B Then ShowMessage('A is bigger');
  Else ShowMessage('B is bigger');
  A := 0;
  B := 0;
End;

DelphiScript에서 변수에 값을 할당할 때는 콜론-이퀄(:=) 연산자를 사용합니다: :=

동등성(같음)을 테스트할 때는 등호(=) 연산자를 사용합니다: =

조건문

DelphiScript에는 스크립트 내 실행 흐름에 영향을 주는 제어문이 있습니다. 가장 일반적인 제어문은 If..Then 조건문입니다.

If Then 문

If..Then 문은 조건부 제어에 사용됩니다. 구문은 다음과 같습니다:

If Condition Then
  Begin
  // code here
  End
Else
  Begin
  // code here
  End;

Case Of 문

복잡한 If 문 집합을 피하기 위해, 종종 이를 Case 문으로 대체할 수 있습니다. 표현식에서의 case 문은 값 하나, 가능한 값 목록, 또는 값 범위를 선택하는 데 사용됩니다.

DelphiScript는 비정형(untyped) 언어이므로 Case 문에는 어떤 타입이든 사용할 수 있습니다. Case 문에는 Else 문을 포함할 수 있으며, (Case Of 조건 내에서) 어떤 레이블도 선택자(selector)의 값과 일치하지 않을 때 Else 문이 실행됩니다.

Example 1:

Case Char of
  '+' : Text := 'Plus sign';
  '-' : Text := 'Minus sign';
  '*', '/': Text := 'Multiplication or division';
  '0'..'9': Text := 'Number';
  'a'..'z': Text := 'Lowercase character';
  'A'..'Z': Text := 'Uppercase character';
else
  Text := 'Unknown character';
End;

Example 2:

Case UserName of
  'Jack', 'Joe' : IsAdministrator := true;
  'Fred' : IsAdministrator := false;
else
  Raise('Unknown User');
End;

With 문

With 문은 DelphiScript의 축약 표기입니다. 레코드 타입 변수(또는 객체)를 참조할 때, 매번 이름을 반복하는 대신 ‘with’ 문을 사용할 수 있습니다.

Normal version:

Form.Canvas.Pen.Width := 2;
Form.Canvas.Pen.Color := clSilver;

Version using With:

With Form.Canvas.Pen do
Begin
  Width := 2;
  Color := clSilver;
End;

For To Do 루프

For..To..Do 문은 코드 블록(한 줄 이상의 코드)을 반복해서 순회하는 방법을 제공합니다. 기본 구문은 다음과 같습니다:

For counter := start To end Do
Begin
  // code here
End;

For 루프는 배열을 초기화하는 데 자주 사용됩니다. For..To..Do 루프의 카운터 방향은 DownTo 키워드를 사용해 루프를 감소(decrement)시키는 방식으로 제어할 수 있습니다. DelphiScript는 For..To..Do 루프를 조기에 종료하기 위한 Break/Exit 문을 제공합니다.

Repeat Until 루프

Repeat 문은 Boolean 표현식이 참이 될 때까지 반복 실행됩니다. Repeat 문은 항상 최소 한 번은 실행됩니다.

Example:

Repeat
  Write('Enter a value (0..9): ');
  ShowMessage(IntToStr(I));
Until (I >= 0) and (I <= 9);

While Do 루프

While 문은 Repeat 문과 유사하지만, 제어 조건이 문장 시퀀스의 첫 실행 전에 평가된다는 점이 다릅니다. 따라서 조건이 거짓이면 문장 시퀀스는 전혀 실행되지 않습니다.

Example:

Randomize;
I := 0;
While I < 1000 do
Begin
  I := I + Random (100);
  Add ('Random Number: ' + IntToStr (I));
End;

Continue 문

Continue 문은 Goto 문과 유사하게 루프 본문을 건너뜁니다. continue 문은 실행 중인 스크립트가 현재 For, While 또는 Repeat 루프의 다음 반복(iteration)으로 진행하도록 합니다.

Example:

var
  F: File;
  i: Integer;
Begin
  For i := 0 to (FileListBox1.Items.Count - 1) do
  Begin
    Try
    If FileListBox1.Selected[i] Then
    Begin
      If not FileExists(FileListBox1.Items.Strings[i]) then
      Begin
        MessageDlg('File: ' + FileListBox1.Items.Strings[i] + 'not found', mtError, [mbOk], 0);
        Continue;
      End;
      AssignFile(F, FileListBox1.Items.Strings[i]);
      Reset(F, 1);
      ListBox1.Items.Add(IntToStr(FileSize(F)));
      CloseFile(F);
    End;
    Finally
      { do something here }
    End;
  End;
End;

Goto 레이블 문

Goto 문은 Goto label 형태이며, 지정된 레이블로 표시된 문장으로 스크립트 실행을 이동시킵니다. 문장을 표시하려면 먼저 레이블을 선언한 다음, 대상 문장 앞에 레이블과 콜론(:)을 붙여야 합니다: label: statement

레이블은 유효한 식별자라면 무엇이든 될 수 있습니다. Label 선언과 Goto 문은 스크립트 내 동일한 코드 블록에 속해야 합니다. 따라서 프로시저나 함수 안으로(또는 밖으로) 점프하는 것은 불가능합니다.

Example:

Label StartHere;
  // code
StartHere: Beep;
Goto StartHere;

Exit 문

Exit 문은 함수 또는 프로시저에서 즉시 반환합니다. Try..Finally 블록 내부에서 Exit를 호출하면, 서브루틴이 반환되기 전에 Finally 부분이 실행됩니다. Exit 프로시저가 스크립트의 메인 본문에서 호출된 경우에는 스크립트 실행이 종료됩니다.

Example:

Begin
  Server := SchServer;
  If Server = Nil Then
  Begin
    ShowError('No SchServer started');
    Exit;
End;

Break 문

Break 문은 실행 중인 스크립트가 현재 For, While 또는 Repeat 루프에서 빠져나오도록 합니다. 스크립트 실행은 현재 루프 다음에 오는 실행 가능한 다음 줄에서 계속됩니다.

Example:

Var
  S: string;
Begin
  While True do
  Begin
    ReadLn(S);
    Try
      if S = '' then Break;
      WriteLn(S);
    Finally
      { do something for all cases }
    End;
  End;
End;

DelphiScript 표현식 연산자

일반적으로 표현식은 상수, 변수, 리터럴 값, 연산자, 함수 결과의 유효한 조합입니다. 표현식은 변수에 할당할 값을 결정하거나, 함수의 매개변수를 계산하거나, 조건을 테스트하는 데 사용됩니다. 표현식에는 함수 호출이 포함될 수 있습니다.

DelphiScript에는 여러 논리, 산술, Boolean 및 관계 연산자가 있습니다. 이러한 연산자는 우선순위(아래 참조) 순서로 그룹화되며, 이는 Basic, C 등에서 사용하는 우선순위와 다릅니다. 예를 들어 ANDOR 연산자는 관계 연산자보다 우선순위를 가집니다.

a<b and c<d를 작성하면, DelphiScript는 먼저 AND 연산을 수행하여 오류가 발생합니다. 이 문제를 방지하고 우선순위를 정의하려면 각 < 표현식을 괄호로 감싸야 합니다: (a<b) and (c<d);

아래에 나열된 지원되는 DelphiScript 연산자는 우선순위 순서대로 표시되어 있습니다.

우선순위별로 그룹화된 연산자

단항(Unary) 연산자가 가장 높은 우선순위를 가진다는 점에 유의하십시오.

Not

Boolean 또는 비트 단위 NOT.

Multiplicative and Bitwise Operators

*

산술 곱셈.

/

부동소수점 나눗셈.

div

정수 나눗셈.

mod

모듈로(정수 나눗셈의 나머지).

and

Boolean 또는 비트 단위 AND.

shl

비트 단위 왼쪽 시프트.

shr

비트 단위 오른쪽 시프트.

Additive Operators

+

산술 덧셈, 문자열 연결.

-

산술 뺄셈.

or

Boolean 또는 비트 단위 OR

xor

Boolean 또는 비트 단위 배타적 OR(EXCLUSIVE OR).

Relational and Comparison Operators (lowest precedence)

=

같은지 여부 테스트.

<>

같지 않은지 여부 테스트.

<

보다 작은지 여부 테스트.

>

보다 큰지 여부 테스트.

<=

작거나 같은지 여부 테스트.

>=

크거나 같은지 여부 테스트.

또한 ^@ 연산자는 DelphiScript에서 지원되지 않는다는 점에 유의하십시오.

AI-LocalizedAI로 번역됨
만약 문제가 있으시다면, 텍스트/이미지를 선택하신 상태에서 Ctrl + Enter를 누르셔서 저희에게 피드백을 보내주세요.
기능 제공 여부

사용 가능한 기능은 보유하고 계시는 Altium 솔루션에 따라 달라집니다. 해당 솔루션은 Altium Develop, Altium Agile의 에디션(Agile Teams 또는 Agile Enterprise), 또는 활성기간 내의 Altium Designer 중 하나입니다.

안내된 기능이 고객님의 소프트웨어에서 보이지 않는 경우, 보다 자세한 내용을 위해 Altium 영업팀 에 문의해 주세요.

구버전 문서

Altium Designer 문서는 더 이상 버전별로 제공되지 않습니다. 이전 버전의 Altium Designer 문서가 필요하신 경우, Other Installers 페이지의 Legacy Documentation 섹션을 방문해 주세요.

콘텐츠