함수

DelphiScript 언어에서 일반적으로 사용되는 함수 문에 대해서는 아래에서 다룹니다. DelphiScript 함수의 범위는 파일 입출력(FileIO) 루틴, 수학(Math) 루틴, 문자열(String) 루틴, 확장(Extension) 루틴으로 구분하여 설명합니다.

Evaluate 함수를 사용한 식 계산

내장 함수 Evaluate 는 실행 시 유효한 수학 표현식이 포함된 문자열을 해석하여 결과를 반환합니다. 예를 들어, 다음과 같은 스크립트를 작성할 수 있습니다. Evaluate(ProcNames[ProcIndex]); 를 작성할 수 있으며, ProcNames[ProcIndex] 에 지정된 프로시저가 호출됩니다.

이러한 식을 계산하려면 Evaluate 메서드를 사용할 수 있으며, 여기서 expression은 Expr 파라미터로 지정됩니다. 예를 들어, 다음과 같은 식을 계산할 수 있습니다:

Evaluate('2+5');
Evaluate('((10+15)-5)/2*5');
Evaluate('sin(3.1415926/2)*10');
Evaluate('2.5*log(3)');

함수 및 프로시저에 파라미터 전달

스크립트에 정의된 함수와 프로시저 모두 파라미터를 받도록 선언할 수 있습니다. 또한, 함수는 값을 반환하도록 정의됩니다. 프로시저/함수 선언에서 파라미터의 유형은 무시되며 생략할 수 있습니다. 예를 들어, 다음 코드는 올바른 코드입니다:

Function sum(a, b) : integer;
Begin
  Result := a + b;
End;

프로시저에서 종료하기

DelphiScript는 ExitBreak 문을 사용하여 프로시저가 정상적으로 종료되기 전에 강제로 종료할 수 있습니다. 예를 들어, 파라미터의 값이 적절하지 않은 경우, 아래 예제와 같이 사용자에게 경고를 표시하고 종료할 수 있습니다.

Procedure DisplayName (s);
Begin
  If s = '' Then
  Begin
    ShowMessage('Please enter a name');
    Exit;
  End;
  ShowMessage(S + ' is shown');
End;

파일 입출력 루틴

DelphiScript에는 다음과 같은 입출력 루틴이 있습니다:

Append

AssignFile

ChDir

CloseFIle

Eof

Eoln

Erase

GetDir

MkDir

Read

Readln

Reset

Rewrite

RmDir

Write

Writeln

 

 

DelphiScript를 사용하면 텍스트 파일에 정보를 기록할 수 있으며, DelphiScript는 타입이 지정되지 않은 언어이므로 모든 값은 먼저 문자열로 변환되어야 합니다.

여기서, ReadReadLn 루틴은 동등한 기능을 수행합니다. 이 루틴들은 다음 줄을 제외한 해당 줄까지의 내용을 읽어들입니다. Writeln(String) 루틴은 Write(S) 루틴과 동일하며, Write(LineFeed + CarriageReturn) 루틴과 동일합니다.

텍스트 파일을 작성하려면 AssignFile, ReWrite, WritelnCloseFile 프로시저를 사용하십시오. 텍스트 파일을 읽으려면 AssignFile, Reset, Readln, 및 CloseFile 프로시저를 사용합니다. 아래 예제는 텍스트 파일에 데이터를 기록하고 줄 끝 표시자를 추가합니다. IO 오류 발생 시 스크립트의 보안을 유지하려면 Try / Finally / End 블록을 사용하는 것이 좋습니다.

Example:

Var
  InputFile : TextFile;
  OutputFile : TextFile;
  I          : Integer;
  Line       : String;
Begin
  AssignFile(OutputFile,eConvertedFile.Text);
  Rewrite(OutputFile);
  AssignFile(InputFIle,eOriginalFIle.Text);
  Reset(InputFile);
 
  Try
  While not EOF(InputFile) do
  Begin
    Readln(InputFile,Line);
    For I := 1 to Length(Line) Do
      Line[I] := UpperCase(Line[I]);
      Writeln(Outputfile, Line);
    End;
  Finally
    CloseFile(InputFile);
    CloseFile(OutputFile);
  End;
End;

수학 루틴

DelphiScript에는 다음과 같은 수학 루틴이 있습니다:

Abs

ArcTan

Cos

Exp

Frac

Int

Random

Randomize

Round

Sin

Sqr

Sqrt

Trunc

 

 

문자열 루틴

DelphiScript에는 문자열이나 문자를 조작할 수 있는 다음과 같은 문자열 루틴이 있습니다. 아래 표에는 문자열 루틴 중 일부만 표시되어 있습니다(DelphiScript에서 사용하는 대부분의 문자열 루틴은 Embarcadero Delphi의 SysUtils 유닛에서 Import한 것입니다):

AnsiCompareStr

AnsiCompareText

AnsiDequotedStr

AnsiExtractQuotedStr

AnsiLowerCase

AnsiPos

AnsiQuotedStr

AnsiSameStr

AnsiSameText

AnsiUpperCase

CompareStr

CompareText

Copy

Delete

FloatToStr

FloatToStrF

Format

Frac

Insert

Int

IsDelimiter

LastDelimiter

Length

LowerCase

Ord

Pos

Pred

QuotedStr

Round

SameText

SetLength

StringOfChar

StringToGUID

Succ

Trim

TrimLeft

TrimRight

UpCase

UpperCase

WideUpperCase

WideLowerCase

WideSameStr

WideSameText

 

 

DelphiScript에서 not 아래 표에 Outline되어 있습니다:

AnsiContainsStr

AnsiContainsText

AnsiEndsStr

AnsiEndsText

AnsiIndexText

AnsiMatchStr

AnsiMatchText

AnsiReplaceStr

AnsiReplaceText

AnsiResemblesProc

AnsiResemblesText

AnsiStartsStr

AnsiStartsText

Concat

DecodeSoundExInt

DecodeSoundExWord

DupeString

LeftStr

MidStr

NullStr

ReverseString

RightStr

SetString

SoundEx

SoundExCompare

SoundExInt

SoundExProc

SoundExSimilar

SoundExWord

Str

StuffString

Val

 

확장 루틴

확장 루틴은 스크립트에서 서버 프로세스(명령어는 파라미터가 있는 패키지화된 서버 프로세스입니다)를 다룰 때, 특히 프로세스의 파라미터에 대한 문자열을 추출하거나 설정해야 할 때 사용됩니다. 일부 루틴은 다음과 같습니다.

스크립트에서 프로세스의 파라미터를 실행하려면 다음 함수가 필요할 수 있습니다:

AddColorParameter

AddIntegerParameter

AddLongIntParameter

AddSingleParameter

AddWordParameter

GetIntegerParameter

GetStringParameter

ResetParameters

RunProcess

Useful functions:

SetCursorBusy

ResetCursor

CheckActiveServer

GetActiveServerName

GetCurrentDocumentFileName

RunApplication

SaveCurrentDocument

 

 

Useful dialogs:

ConfirmNoYes

ConfirmNoYesCancel

ShowError

ShowInfo

ShowWarning

 

DelphiScript에서 세트 사용하기

Embarcadero Delphi의 SetIn 키워드, 그리고 집합 연산자 +, -, *, = >= 는 지원되지 않습니다. 이에 상응하는 집합 연산자 키워드는 아래 표에 정리되어 있습니다.

DelphiScript에는 집합 유형이 없습니다. DelphiScript 스크립트에서 집합을 사용하려면 내장 함수인 MkSet, MkSetRange, InSet, SetUnion, SetDifference, SetIntersection, 그리고 SubSet DelphiScript 스크립트에서 집합을 조작할 수 있게 해주는 함수들입니다. 이에 대해서는 아래에서 더 자세히 설명합니다.

집합 연산자

Embarcadero Delphi Set Operator keyword

Equivalent DelphiScript Set Operator keyword

+

SetUnion

-

SetDifference

*

SetIntersection

=

SubSet

=

=

>

>

In

InSet

MkSet 함수

MkSet MkSet 함수는 가변 개수의 인자를 갖는 집합 생성자입니다. 예를 들어:

Font.Style = MkSet(fsBold,fsItalic);

여기서 MkSet(fsBold,fsItalic) 여기서는 두 개의 집합 원소만을 나타냅니다; fsBold 그리고 fsItalic.

MkSetRange 함수

MkSetRange 함수는 범위를 인수로 갖는 집합 생성자입니다. 예를 들어:

LayerSet := MkSetRange(eTopLayer,eBottomLayer);

MkSetRange(eTopLayer,eBottomLayer) 함수는 eTopLayer 부터 eBottomLayer까지의 레이어 범위를 나타냅니다.

InSet 함수

InSet 함수는 델파이(Delphi)의 In 연산자를 대체하는 데 사용됩니다. A in BInSet(A, B)와 같습니다.

If InSet(A,B) then
  ShowMessage('A is in B set')
Else
  ShowMessage('A not in B set');

SetUnion 함수

SetUnion 이 함수는 델파이의 + 연산자를 대체하는 데 사용됩니다. A + BSetUnion(A, B)와 같습니다.

ASet := BSet + CSet;
// should be changed to:
ASet := SetUnion(BSet,CSet);
// in order to achieve the desired script result.

SetDifference 함수

SetDifference 함수는 Delphi의 - 연산자를 대체하는 데 사용됩니다. A - BSetDifference(A, B)와 같습니다.

SetIntersection 함수

SetIntersection 함수는 Delphi의 * 연산자를 대체하는 데 사용됩니다. A * BSetIntersection(A, B)와 같습니다.

SubSet 함수

SubSet 함수는 Object Pascal의 = 연산자를 대체하는 데 사용됩니다. A = BSubSet(A, B)와 같습니다.

예외 핸들러 사용

' Try 키워드는 Try-Except 문이나 Try-Finally 문을 시작합니다. 이 두 문은 관련이 있지만 용도는 다릅니다:

Try-Finally

Try-Finally를 사용하면 Try 블록에서 예외가 발생하든, Exit 또는 Break가 발생하든 상관없이 Finally 블록 내의 문장은 항상 실행됩니다. Try-Finally 블록은 임시 객체 및 기타 리소스를 해제하고 정리 작업을 수행하는 데 사용합니다.

일반적으로 서브루틴에서는 Try-Finally 문이 하나만 필요합니다.

Example:

Reset(F);
Try
  // process file F
Finally
  CloseFile(F);
End;

Try-Except

Try-Except를 사용하여 예외 상황을 처리합니다. 예를 들어, 특정 예외를 포착하여 오류 로그에 기록하거나 사용자 친화적인 대화 상자를 표시하는 등 유용한 작업을 수행할 수 있습니다. On 키워드는 DelphiScript에서 지원되지 않으므로, Raise 문은 Except 블록 내에서 사용됩니다.

Example:

Try
  X := Y/Z;
Except
  Raise('A divide by zero error!');
End;

Raise

' Raise 이 키워드는 Try 키워드와 관련이 있습니다. Raise keyword는 파라미터 없이 사용하면 마지막으로 발생한 예외를 다시 발생시킬 수 있습니다. 또한 문자열 파라미터와 함께 사용하여 특정 메시지와 함께 예외를 발생시킬 수도 있습니다.

Example:

Raise(Format('Invalid Value Entered : %d', [Height]));

참고: On 키워드가 지원되지 않으므로, Exception 객체(Embarcadro Delphi에서 사용 가능)를 사용할 수 없습니다.

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

사용할 수 있는 기능은 보유한 Altium 솔루션(Altium Develop, Altium Agile Teams, Altium Agile Enterprise, 또는 Altium Designer(활성 기간 중))에 따라 달라집니다.

실제 소프트웨어에서 문서화된 기능이 보이지 않는 경우, Altium 영업팀에 문의하여 자세한 내용을 확인하세요.

구버전 문서

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

콘텐츠