우리 조상들의 DELPHI 기본 개발 기술
편집: 세입자 출처: 독점 포럼
◇[DELPHI] 네트워크 환경에서 파일 복사
shellapi를 사용합니다.
copyfile(pchar('newfile.txt'),pchar('//computername/direction/targer.txt'),false);
◇[DELPHI]는 마우스 드래그 효과를 생성합니다.
PANEL의 LABEL과 같은 MouseMove 이벤트, DragOver 이벤트, EndDrag 이벤트를 통해 구현됩니다.
var xpanel,ypanel,xlabel,ylabel:integer;
PANEL의 MouseMove 이벤트: xpanel:=x;ypanel:=y;
PANEL의 DragOver 이벤트: xpanel:=x;ypanel:=y;
LABEL의 MouseMove 이벤트: xlabel:=x;ylabel:=y;
LABEL의 EndDrag 이벤트: label.left:=xpanel-xlabel;label.top:=ypanel-ylabel;
◇[DELPHI] WINDOWS 디렉토리 획득
shellapi를 사용합니다.
var windir:array[0..255] 문자;
getwindowsdirectory(windir,sizeof(windir));
또는 레지스트리 위치에서 읽으십시오.
HKEY_LOCAL_MACHINE/소프트웨어/Microsoft/Windows/현재 버전
SystemRoot 키(다음으로 획득): C:/WINDOWS
◇[DELPHI] FORM 또는 기타 컨테이너에 선 그리기
var x,y:정수 배열 [0..50];
canvas.pen.color:=clred;
canvas.pen.style:=PSDash;
form1.canvas.moveto(trunc(x[i]),trunc(y[i]));
form1.canvas.lineto(trunc(x[j]),trunc(y[j]));
◇[DELPHI] 문자열 목록 사용법
var 팁:tstringlist;
팁:=tstringlist.create;
Tips.loadfromfile('filename.txt');
edit1.text:=팁[0];
Tips.add('마지막 줄 추가 문자열');
Tips.insert(1,'NO 2 줄에 문자열을 삽입하세요');
Tips.savetofile('newfile.txt');
팁.무료;
◇[DELPHI]간단한 클립보드 조작
richedit1.selectall;
richedit1.copytoclipboard;
richedit1.cuttoclipboard;
edit1.pastefromclipboard;
◇[DELPHI] 파일 및 디렉토리 작업에 대하여
Chdir('c:/abcdir');디렉토리로 이동
Mkdir('dirname');디렉토리 생성
Rmdir('dirname'); 디렉토리 삭제
GetCurrentDir;//'/' 없이 현재 디렉터리 이름을 가져옵니다.
Getdir(0,s);//작업 디렉터리 이름 가져오기 s:='c:/abcdir';
Deletfile('abc.txt');//파일 삭제
Renamefile('old.txt','new.txt');//파일 이름 바꾸기
ExtractFilename(filelistbox1.filename);//파일 이름을 가져옵니다.
ExtractFileExt(filelistbox1.filename);//파일 접미사 가져오기
◇[DELPHI] 프로세스 파일 속성
attr:=filegetattr(filelistbox1.filename);
if (attr and faReadonly)=faReadonly then ... //읽기 전용
if (attr 및 faSysfile)=faSysfile then ... //시스템
if (attr and faArchive)=faArchive then ... //아카이브
if (attr and faHidden)=faHidden then ... //숨기기
◇[DELPHI]프로그램 외부에서 파일 실행
WINEXEC//실행 파일 호출
winexec('command.com /c copy *.* c:/',SW_Normal);
wineexec('abc.txt 시작');
ShellExecute 또는 ShellExecuteEx//파일 연결 프로그램 시작
함수 실행 파일(const 파일 이름,params,defaultDir:string;showCmd:integer):THandle;
ExecuteFile('C:/abc/a.txt','x.abc','c:/abc/',0);
ExecuteFile('http://tingweb.yeah.net','','',0);
ExecuteFile('mailto:[email protected]','','',0);
◇[DELPHI] 시스템에서 실행중인 프로세스 이름을 알아낸다
var hCurrentWindow:HWnd;szText:array[0..254] of char;
시작하다
hCurrentWindow:=Getwindow(handle,GW_HWndFrist);
hCurrentWindow <> 0 하는 동안
시작하다
if Getwindowtext(hcurrnetwindow,@sztext,255)>0 then listbox1.items.add(strpas(@sztext));
hCurrentWindow:=Getwindow(hCurrentwindow,GW_HWndNext);
끝;
끝;
◇[DELPHI]어셈블리 매립에 대해
Asm 종료;
EAX, ECX 및 EDX는 마음대로 수정할 수 있습니다. ESI, EDI, ESP, EBP 및 EBX는 수정할 수 없습니다.
◇[DELPHI]유형 변환 기능에 대해
FloatToStr//부동소수점을 문자열로
FloatToStrF//부동 소수점을 문자열로 포맷
IntToHex//정수에서 16진수로
시간까지의 시간
DateToStr
DateTimeToStr
FmtStr//지정된 형식으로 문자열을 출력합니다.
FormatDateTime('YYYY-MM-DD,hh-mm-ss',DATE);
◇[DELPHI]문자열 프로시저 및 함수
Insert(obj,target,pos);//pos 위치에 문자열 target이 삽입됩니다. 삽입 결과가 대상의 최대 길이보다 길면 초과 문자가 잘립니다. Pos가 255를 벗어나면 런타임 오류가 발생합니다. 예를 들어, st:='Brian'이면 Insert('OK',st,2)는 st를 'BrOKian'으로 만듭니다.
삭제(st,pos,Num);//st 문자열의 pos(정수) 위치부터 시작하여 Num(정수) 문자의 하위 문자열을 삭제합니다. 예를 들어, st:='Brian'이면 삭제(st,3,2)는 Brn이 됩니다.
Str(value,st);//숫자값(정수 또는 실수형)을 문자열로 변환하여 st에 넣습니다. 예를 들어 a=2.5E4인 경우 str(a:10,st)는 st 값을 '25000'으로 만듭니다.
Val(st,var,code);//문자열 표현식 st를 해당 정수 또는 실수 값으로 변환하여 var에 저장합니다. St는 숫자 값을 나타내는 문자열이어야 하며 숫자 상수에 대한 규칙을 따라야 합니다. 변환 과정에서 오류가 감지되지 않으면 변수 코드는 0으로 설정되고, 그렇지 않으면 첫 번째 오류 문자 위치로 설정됩니다. 예를 들어 st:=25.4E3, x는 실제 변수인 경우 val(st,x,code)는 X 값을 25400으로 만들고 코드 값을 0으로 만듭니다.
Copy(st.pos.num);//st 문자열의 pos(정수) 위치에서 시작하고 num(정수) 문자를 포함하는 하위 문자열을 반환합니다. pos가 st 문자열의 길이보다 크면 빈 문자열이 반환됩니다. pos가 255를 벗어나면 런타임 오류가 발생합니다. 예를 들어, st:='Brian'이면 Copy(st,2,2)는 'ri'를 반환합니다.
Concat(st1,st2,st3...,stn);//모든 독립변수가 나타내는 문자열을 주어진 순서대로 연결하고, 연결된 값을 반환합니다. 결과의 길이가 255이면 런타임 오류가 발생합니다. 예를 들어, st1:='Brian',st2:=' ',st3:='Wilfred'이면 Concat(st1,st2,st3)은 'Brian Wilfred'를 반환합니다.
Length(st);//문자열 표현식 st의 길이를 반환합니다. 예를 들어 st:='Brian'이면 Length(st)의 반환 값은 5입니다.
Pos(obj,target);//대상 문자열 target에서 문자열 obj가 처음 나타나는 위치를 반환합니다. target에 일치하는 문자열이 없으면 Pos 함수의 반환 값은 0입니다. 예를 들어 target:='Brian Wilfred'이면 Pos('Wil',target)의 반환 값은 7이고 Pos('hurbet',target)의 반환 값은 0입니다.
◇[DELPHI]레지스트리 처리에 대하여
레지스트리를 사용합니다.
var reg:트레지스트리;
reg:=Tregistry.create;
reg.rootkey:='HKey_Current_User';
reg.openkey('제어판/데스크톱',false);
reg.WriteString('제목 배경화면','0');
reg.writeString('Wallpaper',filelistbox1.filename);
reg.closereg;
등록.무료;
◇[DELPHI]키보드 상수명에 대하여
VK_BACK/VK_TAB/VK_RETURN/VK_SHIFT/VK_Control/VK_MENU/VK_PAUSE/VK_ESCAPE
/VK_SPACE/VK_LEFT/VK_RIGHT/VK_UP/VK_DOWN
F1--F12:$70(112)--$70억(123)
AZ:$41(65)--$5A(90)
0-9:$30(48)--$39(57)
◇[DELPHI] 프로그램의 모국어를 사전에 결정
DELPHI 소프트웨어의 DOS 프롬프트: 이 프로그램은 Win32에서 실행되어야 합니다.
VC++ 소프트웨어용 DOS 프롬프트: 이 프로그램은 DOS 모드에서 실행할 수 없습니다.
◇[DELPHI]쿠키 운영
response.cookies("이름").domain:='http://www.086net.com';
response.cookies.add를 사용하여 수행
시작하다
이름:='사용자 이름';
값:='사용자 이름';
끝
◇문서 메뉴 링크에 [DELPHI] 추가
shellapi,shlOBJ를 사용합니다.
shAddToRecentDocs(shArd_path,pchar(filepath));//연결 추가
shAddToRecentDocs(shArd_path,nil);//지우기
◇[기타] 지능형 ABC 입력기 사전 백업
창/시스템/user.rem
창/시스템/tmmr.rem
◇[DELPHI] 마우스 버튼 결정
if GetAsyncKeyState(VK_LButton)<>0 then ... //왼쪽 버튼
if GetAsyncKeyState(VK_MButton)<>0 then ... //가운데 키
if GetAsyncKeyState(VK_RButton)<>0 then ... //오른쪽 클릭
◇[DELPHI]폼의 최대 표시 설정
onFormCreate 이벤트
self.width:=화면.폭;
self.height:=화면.높이;
◇[DELPHI] 메시지 수신 버튼
OnCreate 이벤트에서 처리됨: application.OnMessage:=MyOnMessage;
절차 TForm1.MyOnMessage(var MSG:TMSG;var Handle:Boolean);
시작하다
if msg.message=256 then ... //모든 키
msg.message=112이면 ... //F1
msg.message=113이면 ... //F2
끝;
◇[기타]공유 폴더 숨기기
공유 효과: 접근 가능하지만 보이지 않음(자원 관리, 네트워크 환경에서)
공유 이름: 방향$
방문: //컴퓨터/방향/
◇[java Script] Java Script 웹페이지에서 흔히 사용되는 효과
웹페이지가 60초 후에 닫힐 예정입니다.
<script 언어="자바 스크립트"><!--
settimeout('window.close();',60000)
--></script>
창 닫기
<a href="/" onclick="Javascript:window.close();return false;">닫기</a>
예정된 URL 전송
<meta http-equiv="refresh" content="40;url=http://www.086net.com">
홈페이지로 설정
<a onclick="this.style.behavior='url(#default#homepage)';this.sethomepage('http://086net.com');"href="#">홈페이지로 설정</a>
이 사이트를 북마크에 추가하세요
<a href="javascript:window.external.addfavorite('http://086net.com','[无名pier]')">이 사이트를 즐겨찾기에 추가</a>
채널에 가입
<a href="javascript:window.external.addchannel('http://086net.com')">채널 추가</a>
◇[DELPHI]텍스트 편집 관련
checkbox1.checked:=checkbox1.checked가 아닙니다;
if checkbox1.checked then richedit1.font.style:=richedit1.font.style+[fsBold] else richedit1.font.style:=richedit1.font.style-[fsBold]//bold
if checkbox1.checked then richedit1.font.style:=richedit1.font.style+[fsItalic] else richedit1.font.style:=richedit1.font.style-[fsItalic]//italic
if checkbox1.checked then richedit1.font.style:=richedit1.font.style+[fsUnderline] else richedit1.font.style:=richedit1.font.style-[fsUnderline]//underline
memo1.alignment:=taLeftJustify;//왼쪽
memo1.alignment:=taRightJustify;//오른쪽
memo1.alignment:=taCenter;//가운데 정렬
◇[DELPHI] 텍스트 색상을 무작위로 생성
무작위화;//무작위 시드
memo1.font.color:=rgb(random(255),random(255),random(255));
◇[DELPHI]DELPHI5 UPDATE 업그레이드 패치 일련번호
1000003185
90X25fx0
◇[DELPHI] 파일 이름의 잘못된 문자 필터링
i:=1 ~ 길이 do
s[i]가 ['/','/',':','*','?','<','>','|']인 경우
◇[DELPHI]변환기능의 정의 및 설명
datetimetofiledate (datetime:Tdatetime):longint; Tdatetime 형식의 날짜 및 시간 값을 DOS 형식의 날짜 및 시간 값으로 변환합니다.
datetimetostr (datetime:Tdatetime):string; Tdatatime 형식 변수를 문자열로 변환합니다. datetime 매개변수에 날짜 값이 없으면 반환된 문자열 날짜는 시간 값이 없으면 00/00/00으로 표시됩니다. 날짜/시간 매개변수인 경우 반환된 문자열은 다음과 같습니다. 시간 부분은 오전 00:00:00으로 표시됩니다.
datetimetostring(var 결과 문자열;
const 형식:문자열;
datetime:Tdatetime); 주어진 형식 문자열에 따라 시간 및 날짜 값을 변환합니다. result는 결과 문자열이고, format은 변환 형식 문자열이고, datetime은 날짜 및 시간 값입니다.
datetostr(date:Tdatetime)은 shortdateformat 전역 변수에 의해 정의된 형식 문자열을 사용하여 날짜 매개변수를 해당 문자열로 변환합니다.
floattodecimal(var 결과:Tfloatrec;값:
확장;정밀도,소수:
정수); 부동 소수점 숫자를 10진수 표현으로 변환합니다.
floattostr (value:extended):string 부동 소수점 값을 문자열 형식으로 변환합니다. 이 변환은 일반 숫자 형식을 사용하며 변환되는 유효 자릿수는 15입니다.
floattotext(버퍼:pchar;값:확장;
형식:Tfloatformat;정밀도,
숫자:정수):정수; 주어진 형식, 정밀도 및 소수점을 사용하여 부동 소수점 값을 소수점 표현으로 변환합니다. 변환 결과는 버퍼 매개변수에 저장됩니다. 버퍼가 0 결과 문자열 버퍼가 아닙니다.
floattotextfmt(버퍼:pchar;값:확장;
format:pchar):integer 부동 소수점 값을 10진수 표현으로 변환하려면 지정된 형식을 사용합니다. 변환 결과는 버퍼 매개변수에 저장됩니다. 함수 반환 값은 버퍼에 저장된 문자 수입니다.
inttohex(값:longint;숫자:정수):
string; 주어진 숫자 값을 16진수 문자열로 변환합니다. 매개변수 digits는 변환 결과 문자열에 포함된 자릿수를 제공합니다.
inttostr(값:longint):string은 정수를 10진수 문자열로 변환합니다.
strtodate (const S:string):Tdatetime 문자열을 날짜 값으로 변환합니다. S에는 올바른 형식의 날짜 문자열이 포함되어야 합니다.
strtodatetime (const S:string):Tdatetime 문자열 S를 날짜 시간 형식으로 변환합니다. S는 MM/DD/YY HH:MM:SS[AM|PM] 형식이어야 합니다. 여기서 날짜 및 시간 구분 기호는 시스템 기간과 동일합니다. 시정수 설정 관련. AM 또는 PM 정보가 지정되지 않은 경우 24시간제가 사용됩니다.
strtofloat (const S:string):extended; 주어진 문자열을 부동 소수점 숫자로 변환합니다. 문자열의 형식은 다음과 같습니다.
[+|-]nnn…[.]nnn…[<+|-><E|e><+|->nnnn]
strtoint (const S:string):longint 숫자 문자열을 정수로 변환합니다. 문자열은 10진수 또는 16진수 형식일 수 있습니다. 문자열이 유효한 숫자 문자열이 아닌 경우 시스템은 ECONVERTERROR 예외를 생성합니다.
strtointdef(const S:문자열;기본값:
longint):longint; 문자열 S를 숫자로 변환합니다. S를 숫자로 변환할 수 없는 경우 strtointdef 함수는 매개변수 기본값을 반환합니다.
strtotime (const S:string):Tdatetime 문자열 S를 TDATETIME 값으로 변환합니다. S의 형식은 HH:MM:SS[AM|PM]입니다.
timetostr (time:Tdatetime):string; 매개변수 TIME을 문자열로 변환합니다. 변환 결과 문자열의 형식은 시스템의 시간 관련 상수 설정과 관련됩니다.
◇[DELPHI] 프로그램이 ALT+CTRL+DEL에 나타나지 않습니다.
구현 후 선언을 추가합니다.
function RegisterServiceProcess(dwProcessID, dwType: Integer): Integer 외부 'KERNEL32.DLL';
RegisterServiceProcess(GetCurrentProcessID, 1);//숨기기
RegisterServiceProcess(GetCurrentProcessID, 0);//표시
ALT+DEL+CTRL로 숨김
◇[DELPHI] 프로그램이 작업 표시줄에 나타나지 않습니다.
창문을 사용한다
var
확장스타일 : 정수;
시작하다
응용 프로그램.초기화;
//================================================ ==============
ExtendedStyle := GetWindowLong(Application.Handle, GWL_EXSTYLE);
SetWindowLong(Application.Handle, GWL_EXSTYLE, ExtendedStyle OR WS_EX_TOOLWINDOW
WS_EX_APPWINDOW가 아님);
//================================================ ===============
Application.CreateForm(TForm1, Form1);
응용 프로그램.실행;
끝.
◇[DELPHI]전화접속 네트워크가 켜져 있는지 꺼져 있는지 확인하는 방법
GetSystemMetrics(SM_NETWORK) AND $01 = $01이면
showmessage('온라인!')
else showmessage('온라인이 아닙니다!');
◇[DELPHI]IP를 도메인 이름으로 변환
함수 GetDomainName(Ip:문자열):문자열;
var
pH:P호스트;
데이터:twsadata;
ii:d워드;
시작하다
WSA스타트업($101, 데이터);
ii:=inet_addr(pchar(ip));
pH:=gethostbyaddr(@ii,sizeof(ii),PF_INET);
if (ph<>nil) 그렇다면
결과:=pH.h_name
또 다른
결과:='';
WSACleanup;
끝;
◇[DELPHI] "오른쪽 클릭 메뉴" 처리 방법
var
reg: TRegistry;
시작하다
reg := TRegistry.Create;
reg.RootKey:=HKEY_CLASSES_ROOT;
reg.OpenKey('*/shell/check/command', true);
reg.WriteString('', '"' + application.ExeName + '" "%1"');
reg.CloseKey;
reg.OpenKey('*/shell/diary', false);
reg.WriteString('', '작업(&C)');
reg.CloseKey;
등록.무료;
showmessage('완료!');
끝;
◇[DELPHI]가상 키 값 보내기 Ctrl V
절차 보내기붙여 넣기;
시작하다
keybd_event(VK_Control, MapVirtualKey(VK_Control, 0), 0, 0);
keybd_event(ord('V'), MapVirtualKey(ord('V'), 0), 0, 0);
keybd_event(ord('V'), MapVirtualKey(ord('V'), 0), KEYEVENTF_KEYUP, 0);
keybd_event(VK_Control, MapVirtualKey(VK_Control, 0), KEYEVENTF_KEYUP, 0);
끝;
◇[DELPHI]현재 광학 드라이브의 드라이브 문자
절차 getcdrom(var cd:char);
var
문자열:문자열;
드라이버:정수;
드라이버:문자;
i,온도:정수;
시작하다
드라이버:=getlogicaldrives;
temp:=(1 및 드라이버);
i:=0 ~ 26 do
시작하다
온도=1이면
시작하다
드라이버:=char(i+integer('a'));
str:=드라이버+':';
getdrivetype(pchar(str))=drive_cdrom인 경우
시작하다
CD:=드라이버;
출구;
끝;
끝;
drivers:=(드라이버 shr 1);
temp:=(1 및 드라이버);
끝;
끝;
◇[DELPHI]문자 암호화 및 복호화
함수 cryptstr(const s:string; stype: dword):string;
var
나는: 정수;
fkey: 정수;
시작하다
결과:='';
케이스 종류
0: 세트패스;
시작하다
무작위화;
fkey := 무작위($ff);
i:=1 ~ 길이 do
result := result+chr( ord(s[i]) xor i xor fkey);
결과 := 결과 + char(fkey);
끝;
1:겟패스
시작하다
fkey := ord(s[길이(들)]);
i:=1 ~ 길이(들) - 1 do
result := result+chr( ord(s[i]) xor i xor fkey);
끝;
끝;
□◇[DELPHI] 시뮬레이션된 키를 다른 애플리케이션으로 보내기
var
h:T핸들;
시작하다
h := FindWindow(nil, '애플리케이션 제목');
PostMessage(h, WM_KEYDOWN, VK_F9, 0);//F9 키 보내기
끝;
□◇[DELPHI] DELPHI에서 지원하는 DAO 데이터 형식
td.Fields.Append(td.CreateField('dbBoolean',dbBoolean,0));
td.Fields.Append(td.CreateField('dbByte',dbByte,0));
td.Fields.Append(td.CreateField('dbInteger',dbInteger,0));
td.Fields.Append(td.CreateField('dbLong',dbLong,0));
td.Fields.Append(td.CreateField('dbCurrency',dbCurrency,0));
td.Fields.Append(td.CreateField('dbSingle',dbSingle,0));
td.Fields.Append(td.CreateField('dbDouble',dbDouble,0));
td.Fields.Append(td.CreateField('dbDate',dbDate,0));
td.Fields.Append(td.CreateField('dbBinary',dbBinary,0));
td.Fields.Append(td.CreateField('dbText',dbText,0));
td.Fields.Append(td.CreateField('dbLongBinary',dbLongBinary,0));
td.Fields.Append(td.CreateField('dbMemo',dbMemo,0));
td.Fields['ID'].Set_Attributes(dbAutoIncrField);//자동 증가 필드
□◇[DELPHI]DELPHI는 MS SQL 7 및 BDE 단계를 구성합니다.
첫 번째 단계는 ODBC를 구성하는 것입니다.
먼저 ODBC에서 데이터 소스를 설정해야 합니다. SQL Server7.0을 설치한 후 ODBC의 "시스템 DSN"에 두 가지 항목이 있어야 합니다.
데이터 소스 중 하나는 MQIS이고 다른 하나는 LocalSever입니다. 하나를 선택하고 구성 버튼을 클릭하세요. SQL7.0입니다.
로컬 컴퓨터에 설치되어 있나요? 그렇다면 바로 다음 단계로 진행하세요. 그렇지 않다면 서버 열을 입력하세요.
서버를 선택한 후 다음 단계로 진행하여 로그인 ID와 비밀번호를 입력합니다. (로그인 ID와 비밀번호는 SQL7.0의 사용자 옵션입니다.)
중앙에 위치).
두 번째 단계는 BDE를 구성하는 것입니다.
Delphi의 BDE를 열고 MQIS 또는 LocalServer를 클릭하면 사용자 이름과 비밀번호를 입력하라는 메시지가 표시됩니다.
ODBC 사용자 이름과 비밀번호는 동일하므로 입력하시면 됩니다.
세 번째 단계는 프로그램을 구성하는 것입니다.
TTable을 사용하는 경우 TTable의 DatabaseName에서 MQIS 또는 LocalServer를 선택한 후
TableName에서 Sale을 선택하고 Active를 True로 변경하면 Delphi가 프롬프트 대화 상자를 표시하고 사용자를 입력합니다.
이름과 비밀번호.
TQuery를 사용하는 경우 TQuery를 마우스 오른쪽 버튼으로 클릭하고 "SQL Builder"를 클릭합니다. 이는 인터페이스 모드에서 구성됩니다.
SQL 문을 입력하거나 TQuery의 SQL에 SQL 문을 입력하세요. 마지막으로 Active를 True로 변경하는 것을 잊지 마세요.
작동 중에 TQuery를 구성하는 것도 가능합니다. 자세한 내용은 Delphi 도움말을 참조하세요.
□◇[DELPHI] 이미지의 특정 지점의 RGB 값을 가져옵니다.
절차 TForm1.Image1MouseDown(Sender: TObject; 버튼: TMouseButton;
시프트: TShiftState X, Y: 정수);
var
빨간색, 녹색, 파란색:바이트;
i:정수;
시작하다
i:= image1.Canvas.Pixels[x,y];
파란색:= GetBValue(i);
녹색:= GetGValue(i):
빨간색:= GetRValue(i);
Label1.Caption:=inttostr(빨간색);
Label2.Caption:=inttostr(녹색);
Label3.Caption:=inttostr(파란색);
끝;
□◇[DELPHI]날짜 형식 분해 및 변환 정보
var 연도,월,일:단어;now2:T데이터시간;
now2:=날짜();
decodate(현재2,년,월,일);
lable1.Text :=inttostr(연도)+'연도'+inttostr(월)+'월'+inttostr(일)+'일';
◇[DELPHI]현재 네트워크 연결 모드를 확인하는 방법
판단 결과는 MODEM, LAN 또는 프록시 서버 모드입니다.
wininet을 사용합니다.
함수 ConnectionKind :boolean;
var 플래그: dword;
시작하다
결과 := InternetGetConnectedState(@flags, 0);
결과가 그렇다면
시작하다
(플래그 및 INTERNET_CONNECTION_MODEM) = INTERNET_CONNECTION_MODEM인 경우
시작하다
showmessage('모뎀');
끝;
(플래그 및 INTERNET_CONNECTION_LAN) = INTERNET_CONNECTION_LAN인 경우
시작하다
showmessage('LAN');
끝;
(플래그 및 INTERNET_CONNECTION_PROXY) = INTERNET_CONNECTION_PROXY인 경우
시작하다
showmessage('프록시');
끝;
(플래그 및 INTERNET_CONNECTION_MODEM_BUSY)=INTERNET_CONNECTION_MODEM_BUSY인 경우
시작하다
showmessage('모뎀 사용 중');
끝;
끝;
끝;
◇[DELPHI]문자열이 유효한 이메일 주소인지 확인하는 방법
함수 IsEMail(EMail: 문자열): 부울;
var s: 문자열;ETpos: 정수;
시작하다
ETpos:= pos('@', EMail);
ETpos > 1이면
시작하다
s:= copy(EMail,ETpos+1,Length(EMail));
if (pos('.', s) > 1) and (pos('.', s) < length(s)) then
결과:= true else 결과:= false;
끝
또 다른
결과:= 거짓;
끝;
◇[DELPHI] 시스템이 인터넷에 연결되어 있는지 확인
URL.DLL의 InetIsOffline 함수를 도입해야 합니다.
함수 선언은 다음과 같습니다.
function InetIsOffline(Flag: Integer): Boolean 외부 'URL.DLL';
그런 다음 함수를 호출하여 시스템이 인터넷에 연결되어 있는지 확인할 수 있습니다.
if InetIsOffline(0) then ShowMessage('연결되지 않음!')
else ShowMessage('연결되었습니다!');
이 함수는 로컬 시스템이 인터넷에 연결되어 있지 않으면 TRUE를 반환합니다.
첨부된:
IE 또는 OFFICE97을 사용하는 대부분의 시스템에는 호출에 사용할 수 있는 이 DLL이 있습니다.
InetIsOffline
BOOL InetIsOffline(
DWORD dwFlags,
);
◇[DELPHI]WAV 파일을 쉽게 재생 및 일시 정지
mmsystem을 사용합니다.
function PlayWav(const FileName: string): 부울;
시작하다
결과 := PlaySound(PChar(파일 이름), 0, SND_ASYNC);
끝;
절차 StopWav;
var
버퍼: char 배열[0..2];
시작하다
버퍼[0] := #0;
PlaySound(버퍼, 0, SND_PURGE);
끝;
◇[DELPHI] 머신 BIOS 정보 가져오기
Memo1.Lines를 사용하면
시작하다
Add('메인보드바이오스이름:'+^I+string(Pchar(Ptr($FE061))));
Add('MainBoardBiosCopyRight:'+^I+string(Pchar(Ptr($FE091))));
Add('MainBoardBiosDate:'+^I+string(Pchar(Ptr($FFFF5))));
Add('MainBoardBiosSerialNo:'+^I+string(Pchar(Ptr($FEC71))));
끝;
◇[DELPHI] 인터넷에서 파일 다운로드
UrlMon을 사용합니다.
function DownloadFile(소스, 대상: 문자열): Boolean;
시작하다
노력하다
결과 := UrlDownloadToFile(nil, PChar(source), PChar(Dest), 0, nil) = 0;
제외하고
결과 := 거짓;
끝;
끝;
if DownloadFile('http://www.borland.com/delphi6.zip, 'c:/kylix.zip') 다음
ShowMessage('다운로드 성공')
else ShowMessage('다운로드 실패')
◇[DELPHI]서버 IP 주소 확인
윈속을 사용한다
함수 IPAddrToName(IPAddr : 문자열): 문자열;
var
SockAddrIn: TSockAddrIn;
호스트엔트: PHostEnt;
WSA데이터: TWSA데이터;
시작하다
WSA스타트업($101, WSAData);
SockAddrIn.sin_addr.s_addr:= inet_addr(PChar(IPAddr));
HostEnt:= gethostbyaddr(@SockAddrIn.sin_addr.S_addr, 4, AF_INET);
만약 HostEnt<>nil이면 결과:=StrPas(Hostent^.h_name) else 결과:='';
끝;
◇[DELPHI] 바로가기에서 연결받기
function ExeFromLink(const 링크 이름: 문자열): 문자열;
var
F디르,
이름,
Exe이름: PChar;
z: 정수;
시작하다
ExeName:= StrAlloc(MAX_PATH);
FName:= StrAlloc(MAX_PATH);
FDir:= StrAlloc(MAX_PATH);
StrPCopy(FName, ExtractFileName(링크 이름));
StrPCopy(FDir, ExtractFilePath(링크 이름));
z:= FindExecutable(FName, FDir, ExeName);
z > 32이면
결과:= StrPas(ExeName)
또 다른
결과:= '';
StrDispose(FDir);
StrDispose(F이름);
StrDispose(Exe이름);
끝;
◇[DELPHI]TCombobox 자동완성 제어
{TCombobox의 'Sorted' 속성을 true로 설정 }
var lastKey: //전역 변수;
//TCombobox의 OnChange 이벤트
절차 TForm1.AutoCompleteChange(Sender: TObject);
var
SearchStr: 문자열;
retVal: 정수;
시작하다
SearchStr := (TCombobox로 보낸 사람).Text;
if lastKey <> VK_BACK then // 백스페이스: VK_BACK 또는 $08
시작하다
retVal := (TCombobox로 보낸 사람).Perform(CB_FINDSTRING, -1, LongInt(PChar(SearchStr)));
retVal > CB_Err이면
시작하다
(발신자: TCombobox).ItemIndex := retVal;
(TCombobox로 보낸 사람).SelStart := Length(SearchStr);
(TCombobox로 보낸 사람).SelLength :=
(Length((TCombobox로 보낸 사람).Text) - 길이(SearchStr));
end; // retVal > CB_Err
끝; // lastKey <> VK_BACK
lastKey := 0; // lastKey 재설정
끝;
//TCombobox의 OnKeyDown 이벤트
절차 TForm1.AutoCompleteKeyDown(Sender: TObject; var Key: Word;
시프트: TShiftState);
시작하다
lastKey := 키;
끝;
◇[DELPHI]디렉터리 삭제 방법
functionEmptyDirectory(TheDirectory:String ; 재귀: 부울):
부울;
var
SearchRec : TSearchRec;
해상도: 정수;
시작하다
결과 := 거짓;
TheDirectory := NormalDir(TheDirectory);
Res := FindFirst(TheDirectory + '*.*', faAnyFile, SearchRec);
노력하다
Res = 0인 동안
시작하다
if (SearchRec.Name <> '.') 및 (SearchRec.Name <> '..') then
시작하다
if ((SearchRec.Attr and faDirectory) > 0) 및 재귀
그럼 시작해
EmptyDirectory(TheDirectory + SearchRec.Name, True);
RemoveDirectory(PChar(TheDirectory + SearchRec.Name));
끝
그렇지 않으면 시작하다
DeleteFile(PChar(TheDirectory + SearchRec.Name))
끝;
끝;
해상도 := FindNext(SearchRec);
끝;
결과 := 참;
마지막으로
FindClose(SearchRec.FindHandle);
끝;
끝;
◇[DELPHI]디렉터리 크기 계산 방법
함수 GetDirectorySize(const ADirectory: string): 정수;
var
디렉터리: TSearchRec;
Ret: 정수;
경로: 문자열;
시작하다
결과 := 0;
경로 := ExtractFilePath(ADirectory);
Ret := Sysutils.FindFirst(ADirectory, faAnyFile, Dir);
Ret <> NO_ERROR이면 종료합니다.
노력하다
ret=NO_ERROR 하는 동안
시작하다
inc(결과, 디렉터리.크기);
if ([faDirectory]의 Dir.Attr) 및 (Dir.Name[1] <> '.') then
Inc(결과, GetDirectorySize(경로 + 디렉토리 이름 + '/*.*'));
Ret := Sysutils.FindNext(Dir);
끝;
마지막으로
Sysutils.FindClose(Dir);
끝;
끝;
◇[DELPHI]제거 목록에 설치 프로그램을 추가하는 방법
다음과 같이 레지스트리를 작동합니다.
1. HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Windows/CurrentVersion/Uninstall 키 아래에 원하는 이름으로 기본 키를 생성합니다.
예HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Windows/CurrentVersion/Uninstall/MyUninstall
2. HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Windows/CurrentVersion/Uninstall/MyUnistall 아래에 두 개의 문자열 값을 입력합니다.
이 두 문자열 값의 이름은 DisplayName과 UninstallString이라는 구체적입니다.
3. "애플리케이션 삭제 목록"에 표시되는 이름(예: 'Aiming Uninstall one')에 DisplayName 문자열 값을 할당합니다.
C:/WIN97/uninst.exe -f "C:/TestPro/aimTest.isu"와 같이 실행된 삭제 명령에 UninstallString 문자열을 할당합니다.
◇[DELPHI]WM_QUERYEND세션 종료 메시지를 가로채었습니다.
유형
TForm1 = 클래스(TForm)
프로시저 WMQueryEndSession(var 메시지: TWMQueryEndSession); 메시지 WM_QUERYENDSESSION;
절차 CMEraseBkgnd(var 메시지:TWMEraseBkgnd); 메시지 WM_ERASEBKGND;
사적인
{비공개 선언}
공공의
{공개 선언}
끝;
절차 TForm1.WMQueryEndSession(var 메시지: TWMQueryEndSession);
시작하다
Showmessage('컴퓨터가 곧 종료됩니다');
끝;
◇[DELPHI]온라인 이웃 찾기
절차 getnethood();//NT는 서버로 사용되며 디버깅은 WIN98에서 전달됩니다.
var
a,i:정수;
오류 코드:정수;
netres:netresource의 배열[0..1023];
열거형 핸들:핸들;
열거형:dword;
버퍼 크기:dword;
s:문자열;
mylistitems:tlistitems;
mylistitem:tlistitem;
모든 도메인:tstrings;
start //listcomputer는 모든 컴퓨터를 나열하는 목록 보기이고 controlcenter는 양식입니다.
alldomain:=tstringlist.Create;
netres[0]으로 시작하세요
dwscope :=RESOURCE_GLOBALNET;
dwtype :=RESOURCETYPE_ANY;
dwdisplaytype :=RESOURCEDISPLAYTYPE_DOMAIN;
dwusage :=RESOURCEUSAGE_CONTAINER;
lplocalname :=nil;
lpremotename :=nil;
lpcomment :=nil;
lpprovider :=nil;
end; // 모든 필드를 가져옵니다.
errcode:=wnetopenenum(RESOURCE_GLOBALNET,RESOURCETYPE_ANY,RESOURCEUSAGE_CONTAINER,@netres[0],enumhandle);
errcode=NO_ERROR이면 시작합니다.
열거:=1024;
buffersize:=sizeof(netres);
errcode:=wnetenumresource(enumhandle,enumentries,@netres[0],buffersize);
끝;
a:=0;
mylistitems :=controlcenter.lstcomputer.Items;
mylistitems.Clear;
while (string(netres[a].lpprovider)<>'') 및 (errcode=NO_ERROR) do
시작하다
alldomain.Add (netres[a].lpremotename);
a:=a+1;
끝;
wnetcloseenum(enumhandle);
// 모든 컴퓨터 가져오기
mylistitems :=controlcenter.lstcomputer.Items;
mylistitems.Clear;
i:=0에서 alldomain.Count-1까지
시작하다
netres[0]으로 시작하세요
dwscope :=RESOURCE_GLOBALNET;
dwtype :=RESOURCETYPE_ANY;
dwdisplaytype :=RESOURCEDISPLAYTYPE_SERVER;
dwusage :=RESOURCEUSAGE_CONTAINER;
lplocalname :=nil;
lpremotename :=pchar(alldomain[i]);
lpcomment :=nil;
lpprovider :=nil;
끝;
ErrCode:=WNetOpenEnum(RESOURCE_GLOBALNET,RESOURCETYPE_ANY,RESOURCEUSAGE_CONTAINER,@netres[0],EnumHandle);
errcode=NO_ERROR인 경우
시작하다
EnumEntries:=1024;
BufferSize:=SizeOf(NetRes);
ErrCode:=WNetEnumResource(EnumHandle,EnumEntries,@NetRes[0],BufferSize);
끝;
a:=0;
while (string(netres[a].lpprovider)<>'') 및 (errcode=NO_ERROR) do
시작하다
mylistitem :=mylistitems.Add;
mylistitem.ImageIndex :=0;
mylistitem.Caption :=uppercase(stringreplace(string(NetRes[a].lpremotename),'//','',[rfReplaceAll]));
a:=a+1;
끝;
wnetcloseenum(enumhandle);
끝;
끝;
◇[DELPHI] 특정 컴퓨터에서 공유 디렉터리 가져오기
절차 getsharefolder(const 컴퓨터 이름:문자열);
var
오류 코드,a:정수;
netres:netresource의 배열[0..1023];
열거형 핸들:핸들;
열거형,버퍼 크기:dword;
s:문자열;
mylistitems:tlistitems;
mylistitem:tlistitem;
mystrings:tstringlist;
시작하다
netres[0]으로 시작하세요
dwscope :=RESOURCE_GLOBALNET;
dwtype :=RESOURCETYPE_DISK;
dwdisplaytype :=RESOURCEDISPLAYTYPE_SHARE;
dwusage :=RESOURCEUSAGE_CONTAINER;
lplocalname :=nil;
lpremotename :=pchar(컴퓨터 이름);
lpcomment :=nil;
lpprovider :=nil;
end; // 루트 노드를 가져옵니다.
errcode:=wnetopenenum(RESOURCE_GLOBALNET,RESOURCETYPE_DISK,RESOURCEUSAGE_CONTAINER,@netres[0],enumhandle);
errcode=NO_ERROR이면
시작하다
EnumEntries:=1024;
BufferSize:=SizeOf(NetRes);
ErrCode:=WNetEnumResource(EnumHandle,EnumEntries,@NetRes[0],BufferSize);
끝;
wnetcloseenum(enumhandle);
a:=0;
mylistitems:=controlcenter.lstfile.Items;
mylistitems.Clear;
while (string(netres[a].lpprovider)<>'') 및 (errcode=NO_ERROR) do
시작하다
mylistitems를 사용하면
시작하다
mylistitem:=추가;
mylistitem.ImageIndex :=4;
mylistitem.Caption :=extractfilename(netres[a].lpremotename);
끝;
a:=a+1;
끝;
끝;
◇[DELPHI] 하드 드라이브 일련번호 받기
var SerialNum : pdword; a, b : dword; 버퍼: 문자 배열 [0..255]
시작하다
if GetVolumeInformation('c:/', Buffer, SizeOf(Buffer), SerialNum, a, b, nil, 0) then Label1.Caption := IntToStr(SerialNum^);
끝;
◇[DELPHI]MEMO의 자동 페이지 넘김
Procedure ScrollMemo(메모: TMemo; 방향: char);
시작하다
케이스 방향
'd': 시작하다
SendMessage(Memo.Handle, { 메모 컨트롤의 HWND }
WM_VSCROLL, { 윈도우 메시지 }
SB_PAGEDOWN, { 스크롤 명령 }
0) { 사용되지 않음 }
끝;
'유': 시작
SendMessage(Memo.Handle, { 메모 컨트롤의 HWND }
WM_VSCROLL, { 윈도우 메시지 }
SB_PAGEUP, { 스크롤 명령 }
0); { 사용되지 않음 }
끝;
끝;
끝;
절차 TForm1.Button1Click(Sender: TObject);
시작하다
ScrollMemo(Memo1,'d'); //페이지 위로
끝;
절차 TForm1.Button1Click(Sender: TObject);
시작하다
ScrollMemo(Memo1,'u'); //페이지를 넘깁니다.
끝;
◇[DELPHI]DBGrid에서 다음 위치로 Enter 키를 누르세요(Tab 키)
절차 TForm1.DBGrid1KeyPress(Sender: TObject; var Key: Char);
시작하다
Key = #13이면
DBGrid1.Columns.Grid.SelectedIndex < DBGrid1.Columns.Count - 1이면
DBGrid1.Columns[DBGrid1.Columns.grid.SelectedIndex + 1].Field.FocusControl
또 다른
시작하다
표1.다음;
DBGrid1.Columns[0].field.FocusControl;
끝;
끝;
◇[DELPHI]컨트롤 설치방법
설치 방법:
1. 단일 컨트롤의 경우 구성요소-->구성요소 설치..->PAS 또는 DCU 파일-->설치
2. *.dpk 파일이 포함된 제어 패키지의 경우 파일-->열기(드롭다운 목록 상자에서 *.dpk 선택)-->설치.
3. *.dpl 파일이 포함된 제어 패키지의 경우 패키지 설치-->추가-->dpl 파일 이름.
4. 위 Install 버튼이 유효하지 않다면 Compile 버튼을 눌러보세요.
5. 런타임 lib인 경우 옵션 아래의 패키지 아래 런타임팩에 추가합니다.
컴파일 중에 파일을 찾을 수 없다는 메시지가 나타나면 일반적으로 컨트롤의 설치 디렉터리가 Delphi의 Lib 디렉터리에 없기 때문입니다. 문제를 해결하는 방법에는 두 가지가 있습니다.
1. 원본 설치 파일을 delphi의 Lib 디렉터리에 복사합니다.
2. 또는 도구-->환경 옵션의 Delphi Lib 디렉터리에 컨트롤의 원래 코드 경로를 추가합니다.
◇[DELPHI] 디렉터리 완전삭제(deltree)
프로시저 TForm1.DeleteDirectory(strDir:String);
var
sr: TSearchRec;
파일 속성: 정수;
str파일이름:문자열;
strPth: 문자열;
시작하다
strpth:=Getcurrentdir();
FileAttrs := faAnyFile;
if FindFirst(strpth+'/'+strdir+'/*.*', FileAttrs, sr) = 0이면
시작하다
if (sr.Attr 및 FileAttrs) = sr.Attr 그러면
시작하다
strfilename:=sr.이름;
파일이 존재하는 경우(strpth+'/'+strdir+'/'+strfilename) 다음
deletefile(strpth+'/'+strdir+'/'+strfilename);
끝;
FindNext(sr) = 0인 동안
시작하다
if (sr.Attr 및 FileAttrs) = sr.Attr 그러면
시작하다
strfilename:=sr.name;
파일이 존재하는 경우(strpth+'/'+strdir+'/'+strfilename) 다음
deletefile(strpth+'/'+strdir+'/'+str파일이름);
끝;
끝;
찾기닫기(sr);
제거된ir(strpth+'/'+strdir);
끝;
끝;
◇[DELPHI] TMemo 컨트롤의 현재 커서의 행 및 열 정보를 Tpoint로 가져옵니다.
1. 기능 ReadCursorPos(SourceMemo: TMemo): TPoint;
var 포인트: TPoint;
시작하다
point.y := SendMessage(SourceMemo.Handle,EM_LINEFROMCHAR,SourceMemo.SelStart,0);
point.x := SourceMemo.SelStart-SendMessage(SourceMemo.Handle,EM_LINEINDEX,point.y,0);
결과 := 점;
끝;
2.LineLength:=SendMessage(memol.handle, EM—LINELENGTH, Cpos, 0);
◇[DELPHI]하드디스크 일련번호 읽기
함수 GetDiskSerial(DiskChar: Char): 문자열;
var
SerialNum : pdword;
a, b : dword;
버퍼: char 배열 [0..255];
시작하다
결과 := "";
if GetVolumeInformation(PChar(diskchar+":/"), Buffer, SizeOf(Buffer), SerialNum,
a, b, nil, 0) 그런 다음
결과 : = inttostr (serialnum^);
끝;
◇ [인터넷] 일반적인 CSS 포괄적 인 기술
1. P : 첫 글자 {font-size : 300%; 왼쪽} // 첫 글자는 일반 글꼴보다 3 배 더 큽니다.
2. <link rel = stylesheet href = "Basics.css"title = "Contemporary"> // 외부 스타일 시트를 연결합니다
3. 스타일 시트를 포함시킵니다
<스타일 유형 = "텍스트/CSS"미디어 = 화면>
<!--
@Import URL (http://www.htmlhelp.com/style.css); // 스타일 시트를 외부로 가져옵니다
@import url (/stylesheets/punk.css); // 위와 동일합니다
바디 {배경 : url (foo.gif) 빨간색;
.punk {색상 : 라임; #ff80c0} // 참조는 5를 참조하십시오.
#wdg97 {font-size : 더 큰} // 참조는 6을 참조하십시오.
-->
</스타일>
4. <p style = "컬러 : 빨간색; 글꼴-가족 : 'New Century Schoolbook', serif"> // 인라인 스타일
<span style = "font-family : arial"> arial </span> // span은 스타일, 클래스 및 ID 속성을 허용합니다
<div class = note> <p> div는 단락, 제목, 테이블 및 기타 부품을 포함 할 수 있습니다 </p> </div>
5. <h1 class = punk> 클래스 속성 </h1> // 정의는 3을 참조하십시오.
6. <p id = wdg97> id 속성 </p> // 정의는 3을 참조하십시오.
7. 속성 목록
글꼴 스타일 : [정상 |.
글꼴 크기 : x-small |
텍스트 장식 : 밑줄 ||
텍스트 변환 : [없음 |.
배경색 : 배경색 : [<foll> |.
배경 이미지 : 배경 이미지 : [<Urls> |.
라인--<number> |.
경계선 : 점선 |
플로트 : 왼쪽 |
8. 길이 단위
상대 단위 :
em (em, 요소 글꼴의 높이)
예 (x- height, 문자 "x"의 높이)
px (스크린 해상도에 대한 픽셀)
절대 길이 :
(인치, 1 인치 = 2.54 센티미터)
cm (센티미터, 1 센티미터 = 10 밀리미터)
MM (미터)
PT (포인트, 1 점 = 1/72 인치)
PC (PA, 1 PA = 12 점)
◇ [델파이] VCL 제작을위한 간단한 단계
1. 구성 요소 속성 메소드 이벤트를 만듭니다
(라이브러리 단위 만들기, 새 유형으로 상속, 속성, 메소드, 이벤트, 등록 구성 요소 및 패키지 파일 작성)
2. 중합 처리
3. 외과 처리
4. 부품 가시
◇ 동적 링크 라이브러리의 [Delphi]로드
정적 로딩 : 절차 이름; 외부 'lib.dll';
동적 하중 : var 핸들 : thandle;
핸들 : = loadLibrary ( 'lib.dll');
손잡이 <> 0이면
시작하다
{dosomething}
프리 브리 브라리 (핸들);
끝;
◇ [델파이] 포인터 변수 및 주소
var x, y : 정수; p :^정수; // 정수 변수에 대한 포인터
x : = 10; // 변수 할당
p : =@x; // 변수 x의 주소
y : = p^; // pointer p를 Y에 할당합니다
@@ Procedure // 프로세스 변수의 메모리 주소를 반환합니다
[델파이] 캐릭터가 한자인지 여부를 결정합니다
바이트 타입 ( 'How are you haha', 1) = mbleadbyte //는 첫 번째 캐릭터입니다
바이트 타입 ( 'How are haha', 2) = mbtrailbyte //는 두 번째 문자입니다
바이트 타입 ( 'How are haha', 5) = mbsinglebyte // 중국어가 아닙니다
◇ [델파이] 메모 포지셔닝 작동
memo1.lines.delete (0) // 행 1 삭제 1
memo1.selstart : = 10 // 10 바이트를 찾습니다
◇ [델파이] 이중 바이트 문자 내부 코드를 얻습니다
함수 getit (s : string) : 정수;
시작하다
결과 : = 바이트 (s [1]) * $ 100 + 바이트 (s [2]);
끝;
사용 : getit ( 'Calculation') // $ bcc6 인 10 진수 48326
◇ [Delphi] 호출 데이터 저장 절차 추가
저장 절차는 다음과 같습니다.
프로 시저 생성 addRecord (
레코드 1 바르 차 (10)
레코드 2 바르 차 (20)
)
~처럼
시작하다
TableName에 삽입 (Field1, Field2) 값 (: Record1, : Record2)
끝
저장된 절차 실행 :
프로 시저 addRecord 실행 ( "urrecord1", "urrecord2")
◇ [delphi] 파일을 Blob 필드로 저장합니다
함수 blobcontentToString (const filename : String) : String;
시작하다
tfilestream.create (filename, fmopenread)를 사용하십시오
노력하다
setLength (결과, 크기);
읽기 (포인터 (결과)^, 크기);
마지막으로
무료;
끝;
끝;
// 필드를 저장합니다
시작하다
if (opendialog1.execute) 그러면
시작하다
sfilename : = opendialog1.filename;
adotable1.edit;
adotable1.fieldByName ( 'Visio'). Asstring : = BlobcontentToString (filename);
adotable1.post;
끝;
◇ [delphi] 모든 파일을 클립 보드에 복사하십시오
Shlobj, ActiveX, ClipBrd를 사용합니다.
절차 tform1.copytoclipbrd (var filename : String);
var
Fe : tformateTc;
중간 : tstgmedium;
드롭 파일 : pdropfiles;
pfile : pchar;
시작하다
Fe.cfformat : = cf_hdrop;
Fe.dwaspect : = dvaspect_content;
fe.tymed : = tymed_hglobal;
medium.hglobal : = globalAlloc (gmem_share 또는 gmem_zeroinit, sizeof (tdropfiles)+길이 (filename) +1);
medium.hglobal <> 0 인 경우 시작하십시오
medium.tymed : = tymed_hglobal;
드롭 파일 : = globallock (medium.hglobal);
노력하다
Dropfiles^.pfiles : = sizeof (tdropfiles);
Dropfiles^.fwide : = false;
longint (pfile) : = longint (dropfiles)+sizeof (tdropfiles);
strpcopy (pfile, filename);
Inc (pfile, 길이 (파일 이름) +1);
pfile^ : = #0;
마지막으로
GlobalUnlock (medium. hglobal);
끝;
Clipboard.SetashAndle (CF_HDROP, Medium.hglobal);
끝;
끝;
◇ [Delphi] 현재 시스템 실행 프로세스를 나열합니다
usestlhelp32;
절차 TForm1.Button1Click(Sender: TObject);
var lppe : tprocessentry32;
발견 : 부울;
손 : thandle;
시작하다
손 : = CreateToolHelp32SnapShot (Th32cs_snapall, 0);
발견 : = Process32First (핸드, LPPE);
발견되는 동안
시작하다
listbox1.items.add (strpas (lppe.szexefile));
발견 : = process32next (핸드, lppe);
끝;
끝;
◇ [Delphi] BDetable1을 기반으로 새 테이블 표 2를 만듭니다
표 2 : = ttable.create (nil);
노력하다
Table2.databaseName : = table1.DatabaseMame;
table2.fieldDefs.Assign (표 1.FieldDefs);
table2.indexDefs.Assign (표 1.IndexDefs);
table2.tablename : = 'new_table';
createtable ();
마지막으로
table2.free ();
끝;
◇ [델파이] DLL 생성 및 참조를 이해하는 가장 좋은 방법
// dll 소스 (file-> new-> dll)를 먼저보십시오
도서관 프로젝트 1;
용도
Sysutils, 클래스;
함수 addit (f : 정수; s : 정수) : 정수; 내보내기;
시작하다
makeasum : = f+s;
끝;
수출
추가;
끝.
// 전화 (프로젝트에서)
구현
함수 addit (f : 정수; s : 정수) : 정수; Far; 외부 'project1'; // 선언
{호출은 추가됩니다 (2,4).
[델파이] 프로그램 자체의 크기를 동적으로 읽습니다
기능 gesselfsize : 정수;
var
F : 바이트 파일;
시작하다
filemode : = 0;
할액 파일 (f, application.exename);
재설정 (f);
결과 : = filesize (f); // 장치는 바이트입니다
근접 파일 (f);
끝;
◇ [Delphi] BIOS 정보를 읽으십시오
memo1.lines와 함께
시작하다
추가 ( 'Mainboardbiosname :'+^i+string (pchar (ptr ($ fe061)));
add ( 'MainboardBioscopyright :'+^i+string (pchar (ptr ($ fe091)));
추가 ( 'MainboardBiosdate :'+^i+string (pchar (ptr ($ ffff5)));
추가 ( 'MainboardbiosserialNo :'+^i+string (pchar (ptr ($ fec71)));
끝;
◇ [Delphi] MSSQL 별칭을 동적으로 만듭니다
절차 TForm1.Button1Click(Sender: TObject);
var mylist : tstringlist;
시작하다
mylist : = tstringlist.create;
노력하다
마이리스트와 함께
시작하다
추가 ( '서버 이름 = 210.242.86.2');
추가 ( '데이터베이스 이름 = db');
add ( '사용자 이름 = sa');
끝;
세션 1.addalias ( 'testsql', 'mssql', mylist);
세션 1.SaveConfigfile;
마지막으로
mylist.free;
세션 1.Active : = true;
Database1.DatabaseName : = 'db';
Database1.AliasName : = 'testsql';
Database1.LoginPrompt : = false;
database1.params.add ( '사용자 이름 = sa');
database1.params.add ( 'password =');
Database1.connected : = true;
끝;
끝;
절차 TForm1.Button2Click(Sender: TObject);
시작하다
Database1.connected : = false;
세션 1.deletealias ( 'testsql');
끝;
◇ [델파이] 배경 음악을 재생합니다
MMSystem을 사용합니다
// 음악을 재생합니다
McIsendString ( 'Open e : /1.MID 유형 시퀀서 별칭 nn', ', 0, 0);
McIsendstring ( '0', '', 0, 0);
McIsendstring ( 'Close Animation', '', 0, 0);
끝;
// 재생 중지
McIsendString ( 'Open e : /1.MID 유형 시퀀서 별칭 nn', ', 0, 0);
McIsendstring ( 'stop nn', '', 0, 0);
McIsendstring ( 'Close Animation', '', 0, 0);
◇ [Delphi] 인터페이스 및 클래스에 대한 샘플 코드
유형 {인터페이스 및 클래스 선언 : 차이점은 데이터 구성원, 비공개 방법 및 공개 방법이 인터페이스에서 공개 키워드를 사용하지 않는다는 것입니다}
ISALLE = 인터페이스 // ISALLE 인터페이스 정의
기능 GetString : String;
끝;
tsample = class (tinterfacedobject, isample)
공공의
기능 GetString : String;
끝;
// 함수 정의
함수 tsample.getString : 문자열;
시작하다
결과 : = '어떤 쇼는';
끝;
// 클래스 객체를 호출합니다
var 샘플 : Tsample;
시작하다
샘플 : = tsample.create;
showMessage (sample.getString+'클래스 객체!');
샘플.
끝;
// 인터페이스를 호출합니다
var sampleinterface : Isample;
샘플 : Tsample;
시작하다
샘플 : = tsample.create;
SampleInterface : = 샘플; // 인터페이스 구현은 클래스를 사용해야합니다
{위의 두 줄은 SampleInterface : = tsample.create;}로 표현 될 수 있습니다.
showmessage (sampleinterface.getString+'인터페이스!');
//sample.free; {nike local classes, 인터페이스의 클래스가 자동으로 릴리스}}
SampleInterface : = nil; {릴리스 인터페이스 객체}
끝;
◇ [Delphi] 작업 표시 줄은 적절한 프로그램처럼 보이지 않습니다.
var
ExtendedStyle : 정수;
시작하다
응용 프로그램.초기화;
ExtendedStyle : = GetWindowLong (application.handle, gwl_exstyle);
setwindowlong (application.handle, gwl_exstyle, extendedStyle 또는 ws_ex_toolwindow가 아닌 ws_ex_appwindow);
Application.CreateForm(TForm1, Form1);
응용 프로그램.실행;
끝.
◇ [delphi] Alt+Ctrl+del은 프로그램을 볼 수 없습니다
구현 후 선언 추가 :
함수 registerserviceprocess (dwprocessid, dwtype : 정수);
RegisterServiceProcess (getCurrentProcessId, 1); // 숨기기
RegisterServiceProcess (getCurrentProcessId, 0); // 디스플레이
◇ [델파이] 광학 드라이브 기호를 감지합니다
var 드라이브 : char;
cdromid : 정수;
시작하다
드라이브의 경우 : = 'd'to 'z'do
시작하다
cdromid : = getDriveType (pchar (drive+':/'));
cdromid = 5 인 경우 showMessage ( 'CD-ROM 드라이브는'+drive+'디스크!');
끝;
끝;
◇ [델파이] 사운드 카드 감지
auxgetnumdevs () <= 0이면 showmessage ( '사운드 카드를 찾지 못했습니다!') else showmessage ( '모든 사운드 카드를 찾았습니다!');
◇ [Delphi] 문자열 그리드를 그립니다
Stringgrid.ondrawcell 이벤트
stringgrid1.canvas와 함께
드로우 (rect.left, rect.top, image1.picture.graphic);
◇ [SQL Server] SQL에 Like 문을 쓰는 또 다른 방법
예를 들어, 사용자 이름이 "C"가 포함 된 모든 사용자를 찾으려면
mydatabase를 사용하십시오
'%c%'와 같은 사용자 이름이있는 표 1에서 * 선택
위의 기능을 완성하는 또 다른 방법은 다음과 같습니다.
mydatabase를 사용하십시오
charIndex ( 'c', username)> 0에서 *를 선택하십시오
이론적 으로이 방법은 이전 방법보다 하나의 판단 진술을 가지고 있지만,이 판단 과정은 80% 이상이 단어를 검색하는 데 소비된다고 생각합니다.
문자열 및 기타 작업의 경우 charindex 기능을 사용하는 것이 큰 문제가 아닙니다.
찾은 문자는 다음과 같이이 charIndex에서 직접 사용할 수 있습니다.
mydatabase를 사용하십시오
charIndex ( '%', username)> 0에서 *를 선택하십시오
또한 다음과 같이 쓸 수 있습니다.
mydatabase를 사용하십시오
charIndex (char (37), 사용자 이름)> 0에서 *를 선택하십시오
ASCII 문자는 %입니다.
[Delphi] SQL은 여러 데이터베이스/테이블을 표시합니다
"jianjie.dbf"a, "gongzi.dbf"에서 고유 한 a.bianhao, a.xingming, b.gongzi를 선택하십시오. b
여기서 a.bianhao = b.bianhao
◇ [Delphi] RFC (의견 요청) 관련
IETF (인터넷 엔지니어링 태스크 포스)는 RFC 문서를 유지합니다 http://www.ietf.cnri.reston.va.us
RFC882 : 메시지 헤더 구조
RFC1521 : MIME Part 1, 메시지 전송 방법
RFC1945 : 멀티미디어 문서 전송 문서
◇ [Delphi] tnmuupprocessor의 사용
var instream, 아웃 스트림 : tfilestream;
시작하다
instream : = tfilestream.create (infile.txt, fmopenread);
아웃 스트림 : = tfilestream (outfile.txt, fmcreate);
nmuue.method : = uucode; {uuencode/decode}
//nmuue.method:=Uumime; {Mime}
nmuue.inputStream : = instream;
nmuue.outputStream : = 아웃스트림;
nmuue.encode; {인코딩 처리}
//nmuue.decode; {decoding processing}
instream.free;
외부.
끝;
◇ [델파이] tfilestream 작동
// 파일 스트림의 현재 위치에서 버퍼 버퍼로의 수 바이트를 읽습니다.
함수 읽기 (var buffer; count : longint) : longint; 재정의;
// 버퍼 버퍼를 파일 스트림에 읽습니다
함수 쓰기 (const 버퍼; 카운트 : longint) : longint; 재정의;
// 현재 읽기를 설정하고 파일 스트림의 포인터를 오프셋 할 포인터를 설정합니다.
기능 추구 (오프셋 : Longint; Origin : Word) : longint; 재정의;
Origin = {sofrombeginning, sofromcurrent, sofromend}
// 다른 파일 스트림의 현재 위치에서 현재 파일 스트림의 현재 위치로 카운트를 복사합니다.
함수 Copyfrom (출처 : tstream; count : longint) : longint;
// 지정된 파일을 파일 스트림에 읽습니다
var myfstream : tfilestream;
시작하다
myfstream : = tfilestream.create (opendialog1.filename, fmopenread);
끝;
[JavaScript] IE 플러그인 충격파 및 QuickTime이 설치되어 있는지 확인하십시오
<script language = "javaScript">
var myplugin = navigator.plugins [ "Shockwave"];
if (myplugin)
Document.writeln ( "Shockwave를 설치했습니다!")
또 다른
document.writeln ( "당신은 쇼크파를 설치하지 않았습니다!")
</스크립트> <br>
<script language = "javaScript">
var myplugin = navigator.plugins [ "Quicktime"];
if (myplugin)
document.writeln ( "QuickTime이 설치되어 있습니다!")
또 다른
document.writeln ( "QuickTime을 설치하지 않았습니다!")
</script>
[인터넷] 표에서 iframe을 참조하는 효과
<테이블 cellpadding="0" cellpacing="0">
<tr>
<td> <ilayer id = "ad1"Visibility = "hidden"> </ilayer> <nolayer> <iframe src = "i :/jinhtml/zj/h21.htm"marginwidth = "0"marginheight = "110"hspace = "10"vspace = "20"frameborder = "0"scrolling = "1"> </iframe> </nolayer> </td>
</tr>
</table>
◇ [델파이] 웹 브라우저 제어 기술
1. 인쇄 기능을 실현하십시오
var vain, vaout : Olevariant;
webbrowser.controlinterface.execwb (Olecmdid_print, elecmdexecopt_dontpromptuser, vain, vaout);
2. WebBrowser는 스트림에서 페이지를 읽습니다
함수 tform1.loadFromStream (const astream : tstream) : hresult;
시작하다
세분화 (0, 0);
결과 : = (webbrowser1.document as as as as as as as as as as as as as as as as as as as awreamadapter.create (astream));
끝;
3. "정보 :"프로토콜은 HTML 문자열로 탐색 할 수 있습니다.
절차 tform1.loadhtmlstring (shtml : String);
var 플래그, TargetFrameName, PostData, 헤더 : Olevariant;
webbrowser1.navigate ( 'about :' + shtml, 플래그, targetframename, postdata, 헤더)
4. "RES :"프로토콜을 사용하면 리소스로 저장된 HTML 파일로 이동할 수 있습니다.
절차 tform1.loadhtmlresource;
var 플래그, TargetFrameName, PostData, 헤더 : Olevariant;
webbrowser1.navigate ( 'res : //' + application.exename + '/myhtml', 플래그, targetframename, postdata, 헤더)
brcc32.exe를 사용하여 리소스 파일을 만듭니다 (*.rc)
myhtml 23 "./html/myhtml.htm"
morehtml 23 "./html/morehtml.htm"
{$ r html.res} //html.rc는 html.res로 컴파일됩니다
5. 완전한 HTML 파일을 저장하십시오
var
htmldocument : ihtmldocument2;
persistfile : ipersistfile;
시작하다
htmldocument : = webbrowser1.document as ihtmldocument2;
persistFile : = htmldocument as ispersistFile;
persistFile.save (StringToolest ( 'test.htm'), true);
htmldocument.readystate <> 'complete'do 동안
Application.ProcessMessages;
끝;
◇ [Delphi] Webbrowser Control 설치 (IE Control)
먼저 시스템에 Internet Explorer 4 이상이 설치된 Delphi 메뉴 (구성 요소-임양서)가 목록에서 Microsoft Internet Control을 선택하고 기존 패키지 파일에 추가해야합니다. 웹 브라우저 컨트롤이 표시됩니다. ActiveX 제어판.
◇ [delphi] Windows2000 반투명 양식을 구현합니다
함수 setlayeredwindowattributes (hwnd; hwnd; cry : balpha : byte; dwflags : longint);
절차 TForm1.FormCreate(Sender: TObject);
var L : Longint;
시작하다
L : = getwindowlong (핸들, gwl_exstyle);
L : = L 또는 $ 80000;
setwindowlong (핸들, gwl_exstyle, l);
setlayeredwindowattributes (핸들, 0, 180, 2);
끝;
◇ [Delphi] 프로그램에는 광고 웹 브라우저로드 사진이 표시됩니다
var 플래그, 프레임, PDATA, 헤더 : Olevariant;
시작하다
webbrowser1.navigate ( 'http://www.chineseall.com/images/logo.jpg', 플래그, 프레임, PDATA, 헤더)
끝;
◇ [delphi] 디렉토리의 크기를 계산합니다
함수 getDirectorySize (Const Adirectory : String) : 정수;
var
dir : tsearchrec;
ret : 정수;
경로 : 문자열;
시작하다
결과 := 0;
경로 : = ExtractFilePath (Adirectory);
ret : = sysutils.findfirst (adirectory, faanyfile, dir);
ret <> no_error라면
출구;
노력하다
ret = no_error는
시작하다
Inc (결과, dir.size);
// 디렉토리이고 '..'
if ([fadirectory]) 및 (dir.name [1] <> ') if
inc (결과, getDirectorySize (path + dir.Name + '/* .*'));
ret : = sysutils.findnext (dir);
끝;
마지막으로
sysutils.findclose (dir);
끝;
끝;
◇ [델파이] 디렉토리를 지 웁니다
함수 emptyDirectory (thedirectory : string; recursive : boolean) :
부울;
var
SearchRec : TsearchRec;
RES : 정수;
시작하다
결과 : = 거짓;
Thedirectory : = normaldir (Thedirectory);
res : = findfirst (thedirectory + '*.*', faanyfile, searchRec);
노력하다
RES = 0은 수행합니다
시작하다
if (searchRec.Name <> '.') 및 (searchRec.Name <> '..') 그러면
시작하다
if ((SearchRec.attr 및 Fadirectory)> 0) 및 재귀
그럼 시작해
EmptyDirectory (TheDirectory + SearchRec.Name, True);
removedirectory (pchar (thedirectory + searchrec.name));
끝
그렇지 않으면 시작하다
deletefile (pchar (thedirectory + searchrec.name))
끝;
끝;
res : = findNext (searchRec);
끝;
결과 : = 참;
마지막으로
findclose (searchRec.FindHandle);
끝;
끝;
[델파이] ADO 프로그램을 게시하고 Ado를 설치하십시오
이 파일은 Microsoft Windows, IE, Office 및 Visual Studio에서 한 번만 실행하십시오.
설치 프로그램이 설치된 후 디렉토리는 프로그램에 설정된 디렉토리 경로와 동일합니다. MS Office2000이 설치되면 프로젝트-> 옵션-> 패키지 대화 상자에서 런타임 라이브러리를 선택 해제합니다.
◇ [Delphi] Windows 시스템 메시지의 가로 채기 : WM_CLOSE 메시지
절차 wmclose (var msg : tmessage); 메시지 wm_close;
절차 tmainform.wmclose (var msg : tmessage);
시작하다
m_bclosenoQuery : = false;
상속됨;
끝;