2013-06-21

[델파이] system common util 함수

함수 레퍼런스 정리...(A)
Abs
문 법
function Abs(X);
X 의 절대값을 구하는 함수이다.
절대값이란 값은 같으며 부호가 양수인 수를 말한다.
X 는 정수 또는 실수값이다.
예 제
Abs(-3.14); {결과는 3.14}
Abs(3.14); {결과는 3.14}
Addr
문 법
function Addr(X):Pointer;
X 의 번지를 구할 때 쓴 함수이다.
X 는 변수나 함수의 명칭이며 결과는 X의 메모리 번지를 나타내는 포인터 값이며, Pointer형이다. Addr 함수의 리턴값이 Pointer형이므로 Pointer형의 변수에 곧바고 대입될 수 있지만 이 함수의 리턴값으로 메모리를 직접 참조할 수는 없다.
메모리를 참조하기 위해서는 타입 캐스트를 해 주어야 한다.
예 제
Var i : Interger;
begin
    P := Addr(i); {i의 번지를 구한다.}
end;
Append
문 법
procedure Append(Var f:Text);
파일을 추가 기록용으로 오픈할 때 쓰는 함수이다.
파일 변수 F 는 Assign으로 외부 파일과 연결되어 있어야 한다.
외부 파일이 없으면 에러가 발생하며 이미 열려 있는 경우는 파일을 닫은 후 다시 연다.
파일을 오픈한 후 에디터라인은 파일의 끝(EOF)에 위치시키므로 추가적인 데이터를 파일 끝에 추가할 수가 있다.
다음 예는 루트 디렉토리의 Autoexec.Bat 파일 끝에 Prompt 문을 추가시키는 예제이다.
예 제
Var F : Textfile;
begin
    AssignFile(F,'c:/autoexec.bat');
    Append(F); {파일 오픈}
    Writeln(F,'Prompt $p$g');
    CloseFile(F); {파일 닫음}
end;
AppendStr
문 법
procedure AppendStr(Var Dest: String; Const S: String);
두 개의 문자열을 결합하는 함수이다.
Dest 문자열 뒷부분에 Src 문자열이 추가되는 것으로, Dest := Dest + S 와 문법적으로 동일한 기능을 수행한다.
예 제
Src := 'Apple';
Dest := 'Orange';
AppendStr(Dest, Src);

즉, Dest 문자열은 OrrangeApple 이 된다.
AssignFile
문 법
procedure AssignFile(Var f, String);
텍스트 파일 변수와 외부 파일을 연결시키는 함수이다.
파일 핸들에 파일을 할당하는 것으로 일단 파일과 핸들이 연결되면 핸들에 대한 모든 조작은 파일로 입출력이 된다.
이 프로시져로 핸들에 파일을 할당한 후 Reset이나 Rewrite등을 사용하여 파일을 오픈하며, Writeln이나 Readln으로 파일 입출력을 수행한다.
파일 이름은 문자열 형태로 전달하되 필요한 경우 드라이브명과 디렉토리명을 사용할 수 있다. 주의할 것은 이미 열려져 있는 파일핸들을 재할당해서는 안된다는 점이다.
다음 예는 text.txt파일에서 첫 줄을 읽어 에디트 박스로 출력하는 예이다.
예 제
Var F: TextFile; S: String;
begin
    AssignFile(F, 'text.txt');
    Reset(F);
    Readln(F,S);
    Edit1.Text := S;
    CloseFile(F);
end;
함수 레퍼런스 정리...(C)
ChangeFileExt
문 법
function ChangeFileExt(Const FileName, ExTension:string):string;
첫번째 인수 FileName으로 주어진 파일의 이름 중 파일의 확장자만 두번째 인수 Extension 으로 변경하는 함수이다.
다음 예는 인수로 주어진 파일의 확장자를 무조건 INI파일로 변경하는 예이다.
예 제
ChangeFileExt(ParamStr(0),'.INI');
Chdir
문 법
procedure chdir(S:string);
인수 S가 지정하는 경로로 현재 디렉토리를 변경하는 함수이다.
만약 S가 드라이브 문자를 포함하고 있을 경우 현재 드라이브도 변경된다.
Chr
문 법
function Chr(X:Byte):Char;
서수값 X가 지정하는 무자를 구하는 함수이다.
아스키 코드값을 X로 전달하면 해당하는 문자를 얻을 수 있는데 Chr(65)는 알파벳 문자로 A를 뜻한다. 이 함수를 사용하면 키보드로 직접 입력할 수 없는 문자를 입력할 수 있는 쓰임새가 많은 함수이다.
CloseFile
문 법
procedure CloseFile(Var F);
파일 핸들과 외부 파일과의 연결을 끊고 파일 핸들을 닫는 함수이다.
파일 변수 F는 Reset, Rewrite, Append 등에 의하여 오픈된 파일 핸들이며 파일 핸들은 사용 후에 반드시 닫아주어야 하는 함수이다.
예 제
Var F: TextFile; S: String;
begin
    AssignFile(F, 'text.txt');
    Reset(F);
    Readln(F,S);
    Edit1.Text := S;
    CloseFile(F); // 파일을 반드시 닫아줘야 한다.
end;
CompareStr
문 법
function CompareStr(Const Si, S2: string):Integer;
두개의 문자열 S1 과 S2 를 비교하되 대소문자를 구분하여 비교하는 함수이다.

S1 과 S2 문자열이 같으면 0 값을 리턴한다.
S1 < S2 이면 음수의 값을 리턴하며, S1 > S2 이면 양수를 리턴한다.

문자열끼리의 비교는 문자열을 이루는 각 문자의 문자 코드를 비교하여 수행되며, 현재 설치된 언어 드라이버에는 영향을 받지 않는다.
CompareText
문 법
function CompareText(Const S1, S2 : String):Integer;
두개의 문자열 S1 과 S2를 비교하되 대소문자를 구분하지 않고 비교하는 함수이다.

S1 과 S2 문자열이 같으면 0을 리턴하며 S1 < S2 이면 음수의 값을 리턴한다.
S1 > S2 이면 양수를 리턴한다.

문자열끼리의 비교는 문자열을 이루는 각 문자의 문자 코드를 비교하여 수행된다.
"Apple" 과 "APPLE" 을 CompareText 함수로 비교하면 결과는 0 이다.
두 문자열이 같은 것으로 비교되지만 CompareStr 함수로 비교하면 결과는 두 문자열이 서로 다른 것으로 비교된다.
Concat
문 법
function Concat(S1 [, S2, ... , Sn]:String):String;
두개 이상의 문자열들을 결합하여 새로운 긴 문자열을 만드는 함수이다.
만약 문자열을 연결한 결과가 255문자 이상일 경우 255번째 이후의 문자는 잘려나간다.
이 함수 대신 + 연산자를 사용하여 문자열을 결합해도 결과는 동일하다.
Concat('Korea','China') 의 경우는 'Korea'+'China'는 같은 결과의 예이다.
다음 예는 Edit1에 입력된 문자열과 Edit2에 입력된 문자열을 한해 Edit3에 대입한다.
예 제
Edit3.Text := ConCat(Edit1.Text, Edit2.Text);
Continue
문 법
procedure Continue;
For, While, Repeat 등의 반복문에서 사용되며 다음 반복 부분으로 흐름을 옮기도록 하는 함수이다.
루프의 남은 뒷부분은 무시되며 루프의 조건 점검부로 점프한다.
만약 반복 루프 외부에서 이 프로시저가 사용되면 에러가 발생한다.
다음 예는 i가 1~100 까지 증가하며 모종의 처리를 하되 i 가 10인 경우만 특별히 처리가 생략되는 예이다.
예 제
For i := 1 to 100 do
begin
    If i = 10 then continue;
    ...
end;
Copy
문 법
procedure Copy(S:String; Index, Count:Integer):String;
한 문자열의 부분 문자열을 추출해 내는 함수이다.
S 문자열의 Index 위치에서부터 Count 문자분의 부분 문자열이 추출된다.
Index 가 문자열의 전체 길이보다 길 경우 빈 문자열을 리턴하며 Count가 문자열의 남은 부분보다 클 경우 문자열의 끝까지 추출해 낸다.
Dest 문자열이 'Orange'일 경우 Copy(Dest, 2, 3)은 Dest문자열의 두번째 문자에서부터 3문자분의 부분 문자열인 'ran'을 추출해 낸다.
함수 레퍼런스 정리...(D)
Date
문 법
function Date(Date:TDateTime);
시스템의 시계를 참조하여 오늘 날짜를 구하는 함수이다.
날짜는 TDateTime형이므로 곧바로 문자열로 출력할 수 없으며, DateToStr 함수를 사용하여 문자열로 바꾸어 주어야만 한다.
다음 예는 Label1에 오늘 날짜가 출력되는 예제이다.
예 제
Label1.Caption := DateToStr(Date);
DateTimeToFileDate
문 법
function DateTimeToFileDate(DateTime: TDateTime):Longint;
TDateTime형의 날짜,시간 값을 DOS형식의 날짜,시간형식으로 바꾸는 함수이다.
도스 형식의 날짜는 4바이트의 정수형이며 각 비트에 날짜,시간 요소를 포함하고 있다.
다음 예는 도스형식의 날짜, 시간 형식을 레이블로 출력하는 예제이다.
예 제
Label1.Caption := IntToStr(DateTimeToFileDate(Now));
DateTimeToStr
문 법
function DateTimeToStr(DateTime: TDateTime):String;
날짜와 시간을 담은 TDateTime형의 변수를 문자열로 바꾸는 함수이다.
만약 DateTime 인수가 날짜를 포함하지 않으면 날짜는 00/00/00 이 되며, 시간을 포함하지 않으면 00:00:00 AM이 된다.
다음 예는 현재 시간과 날짜를 레이블로 출력하는 예이다.
예 제
Label1.Caption := DateTimeToStr(Now);
DateToStr
문 법
function DateToStr(Date: TDateTime):String;
날짜를 담는 TDateTime형의 변수에서 날짜를 문자열로 바꾸는 함수이다.
다음 예는 오늘 날짜를 레이블로 출력하는 예이다.
예 제
Label1.Caption := DateToStr(Date);
DayOfWeek
문 법
function DayOfWeek(Date: TDateTime):Integer;
특정 날짜의 요일을 계산하는 함수이다. 리턴되는 값은 1~7까지의 정수이며, 1이 일요일, 7일 토요일이다. 리턴되는 값이 정수형이므로 월, 화, 수 , 목, 금, 토, 일 로 실제요일 이름으로 바꾸어 주어야 한다.
다음예는 요일이름을 레이블로 출력한다.
오늘이 무슨 요일인지 조사해서 요일 이름을 레이블로 출력하는 예이다.
예 제
Var
  Yo : String;
  ONUL: TDateTime;
begin
    ONUL := Now;
    Case DayOfWeek(ONUL) of
        1 : Yo := '일';
        2 : Yo := '월';
        3 : Yo := '화';
        4 : Yo := '수';
        5 : Yo := '목';
        6 : Yo := '금';
        7 : Yo := '토';
      end;
    Label1.Caption := '오늘은 ' + YO + '요일입니다.';
end;
DecodeDate
문 법
procedure DecodeDate(Date : TDateTime; Var Year, Month, Day: Word);
날짜를 담는 TDatetime형의 변수에서 년,월,일의 값을 분리시키는 함수이다.
분리된 값들은 각각 Year, Month, Day 등의 정수형 변수에 대입된다.
날짜값은 DateToStr 함수로, 문자열로 바꾼 후 한꺼번에 출력할 수 있지만 개별적인 요소를 가공할 후 한꺼번에 출력할 수 있지만, 개별적인 요소를 가공한 후 출력하고자 할 경우는 이 함수를 사용한다. 이 함수의 반대 함수는 EncodeDate 함수이다.
다음예는 오늘 날ㅉ와 현재 시간을 조사한 후 문자열 조립을 통해 말로 시간과 날짜를 알려준다.
예 제
Var
  Present: TDateTime;
  Year, Month, Day, Hour, Min, Sec, MSec: Word;
begin
    Present := Now;
    DecodeDate(Present, Year, Month, Day);
    Label1.Caption := '오늘은'+IntToStr(Year)+'년'+IntToStr(Month)+'월'
            +IntToStr(Day)+'일입니다.';
    DecodeTime(Present, Hour, Min, Sec, MSec);
    Label2.Caption := '지금은'+IntToStr(Hour)+'시'+IntToStr(Min)+'분'
            +IntToStr(Sec)+'초입니다.';
end;
DecodeTime
문 법
fun;
시간을 담는 TDateTime형의 변수에서 시, 분, 초의 값을 분리시키는 함수이다.
분리된 값들은 각각 Hour, Min, Sec, MSec 등의 정수형변수에 대입된다.
시간값은 TimeToStr 함수로 문자열로 바꾼후 한꺼번에 출력할 수 있지만 개별적인 요소를 가공한 후 출력하고자 할 경우는 이 함수를 사용한다.
이 함수의 반대 함수는 EncodeTime 함수이다.
DecodeTime 함수의 예제를 참조하기 바란다.
Delete
문 법
procedure Delete(var S:String; Index, Count: Integer);
한 문자열에서 부분 문자열을 삭제하는 함수이다.
S 문자열의 Index위치에서부터 Count 문자분의 부분 문자열이 삭제된다.
Index 가 문자열의 전체 길이보다 길 경우 삭제는 이루어지지 않으며, Count가 문자열의 남은 부분보다 클 경우 문자열이 끝까지 삭제된다.
Dest 문자열이 'Orange'일 경우 Delete(Dest, 2, 3)은 Dest 문자열의 두번째 문자에서부터 3분자분의 부분 문자열인 'ran'을 삭제하며 Dest 문자열은 'Oge'가 된다.
DeleteFile
문 법
function DeleteFile(const FileName: String): Boolean;
디스크 상의 파일을 지우는 함수이다.
파일이 없거나 읽기 전용 속성을 가질 경우 False를 리턴하며 파일은 지워지지 않는다.
그러나 파일을 지울 수 없는 경우라도 예외는 발 생하지 않는다.
파일은 경로를 포함할 수 있으며, 다음 예는 C 드라이브의 루트에 있는 Command.com 파일을 지우는 예이다.
물론, 이 명령을 실행한 후부터 부팅이 되지 않으니 다른 파일로 실험하세요.
예 제
DeleteFile('C:/Command.Com');
DirectoryExists
문 법
function DirectoryExists(Name: string): Boolean;
인수로 전달된 디렉토리가 존재하는지 검사하며 존재할 경우 True값을 리턴하고 존재하지 않을 경우 False값을 리턴한다.
함수 레퍼런스 정리...(E)
EncodeDate
문 법
function EncodeDate(Year, Month, Day: Word): TDateTime;
정수형으로 주어진 년, 월, 일의 값을 사용하여 날짜를 담은 TDateTime 형의 변수 하나를 만들어 주는 함수이다.
Year 는 1~9999까지의 값을 가지며 Month는 1~12, Day는 1~31까지 가능하다.
단, Day값의 범위는 Month 값의 영향을 받으며 Year는 윤년인 경우의 영향도 받는다.
만약 날짜값이 무효일 경우, 예를 들어 2월30일 등의 값이 주어지면 EConvertError예외가 발생하다.
년,월,일을 개별적으로 입력받아 하나의 날짜값을 만들고자 할 때 이 함수를 사용한다.
이 함수의 반대는 DecodeDate 이다.
EncodeTime
문 법
function EncodeTime(Hour, Min, Sec, MSec: Word): TDateTime;
정수형으로 주어진 시, 분, 초의 값을 사용하여 시간을 담은 TDatetime형의 변수 하나를 만든다.
Hour 는 0~12까지 가능하며, 만약 Time24Hour가 True일 경우 0~23까지의 24시간을 표현할 수 있다.
Min, Sec은 0~59까지 가능하며 MSec은 0~999까지 가능하다.
시간값이 무효일 경우, 예를 들어 8시 86분 등의 값이 주어지면 EConvertError 예외가 발생한다.
시,분,초를 개별적으로 입력받아 하나의 시간값을 만들고자 할 때 이 함수를 사용한다.
이 함수의 반대는 DecodeTime 이다.
Eof
문 법
function Eof[(Var F: Text)]: Boolean;
입력한 값들에 대한 끝인가를 점검하는 함수로서 Eof는 End Of File을 의미한다.
DB 작업을 할때, While문을 많이 쓰게 되는데 이경우 필드의 끝이 아닐때까지 계속 루프를 돌리는 작업때 많이 쓰이게 된다.
ExpandFileName
문 법
function ExpandFileName(const FileName: string): String;
파일 이름에 드라이브명과 디렉토리명을 붙여 완전 경로(Full Path)를 만들어내는 함수이다. 덧붙여지는 경로는 현재 드라이브와 현재 디렉토리이다.
ExtractFileExt
문 법
function ExtractFileExt(const FileName: string): string;
완전 경로에서 파일의 확장자만 분리시키는 함수이다.
특정 파일의 확장자를 알고자 할 때 이 함수를 사용하여 확장자만 분리한 후 문자열 비교를 수행하면 된다.
ExtractFileName
문 법
function ExtractFileName(const FileName: String): String;
완전 경로에서 파일 이름만 분리해 내는 함수이다.
파일의 확장자도 같이 분리된다.
즉, 완전 경로에서 드라이브명과 디렉토리명이 제외된다.
ExtractFilePath
문 법
function ExtractFilePath(const FileName: String): String;
완전 경로에서 파일 이름을 제외하고 드라이브명과 디렉토리명만 분리해 내는 함수이다.
다음 예는 완전 경로를 가진 FileName 으로부터 경로만 분리해낸 후 파일이 있는 디렉토리로 이동한다.
예 제
Chdir(ExtractFilePath(FileName));
함수 레퍼런스 정리...(F)
FileExists
문 법
function FileExists(const FileName: String): Boolean;
파일이 디스크상에 존재하는지를 조사하는 함수로서, 파일이 없을 경우 False를 리턴한다. 존재하지 않는 파일을 사용하고자 할 경우 예외가 발생하므로 먼저 이 함수를 사용하여 파일이 있는지를 먼저 확인해 보아야 한다.
다음 예는 파일의 존재 여부를 점검해 본 후 파일을 삭제하는 예이다.
예 제
If FileExists(FileName) Then DeleteFile(FileName);
FileOpen
문 법
function FileOpen(const FileName: String; Mode: Word): Integer;
델파이가 사용하는 내부적인 함수로서 사용자가 직접 사용하는 경우는 드문 함수이다. 파일을 오픈할 때는 델파이가 제공하는 Reset, Rewrite, Append등의 프로시저를 사용한다.
FileSearch
문 법
function FileSearch(const Name, DirList: String): String;
DirList에 주어진 디렉토리의 경로에 Name파일이 있는지를 조사해주는 함수로서, DirList는 도스의 Path문에서와 같이 여러개의 디렉토리명을 세미콜론으로 끊어 기입한다. 파일을 찾을 경우 파일의 완전경로를 리턴하며 파일을 찾지 못할 경우 널스트리을 리턴한다.
FindClose
문 법
procedure FindClose(var SearchRec: TSearchRec);
FindFirst, FindNext 함수를 사용한 파일검색을 종료하는 함수로서, 굳이 파일 검색 작업을 종료해 주어야 할 필요는 없으며, 실제로 16비트 버젼의 윈도우에서 이 함수는 아무런 일도 하지 않지만, 32비트 버젼의 윈도우에서는 반드시 검색 종료를 해 주어야 하므로 호환성을 위해 검색 후 종료해 주는 것이 좋다.
FindFirst
문 법
function FindFirst(const Path: String; Attr: Word; Var F: TSearchRec): Integer;
주어진 검색조건과 파일의 속성을 사용하여 첫 번째 일치하는 파일을 검색해 내는 함수로서, Path는 검색하고자 하는 디렉토리와 파일의 조건이며 와일드 카드식으로 표현이 된다.
예를 들어 'c:/windows/*.exe'는 windows 디렉토리의 확장자가 EXE 인 첫번째 파일을 검색한다. Attr인수는 검색대상이 되는 파일의 속성을 지정하며 아래와 같은 속성 상수를 사용한다.
여러가지 속성을 사용할 경우에는 'Or' 연산자로 속성을 연결하면 된다. 예를 들어 읽기전용이면서 숨은 파일을 검색하고 싶다면(faReadOnly + faHidden)과 같이 Attr인수를 설정하면 되는 것이다.
상 수
의 미
faReadOnly
$01
읽기 전용
faHidden
$02
숨은 파일
faSysFile
$04
시스템 파일
faVolumeID
$08
디스크 볼륨
faDirectory
$10
디렉토리
faArchive
$20
기록 속성
faAnyFile
$3F
모든 속성
FindNext
문 법
function FindNext(var F:TSearchRec): Integer;
FindFirst에 이어 계속 검색을 수행하는 함수이다. FIndFirst가 첫번째 검색한 결과를 저장한 F를 다시 인수로 넘겨주면 계속해서 일치하는 조건을 가진 파일을 검색해 내며, 검색한 결과는 역시 F로 저장된다.
검색이 계속 이루어지고 있다면 0을 기턴하며 검색중 에러가 발생했거나 더 이상 조건이 일치하는 파일이 없으면 음수의 에러코드를 리턴한다.
FindFirst와 FindNext는 조건에 맞는 모든 파일을 검색해 낼 때 사용한다.
Format
문 법
function Format(const Format: String; const Args: Array of const): String;
서식 문자열과 뒤따라오는 변수에 의해 문자열을 포맷하는 함수이다. 계산식이나 회계분야에서는 가끔씩 써먹는 함수로서, 이러한 포맷도 지원하는구나하는 정도로 가볍게 받아두고 필요시 다시 살펴보는 방법이 가장 좋은 방법인것 같다.

C의 pintf함수와 사용방법이 유사하며 문자열 내부에 변수값을 삽입할 수 있는 아주 편리한 방법을 제공한다.
서식 문자열에는 일반 문자열과 서식이 삽입되며 일반 문자열은 그대로 출력되지만 서식은 대응되는 인수값으로 채워진다.

서식은 % 기호와 변수의 타입으로 이루어지며 % 와 타입 사이에 인덱스, 좌측 정렬 지정, 폭, 정밀도 지정이 삽입된다.

%[인덱스:][-][폭][.정밀도]타입 일단 Format함수를 사용하는 예를 들어보자...

Var A : Integer; S,
    St : String;
Begin
    A := 29;
    B := 'Lyon, Kim';
    St := Format('My age is %d, My Name is %s', [A,S]);
End;

서식 문자열에 포함된 %d 자리에는 정수형 변수인 A의 값인 29 가 삽입되며, %s 의 자리에는 문자열 변수인 S의 값 Lyon, Kim 이 삽입되는 방식이다.
그럼, 당연히 St 의 문자열은 My age is 29, My Name is Lyon, Kim 이 되는 것이다.

서식 문자열 내의 서식은 인수 리스트의 변수들과 순서대로 대응되며 서식의 개수와 인수의 개수가 일치해야 할뿐만 아니라 대응되는 서식과 변수의 타입도 일치해야만 한다.

만약 개수나 타입이 일치하지 않을 경우 컴파일은 가능하지만 실행중에 에러가 발생하게 된다. 폭 지정이란 변수값이 문자열 내부에서 차지하는 자리수를 지정하며 생략시는 변수값의 길이만큼만 자리를 차지한다. 강제로 자리를 늘리고자 할 경우 서식과 타입사이에 폭을 정수로 지정한다. 예를 들어 %5d 라고 하면 이 서식에 대입되는 정수가 5자리가 안되더라도 5자리를 강제로 차지한다.

단, 여기서 지정하는 폭 지정은 최소한의 폭을 의미할 뿐이며 폭값이 실제값보다도 작더라고 강제로 폭에 맞추지는 않는다. 예를 들어 I가 12345라는 다섯자리 값을 가지는데 %2d와 대응될 경우 폭지정 2를 지키기 위해 45만 출력하지 않으며 이경우는 폭 지정이 무시된다. 즉, I의 12만이 대응된다고 볼 수 있다.

정밀도 지정이란 실수에 사용되며 소수점 이하 몇 자리까지를 문자열로 바꿀 것인가를 지정한다. %10.5f 서식은 10자리를 차지하며 소수점 이하 5자리까지 문자열로 출력한다. 좌측 정력 지정은 폭이 변수값보다 길 경우 공백을 우측에 배치하도록 하며 폭 지정 앞에 '-' 기호를 붙여 표현한다.
%5d 에 대응되는 정수값이 만약 12일 경우 출력은 'bbb12' 가 되지만, 서식을 %-5d 로 변경하면 '12bbb'가 된다. 여기서 b 표시는 공백을 의미한다.

인덱스 지정자는 인수 리스트의 몇 번째 인수를 사용할 것인가를 지정하며 정수 하나와 ':' 을 사용한다. 인덱스 지정자가 없으면 인수 리스트에 나타나는 순서대로 서식과 대응되지만 인덱스를 밝힘으로써 중복되는 인수 리스트를 재사용할 수 있다.

예를 들어 '%d%d%d,1,2,3'은 앞쪽 서식부터 순서대로 정수 1,2,3로 대응되지만 '%d%d%0:d'는 앞쪽 둘은 순서대로 1,2에 대응되고 세번째 서식은 인덱스 지정에 의해 첫 번째 인수 1에 대응된다.

타입 문자는 아래와 같으며 대문자와 소문자를 구분하지는 않는다.
문 자
의 미
d
정수값 하나에 대응된다.
대응되는 변수는 반드시 정수이어야 한다.
e
실수값을 공학적 표기법, 즉 부동 소수점 형식으로 변환된다.
f
실수값을 부동 소수점 형식으로 변환한다.
g
실수값과 대응하되 고정 소수점 형식과 부동 소수점 형식 중 길이가 짧은쪽으로 변환한다.
n
실수값에 대응하며, 천단위로 콤마를 삽입해 준다.
p
포인터 값에 대응된다.
출력되는 문자열은 SSSS:0000 형태의 세그먼트, 오프셋 형태를 띄며 이때, 세그먼트, 오프셋은 모두 네 자리의 16진수를 사용한다.
m
실수값에 대응되며, 화폐 형태의 문자열로 변환한다.
s
문자열 변수, 문자 변수에 대응된다.
x
정수에 대응되며, 16진수 형태의 문자열로 변환된다.
FormatDateTime
문 법
function FormatDateTime(const Format: String; DateTime: TDateTime): String;
TDateTime형의 변수에 저장된 시간과 날짜 정보를 특정한 형태의 문자열 포맷으로 변환하는 함수이다.
이 함수는 시스템의 날짜와 시간을 받아 사용하므로 Y2K 문제를 해결해 나갈 수 있는 아주 유용한 함수임을 알았으면 한다.

문자열로 출력되는 형식은 다음과 같은 지정자에 의해 결정되며 각 지정자는 한 칸 이상의 공백으로 구분되어야 한다. 포맷을 지정하는 Format 인수에는 지정자와 일반 문자열들이 올 수 있으며 일반 문자열들은 겹 따옴표로 싸 주어야 한다.
지정자의 대소문자는 구분하지 않는다.

아래는 FormatDateTime함수내에서 사용하는 문자들이다.
지 정 자
의 미
c
전역변수 ShortDateFormat, LongTimeFormat이 지정하는 형식대로 출력되며 지정자가 생략될 경우의 디폴트 지정자이다.
d
날짜값을 출력하되 선행 제로를 생략한다. (1~31)
dd
날짜값을 출력하되 선행 제로를 출력한다. (01~31)
ddd
요일을 생략형으로 출력한다. Sun, Mon, Sat 등과 같이 출력된다.
이 생략형 요일 이름은 ShortDayNames 변수에 의해 지정된다.
dddd
요일이름은 완전한 형식으로 출력한다.
Sunday, Monday 등과 같이 출력된다. 완전한 요일 이름은 LongDayNames변수에 의해 지정된다.
ddddd
ShortDateFormat 전역 변수가 지정하는 형식으로 날짜가 출력된다.
dddddd
LongDateFormat 전역 변수가 지정하는 형식으로 날짜가 출력된다.
m
월을 출력하되 선행 제로를 생략한다. (1~12)
mm
월을 출력하되 선행 제로를 출력한다. (01~12)
mmm
월 이름을 생략형으로 출력한다. Jan, Dec 등과 같이 출력한다.
이 생략형 월 이름은 ShortMonthName 변수에 의해 지정된다.
mmmm
월 이름은 완전한 형식으로 출력한다.
January, December 등과 같이 출력된다.
완전한 월 이름은 LongMonthName 변수에 의해 지정된다.
yy
년도를 두자리 숫자로 출력한다. (00~99)
yyyy
년도를 네자리 숫자로 출력한다. (0000~9999)
h
시간을 출력하되 선행 제로를 생략한다. (1~12)
hh
시간을 출력하되 선행 제로를 출력한다. (01~12)
n
분을 출력하되 선행 제로를 생략한다. (1~59)
nn
분을 출력하되 선행 제로를 출력한다. (01~59)
s
초를 출력하되 선행 제로를 생략한다. (1~59)
ss
초를 출력하되 선행 제로를 출력한다. (01~59)
t
시간값을 ShortTimeFormat 전역 변수가 지정하는 형식으로 출력한다.
tt
시간값을 LongtimeFormat 전역 변수가 지정하는 형식으로 출력한다.
am/pm
오전과 오후를 출력하며 h 나 hh 지정자의 시간을 12간제로 출력한다.
오전이면 am 이 출력되며 오후면 pm 이 출력된다.
대문자 소문자 모두 쓸 수 있으며, 혼합해서 쓸 수도 있다.
출력되는 결과는 이 지정자의 대소문자 구성을 따른다.
즉, Am/Pm 지정자를 쓰면 Am 이나 Pm 이 출력되며,
AM/PM 지정자를 쓰면 AM 이나 PM 이 출력된다.
a/p
오전과 오후를 출력하며 h 나 hh 지정자의 시간을 12시간제로 출력한다.
오전이면 a 가 출력되며 오후면 p 가 출력된다.
대문자 소문자 모두 쓸 수 있으며 혼합해서 쓸 수도 있다.
출력되는 결과는 이 지정자의 대소문자 구성을 따른다.
ampm
12시간제로 시간을 출력하며 오전일 경우 전역 변수 TimeAmString에 저장된 문자열을 출력하며 오후일 경우 TimePmString에 저장된 문자열을 출력한다.
/
DataSeparator 지정자가 지정하는 날짜 구분 기호를 출력한다.
:
TimeSeparator 지정자가 지정하는 시간 구분 기호를 출력한다.
예 제
FormatDateTime('dddd mmmm d yyyy hh:mm AM/PM', Now);
FirDay December 24 1999 12:25 PM

FormatDateTime(' "지금시간은" ddd mmm d yyyy hh:mm AM/PM', Now);
지금시간은 Fri Dec 24 1999 12:26 PM
함수 레퍼런스 정리...(G)
GetDir
문 법
procedure GetDir(D: Byte; Var S: String);
지정한 드라이브의 현재 드렉토리를 조사하는 함수이다.

D로 드라이브의 번호를 지정하면 현재 디렉토리가 문자열 S 에 대입되며, 드라이브 번호 D 는 0 일 경우, 디폴트 드라이브 1일 경우 A, 2일 경우 B등과 같이 지정한다.
이 프로시져는 일체의 에러 체크를 하지 않는다.
만약 드라이브 번호로 주어진 D 가 존재하지 않을 경우 조사되는 디렉토리는 'X:/' 가 된다.

다음 예는 현재 드라이브의 디렉토리를 조사하여 레이블에 출력하는 예이다.
예 제
Var
    dir: String;
begin
    GetDir(0, dir);
    Label1.Caption := Dir;
end;
GetMem
문 법
procedure GetMem(Var P: Pointer; Size: Word);
동적으로 메모리를 할당하며 할당된 번지를 포인터형의 변수 P 에 대입하는 함수이다. Size 는 동적으로 할당할 메모리의 크기를 바이트 수로 나타내며, 할당된 메모리의 변수는 P^ 로 읽거나 쓸 수 있다.
함수 레퍼런스 정리...(H)
Halt
문 법
procedure Halt[ (ExitCode: Word)];
프로그램을 강제로 종료하고 운영체제로 제어권을 넘기는 함수이다.
Exitcode 는 프로그램의 탈출코드이다.
High
문 법
function High(X);
인수로 주어진 X 의 값 중 가장 큰값을 찾는다.
X 가 integer형이라면 결과는 32767이 되며 LongInt형이라면 결과는 2147483647이 된다. 결과값은 인수로 주어진 X와 동일한 형태이다.
다음 예는 열거형 중 가장 큰 값을 찾아내는 예제이다.
레이블로 출력되는 값은 6이다.
예 제
type
    Day = (sun, mon, tue, wed, thu, fri, sat);
Var
    i : Integer;
begin
    i := integer(High(Day));
    label1.Caption := IntToStr(i);
end;
함수 레퍼런스 정리...(I)
Inc
문 법
procedure Inc(Var X[N: Longint];
변수의 값을 1 증가시키는 함수이다. Inc(X)는 X := X + 1 과 동일한 동작을 한다.
두 번째 인수를 사용하면 1 이상의 값을 증가시킬 수도 있다.
Inc(X, 5)는 X := X + 5 와 동일한 동작을 한다.
첫 번재 인수는 서수형의 변수이며 확장 문법이 적용될 경우 PChar형도 가능하다.
N 은 정수형의 상수 또는 변수여야 한다.
Inc 함수는 가장 최적화된 코드를 생성해 내므로 루프 내부에서 사용하기에 적합하다.
Include
문 법
procedure include(Var S: Set of T; I: T);
집합형 S 에 요소 I 를 추가하는 함수이다.
Include(S, I) 는 S := S + (1) 와 동일한 동작을 하지만 좀 더 효율적인 코드를 생성해 낸다.
InputBox
문 법
function InputBox(Const ACaption, APrompt, ADefault: String): String;
문자열을 입력할 수 있는 대화상자를 보여주고 사용자에게 문자열을 입력받아 리턴한다. 인수의 의미는 인수의 이름을 참조하기 바란다.
아래의 예제는 사용자가 문자열을 입력후 Cancle 버튼을 누르면 디폴트 문자열이 리턴되며 OK 버튼을 누르면 에디트 박스에 입력된 문자열이 입력된다.
예 제
Var
    Str : String;
begin
    Str := InputBox('함수레퍼런스정리[I]','잘되죠?','Oh ! Yes');
end;
그 림
InputQuery
문 법
function InputQuery(const ACaption, APrompt: String; Var Value: String): Boolean;
문자열을 입력할 수 있는 대화상자를 보여주고 사용자에게 문자열을 입력받아 리턴한다. 대화상자가 열리면 아무것도 입력되어 있지 않은 빈 에디트를 보여주며 이 에디트에 사용자가 문자열을 입력한다.
입력된 결과는 리턴값으로 전달되며는 것이 아니라 참조호출로 전달된 Value로 전달되며 리턴값은 사용자가 누른 버튼의 종류이다.
아래의 예제는 사용자가 대화상자에서 어떤 버튼을 눌렀는가를 꼭 알아야 할 경우는 InputQuery 를 사용하며 단순히 문자열만 입력받고자 할 경우는 InputBox 를 사용하면 된다.
예 제
Var
    Str : String;
    Ans : Boolean;
begin
    Ans := InputQuery('함수레퍼런스정리[I]','이것도 잘되죠?',Str);
end;
그 림
Insert
문 법
procedure Insert(Source: String; Var S: String; Index: Integer);
한 문자열의 중간에 다른 문자열을 삽입하는 함수이다.
삽입되는 위치는 Index 인수가 지정하는 위치이다.
문자열을 삽입한 후의 문자열 길이가 255 자를 넘을 경우 255 문자 이후의 문자는 잘려진다.
Dest 문자열이 'Orange' 이고, Src 문자열이 'Apple' 인 경우 Insert(Src, Dest, 3); 는 Dest 문자열의 3번째 문자인 a 위치에 Src 문자열을 삽입하며 Dest 문자열은 'OrAppleange' 가 된다.
아래 예제는 레이블로 abcdhotdogefghijkl 문자열이 출력된다.
예 제
Var
    S : String;
begin
    S := 'abcdefghijkl'; Insert('hotdog', S , 5);
    label1.Caption := S;
end;
Int
문 법
function Int(X: Real): Real;
실수 X의 정수부를 구하는 함수이다.
소수부는 반올림되지 않으며 버려진다.
Int(3.14) 는 3 의 값을 반납한다.
주의할 것은 Int 함수의 리턴값은 정수값을 담지만 데이터형은 여전히 실수형이라는 점이다.
IntToHex
문 법
function IntToHex(Value: Longint; Digits: Integer): String;
10 진 정수값을 16진수 형태의 문자열로 바꾸어 문자열을 리턴하는 함수이다.
예를 들어 IntToHex(100, 2) 명령에 의해 십진수 100을 16진수로 바꾼 문자열 '64'가 리턴된다. Digits 인수는 만들어질 16진수의 자리수를 지정한다.
그러나 이 값은 최소한의 자리수를 지정할 뿐이며 자리수보다 16진수의 크기가 더 많을 경우는 이 인수값은 무시된다.
즉, IntToHex(100, 3)에 의해 최소한 세 자리를 할당하여 '064'가 리턴되지만 IntToHex(100, 1)로 한다고 하면 두 자리의 16진수를 강제로 한 자리 숫자로 만들지는 않는다는 것이다.
IntToStr
문 법
function IntToStr(Value: LongInt): String;
정수를 문자열로 바꾸어 리턴하는 함수이다.
정수값을 레이블이나 에디트박스에 출력하고자 할 경우 직접 그 값을 출력할 수는 없다.
왜냐하면 레이블의 Caption 속성이나 에디트의 Text 속성은 문자열형이므로 정수형 값을 대입받을 수 없기 때문이다.
정수값을 문자열로 바꾸고자 할 경우에는 이 함수를 사용한다.
IOResult
문 법
function IOResult: Integer;
마지막 입출력 동작에서 발생한 상태값을 조사한다.
이 함수를 사용하여 입출력 에러를 검사하려면 {$I-} 옵션을 반드시 꺼 주어야 한다.
IOResult 함수를 호출하면 내부적인 에러값은 리셋된다.
이 함수가 리턴하는 값이 0 이면 에러가 없다는 것이다.
함수 레퍼런스 정리...(K)
KeyPressed
문 법
function KeyPressed: Boolean;
키보드에서 키가 눌러지면 True 를 리턴하며, 키가 눌러져 있지 않으면 False 를 리턴하는 함수이다.
ReadKey 함수로 키 값을 읽기 전에 키가 눌러져 있는지 점검해 볼 때 사용한다.
함수 레퍼런스 정리...(L)
Length
문 법
function Length(S: String): Integer;
주어진 문자열의 길이를 구하는 함수이다.
Length('Korea') 는 5의 값을 리턴한다.
LowerCase
문 법
function LowerCase(Const S: String): String;
문자열 내부의 대문자를 모두 소문자로 바꾸어주는 함수이다.
문자 변환은 7비트의 아스키 코드 내에서 이루어지며 문자 'A' ~ 'Z' 까지가 변환의 영향을 받는다.
나머지 기호나 숫자, 한글은 변환되지 않는다.
함수 레퍼런스 정리...(M)
MessageDlg
문 법
function MessageDlg(Const msg: String; AType: TMsgDlgType;
         AButtons: TMsgDlgButtons; HelpCtx: LongInt): Word;
Message를 전달하는 대화상자를 보여주며 사용자로부터 응답을 받아들여 리턴하는 함수이다.
Msg 문자열이 Message의 내요이며 AType에 의해 Message 상자의 형태와 캡션에 출력된 문자열이 결정된다.
형 태
mtWarning노란색 느낌표 비트맵이 나타난다. [그림참조]
mtError빨간색의 엑스 비트맵이 나타난다. [그림참조]
mtInformation파란색의 i 자 비트맵이 나타난다. [그림참조]
mtConfirmation물음표 비트맵이 나타난다. [그림참조]
mtCustom비트맵을 사용하지 않는다. [그림참조]
ABotton 인수는 Message 상자에 나타날 버튼의 종류를 지정하며 여러개의 버튼을 집합형으로 전달한다.
리턴값은 사용자가 대화상자에 나타난 버튼 중 어떤 버튼을 눌렀는가를 나타내는 값이다.
버튼기턴 값
mbYesmrYes
mbNomrNo
mbOKmrOK
mbCancelmrCancel
mbHelp
mbAbortmrAbort
mbRetrymrRetry
mbIgnoremrIgnore
mbAllmrAll
버튼 이름을 일일이 지정해 주는 것이 번거로우면 미리 정의 되어 있는 다음과 같은 집합명을 사용해도 무방하다.
mbYesNoCancel 은 Yes, No, Cancle 버튼을 한꺼번에 보여주고,
mbOkCancel 은 Ok, Cancle 버튼을 한꺼번에 보여준다.
mbAbortRetryIgnore 는 Abort, Retry, Ignore 버튼을 한꺼번에 보여준다.

이 집합명은 그 자체가 집합형이므로 [] 괄호를 쓰지 않아도 된다.
예 제
If MessageDlg(('Ok 누르면 실행합니다.'), MtInformation, mbOkCancel, 0) = mrOk Then
    label1.caption := 'Ok 를 눌렀군요...'
else
    label1.caption := 'Cancel 을 눌렸군요...';

위의 예제는 MessageDlg를 사용하는 방법에 대해 간단히 알아볼 수가 있다.
만약, ABotton인수에 현재는 mbOkCancel 을 넣었지만, 여러개의 버튼을 넣는다면,
[mbOk, mbCancel] 을 입력해도 똑같은 결과를 나타낸다.
여러개를 한꺼번에 쓸 때는 '[ ]' 안에 넣어야만 하고 집합형일 경우는 그냥 쓰면 된다는 아주 간단한 예제이다.
아래 그림은 실행한 화면의 MessageDlg 예제였다.
그 림
MessageDlgPos
문 법
function MessageDlgPos(Const Msg: String; AType: TMsgDlgType; AButtons:
         TMsgDlgButtons; HelpCtx: LongInt; X, Y: Integer): Word;
MessageDlg 함수와 동일한 동작을 하는 함수이다.
단 MessageDlg는 대화상자를 무조건 화면 중앙에 열어주지만 이 함수는 X, Y 인수를 사용하여 대화상자가 출력된 화면 좌표를 지정할 수 있다.
MkDir
문 법
procedure MkDir(S: String);
새로운 서브 디렉토리를 생성한다.
문자열 S에 생성하고자 하는 서브 디렉토리의 경로를 준다.
디렉토리를 생성하는 규칙은 도스에서와 동일하다.
즉, 같은 이름의 디렉토리나 화일이 있어서는 안된다.
함수 레퍼런스 정리...(N)
Now
문 법
function Now: TDateTime;
현재 날짜와 시간을 한꺼번에 구하는 함수이다.
날짜와 시간은 TDateTime형이므로 곧바로 문자열로 출력할 수 없으며 DateTimeToStr함수를 사용하여 문자열로 바꾸어 주어야 한다.
Label1.Caption := DateTimeToStr(Now); 명령에 의해 Label1에 오늘 날짜와 시간이 출력된다. StrToDate 문자열을 날짜 형태로 바꾸어 TDateTime형의 변수에 저장해 준다.
문자열에 저장된 날짜는 반드시 유효한 날짜 정보를 가지고 있어야 하며 만약 날짜가 무효할 경우 EConverError 예외를 발생시킨다.
문자열은 년, 월, 일을 나타내는 두 개 또는 세 개의 숫자를 담고 있어야 하며 각 요소는 DataSeparator 변수가 지정하는 구분문자(보통 슬래시 기호)에 의해 구분되어 있어야 한다. 년, 월, 일의 순서는 ShortDateTime 변수에 따라 달라지며 mm/dd/yy 또는 dd/mm/yy 또는 yy/mm/dd 중 하나가 된다.
만약 문자열에 두 개의 숫자만 있으면 이는 각각 월, 일의 정보로 인식되며 년은 올해의 년도가 된다.
함수 레퍼런스 정리...(O)
Odd
문 법
function Odd(X: LongInt): Boolean;
인수로 주어진 정수가 홀수인지를 검사하는 함수이다.
만약, 홀수이면 True값을 리턴하며, 짝수이면 False값을 리턴한다.
다음예는 인수로 주어진 정수값 I 가 홀수인지 짝수인지를 검사하여 레이블로 출력하는 예제로서 I에 3을 대입하면 '홀수입니다.'라는 메세지를 레이블로 출력하는 예제이다.
예 제
Var
    I : Integer;
begin
    I := 3;
    If Odd(I) Then
        Label1.Caption := '홀수입니다.'
    Else
        Label1.Caption := '홀수가 아닙니다.';
end;
Ord
문 법
function Ord(X): LongInt;
순서형값의 순서값을 조사하는 함수로서, 다음예제는 열거형의 열거요소중 Soo가 몇번째 값인지를 조사하는 예제이다. 여기서의 순서값은 2가 출력된다.
예 제
Type
    Yoil = (Wol,Hwa,Soo,Mok,Gum,TTo,Il);
begin
    Label1.Caption := 'Soo Member Is ' + IntToStr(Ord(Soo));
end;
함수 레퍼런스 정리...(P)
Pi
문 법
function Pi: Real;
원주율을 구하는 함수이다.
원주율은 3.1415926535897932385...로 정의되어 있으며 이값은 부동 소수점 연산 보조 프로세서가 있는지 없는지에 따라 정확도가 달라질 수 있다.
Pos
문 법
function Pos(SubStr: String; S: String): Byte;
문자열내의 부분 문자열을 검색하는 함수이다.
부분 문자열이 검색된 위치를 리턴해 주며, 만약 부분 문자열이 발견되지 않으면 리턴값은 0 이다. 이 함수는 문자열 검색에서 탁월한 성능을 발휘한다.
자세한 사항은 도움말을 참고하기 바란다.
함수 레퍼런스 정리...(R)
ReadKey
문 법
function ReadKey(Buffer: PChar; Count: Word): Word;
키보드로부터 문자값을 읽는 함수이다.
단, 이 함수는 표준 ASCII 코드만을 읽을뿐 기능키나 커서 이동키 등의 확장키 코드는 읽지 못한다.
Readln
문 법
procedure Readln([Var F; Text;] V1[V2,...,Vn]);
파일로부터 문장 한 줄을 읽어 변수 V1이하에 대입하며 다음 문장으로 이동하는 함수이다. Readln(F)와 같이 읽어들일 변수를 지정하지 않으면 다음 줄로 이동하기만 한다.
파일 변수가 생략될 경우는 표준 입력 장치인 키보드로부터 문자열을 입력받아 V1이하의 변수에 대입한다.
인수없이 Readln만 사용되면 Enter키가 입력될 때까지 대기한다.
다음 예는 키보드로부터 문장을 입력받아 다시 레이블로 출력하는 예제이다.
예 제
Var
    S : String;
begin
    Write('문장을 입력하세요');
    Readln(S);
    Label1.Caption := S;
end;
Rename
문 법
procedure Rename(Var F: Newname);
파일의 이름을 변경하는 함수이다.
변경하고자 하는 이름을 문자열로 전달해 주면 된다.
파일명을 변경하려면 AssignFile 함수로 파일 핸들에 외부 파일명을 할당해 주고 이 함수를 호출하면 되는데, 파일을 오픈할 필요까지는 없다.
ReWrite
문 법
procedure ReWrite(Var F; File [;Recsize: Word]);
파일을 쓰기 전용으로 오픈하는 함수이다.
F는 AssignFile함수로 외부파일과 연결된 파일 핸들이며 RecSize는 F가 untyped 파일일 경우 한번에 출력할 레코드의 크기를 지정한다.
RecSize가 생략될 경우 이 값은 128바이트로 간주된다.
파일이 없을 경우에는 파일을 생성하고 파일이 이미 열려져 있으면 파일을 닫은 후에 다시 생성하며 파일 위치는 파일의 선두에 맞추어 진다.
이 함수로 파일을 오픈할 후에 Writeln등의 함수로 데이터를 파일로 출력하게 된다.
다음 예는 Test.txt라는 간단한 파일을 만든후 문자열 하나를 출력하는 예제이다.
파일 입출력이 끝난 후에 파일 핸들은 반드시 Closefile 프로시져로 닫아 주어야 한다.
예 제
Var
    F : TextFile;
begin
    AssignFile(F, 'Test.txt');
    ReWrite(F);
    Writeln(F, '출력할 내용을 쓴다.');
    CloseFile(F);
end;
RmDir
문 법
procedure RmDir(S : String);
서브 디렉토리를 삭제하는 함수이다.
삭제할 디렉토리명을 문자열로 넘겨주는데, 도스의 RM 명령과 거의 동일한 규칙을 사용하며 디렉토리가 비어 있지않을 경우, 현재 디렉토리인 경우, 루트 디렉토리인 경우는 디렉토리를 삭제할 수 없다.
Round
문 법
function Round(X : Real): LongInt;
실수값 X 를 정수값으로 만들어주는 함수이다.
즉, 실수의 소수부분을 버리고 정수 부분만 결과로 취한다.
이때 소수부 첫째 자리에서 반올림이 일어나며 반올림의 결과는 부호와 상관없이 일어난다. 반올림의 결과와 LongInt형의 범위를 벗어날 경우는 실행시 에러가 발생한다.
다음 예제는 실수 3.1415 를 반올림하여 정수로 만드는 예제로서 레이블의 출력결과는 소수부가 잘려나간 3이되며, 만약 실수의 값이 3.6415일 경우는 반올림에 의해 4가 출력된다.
예 제
Var
    F : Double;
begin
    F := 3.1415;
    Label1.Caption := IntToStr(Round(F));
end;
RunError
문 법
procedure RunError[(ErrorCode: Byte)];
실행시 에러를 발생시키고 프로그램을 종료하는 함수이다.
치명적인 에러가 발생했을 경우 이 함수를 이용한다.
함수 레퍼런스 정리...(S)
Seek
문 법
procedure Seek(Var F; N: LongInt);
파일의 현재 위치(FP)를 N위치로 옮긴다.
Untyped 파일일 경우 N의 의미는 파일 선두에서의 바이트 단위 거리이지만 Typed파일일 경우 N은 N번째 요소의 위치를 의미한다.
예를 들어 레코드형 파일일 경우 N이 5이면 여섯 번재의 레코드의 위치로 이동한다. 첫번째 레코드의 번호가 0번이다.
Seek(F,FileSize(F))는 파일의 끝으로 현재위치를 이동시킨다.
SeekEof
문 법
function SeekEof[(Var F: Text)]: Boolean;
파일의 현재위치가 끝(EOF)인지 점검한다.
SeekEoln
문 법
function SeekEoln[(Var F: Text)]: Boolean;
파일의 현재위치가 줄의 끝(EOL)인지 점검한다.
SelectDirectory
문 법
function SelectDirectory(Var Directory: String; Options: TSelectDirOpts; HelpCtx:
LongInt): Boolean;
디렉토리 선택 대화상자를 보여주고 사용자로 하여금 디렉토리를 선택하도록 한다.
드라이브 콤보박스와 디렉토리 리스트 박스를 사용하여 디렉토리를 선택하며 파일 리스트 박스는 어떤 파일이 있는지만 보여준다.
디렉토리를 선택하는 것뿐만 아니라 에디트박스에 디렉토리명을 입력하여 없는 디렉토리를 직접 생성할 수도 있다.
인수로 주어지는 Directory문자열은 대화상자가 처음 열릴때 선택될 디렉토리이며 사용자가 대화상자에서 선택한 디렉토리명이 인수로 리턴된다.
사용자가 OK버튼을 누르면 True를 리턴하고 Cancle버튼을 누르면 False를 리턴한다.
두번째 인수 Options는 대화상자의 모양과 기능을 정의하는 옵션이며 다음과 같은 값의 집합형이다.
옵 션의 미
[]사용자는 존재하는 디렉토리를 선택할 수 있을 뿐이며 없는 디렉토리를 만들 수 없다.
sdAllowCreate에디트 박스에 사용자가 직접 존재하지 않는 디렉토리를 입력하는 것을 허용한다.
그러나 이 옵션을 사용한다고 해서 디렉토리를 생성해 주는 것은 아니며 사용자가 직접 Directory 인수를 참조하여 생성해 주어야 한다.
sdPerformCreate이 옵션을 sdAllowCreate 옵션과 함께 사용할 경우 존재하지 않는 디렉토리가 입력되면 직접 디렉토리를 만들어 준다.
sdPrompt디렉토리를 새로 만들기 전에 사용자로부터 디렉토리를 정말로 만들 것인가를 물어본다.
예 제
Uses 절에 FileCtrl 를 추가해야만 한다.

Var
    Dir: String;
begin
    Dir := 'C:/DELPHI';
    If SelectDirectory(Dir, [sdAllowCreate, sdPerformCreate, sdPrompt], 0) then
        Label1.Caption := Dir;
end;

디렉토리 선택 대화상자의 모습은 아래와 같다.
그 림
SizeOf
문 법
function SizeOf(X): Word;
X의 크기를 바이트 단위로 리턴하는 함수이다. X는 변수이거나 데이터 타입이다. SizeOf(Integer)는 2이며, SizeOf(Double)은 8 이다.
주로 레코드나 오브젝트 등 크기가 큰 데이터의 크기를 계산할 때 사용한다. 가상 메소드 테이블을 가진 오브젝트의 인스턴스크기를 조사하면 VMT에 저장된 크기가 리턴된다.
Sqr
문 법
function Sqr(X: Real): Read;
X의 제곱값을 구하는 함수이다. Sqr(X)는 X*X와 동일한 결과를 계산해 낸다.
Sqrt
문 법
function Sqrt(X: Real): Real;
X의 제곱근을 구하는 함수이다. Sqrt(2)는 1.414213이다.
이때 계산되는 제곱근은 양의 제곱근이다.
Str
문 법
procedure Str(X[: Width [: Decimals]]; Var S);
숫자값 X를 문자열 S로 출력하는 함수이다. 이때 출력되는 값의 폭은 Width 인수가 지정하는 폭을 사용하며 Decimals인수가 지정하는 정밀도를 사용한다. 숫자값 X는 정수형이거나 실수형 모두 가능하다. 다음예는 3.1415를 폭 5, 정밀도 3으로 문자열로 변환하는 예제이다. 이때, 레이블로 출력되는 문자열은 3.142이다.
예 제
Var
    F : Double;
    S : String;
begin
    F := 3.1415;
    Str(F:5:3, S);
    Label1.Caption := S;
end;
StrCat
문 법
function StrCat(Dest, Source: PChar): PChar;
두개의 문자열을 연결하는 함수이다.
Source문자열을 Dest문자열에 추가하며 연결된 문자열을 리턴한다.
문자열의 길이 점검은 하지 않으므로 Dest문자열이 Source의 문자열을 충분히 수용할만한 크기를 가지도록 해야한다. 다음 예제는 두개의 문자열을 결합하는 예제로서 레이블로 출력되는 결과는 Made In Korea 이다.
예 제
Var
    S1 : Arrary[0..128] of Char;
    S2 : Arrary[0..128] of Char;
begin
    StrCopy(S1,'Made In ');
    StrCopy(S2.'Korea');
    trCat(S1,S2);
    Label1.Caption := StrPas(S1);
end;
StrComp
문 법
function StrComp(Str1, Str2: PChar): Integer;
두개의 문자열을 비교하는 함수이다.
S1과 S2문자열이 같으면 0을 리턴하며, S1S2이면 양수를 리턴한다.
문자열끼리의 비교는 문자열을 이루는 각 문자의 문자코드를 비교하여 수행한다.
StrCopy
문 법
function StrCopy(Dest, Source: PChar): PChar;
널 종료 문자열을 복사하는 함수이다.
Source문자열을 Dest문자열에 복사하며 Dest문자열을 리턴한다.
이 함수는 문자열의 길이점검을 하지 않으므로 Dest문자열의 길이가 Source문자열의 길이보다 짧지 않도록 주의해야 한다. 만약 Dest문자열의 길이가 Source문자열을 충분히 수용하지 못할 경우 Dest 뒷부분의 다른 변수값이 파괴된다.
널 종료 문자열끼리는 := 연산자에 의해 직접 대입할 수 없으므로 이 함수를 사용하여 문자열끼리 복사해 주어야 한다.
예를 들어 Source가 'Korea'이고 이 값을 Dest문자열로 대입하고 싶다고 해서
Dest := Source와 같은 문장을 쓸수는 없다.
이때는 StrCopy(Dest, Source)와 같이 StrCopy함수를 사용하여야 한다.
ShowMessage
문 법
procedure ShowMessage(Const Msg: String);
대화상자를 열어 Msg 문자열을 보여주기만 하며 OK버튼을 누르면 대화상자를 닫는다.
캡션에는 이 대화상자를 호출한 프로그램의 실행파일이름을 출력한다. 간단한 메세지만을 전달하고 사용자의 입력을 받아야 할 필요가 없을 때 이 함수를 자주 사용한다.
예 제
ShowMessage('ShowMessage 함수의 실행화면입니다.');
그 림
ShowMessagePos
문 법
procedure ShowMessagePos(Const Msg: String; X, Y: Integer);
ShowMessage프로시져와 동일한 동작을 하는 함수이다.
하지만 ShowMessage는 대화상자를 무조건 화면 중앙에 열어주지만 이 ShowMessagePos함수는 X, Y인수를 사용하여 대화상자를 출력될 화면좌표를 지정할 수 있다.
StrLower
문 법
function StrLower(Str: PChar): PChar;
주어진 문자열을 소문자로 바꾼다.
StrToDate
문 법
function StrToDate(Const S: String): TDateTime;
문자열을 날짜 형식으로 바꿔어주는 함수이다.
문자열은 날짜 형식으로 되어 있어야 한다. 즉, 문자열 안에는 날짜를 이루는 세가지 요소가 순서에 맞게 배치되어 있어야 하며 각 요소는 날짜 구분 문자(/)로 분리되어 있어야 한다.
문자열에 날짜로 변경할 수 없는 문자가 있을 경우 EConvertError 예외가 발생한다.
StrToDateTime
문 법
function StrToDateTime(Const S: String): TDateTime;
문자열은 날짜와 시간을 담는 TDateTime형의 변수로 바꿔어주는 함수이다. 문자열에는 MM/DD/YY HH:MM:SS 형태로 날짜와 시간이 담겨 있어야 하며 시간값은 24시간제로 표현하거나 AM, PM을 추가로 뒤에 붙여주어야 한다.
StrToFloat
문 법
function StrToFloat(Const S: String): Extended;
문자열을 실수값으로 변환하는 함수이다. 문자열에는 부호를 나타내는 +/- 와 숫자, 그리고 소수점만 있어야 하며 지수를 나타내는 E가 올 수 있다.
그 외의 문자가 있을 경우는 EConvertError예외가 발생한다.
StrToInt
문 법
function StrToInt(Const S: String): LongInt;
문자열을 정수값으로 변환하는 함수이다. 이때 문자열에는 숫자로 바꿀 수 없는 문자가 있어서는 안되며, 만약 무효한 문자가 있을 경우 EConvertError예외를 발생시킨다.
에디트박스에 사용자가 입력한 값을 정수형 변수에 대입하고자 할 때 에디트 박스의 Text속성과 정수형 변수의 데이터형이 일치하지 않아 대입이 불가능하다.
문자열에 입력된 정수를 정수형 값으로 바꾸어 주어야 정수형 변수에 대입할 수 있다.
StrToTime
문 법
function StrToTime(Const S: String): TDateTime;
문자열을 시간 형태로 바꾸어 TDateTime형의 변수에 저장해 두는 함수이다. 문자열에는 HH:MM:SS 형태로 시, 분, 초가 담겨 있어야 하며, AM,PM은 있어도 되고 없어도 된다.
시간은 반드시 24시간 형태로 표시해 주어야 한다.
예를 들어 오후 8:30 은 20:30으로 표현하는데, 만약 문자열에 무효한 시간값이 들어있을 경우에는 EConvertError예외를 발생한다.
StrUpper
문 법
function StrUpper(Str: PChar): PChar;
주어진 문자열을 대문자로 바꿔주는 함수이다.
함수 레퍼런스 정리...(T)
Time
문 법
function Time: TDateTime;
시스템의 시계를 참조하여 현재 시간을 구하는 함수이다.
시간은 TDateTime형이므로 곧바로 문자열로 출력할 수 없으며 TimeToStr함수를 사용하여 문자열로 바꾸어 주여야 한다. Label1.Caption := TimeToStr(Time) 명령에 의해 Label1에 현재시간이 출력된다.
TimeToStr
문 법
function TimeToStr(Time: TDateTime): String;
시간을 나타내는 Time을 문자열 형태로 변경하는 함수이다.
시간값을 곧바로 레이블이나 에디트등으로 출력할 수 없기 때문에 이 함수를 사용하여 문자열로 변경해 주어야 한다.
Trunc
문 법
function Trunc(X: Real): LongInt;
실수의 소수점 이하를 버리고 정수부만 취하는 함수이다. Round함수는 소수점 첫째자리에서 반올림을 하지만 이 Trunc함수는 반올림없이 무조건 소수점을 버린다.
다음 예는 3.6415를 정수부분만을 취하여 레이블에 3을 출력하는 예제이다.
예 제
Var
    F : Double;
begin
    F := 3.6415;
    Label1.Caption := IntToStr(Trunc(F));
end;
함수 레퍼런스 정리...(U)
UpCase
문 법
function UpCase(Ch: Char): Char;
문자 Ch를 대문자로 바꿔주는 함수이다.
소문자 a 에서 대문자 Z 까지의 문자가 대문자 A ~ Z 로 변경되며 그 외 나머지 문자일 경우는 전혀 영향을 받지 않는다.
UpperCase
문 법
function UpperCase(const S: string): string;
문자열 내부의 소무낮를 모두 대문자로 바꾸어 주는 함수이다.
문자 변환은 7 비트의 아스키코드내에서 이루어지며 문자 'A' ~ 'Z' 까지가 변환의 영향을 받는다. 나머지 기호나 숫자, 한글은 변환되지 않는다.
함수 레퍼런스 정리...(V)
Val
문 법
procedure Val(S; var V; var Code: Integer);
문자열 변수 S 를 숫자형 변수로 바꾸어 주는 함수이다.
문자열 변수 S 에는 숫자가 담겨 있어야 한다.
문자열을 바꾼 결과를 받기위한 인수 V는 정수형이거나 실수형 변수 모두 가능하다.
S에 숫자로 바꿀 수 없는 무효 문자가 없다면 Code 값은 0 가 된다.
널 종료 문자열의 경우 Code에 리턴되는 에러 위치는 실제문자의 위치보다 하나가 더 많은 값이 된다.
함수 레퍼런스 정리...(W)
Write
문 법
procedure Write([Var F: Text;] P1[,P2,...,Pn]);
변수값을 파일로 출력하는 함수이다.
F 는 출력용으로 오픈된 텍스트파일이어야 하며 파일이 생략될 경우 표준 출력 장치인 화면으로 출력된다.
파일 변수 다음의 이수 P1 이하는 파일로 실제 출력될 값들이며, 이 값에 필드 폭, 정밀도를 지정할 수 있다.
출력할 수 있는 타입은 문자형, 정수형, 실수형, 문자열, 진위형 등이 있다.
타입도 파일일 경우 출력되는 변수 V1 이하는 파일의 요소와 같은 형이어야 한다.
즉, 레코드형 파일이라면 출력되는 값도 같은 형의 레코드이여야 한다. 파일의 현재 위치가 파일의 끝이라면 파일의 크기는 출력된 데이터의 길이만큼 늘어난다.
Writeln
문 법
procedure Writeln([Var F: Text;] P1[,P2,...,Pn]);
write 함수의 기능을 확장한 함수이다.
Write 를 호출하여 변수를 파일로 출력하되 변수 값 다음에 EOL (End Of Line)을 출력하여 자동으로 개행되도록 한다.



댓글 없음: