함수
DelphiScript 언어에서 일반적으로 사용되는 함수 문에 대해서는 아래에서 다룹니다. DelphiScript 함수의 범위는 파일 입출력(FileIO) 루틴, 수학(Math) 루틴, 문자열(String) 루틴, 확장(Extension) 루틴으로 구분하여 설명합니다.
Evaluate 함수를 사용한 식 계산
내장 함수 EvaluateEvaluate(ProcNames[ProcIndex]);ProcNames[ProcIndex]
이러한 식을 계산하려면 EvaluateExpr
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에는 다음과 같은 입출력 루틴이 있습니다:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
DelphiScript를 사용하면 텍스트 파일에 정보를 기록할 수 있으며, DelphiScript는 타입이 지정되지 않은 언어이므로 모든 값은 먼저 문자열로 변환되어야 합니다.
여기서, ReadReadLnWriteln(String)Write(S)Write(LineFeed + CarriageReturn)
텍스트 파일을 작성하려면 AssignFileReWriteWritelnCloseFileAssignFileResetReadlnCloseFileTry / Finally / End
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에는 다음과 같은 수학 루틴이 있습니다:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
문자열 루틴
DelphiScript에는 문자열이나 문자를 조작할 수 있는 다음과 같은 문자열 루틴이 있습니다. 아래 표에는 문자열 루틴 중 일부만 표시되어 있습니다(DelphiScript에서 사용하는 대부분의 문자열 루틴은 Embarcadero Delphi의 SysUtils 유닛에서 Import한 것입니다):
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
DelphiScript에서
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
확장 루틴
확장 루틴은 스크립트에서 서버 프로세스(명령어는 파라미터가 있는 패키지화된 서버 프로세스입니다)를 다룰 때, 특히 프로세스의 파라미터에 대한 문자열을 추출하거나 설정해야 할 때 사용됩니다. 일부 루틴은 다음과 같습니다.
스크립트에서 프로세스의 파라미터를 실행하려면 다음 함수가 필요할 수 있습니다:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
DelphiScript에서 세트 사용하기
Embarcadero Delphi의 SetIn+, -, *, = >=
DelphiScript에는 집합 유형이 없습니다. DelphiScript 스크립트에서 집합을 사용하려면 내장 함수인 MkSetMkSetRangeInSetSetUnionSetDifferenceSetIntersectionSubSet
집합 연산자
|
|
- |
|
* |
|
|
|
|
|
|
|
|
|
MkSet 함수
MkSet MkSet
Font.Style = MkSet(fsBold,fsItalic);
여기서 MkSet(fsBold,fsItalic) fsBoldfsItalic
MkSetRange 함수
이 MkSetRange
LayerSet := MkSetRange(eTopLayer,eBottomLayer);
이 MkSetRange(eTopLayer,eBottomLayer)eTopLayereBottomLayer
InSet 함수
이 InSetInA 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 - A - BSetDifference(A, B)
SetIntersection 함수
이 SetIntersection * A * BSetIntersection(A, B)
SubSet 함수
이 SubSet=A = BSubSet(A, B)
예외 핸들러 사용
' Try
Try-Finally
Try-Finally를 사용하면 Try 블록에서 예외가 발생하든, Exit 또는 Break가 발생하든 상관없이 Finally 블록 내의 문장은 항상 실행됩니다. Try-Finally 블록은 임시 객체 및 기타 리소스를 해제하고 정리 작업을 수행하는 데 사용합니다.
일반적으로 서브루틴에서는 Try-Finally 문이 하나만 필요합니다.
Reset(F); Try // process file F Finally CloseFile(F); End;
Try-Except
Try-Except를 사용하여 예외 상황을 처리합니다. 예를 들어, 특정 예외를 포착하여 오류 로그에 기록하거나 사용자 친화적인 대화 상자를 표시하는 등 유용한 작업을 수행할 수 있습니다. OnRaiseExcept
Try X := Y/Z; Except Raise('A divide by zero error!'); End;
Raise
' RaiseTryRaise
Raise(Format('Invalid Value Entered : %d', [Height]));
참고: OnException