델파이 유용한 함수정리 3탄 -내장함수-
정수및 실수 관련 함수 시작
Int(Float)
설명
실수값에서 소수부분을 버리고(반올림안함) 정수부분만 구한후 출력한다.
출력값의 데이타형은 실수형이다.
사용
ShowMessage(FloatToStr(Int(3.13333))); // 3 출력
※ FloatToStr 대신 IntToStr를 사용하면 에러가 난다.
왜냐하면 원데이타가 실수값이기 때문이다,
Trunc(Float)
설명 : 실수는 무조건 버리고 정수만 리턴하는 함수
Frac(Float)
설명
실수값에서 정수부분을 버리고 실수부분만 구한후 출력한다.
출력값의 데이타형은 실수형이다.
사용
ShowMessage(FloatToStr(Frac(3.13333))); // 0.13333 출력
byte(char)
설명
특정 문자의 아스키 코드값을 출력합니다. 리턴값의 데이타형은 정수입니다.
사용
ShowMessage(inttostr(byte('a')));
Rancom(Range Word):Word;
설명
정수 데이타형의 난수를 출력한다.
난수의 범위는 "0 <= 난수 < Range" 이다.
사용
procedure TForm1.Button1Click(Sender: TObject);
var
value : Byte;
begin
value := 10;
ShowMessage(inttostr(random(value)));
end;
※ Randomize; 함수는 매번 새로운 난수가 생성되도록
초기화 시켜주는 역할을 하지만 안써주어도 크게 문제가 없다.
꼭 써야 한다면 FormCreate 이벤트 핸들러에 넣어준다.
※ Randimize; 함수를 안써줘도 되지만 안써주면 랜덤값이
패턴을 가지고 있어 패턴대로 나오기 때문에 좀더 랜덤하게 나오게
하기 위해 Randimize; 함수를 사용한다.
Round(Value1 Double):LongInt;
설명
실수를 정수로 만든다. 소수부 첫째 자리에서 반올림이 일어난다.
예제
procedure TForm1.Button1Click(Sender: TObject);
var
Value1 : Double;
begin
Value1 := 12.77;
ShowMessage(IntToStr(Round(Value1))); //# 13 출력
Value1 := 12.12;
ShowMessage(IntToStr(Round(Value1))); //# 12 출력
end;
문자및 문자열 관련 함수 시작
Delete(문자열,시작순서,갯수) - System Unit
정의
한문자열에서 부분 문자열을 삭제한다.
사용예제
procedure TForm1.Button7Click(Sender: TObject);
var
StrValue:string;
begin
StrValue:='leejunsik';
System.Delete(StrValue,1,3);
ShowMessage(StrValue); // 'junsik' 출력
ShowMessage(IntToStr(Length(StrValue))); // 6 출력
end;
length(문자열) 함수
설명
문자열의 길이를 구합니다.
사용
procedure TForm1.Button1Click(Sender: TObject);
begin
ShowMessage(inttostr(length('LEE')));
ShowMessage(inttostr(length('구2')));
ShowMessage(inttostr(length('ㄱ')));
ShowMessage(inttostr(length('구')));
end;
결과
3
3
2
2
char(아스키값)
설명
해당 아스키값에 해당하는 문자를 출력합니다.
사용
ShowMessage(char(90));
format() 함수
설명
사용법은 C언어의 printf와 흡사하다. 정수와 실수,문자열에 사용되며 출력은
문자 데이타형 이다.
* 출력결과의 형은 무조건 문자열 데이타형이다.
사용예제
ShowMessage(Format('%.4d%.3d', [11,22]));
-- '0011022' 가 출력되며 4자리와 3자리 미만일경우에는 남는 자리를 0 으로 채운다.
a := 100;
b := 'leejunsik';
ShowMessage(format('%5s%-5s',[b,b]));
// 첫번째, 두번째 b 모두 5칸을 확보한후 첫번째 b는 우측에 붙여 출력하며 두번째 b는
좌측에 붙여 출력한다.
ShowMessage(Format('%3.1s%-3.2s',['12','34']));
//첫번째는 3칸을 확보후 앞에 한글자만 우측에 붙여 출력하며 두번째는 3칸을 확보후
앞에 두글자만 좌측에 붙여 출력한다.
ShowMessage(format('%5.d',[a]));
// a는 5칸 확보후을 확보후에 우측에 붙여 출력한다.
ShowMessage(format('%-5.d',[a]));
// a는 5칸 확보후을 확보후에 좌측에 붙여 출력한다.
※ 남는 공간 0으로 채우기
※ format 함수에서 변환문자 %에서 . 뒤의 숫자는 문자열일경우 부분문자열을 출력하는
의미이며 정수, 정수, 실수는 0으로 채워주는 의미이다.
ShowMessage(Format('%.2s',['999'])); //# "99" 출력
ShowMessage(Format('%.5d',[999])); //# "00999" 출력
Chr() 함수
설명
10진수값을 아스키코드 문자로 변환합니다.
※ CHAR() 함수와 같은 역할을 한다.
사용
var
value : Char;
begin
ShowMessage(Chr(97));
end;
Ord() 함수
설명
아스키문자를 입력받아 10진수 정수값을 변환합니다.
사용
ShowMessage(inttostr(ord('A')));
-- 65 출력
UpCase() 함수
설명
소문자를 대문자로 변환한다.
사용
var
value : Char;
begin
ShowMessage(UpCase('c'));
end;
Uppercase 함수
설명
문자열을 대문자로 변환한다.
사용
strname := Uppercase(edit1.Text);
LowerCase 함수
설명
문자열을 소문자로 변환한다.
사용
strname := LowerCase(edit1.Text);
Concat 함수
설명
문자열을 순서대로 합쳐서 리턴합니다.
사용
var
value1 : String;
value2 : String;
begin
value1 := 'eeee';
value2 := 'ffff';
ShowMessage(Concat(value1,value2));
CompareStr 함수
설명
대소문자를 구별하여 문자열을 비교합니다.
서로 같으면 0을 리턴하며 다르면 0이외의 수를 리턴합니다.
사용
var
value1 : String;
value2 : String;
begin
value1 := 'eeee';
value2 := 'EEEE';
if CompareStr(value1,value2) = 0 then
begin
ShowMessage('hi!');
end;
end;
CompareText 함수
설명
대소문자를 구별하지 않고 문자열을 비교합니다.
서로 같으면 0을 리턴하며 다르면 0이외의 수를 리턴합니다.
사용
var
value1 : String;
value2 : String;
begin
value1 := 'eeee';
value2 := 'EEEE';
if CompareText(value1,value2) = 0 then begin
ShowMessage('hi!');
end;
end;
Copy 함수
설명
시작번째 문자부터 문자갯수만큼 문자열을 잘라내어 출력한다.
사용
var
value1 : String;
begin
value1 := 'leejunsik';
ShowMessage(Copy(value1,2,2));
// 2번째 문자부터 2글자를 출력(첫번째문자 1부터 시작)
// 'ee' 출력
end;
var
value1 : String;
begin
value1 := '한글은아름답다';
ShowMessage(Copy(value1,1,2));
// 1번째 문자부터 2번째까지 출력(첫번째문자 1부터 시작, 한글절단 문제있음)
// '한' 출력
end;
한글 문자열 사용시 출력예제
sValue1 := '김민수';
ShowMessage( Copy(sValue1,1,3));// "이" 출력
//한글 출력시 정확한 자음,모음 갯수를 지정하지 않아도 깨진 문자는 출력되지는 않는다.
sValue1 := '김민수';
ShowMessage( Copy(sValue1,1,4));// "이준" 출력
그밖의 문자및 문자열 관련 함수들
procedure TForm1.Button7Click(Sender: TObject);
var
value1 : String;
begin
value1 := 'abcdef';
//## 6번째 문자부터 1글자 지움(첫번째문자 1부터 시작) ##//
Delete(value1,6,1);
//## delete메소드는 리턴값이 없다. ##//
ShowMessage(value1);
end;
procedure TForm1.Button8Click(Sender: TObject);
var
value1 : String;
value2 : String;
begin
value1 := 'hello ';
value2 := 'world!';
Insert(value2,value1,2);
//## value1의 2번째에 value2값을 삽입한후 원래 2번째문자부터의
//## 문자열은 뒤로 밀려난다. (첫번째문자 1부터 시작) ##//
//## insert메소드는 리턴값이 없다. ##//
ShowMessage(value1);
end;
procedure TForm1.Button9Click(Sender: TObject);
var
value1 : String;
begin
value1 := 'hello ';
ShowMessage(IntToStr(Length(value1)));
//## 문자열의 길이를 출력 ##//
end;
procedure TForm1.Button10Click(Sender: TObject);
var
value1 : String;
begin
value1 := 'leejunsik';
//## 모두 대문자로 ##//
ShowMessage(Uppercase(value1));
//## 모두 소문자로 ##//
ShowMessage(Lowercase(value1));
end;
procedure TForm1.Button11Click(Sender: TObject);
var
value1 : String;
value2 : String;
begin
value1 := '하나a님';
value2 := '하';
ShowMessage(IntToStr(Pos(value2,value1)));
value2 := 'a';
ShowMessage(IntToStr(Pos(value2,value1)));
//## value1문자열안에 value2문자열이 있다면 첫문자의 위치값을 리턴하며 ##//
//## 위치값은 1이 첫번째 글자
//## 없다면 0을 리턴합니다.(대소문자 가리며 한글,영문 크게 문제없음) ##//
end;
문자열 변수의값이 특정 문자열로 시작하는지 체크하기
if pos('김민수', Msg) = 1 then begin
begin
ShowMessagte('김민수 이란 문자열로 시작합니다.');
end;
※ 첫문자의 위치값은 1부터 시작
//# 1 출력
ShowMessage( inttostr(pos('김민', '김민수는 천재다. 그리고 잘생겼다.')) );
//# 18 출력
ShowMessage( inttostr(pos('그리고', '김민수은 천재다. 그리고 잘생겼다.')) );
//# 0 출력
ShowMessage( inttostr(pos('가나', '김민수은 천재다. 그리고 잘생겼다.')) );
procedure TForm1.Button12Click(Sender: TObject);
var
value1 : PChar;
value2 : String;
begin
value1 := '한글';
ShowMessage(StrPas(value1));
//## PChar(문자열끝에 널제로가 있음)형을 AnsiString형으로 변경 ##//
end;
StrCopy(a, b);
pChar형 변수에서 pChar형 변수로 널종료 문자열을 복사한다.(b에서 a로 복사한다.)
파일 및 폴더 관련 함수 시작
Chdir - system Unit
문법 : procedure ChDir(S: String);
인수 S가 지정하는 경로로 현재 디렉토리를 변경한다.
만약 S가 드라이브 문자를
포함하고 있을 경우 현재 드라이브도 변경된다.
* 인수에 값이 없을경우 "I/O error 123"이 출력된다.
※ 파일열기 대화상자의 현재위치를 바꾸는데 사용한다.
FileExists()
설명
로컬PC에 해당 파일이 존재하는지 체크한다.
사용
FileExists('C:\lee');// 존재한다면 TRUR 리턴, 존재하지 않는다면 FALSE 리턴
ExtractFilePath()
설명
파일 경로에서 파일을 제외한 경로만을 리턴합니다.
사용
ShowMessage(ExtractFilePath('c:\lee.hwp')); //'c:\' 출력
ExtractFileName()
설명
파일 경로에서 경로를 제외한 파일이름만을 리턴합니다.
사용
ShowMessage(ExtractFilePath('c:\lee.hwp')); //'lee.hwp' 출력
DirectoryExists()
설명 - 로컬PC에 해당 폴더가 존재하는지 체크한다.
사용
DirectoryExists('C:\lee'););// 존재한다면 TRUR 리턴, 존재하지 않는다면 FALSE 리턴
CreateDir() - SysUtils 유닛
설명 - 로컬PC에 폴더를 생성한다.
사용
CreateDir('C:\LEEJUNSIK');
※ 이미 폴더가 존재하는데 다시 생성해도 에러는 나지 않는다.
CopyFile() - Windows Unit
설명
파일을 복사합니다.
사용
CopyFile(Pchar('C:\1114651_top.jpg'),Pchar('C:\1114651_top2.jpg'),False);
※ 첫번째, 두번째 파라미터는 무조건 폴더명이면 안되고 파일명이어야 한다.
※ 복사할 파일의 성격이 문자열값이 아닌 변수명이면 PChar() 함수로 포인트형으로 변경해줘야 합니다.
※ 두번째 파라미터에 파일명이 존재해도 메세지를 출력하거나 에러가 나지 않고 수행된다.
MoveFile - Windows Unit
설명
파일을 이동합니다.
사용예제
MoveFile(Pchar('C:\test_pj\test.txt'),Pchar('C:\test_pj1\aa.txt'));
※ 첫번째, 두번째 파라미터에는 무조건 파일명이 와야 한다.
※ 복사할 파일의 성격이 문자열값이 아닌 변수명이면 PChar() 함수로 포인트형으로
변경하지 않아도 된다.
DeleteFile() - SysUtils Unit
설명
파일을 삭제합니다.
DeleteFile() 함수로 삭제된 파일은 실행취소(Ctrl+z)로 살리지 못하며 휴지통에도 담기지
않고 즉시 삭제됩니다.
사용예제
procedure TForm1.Button4Click(Sender: TObject);
var
File1 : String;
begin
File1 := 'C:\새 텍스트 문서 (2).txt';
DeleteFile('C:\새 텍스트 문서.txt');
DeleteFile(PChar(File1));
end;
※ 복사할 파일의 성격이 문자열값이 아닌 변수명이면 PChar() 함수로 포인트형으로 변경해줘야 합니다.
ExtractFileExt()
설명
파일의 완전경로에서 확장자부분만 분리시켜 리턴합니다.(.hwp)
사용
strname := ExtractFileExt(edit1.Text);
ForceDirectories() - SysUtils Unit 필요
createdir() - SysUtils Unit 필요
설명
디렉토리를 생성한다.
사용
ForceDirectories('c:\leejunsik');
createdir('c:\leejunsik');
delphi에는 제공하고 있는 function들중에
지정한 directory까지 directory를 생성 해주는 function이 있다.
"ForceDirectories"
이넘을 사용 하면 특정 위치 까지 directory를 생성 할수 있다.
help를 찾아 보니 example도 있군요...
procedure TForm1.Button1Click(Sender: TObject);
var
Dir: string;
begin
Dir := 'C:\APPS\SALES\LOCAL';
if ForceDirectories(Dir) then
Label1.Caption := Dir + ' was created'
end;
※ ForceDirectories() 함수와 createdir() 함수는 같은 역할을 합니다.
Rename(FileName)
파일의 이름을 변경한다.
사용예제
procedure TForm1.Button3Click(Sender: TObject);
var
f : File;
FileName : String;
Rename_FileName : String;
begin
FileName := 'c:\인 현 정 보.txt';
AssignFile(f, FileName);
//# 공백 제거
Rename_FileName :=
StringReplace(ExtractFileName(FileName), ' ', '',[rfReplaceAll]);
//# 파일이름 변경
Rename(f, Rename_FileName);
//CloseFile(f);
end;
※ CloseFile(f) 함수를 사용하면 에러가 발생한다.
데이타형 관련 함수 시작
VarClear()
설명
Variant 변수를 초기화한다.
사용
var
lee : Variant;
begin
lee := 'dddd';
ShowMessage(lee);
//VarClear(lee);
ShowMessage(lee);
FillChar() - System Unit
정의
배열변수와 포인트형 변수의 값을 NULL로 채워 초기화 해줍니다.
사용예제
procedure TForm1.Button10Click(Sender: TObject);
var
value1:array[0..5] of integer;
begin
//# 배열변수 초기화하기
System.FillChar(value1, SizeOf(value1), #0);
end;
예제
var
// []안에 값은 인덱스라 한다.
names : array [0..4] of string;
begin
names[0] := 'lee';
names[1] := 'sak';
names[2] := 'jon';
names[3] := 'pink';
// 반복문을 이용한 배열사용
for loop := 0 to 4 do
begin
writeln(names[loop]);
end;
end;
//---------------------------------------------------------------------------------
Inc()
설명
정수형 데이타변수의 값에 1을 더한다.
사용
procedure TForm1.Button1Click(Sender: TObject);
var
num:integer;
begin
num:=1;
Inc(num);
ShowMessage(inttostr(num));
end;
now, date, time 함수
설명
현재 날짜/시간(now)이나 날짜(date)나 시간(time)을 리턴합니다.
사용법
ShowMessage(datetimetostr(Now));
-- 2006-11-30 오전 9:50:24
ShowMessage(datetimetostr(date)+' '+timetostr(time));
-- 2006-11-30 오전 9:50:24
ShowMessage(datetostr(now));
-- 2006-11-30
ShowMessage(datetimetostr(date));
-- 2006-11-30
ShowMessage(datetostr(date));
-- 2006-11-30
ShowMessage(timetostr(time));
-- 오전 9:50:24
사용예제
//# 금일날짜와 금일날자-10의 비교명령
if (date > date-10) then
begin
ShowMessage('Hello!');
end;
//# 금일날짜시간과 금일날자의 비교명령
if datetostr(now) = datetostr(date) then
begin
ShowMessage('Hello!');
end;
sleep()
설명
밀리세컨드(ms)의 시간만큼 실행을 멈춥니다.
사용법
sleep(1000); //이렇게 하면 1초간 지연됩니다. 밀리세컨드(1/1000초)의 값이 들어갑니다.
MessageBeep()
설명
스피커를 이용해 짧은 비프음을 출력한다.(API함수)
※ 시스템 비프음이 아니라서 스피터가 없으면 소리가 안난다.
※ 소리의 종류는 아래 5가지가 있다.
사용예제
procedure TForm1.Button2Click(Sender: TObject);
begin
//MessageBeep($FFFFFFFF);
//MessageBeep(MB_ICONASTERISK);
//MessageBeep(MB_ICONEXCLAMATION);
//MessageBeep(MB_ICONHAND);
MessageBeep(MB_OK);
end;
InputBox()
설명
문자열을 입력받을수 있는 대화상자를 출력한다.
OK 버튼을 누르면 Edit박스(현재 입력된)에 값이 리턴되며
CANCEL 버튼을 누르면 함수의 세번째 인자
"텍스트박스문자열" 값이 리턴됩니다.
※ 하지만 어떠 버튼을 눌렸는지 체크할수 없습니다.
예제
procedure TForm1.Button1Click(Sender: TObject);
begin
edit1.Text := inputbox('제목표시줄문자열','폼내용문자열','텍스트박스문자열');
end;
InputQuery()
설명
문자열을 입력받을수 있는 대화상자를 출력한다.
OK를 누르면 텍스트박스내용이 세번째 인자 문자열변수에 대입되면
CANCEL을 누르면 빈값이 세번째 인자 문자열변수에 대입됩니다.
리턴되는 값은 OK(-1)버튼을 클릭했는지 CANCEL(0)버튼을
클릭햇는지 정수형으로 리턴해준다.
사용법
procedure TForm1.Button2Click(Sender: TObject);
var
StrValue : String;
BooValue : Boolean;
begin
BooValue := InputQuery('제목표시줄문자열','폼내용문자열',StrValue);
ShowMessage(StrValue);
ShowMessage(BoolToStr(BooValue));
end;
Shellexecute()
설명
특정 실행파일(외부명령어)을 실행시키며 WinExec() 함수와 같은 역할을 한다.
WinExec() 함수와 다른점
Shellexecute()는 핸들값을 리턴하지만 WinExec()는 핸들값을 리턴하지 않는다.
사용예제
var
Handle: THandle;
Shellexecute(Handle,'','실행파일명','파라미터',nil,sw_shownormal);
ShowMessage(IntToStr(Handle)); //핸들값 출력
※ Shellexecute() 와 WinExec() 사용시 주의할점
위의 두 함수는 호출한 어플리케이션과 별개로 실행되는 프로세스이다.
이말은 순차적으로 실행되는 소스에 위의 두함수를 넣었다면
위의 두함수의 실행이 종료되기전에 다음 소스가 실행될수 있다는것이다.
위의 두함수의 실행이 다음줄 소스중에 하나라도
연관성이 있다면 잘못된 처리를 할수 있다.
그래서 위의 두함수는 단독으로 처리되는
소스에 사용하는게 적합하며 다음줄 소스와
연관성이 있는 처리에 사용할때는
아래의 사용자 정의 함수를 이용한다.
※ 외부프로세스를 실행후 대기하고 있다가 종료하면
다음 소스가 실행되는 사용자 정의 함수
shellapi uses;
{-----------------------------------------------------------------------------
Procedure: ShellExecute_AndWait
Author: 2006-08-29, JUN SIK LEE
Purpos: 외부명령어를 정상실행후 다음 루틴으로 넘어간다.
Arguments:
Result:
-----------------------------------------------------------------------------}
Procedure ShellExecute_AndWait(FileName:String;Params:String);
var
exInfo : TShellExecuteInfo;
Ph : DWORD;
begin
FillChar( exInfo, Sizeof(exInfo), 0 );
with exInfo do
begin
cbSize:= Sizeof( exInfo );
fMask := SEE_MASK_NOCLOSEPROCESS or SEE_MASK_FLAG_DDEWAIT;
Wnd := GetActiveWindow();
ExInfo.lpVerb := 'open';
ExInfo.lpParameters := PChar(Params);
lpFile:= PChar(FileName);
nShow := SW_HIDE; //# 실행프로그램 안보임
end;
if ShellExecuteEx(@exInfo) then
begin
Ph := exInfo.HProcess;
end
else
begin
ShowMessage(SysErrorMessage(GetLastError));
exit;
end;
while WaitForSingleObject(ExInfo.hProcess, 50) <> WAIT_OBJECT_0 do
Application.ProcessMessages;
CloseHandle(Ph);
end;
WinExec()
설명
원하는 실행파일(외부명령어 파일,EXE 파일)을 실행시킨다.
원도우의 시작버튼>실행에 열기부분에 입력하여
확인버튼을 누른 효과와 같다.
첫번째 파라미터는 실행명령 문자열이며
두번째 파라미터는 실행형태 타입값이다.
※ 첫번재 파라미터가 문자열값이 아닌 문자열 변수라면 사용시 PChar()로 감싸주어야 한다.
procedure TForm1.Button1Click(Sender: TObject);
var
value:string;
begin
value:='c:\lee.exe';
WinExec(PChar(value), SW_NORMAL);
end;
실행형태 타입의 종류
SW_SHOWNORMAL(1) - 화면에 보이며 활성화된 새프로그램으로 실행한다.
SW_NORMAL(1) - SW_SHOWNORMAL와 같다.
SW_HIDE(0) - 화면에 안보이고 비활성화된 새프로그램으로 실행한다.
SW_MAXIMIZE(3) - 화면에 보이며 활성화되고 최대화되어 새프로그램으로 실행한다.
SW_MINIMIZE(2) - 화면에 안보이며 비활성화되고 최소화되어 새프로그램으로 실행한다.
※ 실행명령 문자열에 "explorer domain" 명령을 사용하게되면
두번째 파라미터가 항상 "SW_SHOWNORMAL" 의 효과를 낸다.
※ 실행폼이 화면에 나타나지 않기를 원할때는 "SW_HIDE" 를 사용한다.
사용방법
winexec(`explorer http://blog.naver.com/ysaraha`,SW_SHOWNORMAL);
winexec(`explorer http://blog.naver.com/ysaraha`,SW_HIDE);
-- 원하는 주소로 브라우저창 열기
winexec('notepad.exe',SW_SHOWNORMAL);
-- 메모장 실행
winexec('control.exe',SW_SHOWNORMAL);
-- 제어판 실행
winexec('c:\lee.exe',SW_SHOWNORMAL);
-- lee.exe 프로그램 실행
winexec(' cmd /k " rename C:\lee1.txt lee2.txt " ',SW_SHOWNORMAL);
-- cmd 창에서 rename명령 실행
-- 첫번째 파일명이나 두번째 파일명에 공백이 들어가있으면 제대로 실행이 안됩니다.
윈도우 유틸리티 실행파일명
▶ 레지스트리
시작 > 실행 > mstsc - 원격데스크톱 연결
시작 > 실행 > msconfig - 시스템 구성 유틸리티
시작 > 실행 > dxdiag (다이렉트X 진단도구)
시작 > 실행 > regedit - 레지스트리 편집기
시작 > 실행 > winipcfg - 원도우98 iP 확인
시작 > 실행 > ipconfig - 도스모드에서 IP Address 확인
▶ 보조 프로그램
시작 > 실행 > command , cmd (도스모드)
시작 > 실행 > calc (계산기)
시작 > 실행 > notepad (메모장)
시작 > 실행 > pbrush (그림판)
시작 > 실행 > winver (윈도우버전확인)
시작 > 실행 > clipbrd (클립보드내용)
시작 > 실행 > sndvol32 (볼륨조절)
시작 > 실행 > wmplayer (동영상플레이어)
▶ 제어판
시작 → 실행 → main.cpl → 마우스 등록정보
시작 → 실행 → mmsys.cpl → 사운드 및 오디오 등록정보
시작 → 실행 → ncpa.cpl → 네트워크 등록정보
시작 → 실행 → nusrmgr.cpl → 사용자 계정 관리
시작 → 실행 → powercfg.cpl → 전원 옵션 관리
시작 → 실행 → desk.cpl → 디스플레이
시작 → 실행 → inetcpl.cpl → 인터넷
시작 → 실행 → intl.cpl → 언어
시작 → 실행 → sysdm.cpl → 시스템 등록정보
시작 → 실행 → appwiz.cpl → 프로그램 추가/삭제
▶ 시스템 도구
시작 → 실행 → oobe/msoobe /a → X P 날짜제한알아보기
시작 → 실행 → devmgmt.msc - 장치관리자
시작 → 실행 → diskmgmt.msc - 파티션 관리
시작 > 실행 > msinfo32 - 시스템 정보
시작 > 실행 > gpedit.msc - 그룹정책 관리
시작 → 실행 → sigverif 드라이버 서명..?
exit()
설명
프로시저나 함수의 수행을 멈추며 프로그램을 종료하지는 않는다.
사용법
procedure TForm1.Button1Click(Sender: TObject);
var
a:Integer;
begin
a:=10;
if a = 10 then
exit;
ShowMessage('출력?');
end;
FormatFloat()
설명
정수형 데이타를 원하는 형식의 포맷인 문자열 데이타형으로 변환하여 출력한다.
사용법
edit1.text := formatfloat('#,##0',11012120); //# 천단위로 콤마 표시하기
edit1.text := formatfloat('#,##원',11012120); //# 천단위로 콤마 표시하기
edit1.text := formatfloat('#,##달러',11012120); //# 천단위로 콤마 표시하기
MaskUtils unit 필요
FormatMaskText()
설명
특정 문자열 데이타를 원하는 형식의 포맷인 문자열 데이타형으로 리턴해준다.
사용법
ShowMessage(FormatMaskText('!9999-99-99;0;_','20060911'));
//출력 - 2006-09-11
ShowMessage(FormatMaskText('!99:99:99;0;_','120740'));
//출력 - 12:07:40
날짜/시간관련 함수모음
Decodedate()
함수정의
TDateTime 형에 저장된 날짜 정보를 년,월,일로 분리시킨다.
사용예제
procedure TForm1.Button1Click(Sender: TObject);
var
current_date : TDateTime;
year, month, day : Word;
begin
current_date := date;
Decodedate(current_date, year, month, day);
ShowMessage( IntToStr(year)); //2008
ShowMessage( Format('%.2d', [month]) ); //08
ShowMessage( Format('%.2d', [day]) ); //08
end;
FormatDateTime()
설명
날짜형 데이타를 원하는 형식의 포맷인
문자열 데이타형으로 리턴해준다.
(포맷은 대소문자를 가리지 않는다.)
사용법
edit1.text := formatdatetime('yyyy-mm-dd',now);
--2006-06-06
edit1.text := FormatDateTime('yyyy-mm-dd hh:nn:ss',Now);
--2006-06-06 12:20:50
-- 24 시간제로 시간이 출력
procedure TForm1.Button1Click(Sender: TObject);
var
value : TDateTime;
begin
value := StrToDate(Format('%.4d-%.2d-01', [2006,6]));
ShowMessage(FormatDateTime('yyyymmdd',value-5)); //5일 빼기
//20060527 출력
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
ShowMessage( FormatDateTime('yyyymmdd', StrToDate('2006-06-01')-1) );
//#20060527 출력
end;
DateUtils Unit 필요
CompareDate()
설명
두개의 날짜형 데이타를 비교한다.
사용법
//# 같으면 0 출력
ShowMessage(IntToStr(CompareDate(StrToDate('2007-04-01'), StrToDate('2007-04-01'))));
//# 오른쪽이 더 크면 -1 출력
ShowMessage(IntToStr(CompareDate(StrToDate('2007-04-01'), StrToDate('2007-04-02'))));
//# 왼쪽이 더 크면 1 출력
ShowMessage(IntToStr(CompareDate(StrToDate('2007-04-02'), StrToDate('2007-04-01'))));
※ 날짜는 YYYY-MM-DD 형식에서 날짜형으로 변환한다.
SysUtils unit 필요
데이타타입 변환 함수 모음
설명
현재 변수의 데이타형을 바꿉니다.
사용법
정수형 Int 실수형 Float 문자열형 Str 날짜/시간형 datetime 날짜형 date
현재데이타형To바꿀데이타형(데이타값);
ex)IntToStr(), StrToFloat();, ColorToString();,
DateTimeToStr();, DateToStr();, timetostr();
BoolToStr(), TimeToStr(), StrToDate(),
StrToTime(), StrToTime(), FloatToStr();
StrToInt64();, ColorToString();
StrToIntDef(Value:String, Default:Longint)
설명
문자열을 정수로 변환한다.
StriToInt() 함수는 변환이 불가능할때 예외를 발생시키지만
이함수는 변환이 불가능할 경우 Default 값을 사용한다.
Trim()
설명
문자열의 좌우 공백을 없앤후 리턴해줍니다.(String)
사용법
procedure TForm1.Button1Click(Sender: TObject);
begin
ShowMessage(trim(EdtValue1.Text));
end;
SizeOf()
설명
변수의 데이타형의 크기를 바이트 단위로 리턴합니다.(Integer)
String만 length로 크기를 알수 있습니다.
사용법
procedure TForm1.Button1Click(Sender: TObject);
var
value1:Integer;
value2:String;
value3:LongInt;
value4:Int64;
begin
value1:=1990;
value2:='12345';
ShowMessage('Integer '+IntToStr(SizeOf(value1))+'바이트');
ShowMessage('String '+IntToStr(length(value2))+'바이트');
ShowMessage('LongInt '+IntToStr(SizeOf(value3))+'바이트');
ShowMessage('Int64 '+IntToStr(SizeOf(value4))+'바이트');
end;
StringReplace()
설명
문자열에서 특정 문자나 문자열을 원하는 문자열로 변환하여 리턴합니다.
사용법
procedure TForm1.Button1Click(Sender: TObject);
var
a:String;
begin
a:='사랑해 윤정아' + #13#10 + '윤정아';
ShowMessage(StringReplace(a,'윤정아','백윤정',[rfReplaceAll]));
ShowMessage(StringReplace(a,#13#10,'김민수',[rfReplaceAll]));
ShowMessage(StringReplace(a,#$D#$A,'김민수',[rfReplaceAll]));
end;
부가설명
#13#10는 10진수13의 아스키 값과 10진수10의 아스키값을 말하며 엔터를 말합니다.
#$D는 16진수 D의 10진수 13의 아스키 값이며 #$A는 16진수 A의 10진수 10의 아스키
값입니다.
QuotedStr()
설명
문자열을 인자로 받아 양끝에 '를 추가해 주고
문자열 내부의 '는 '' 로 자동변환해주어 반환합니다.
용도
에디터나 메모안의 텍스트를 쿼리에 넣을경우 에디터나
메모안의 텍스트에 ' 따옴표가 들어가면 쿼리문법에러가 납니다.
그래서 ' 을 ''로 변환해주는 역할을 합니다.
기본 예제
procedure TForm1.Button1Click(Sender: TObject);
begin
ShowMessage(QuotedStr('LEEJUN')); // 'LEEJUN' 출력됨
ShowMessage(QuotedStr('LEE''JUN'));// 'LEE''JUN' 출력됨
end;
사용 예제
다음과 같이 insert문이나 update문에 QuotedStr()함수를 사용합니다.
'UPDate Bulletin Set Notice = '+QuotedStr(MemoGongji.Text)+' '+'where Ymd = '''+DateToStr(DTP1.Date)+'''';
DirectoryExists
메세지 박스 관련 함수
Dialogs unit 추가
ShowMessage(string);
설명
간단한 메세지 박스를 화면의 정가운데에 출력한다.
※ 메세지내용에서 줄바꿈을 하려면 다음과 같이 한다.
ShowMessage('준식아' + #13#10 + '메롱');
ShowMessage() 줄바꿈예제
procedure TForm1.Button1Click(Sender: TObject);
var
szMsg:String;
begin
szMsg := #13#10 + ' ▶▶▶▷【 .... 】◁◀◀◀ ';
szMsg := szMsg + #13#10+#13#10;
szMsg := szMsg + '◈ 반송코드 : [ .... ] ';
szMsg := szMsg + #13#10+#13#10;
szMsg := szMsg + `◈ 반송사유 : [ .... ] `;
showmessage( szMsg );
end;
Dialogs unit 추가
ShowMessagePos(string,가로좌표,세로좌표);
설명
간단한 메세지 박스를 화면의 원하는 위치에 출력한다.
가로위치나 세로위치에 마이너스값이 들어가면
가운데로 자동 설정된다.
사용예제
//# 화면의 최상단을 기준으로 좌측부터 0픽셀, 상단부터 0픽셀 떨어져 출력
ShowMessagePos('윤정아' + #13#10 + '메롱', 0, 0)
//# 화면의 최상단을 기준으로 좌측부터 100픽셀, 상단부터 100픽셀 떨어져 출력
ShowMessagePos('윤정아' + #13#10 + '메롱', 100, 100);
//가로위치나 세로위치에 마이너스값이 들어가면 가운데로 자동 설정된다.
ShowMessagePos('윤정아' + #13#10 + '메롱', -10, -10);
※ 세지내용에서 줄바꿈을 하려면 다음과 같이 한다.
ShowMessagePos('윤정아' + #13#10 + '메롱', 10, 10);
'Delphi > 프로시저-함수' 카테고리의 다른 글
델파이 ord chr 함수 (0) | 2021.06.29 |
---|---|
델파이 날짜 시간 유틸 함수모음 (0) | 2021.06.28 |
델파이 showmodal 리턴받기 (0) | 2021.06.24 |
델파이 유용한 함수정리 2탄 (0) | 2021.06.23 |
델파이 유용한 함수정리 1탄 (0) | 2021.06.23 |
댓글