ทักษะการพัฒนาขั้นพื้นฐานของ DELPHI
◇[DELPHI] คัดลอกไฟล์จาก Network Neighborhood
ใช้เชลลาพี;
copyfile(pchar('newfile.txt'),pchar('//ชื่อคอมพิวเตอร์/ทิศทาง/targer.txt'),false);
◇[DELPHI] สร้างเอฟเฟกต์การลากเมาส์
ดำเนินการผ่านเหตุการณ์ MouseMove, เหตุการณ์ DragOver, เหตุการณ์ EndDrag เช่น LABEL บน PANEL:
varxpanel, ypanel, xlabel, ylabel: จำนวนเต็ม;
เหตุการณ์ MouseMove ของ PANEL:xpanel:=x;ypanel:=y;
เหตุการณ์ DragOver ของ PANEL:xpanel:=x;ypanel:=y;
เหตุการณ์ MouseMove ของ LABEL:xlabel:=x;ylabel:=y;
เหตุการณ์ EndDrag ของ LABEL: label.left:=xpanel-xlabel;label.top:=ypanel-ylabel;
◇[DELPHI] รับไดเร็กทอรี WINDOWS
ใช้เชลลาพี;
varwindir:อาร์เรย์[0..255]ofchar;
getwindowsdirectory(windir,ขนาดของ(windir));
หรืออ่านจากรีจิสทรี ที่ตั้ง:
HKEY_LOCAL_MACHINE/ซอฟต์แวร์/Microsoft/Windows/CurrentVersion
รหัส SystemRoot ได้รับเป็น: C:/WINDOWS
◇[DELPHI] วาดเส้นบน FORM หรือคอนเทนเนอร์อื่นๆ
varx,y:array[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] การใช้รายการสตริง
vartips:tstringlist;
เคล็ดลับ:=tstringlist.create;
tips.loadfromfile('filename.txt');
edit1.text:=เคล็ดลับ[0];
tips.add('lastlineadditionstring');
tips.insert(1,'insertstringatNO2line');
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';
Deletefile('abc.txt');//ลบไฟล์
Renamefile('old.txt','new.txt');//เปลี่ยนชื่อไฟล์
ExtractFilename(filelistbox1.filename);//รับชื่อไฟล์
ExtractFileExt(filelistbox1.filename);//รับส่วนต่อท้ายไฟล์
◇[DELPHI] ประมวลผลแอตทริบิวต์ของไฟล์
attr:=filegetattr(filelistbox1.filename);
if(attrandfaReadonly)=faReadonlyแล้ว...//read-only
ถ้า(attrandfaSysfile)=faSysfileแล้ว...//System
if(attrandfaArchive)=faArchivethen...//Archive
if(attrandfaHidden)=faHiddenthen...//Hide
◇[DELPHI]เรียกใช้งานไฟล์ภายนอกโปรแกรม
WINEXEC//เรียกไฟล์ปฏิบัติการ
winexec('command.com/ccopy*.*c:/',SW_Normal);
winexec('startabc.txt');
ShellExecute หรือ ShellExecuteEx//เริ่มโปรแกรมการเชื่อมโยงไฟล์
functionexecutefile (constfilename, 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] รับชื่อของกระบวนการที่ทำงานบนระบบ
varhCurrentWindow:HWnd;szText:array[0..254]ofchar;
เริ่ม
hCurrentWindow:=Getwindow(จัดการ,GW_HWndFrist);
whilehCurrentWindow<>0do
เริ่ม
ifGetwindowtext(hcurrnetwindow,@sztext,255)>0thenlistbox1.items.add(strpas(@sztext));
hCurrentWindow:=Getwindow(hCurrentwindow,GW_HWndNext);
จบ;
จบ;
◇[DELPHI]เกี่ยวกับการฝังชุดประกอบ
แอสเอ็มเอนด์;
EAX, ECX และ EDX สามารถแก้ไขได้ตามต้องการ; ESI, EDI, ESP, EBP และ EBX ไม่สามารถแก้ไขได้
◇[DELPHI]เกี่ยวกับฟังก์ชันการแปลงประเภท
FloatToStr//ลอยชี้ไปที่สตริง
FloatToStrF//จัดรูปแบบจุดลอยตัวเป็นสตริง
IntToHex//จำนวนเต็มเป็นเลขฐานสิบหก
TimeToStr
วันที่ถึงStr
วันที่และเวลาถึงStr
FmtStr//ส่งออกสตริงในรูปแบบที่ระบุ
FormatDateTime('YYYY-MM-DD,hh-mm-ss',DATE);
◇[DELPHI]ขั้นตอนและฟังก์ชันสตริง
Insert(obj,target,pos);//เป้าหมายสตริงถูกแทรกไว้ที่ตำแหน่งของ pos หากผลการแทรกมากกว่าความยาวสูงสุดของเป้าหมาย อักขระพิเศษจะถูกตัดทอน หาก Pos อยู่นอก 255 จะเกิดข้อผิดพลาดในการดำเนินการ ตัวอย่างเช่น st:='Brian' จากนั้น Insert('OK',st,2) จะเปลี่ยน st เป็น 'BrOKian'
Delete(st,pos,Num);//ลบสตริงย่อยของอักขระ Num (จำนวนเต็ม) โดยเริ่มจากตำแหน่ง pos (จำนวนเต็ม) ในสตริง st ตัวอย่างเช่น st:='Brian' จากนั้น Delete(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);//ส่งคืนสตริงย่อยโดยเริ่มต้นที่ตำแหน่ง pos (จำนวนเต็ม) ในสตริง st และมีอักขระ 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) จะส่งกลับ 'BrianWilfred'
ความยาว(st);//ส่งคืนความยาวของนิพจน์สตริง st ตัวอย่างเช่น st:='Brian' ดังนั้นค่าที่ส่งคืนของความยาว(st) คือ 5
Pos(obj, target);//ส่งคืนตำแหน่งที่สตริง obj ปรากฏขึ้นเป็นครั้งแรกในเป้าหมายสตริงเป้าหมาย หากเป้าหมายไม่มีสตริงที่ตรงกัน ค่าที่ส่งคืนของฟังก์ชัน Pos จะเป็น 0 ตัวอย่างเช่น target:='BrianWilfred' ดังนั้นค่าที่ส่งคืนของ Pos('Wil',target) คือ 7 และค่าที่ส่งคืนของ Pos('hurbet',target) จะเป็น 0
◇[DELPHI]เกี่ยวกับการจัดการรีจิสทรี
ใช้รีจิสทรี;
วาร์เร็ก:Tregistry;
reg:=Tregistry.create;
reg.rootkey:='HKey_Current_User';
reg.openkey('แผงควบคุม/เดสก์ท็อป',false);
reg.WriteString('TitleWallpaper','0');
reg.writeString('วอลเปเปอร์',filelistbox1.filename);
reg.ปิดเร็ก;
reg.free;
◇[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)--$7B(123)
อาริโซน่า:$41(65)--$5A(90)
0-9:$30(48)--$39(57)
◇[DELPHI] กำหนดภาษาพื้นเมืองของโปรแกรมเบื้องต้น
พรอมต์ DOS ของซอฟต์แวร์ DELPHI: ThisPROgramMustBeRunUnderWin32
พรอมต์ DOS สำหรับซอฟต์แวร์ VC ++: ThisProgramCannotBeRunInDOSMode
◇[DELPHI]คุกกี้ปฏิบัติการ
response.cookies("name").domain:='http://www.086net.com';
withresponse.cookies.adddo
เริ่ม
ชื่อ:='ชื่อผู้ใช้';
ค่า:='ชื่อผู้ใช้';
จบ
◇[DELPHI] เพิ่มในลิงก์เมนูเอกสาร
ใช้เชลลาพี, shlOBJ;
shAddToRecentDocs(shArd_path,pchar(filepath));//เพิ่มการเชื่อมต่อ
shAddToRecentDocs(shArd_path,nil);//Clear
◇ [เบ็ดเตล็ด] สำรองพจนานุกรมวิธีการป้อนข้อมูล ABC อัจฉริยะ
windows/ระบบ/user.rem
หน้าต่าง/ระบบ/tmmr.rem
◇[DELPHI] กำหนดปุ่มเมาส์
ifGetAsyncKeyState(VK_LButton)<>0แล้ว...//ปุ่มซ้าย
ifGetAsyncKeyState(VK_MButton)<>0แล้ว...//ปุ่มกลาง
ifGetAsyncKeyState(VK_RButton)<>0แล้ว...//คลิกขวา
◇[DELPHI]ตั้งค่าการแสดงผลสูงสุดของแบบฟอร์ม
เหตุการณ์ onFormCreate
self.width:=หน้าจอความกว้าง;
self.height:=screen.height;
◇ปุ่ม [DELPHI] เพื่อรับข้อความ
ประมวลผลในเหตุการณ์ OnCreate: application.OnMessage:=MyOnMessage;
ขั้นตอน TForm1.MyOnMessage (varMSG: TMSG; varHandle: บูลีน);
เริ่ม
ifmsg.message=256แล้ว...//คีย์ใดก็ได้
ifmsg.message=112แล้ว...//F1
ifmsg.message=113แล้ว...//F2
จบ;
◇[เบ็ดเตล็ด]ซ่อนโฟลเดอร์ที่แชร์
เอฟเฟกต์การแบ่งปัน: เข้าถึงได้ แต่มองไม่เห็น (ในการจัดการทรัพยากร, Network Neighborhood)
ตั้งชื่อการแชร์: ทิศทาง $
ไปที่://คอมพิวเตอร์/ทิศทาง/
◇[javaScript]เอฟเฟกต์ที่ใช้กันทั่วไปบนหน้าเว็บ JavaScript
หน้าเว็บมีกำหนดจะปิดใน 60 วินาที
ปิดหน้าต่าง
ปิด
การถ่ายโอน URL ตามกำหนดเวลา
นอกจากนี้ยังสามารถกำหนดค่า TQuery ในระหว่างการดำเนินการได้ โปรดดูรายละเอียดในวิธีใช้ Delphi
□◇[DELPHI] รับค่า RGB ของจุดใดจุดหนึ่งบนภาพ
ขั้นตอน TForm1.Image1MouseDown (ผู้ส่ง: TObject; ปุ่ม: TMouseButton;
Shift:TShiftState;X,Y:จำนวนเต็ม);
var
สีแดง, สีเขียว, สีฟ้า: ไบต์;
ฉัน:จำนวนเต็ม;
เริ่ม
i:=image1.Canvas.Pixels[x,y];
สีน้ำเงิน:=GetBValue(i);
สีเขียว:=GetGValue(i):
สีแดง:=GetRValue(i);
Label1.Caption:=inttostr(สีแดง);
Label2.Caption:=inttostr(สีเขียว);
Label3.Caption:=inttostr(สีน้ำเงิน);
จบ;
□◇[DELPHI]เกี่ยวกับการแยกย่อยและการแปลงรูปแบบวันที่
แปรผัน, เดือน, วัน: Word; now2: Tdatatime;
now2:=วันที่();
ถอดรหัส (ตอนนี้ 2, ปี, เดือน, วัน);
lable1.Text:=inttostr(ปี)+'ปี'+inttostr(เดือน)+'เดือน'+inttostr(วัน)+'วัน';
◇[DELPHI]วิธีตรวจสอบโหมดการเชื่อมต่อเครือข่ายปัจจุบัน
ผลการพิจารณาคือโหมด MODEM, LAN หรือพร็อกซีเซิร์ฟเวอร์
ใช้ wininet;
FunctionConnectionKind:บูลีน;
varflags:dword;
เริ่ม
ผลลัพธ์:=InternetGetConnectedState(@flags,0);
ถ้าผลลัพธ์แล้ว
เริ่ม
ถ้า(ธงและINTERNET_CONNECTION_MODEM)=INTERNET_CONNECTION_MODEMแล้ว
เริ่ม
showmessage('โมเด็ม');
จบ;
ถ้า(ธงและINTERNET_CONNECTION_LAN)=INTERNET_CONNECTION_LANแล้ว
เริ่ม
showmessage('แลน');
จบ;
ถ้า(ธงและINTERNET_CONNECTION_PROXY)=INTERNET_CONNECTION_PROXYแล้ว
เริ่ม
showmessage('พร็อกซี');
จบ;
ถ้า(ธงและINTERNET_CONNECTION_MODEM_BUSY)=INTERNET_CONNECTION_MODEM_BUSYแล้ว
เริ่ม
showmessage('ModemBusy');
จบ;
จบ;
จบ;
◇[DELPHI]วิธีตรวจสอบว่าสตริงเป็นที่อยู่อีเมลที่ถูกต้องหรือไม่
functionIsEMail(อีเมล:สตริง):บูลีน;
vars:String;ETpos:จำนวนเต็ม;
เริ่ม
ETpos:=pos('@',อีเมล์);
ถ้าETpos>1แล้ว
เริ่ม
s:=copy(อีเมล,ETpos+1,ความยาว(อีเมล));
if(pos('.',s)>1)และ(pos('.',s)<length(s))แล้ว
ผลลัพธ์:=trueelseResult:=false;
จบ
อื่น
ผลลัพธ์:=เท็จ;
จบ;
◇[DELPHI] ตรวจสอบว่าระบบเชื่อมต่อกับอินเทอร์เน็ตหรือไม่
จำเป็นต้องแนะนำฟังก์ชัน InetIsOffline ใน URL.DLL
การประกาศฟังก์ชั่นคือ:
functionInetIsOffline (แฟล็ก: จำนวนเต็ม): บูลีน; stdcall; ภายนอก 'URL.DLL';
จากนั้นคุณสามารถเรียกใช้ฟังก์ชันเพื่อตรวจสอบว่าระบบเชื่อมต่อกับอินเทอร์เน็ตหรือไม่
ifInetIsOffline(0)แล้วแสดงข้อความ('ไม่ได้เชื่อมต่อ!')
elseShowMessage('เชื่อมต่อแล้ว!');
ฟังก์ชันนี้จะคืนค่า TRUE หากระบบภายในเครื่องไม่ได้เชื่อมต่อกับอินเทอร์เน็ต
ที่แนบมา:
ระบบส่วนใหญ่ที่ใช้ IE หรือ OFFICE97 จะมี DLL นี้สำหรับการโทร
InetIsออฟไลน์
BOOLInetออฟไลน์(
DWORDdwFlags,
-
◇[DELPHI] เล่นและหยุดไฟล์ WAV ชั่วคราวได้อย่างง่ายดาย
ใช้ระบบ mm;
functionPlayWav(constFileName:string):บูลีน;
เริ่ม
ผลลัพธ์:=PlaySound(PChar(ชื่อไฟล์),0,SND_ASYNC);
จบ;
ขั้นตอน StopWav;
var
บัฟเฟอร์: อาร์เรย์ [0..2] ofchar;
เริ่ม
บัฟเฟอร์ [0]:=#0;
เล่นเสียง (บัฟเฟอร์,0,SND_PURGE);
จบ;
◇[DELPHI] รับข้อมูล BIOS ของเครื่อง
withMemo1.Linesdo
เริ่ม
เพิ่ม('MainBoardBiosName:'+^I+string(Pchar(Ptr($FE061)))));
เพิ่ม('MainBoardBiosCopyRight:'+^I+string(Pchar(Ptr($FE091)))));
เพิ่ม('MainBoardBiosDate:'+^I+string(Pchar(Ptr($FFFF5)))));
เพิ่ม('MainBoardBiosSerialNo:'+^I+string(Pchar(Ptr($FEC71)))));
จบ;
◇[DELPHI] ดาวน์โหลดไฟล์จากอินเทอร์เน็ต
ใช้ UrlMon;
functionDownloadFile(ที่มา,ปลายทาง:สตริง):บูลีน;
เริ่ม
พยายาม
ผลลัพธ์:=UrlDownloadToFile(nil,PChar(source),PChar(Dest),0,nil)=0;
ยกเว้น
ผลลัพธ์:=เท็จ;
จบ;
จบ;
ifDownloadFile('http://www.borland.com/delphi6.zip,'c:/kylix.zip')แล้ว
ShowMessage('ดาวน์โหลดสำเร็จ')
elseShowMessage('ดาวน์โหลดไม่สำเร็จ')
◇[DELPHI] แก้ไขที่อยู่ IP ของเซิร์ฟเวอร์
ใช้winsock
ฟังก์ชั่นIPAddrToName(IPAddr:String):String;
var
SockAddrIn:TSockAddrIn;
HostEnt:PHostEnt;
WSAData:TWSAData;
เริ่ม
WSAStartup ($101, WSAData);
SockAddrIn.sin_addr.s_addr:=inet_addr(PChar(IPAddr));
HostEnt:=gethostbyaddr(@SockAddrIn.sin_addr.S_addr,4,AF_INET);
ifHostEnt<>ไม่มีผล:=StrPas(Hostent^.h_name)elseresult:='';
จบ;
◇[DELPHI] รับการเชื่อมต่อในทางลัด
functionExeFromLink(constlinkname:string):สตริง;
var
เอฟดีร์,
ชื่อ,
exeName: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);
ifz>32แล้ว
ผลลัพธ์:=StrPas(ExeName)
อื่น
ผลลัพธ์:='';
StrDispose(FDir);
StrDispose(FName);
StrDispose(ExeName);
จบ;
◇[DELPHI]ควบคุมการทำให้ TCombobox สมบูรณ์โดยอัตโนมัติ
{'Sorted'propertyoftheTComboboxtotrue}
varlastKey:Word;//ตัวแปรส่วนกลาง
//เหตุการณ์ OnChange ของ TCombobox
ขั้นตอน TForm1.AutoCompleteChange (ผู้ส่ง: TObject);
var
SearchStr:สตริง;
retVal: จำนวนเต็ม;
เริ่ม
SearchStr:=(SenderasTCombobox).ข้อความ;
iflastKey<>VK_BACKแล้ว//backspace:VK_BACKหรือ$08
เริ่ม
retVal:=(SenderasTCombobox).ดำเนินการ(CB_FINDSTRING,-1,LongInt(PChar(SearchStr)));
ifretVal>CB_Errthen
เริ่ม
(SenderasTCombobox).ItemIndex:=retVal;
(SenderasTCombobox).SelStart:=ความยาว(SearchStr);
(SenderasTCombobox).SelLength:=
(ความยาว((SenderasTCombobox).ข้อความ)-ความยาว(SearchStr));
สิ้นสุด;//retVal>CB_Err
สิ้นสุด;//lastKey<>VK_BACK
LastKey:=0;//รีเซ็ตLastKey
จบ;
//เหตุการณ์ OnKeyDown ของ TCombobox
ขั้นตอน TForm1.AutoCompleteKeyDown (ผู้ส่ง: TObject; varKey: Word;
กะ:TShiftState);
เริ่ม
LastKey:=คีย์;
จบ;
◇[DELPHI]วิธีล้างไดเร็กทอรี
functionEmptyDirectory(TheDirectory:String;Recursive:Boolean):
บูลีน;
var
SearchRec:TSearchRec;
Res:จำนวนเต็ม;
เริ่ม
ผลลัพธ์:=เท็จ;
TheDirectory:=NormalDir(TheDirectory);
Res:=FindFirst(TheDirectory+'*.*',faAnyFile,SearchRec);
พยายาม
ในขณะที่Res=0do
เริ่ม
ถ้า(SearchRec.Name<>'.')และ(SearchRec.Name<>'..')แล้ว
เริ่ม
ถ้า((SearchRec.AttrandfaDirectory)>0)และRecursive
แล้วเริ่มต้น
EmptyDirectory(TheDirectory+SearchRec.Name,True);
RemoveDirectory(PChar(TheDirectory+SearchRec.Name));
จบ
อย่างอื่นเริ่มเลย
DeleteFile(PChar(TheDirectory+SearchRec.Name))
จบ;
จบ;
Res:=FindNext(SearchRec);
จบ;
ผลลัพธ์:=จริง;
ในที่สุด
FindClose(SearchRec.FindHandle);
จบ;
จบ;
◇[DELPHI]วิธีคำนวณขนาดของไดเร็กทอรี
functionGetDirectorySize(constADirectory:string):จำนวนเต็ม;
var
ผบ.:TSearchRec;
Ret:จำนวนเต็ม;
เส้นทาง:สตริง;
เริ่ม
ผลลัพธ์:=0;
เส้นทาง:=ExtractFilePath(ADirectory);
Ret:=Sysutils.FindFirst(ADirectory,faAnyFile,Dir);
ifRet<>NO_ERRORแล้วต่อไป;
พยายาม
whileret=NO_ERRORทำ
เริ่ม
inc(ผลลัพธ์,Dir.Size);
ถ้า(Dir.Attrin[faDirectory])และ(Dir.Name[1]<>'.')แล้ว
Inc(ผลลัพธ์,GetDirectorySize(Path+Dir.Name+'/*.*'));
Ret:=Sysutils.FindNext(ผบ.);
จบ;
ในที่สุด
Sysutils.FindClose(ผบ.);
จบ;
จบ;
◇[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. กำหนดค่าของสตริง DisplayName ให้กับชื่อที่แสดงใน "ลบรายการแอปพลิเคชัน" เช่น 'AimingUninstallone';
กำหนดสตริง UninstallString ให้กับคำสั่งการลบที่ดำเนินการ เช่น C:/WIN97/uninst.exe-f "C:/TestPro/aimTest.isu"
◇[DELPHI]ข้อความปิดเซสชัน WM_QUERYEND ถูกสกัดกั้น
พิมพ์
TForm1=คลาส(TForm)
ขั้นตอนWMQueryEndSession(varMessage:TWWMQueryEndSession);ข้อความWM_QUERYENDSESSION;
ขั้นตอน CMERaseBkgnd (varMessage: TWMEraseBkgnd); MessageWM_ERASEBKGND;
ส่วนตัว
{ประกาศความเป็นส่วนตัว}
สาธารณะ
{ประกาศสาธารณะ}
จบ;
ขั้นตอน TForm1.WMQueryEndSession (varMessage: TWMQueryEndSession);
เริ่ม
Showmessage('คอมพิวเตอร์เกี่ยวกับการปิดเครื่อง');
จบ;
◇[DELPHI]รับเพื่อนบ้านออนไลน์
Proceduregetnethood();//NT ถูกใช้เป็นเซิร์ฟเวอร์ และการดีบักส่งผ่านใน WIN98
var
ก, ฉัน: จำนวนเต็ม;
รหัสข้อผิดพลาด: จำนวนเต็ม;
netres:อาร์เรย์[0..1023]ofnetresource;
แจกแจง: จัดการ;
รายการ:dword;
ขนาดบัฟเฟอร์:dword;
ส:สตริง;
รายการของฉัน: รายการรายการ;
รายการของฉัน:tlistitem;
โดเมนทั้งหมด: tstrings;
เริ่มต้น // listcomputerisalistviewtolistallcomputers;controlcenterisaform.
alldomain:=tstringlist.Create;
withnetres[0]โดบีกิน
dwscope:=RESOURCE_GLOBALNET;
dwtype:=RESOURCETYPE_ANY;
dwdisplaytype:=ทรัพยากร CEDISPLAYTYPE_DOMAIN;
ใช้งาน:=RESOURCEUSAGE_CONTAINER;
lplocalname:=ไม่มี;
lpremotename:=ไม่มี;
lpcomment:=ไม่มี;
lpprovider:=ไม่มี;
end;//รับโดเมนทั้งหมด
รหัสข้อผิดพลาด:=wnetopenenum(RESOURCE_GLOBALNET,RESOURCETYPE_ANY,RESOURCEUSAGE_CONTAINER,@netres[0],enumhandle);
iferrcode=NO_ERRORแล้วเริ่มต้น
รายการ:=1024;
ขนาดบัฟเฟอร์:=ขนาดของ(netres);
รหัสข้อผิดพลาด:=wnetenumresource(enumhandle,enumentries,@netres[0],ขนาดบัฟเฟอร์);
จบ;
ก:=0;
รายการของฉัน:=controlcenter.lstcomputer.Items;
mylistitems.Clear;
ในขณะที่(สตริง(netres[a].lpprovider)<>'')และ(errcode=NO_ERROR)ทำ
เริ่ม
alldomain.Add(netres[a].lpremotename);
ก:=ก+1;
จบ;
wnetcloseenum(ระบุตัวเลข);
//รับคอมพิวเตอร์ทุกเครื่อง
รายการของฉัน:=controlcenter.lstcomputer.Items;
mylistitems.Clear;
fori:=0toalldomain.Count-1do
เริ่ม
withnetres[0]โดบีกิน
dwscope:=RESOURCE_GLOBALNET;
dwtype:=RESOURCETYPE_ANY;
dwdisplaytype:=ทรัพยากร CEDISPLAYTYPE_SERVER;
ใช้งาน:=RESOURCEUSAGE_CONTAINER;
lplocalname:=ไม่มี;
lpremotename:=pchar(ทุกโดเมน[i]);
lpcomment:=ไม่มี;
lpprovider:=ไม่มี;
จบ;
ErrCode:=WNetOpenEnum(RESOURCE_GLOBALNET,RESOURCETYPE_ANY,RESOURCEUSAGE_CONTAINER,@netres[0],EnumHandle);
iferrcode=NO_ERRORแล้ว
เริ่ม
รายการแจงนับ:=1024;
BufferSize:=ขนาดของ(NetRes);
ErrCode:=WNetEnumResource(EnumHandle,EnumEntries,@NetRes[0],BufferSize);
จบ;
ก:=0;
ในขณะที่(สตริง(netres[a].lpprovider)<>'')และ(errcode=NO_ERROR)ทำ
เริ่ม
mylistitem:=mylistitems.Add;
รายการของฉัน ImageIndex:=0;
mylistitem.Caption:=ตัวพิมพ์ใหญ่(stringreplace(string(NetRes[a].lpremotename),'//','',[rfReplaceAll]));
ก:=ก+1;
จบ;
wnetcloseenum(ระบุตัวเลข);
จบ;
จบ;
◇[DELPHI] รับไดเร็กทอรีที่แชร์บนคอมพิวเตอร์บางเครื่อง
ขั้นตอนการรับโฟลเดอร์ (constcomputername:string);
var
รหัสข้อผิดพลาด,a:จำนวนเต็ม;
netres:อาร์เรย์[0..1023]ofnetresource;
แจกแจง: จัดการ;
รายการบัฟเฟอร์ขนาด: dword;
ส:สตริง;
รายการของฉัน: รายการรายการ;
รายการของฉัน:tlistitem;
mystrings:tstringlist;
เริ่ม
withnetres[0]โดบีกิน
dwscope:=RESOURCE_GLOBALNET;
dwtype:=RESOURCETYPE_DISK;
dwdisplaytype:=ทรัพยากร CEDISPLAYTYPE_SHARE;
ใช้งาน:=RESOURCEUSAGE_CONTAINER;
lplocalname:=ไม่มี;
lpremotename:=pchar(ชื่อคอมพิวเตอร์);
lpcomment:=ไม่มี;
lpprovider:=ไม่มี;
end;//รับโหนดรูท
รหัสข้อผิดพลาด:=wnetopenenum(RESOURCE_GLOBALNET,RESOURCETYPE_DISK,RESOURCEUSAGE_CONTAINER,@netres[0],enumhandle);
iferrcode=NO_ERRORแล้ว
เริ่ม
รายการแจงนับ:=1024;
BufferSize:=ขนาดของ(NetRes);
ErrCode:=WNetEnumResource(EnumHandle,EnumEntries,@NetRes[0],BufferSize);
จบ;
wnetcloseenum(ระบุตัวเลข);
ก:=0;
รายการของฉัน:=controlcenter.lstfile.Items;
mylistitems.Clear;
ในขณะที่(สตริง(netres[a].lpprovider)<>'')และ(errcode=NO_ERROR)ทำ
เริ่ม
กับรายการของฉัน
เริ่ม
รายการของฉัน:=เพิ่ม;
รายการของฉัน ImageIndex:=4;
mylistitem.Caption:=extractfilename(netres[a].lpremotename);
จบ;
ก:=ก+1;
จบ;
จบ;
◇[DELPHI] รับหมายเลขซีเรียลของฮาร์ดไดรฟ์
varSerialNum:pdword;a,b:dword;บัฟเฟอร์:array[0..255]ofchar;
เริ่ม
ifGetVolumeInformation('c:/',บัฟเฟอร์,SizeOf(บัฟเฟอร์),SerialNum,a,b,ไม่มี,0)thenLabel1.Caption:=IntToStr(SerialNum^);
จบ;
◇[DELPHI]MEMO การเปลี่ยนหน้าอัตโนมัติ
ProcedureScrollMemo(บันทึก:TMemo;ทิศทาง:ถ่าน);
เริ่ม
ทิศทางกรณีของ
'd':เริ่ม
ส่งข้อความ (Memo.Handle, {HWNDoftheMemoControl}
WM_VSCROLL,{WindowsMessage}
SB_PAGEDOWN,{คำสั่งเลื่อน}
0){ไม่ได้ใช้}
จบ;
'คุณ':เริ่ม
ส่งข้อความ (Memo.Handle, {HWNDoftheMemoControl}
WM_VSCROLL,{WindowsMessage}
SB_PAGEUP,{คำสั่งเลื่อน}
0);{ไม่ได้ใช้}
จบ;
จบ;
จบ;
ขั้นตอน TForm1.Button1Click (ผู้ส่ง: TObject);
เริ่ม
ScrollMemo(Memo1,'d');//เปิดหน้าขึ้น
จบ;
ขั้นตอน TForm1.Button1Click (ผู้ส่ง: TObject);
เริ่ม
ScrollMemo(Memo1,'u');//ปิดหน้า
จบ;
◇[DELPHI]กด Enter ไปยังตำแหน่งถัดไปใน DBGrid (ปุ่ม Tab)
ขั้นตอน TForm1.DBGrid1KeyPress (ผู้ส่ง: TObject; varKey: Char);
เริ่ม
ifKey=#13แล้ว
ifDBGrid1.Columns.Grid.SelectedIndex<DBGrid1.Columns.Count-1แล้ว
DBGrid1.Columns[DBGrid1.Columns.grid.SelectedIndex+1].Field.FocusControl
อื่น
เริ่ม
Table1.ถัดไป;
DBGrid1.Columns[0].field.FocusControl;
จบ;
จบ;
◇[DELPHI]วิธีการติดตั้งตัวควบคุม
วิธีการติดตั้ง:
1. สำหรับการควบคุมเดียว ส่วนประกอบ-->การติดตั้งส่วนประกอบ..-->ไฟล์ PAS หรือ DCU-->การติดตั้ง
2. สำหรับแพ็คเกจควบคุมที่มีไฟล์ *.dpk เพียงคลิก File-->open (เลือก *.dpk ในกล่องรายการแบบเลื่อนลง)-->ติดตั้ง
3. สำหรับแพ็คเกจควบคุมที่มีไฟล์ *.dpl ให้ InstallPackages-->เพิ่ม-->ชื่อไฟล์ dpl
4. หากปุ่มติดตั้งด้านบนไม่ถูกต้อง ให้ลองใช้ปุ่มคอมไพล์
5. หากเป็น runtimelib ให้เพิ่มลงใน runtimepackes ภายใต้แพ็คเกจภายใต้ตัวเลือก
หากระบบแจ้งว่าไม่พบไฟล์ในระหว่างการคอมไพล์ มักเป็นเพราะไดเร็กทอรีการติดตั้งของตัวควบคุมไม่อยู่ในไดเร็กทอรี Lib ของ Delphi มีสองวิธีในการแก้ปัญหา:
1. คัดลอกไฟล์การติดตั้งดั้งเดิมลงในไดเร็กทอรี Lib ของ delphi
2. หรือเพิ่มเส้นทางโค้ดต้นฉบับของตัวควบคุมไปยังไดเร็กทอรี Delphi Lib ใน Tools-->EnvironmentOptions
◇[DELPHI] ลบไดเร็กทอรีทั้งหมด (deltree)
ขั้นตอน TForm1.DeleteDirectory (strDir: สตริง);
var
sr:TSearchRec;
FileAttrs:จำนวนเต็ม;
strfilename:สตริง;
strPth: สตริง;
เริ่ม
strpth:=Getcurrentdir();
FileAttrs:=faAnyFile;
ifFindFirst(strpth+'/'+strdir+'/*.*',FileAttrs,sr)=0แล้ว
เริ่ม
ถ้า(sr.AttrandFileAttrs)=sr.Attrthen
เริ่ม
strfilename:=sr.ชื่อ;
iffileexists(strpth+'/'+strdir+'/'+strfilename)แล้ว
ลบไฟล์(strpth+'/'+strdir+'/'+strfilename);
จบ;
ในขณะที่ค้นหาถัดไป(sr)=0do
เริ่ม
ถ้า(sr.AttrandFileAttrs)=sr.Attrthen
เริ่ม
strfilename:=sr.name;
iffileexists(strpth+'/'+strdir+'/'+strfilename)แล้ว
ลบไฟล์(strpth+'/'+strdir+'/'+strfilename);
จบ;
จบ;
ค้นหาปิด(sr);
ลบออก(strpth+'/'+strdir);
จบ;
จบ;
◇[DELPHI] รับข้อมูลแถวและคอลัมน์ของเคอร์เซอร์ปัจจุบันของตัวควบคุม TMemo ลงใน Tpoint
1.functionReadCursorPos(SourceMemo:TMemo):TPoint;
varPoint: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]อ่านหมายเลขซีเรียลของฮาร์ดดิสก์
functionGetDiskSerial(DiskChar:Char):สตริง;
var
หมายเลขซีเรียล:pdword;
ก,ข:คำ;
บัฟเฟอร์:อาร์เรย์[0..255]ofchar;
เริ่ม
ผลลัพธ์:="";
ifGetVolumeInformation(PChar(diskchar+":/"),บัฟเฟอร์,SizeOf(บัฟเฟอร์),SerialNum,
a,b,ไม่มี,0)แล้ว
ผลลัพธ์:=IntToStr(SerialNum^);
จบ;
◇[INTERNET]ทักษะที่ครอบคลุม CSS ทั่วไป
1. P:first-letter{font-size:300%;float:left}//ตัวอักษรตัวแรกจะมีขนาดใหญ่กว่าแบบอักษรปกติถึงสามเท่า
2.
3. ฝังสไตล์ชีท
4.
Arial//SPAN ยอมรับแอตทริบิวต์ STYLE, CLASS และ ID
DIV สามารถประกอบด้วยย่อหน้า ชื่อเรื่อง ตาราง และแม้แต่ส่วนอื่นๆ
5.
6. //ดูคำจำกัดความที่ 3 7. รายการทรัพย์สิน รูปแบบตัวอักษร:font-style:[ปกติ|ตัวเอียง|เฉียง]; ขนาดตัวอักษร: ขนาดตัวอักษร: [xx-small|x-small|small|medium|large|x-large|xx-large|larger|smaller|<length>|<percent>] การตกแต่งข้อความ: การตกแต่งข้อความ: [ขีดเส้นใต้||โอเวอร์ไลน์||บรรทัดผ่าน||กะพริบ] การแปลงข้อความ:[ไม่มี|ตัวพิมพ์ใหญ่|ตัวพิมพ์ใหญ่|ตัวพิมพ์เล็ก] สีพื้นหลัง:สีพื้นหลัง:[<สี>|โปร่งใส] ภาพพื้นหลัง: ภาพพื้นหลัง: [ ความสูงของบรรทัด:[ปกติ|<หมายเลข>|<ความยาว>|<เปอร์เซ็นต์>] รูปแบบเส้นขอบ:[ไม่มี|จุด|ประ|ทึบ|สอง|ร่อง|สัน|สิ่งที่ใส่เข้าไป|เอาท์เซ็ต] ลอย:ลอย:[ซ้าย|ขวา|ไม่มี] 8. หน่วยความยาว หน่วยสัมพัทธ์: em (em, ความสูงของแบบอักษรขององค์ประกอบ) อดีต(x-height, ความสูงของตัวอักษร "x") px (พิกเซล สัมพันธ์กับความละเอียดหน้าจอ) ความยาวสัมบูรณ์: นิ้ว (นิ้ว 1 นิ้ว = 2.54 เซนติเมตร) ซม. (เซนติเมตร 1 เซนติเมตร = 10 มิลลิเมตร) มม.(เมตร) pt (จุด 1 จุด = 1/72 นิ้ว) pc (Pa, 1 Pa = 12 จุด) ◇[DELPHI] ขั้นตอนสั้นๆ ในการทำ VCL 1. สร้างเหตุการณ์วิธีการแอตทริบิวต์ส่วนประกอบ (สร้างหน่วยไลบรารี สืบทอดเป็นประเภทใหม่ เพิ่มคุณสมบัติ วิธีการ เหตุการณ์ ส่วนประกอบการลงทะเบียน สร้างไฟล์แพ็คเกจ) 2.การประมวลผลข้อความ 3.การจัดการข้อยกเว้น 4. มองเห็นชิ้นส่วนได้ ◇[DELPHI] กำลังโหลดไลบรารีลิงก์แบบไดนามิก การโหลดแบบคงที่: Procedurename;external'lib.dll'; การโหลดแบบไดนามิก:varhandle:Thdle; หมายเลขอ้างอิง:=loadlibrary('lib.dll'); ถ้าจัดการ<>0แล้ว เริ่ม {ทำบางสิ่งบางอย่าง} ห้องสมุดอิสระ (จัดการ); จบ; ◇[DELPHI]ตัวแปรตัวชี้และที่อยู่ varx,y:integer;p:^integer;//ชี้ไปที่ตัวแปร INTEGER x:=10; //การกำหนดตัวแปร p:=@x;//ที่อยู่ของตัวแปร x y:=p^;//กำหนดตัวชี้ P ให้กับ Y @@procedure//ส่งคืนที่อยู่หน่วยความจำของตัวแปรกระบวนการ ◇[DELPHI] กำหนดว่าอักขระนั้นเป็นอักขระจีนหรือไม่ ByteType('How are you haha',1)=mbLeadByte//เป็นอักขระตัวแรก ByteType('How are you haha',2)=mbTrailByte//เป็นอักขระตัวที่สอง ByteType('How are you haha',5)=mbSingleByte//ไม่ใช่ตัวอักษรจีน ◇[DELPHI] การดำเนินการระบุตำแหน่งบันทึก memo1.lines.delete(0)//ลบบรรทัดที่ 1 memo1.selstart:=10//ค้นหา 10 ไบต์ ◇[DELPHI] รับรหัสภายในอักขระไบต์คู่ functiongetit(s:สตริง):จำนวนเต็ม; เริ่ม ผลลัพธ์:=byte(s[1])*$100+byte(s[2]); จบ; ใช้: getit('calculation')//$bcc6 เป็นทศนิยม 48326 ◇[DELPHI]โทรเพิ่มขั้นตอนการจัดเก็บข้อมูล ขั้นตอนการจัดเก็บมีดังนี้: สร้างขั้นตอนการเพิ่มบันทึก ( บันทึก1วาร์ชาร์(10) บันทึก2วาร์ชาร์(20) - เช่น เริ่ม insertintotablename(field1,field2)values(:record1,:record2) จบ ดำเนินการขั้นตอนการจัดเก็บ: ดำเนินการขั้นตอน addrecord("urrecord1,"urrecord2") ◇[DELPHI]บันทึกไฟล์ลงในช่องหยด functionblobcontenttostring(constfilename:string):สตริง; เริ่ม withtfilestream.create(ชื่อไฟล์,fmopenread)ทำ พยายาม setlength(ผลลัพธ์,ขนาด); อ่าน(ตัวชี้(ผลลัพธ์)^,ขนาด); ในที่สุด ฟรี; จบ; จบ; //บันทึกฟิลด์ เริ่ม ถ้า (opendialog1.execute) แล้ว เริ่ม sFileName:=OpenDialog1.FileName; adotable1.edit; adotable1.fieldbyname('visio').asstring:=Blobcontenttostring(ชื่อไฟล์); adotable1.post; จบ; ◇[DELPHI]คัดลอกไฟล์ทั้งหมดไปยังคลิปบอร์ด ใช้shlobj,activex,clipbrd; ขั้นตอน Tform1.copytoclipbrd (varFileName:string); var FE:TFormatEtc; ปานกลาง:TStgปานกลาง; dropfiles:PDropFiles; pFile:PChar; เริ่ม FE.cfรูปแบบ:=CF_HDROP; FE.dwaspect:=DVASPECT_CONTENT; FE.tymed:=TYMED_HGLOBAL; Medium.hGlobal:=GlobalAlloc(GMEM_SHAREorGMEM_ZEROINIT,SizeOf(TDropFiles)+ความยาว(ชื่อไฟล์)+1); ifMedium.hGlobal<>0แล้วเริ่มต้น Medium.tymed:=TYMED_HGLOBAL; dropfiles:=GlobalLock(Medium.hGlobal); พยายาม dropfiles^.pfiles:=ขนาดของ(TDropFiles); dropfiles^.fwide:=เท็จ; longint(pFile):=longint(dropfiles)+SizeOf(TDropFiles); StrPCopy(pFile,ชื่อไฟล์); Inc(pFile,ความยาว(ชื่อไฟล์)+1); pFile^:=#0; ในที่สุด GlobalUnlock(Medium.hGlobal); จบ; คลิปบอร์ด SetAsHandle (CF_HDROP, Medium.hGlobal); จบ; จบ; ◇[DELPHI] แสดงรายการกระบวนการที่ระบบกำลังทำงานอยู่ ใช้ TLHelp32; ขั้นตอน TForm1.Button1Click (ผู้ส่ง: TObject); varlppe: TProcessEntry32; พบ:บูลีน; มือ: THจัดการ; เริ่ม มือ:=CreateToolhelp32Snapshot(TH32CS_SNAPALL,0); พบ:=Process32First(มือ,lppe); ในขณะที่ค้นพบ เริ่ม ListBox1.Items.Add(StrPas(lppe.szExeFile)); พบ:=Process32Next(มือ,lppe); จบ; จบ; ◇[DELPHI]สร้างตารางใหม่ Table2 โดยยึดตาม BDETable1 Table2:=TTable.Create(ไม่มี); พยายาม Table2.DatabaseName:=Table1.DatabaseName; Table2.FieldDefs.Assign(Table1.FieldDefs); Table2.IndexDefs.Assign(Table1.IndexDefs); Table2.TableName:='new_table'; Table2.CreateTable(); ในที่สุด Table2.ฟรี(); จบ; ◇[DELPHI] วิธีที่ดีที่สุดในการทำความเข้าใจการสร้างและการอ้างอิง DLL //ดูที่ DLLsource(FILE-->NEW-->DLL) ก่อน โครงการห้องสมุด1; การใช้งาน SysUtils, คลาส; functionaddit(f:integer;s:integer):จำนวนเต็ม;ส่งออก; เริ่ม makeasum:=f+s; จบ; การส่งออก เพิ่ม; จบ. //โทร (อยู่ในโครงการ) การดำเนินการ functionaddit(f:integer;s:integer):integer;far;external'project1';//การประกาศ {การโทรคือ addit(2,4); ผลลัพธ์แสดง 6} ◇[DELPHI] อ่านขนาดของโปรแกรมแบบไดนามิก functionGesSelfSize: จำนวนเต็ม; var f:ไฟล์ออฟไบต์; เริ่ม โหมดไฟล์:=0; มอบหมายไฟล์ (f, application.exename); รีเซ็ต(ฉ); ผลลัพธ์:=filesize(f);//หน่วยเป็นไบต์ โคลสไฟล์(f); จบ; ◇[DELPHI]อ่านข้อมูล BIOS withMemo1.Linesdo เริ่ม เพิ่ม('MainBoardBiosName:'+^I+string(Pchar(Ptr($FE061))))); เพิ่ม('MainBoardBiosCopyRight:'+^I+string(Pchar(Ptr($FE091))))); เพิ่ม('MainBoardBiosDate:'+^I+string(Pchar(Ptr($FFFF5))))); เพิ่ม('MainBoardBiosSerialNo:'+^I+string(Pchar(Ptr($FEC71))))); จบ; ◇[DELPHI]สร้างนามแฝง MSSQL แบบไดนามิก ขั้นตอน TForm1.Button1Click (ผู้ส่ง: TObject); varMyList:TStringList; เริ่ม MyList:=TStringList.Create; พยายาม withMyListdo เริ่ม เพิ่ม('SERVERNAME=210.242.86.2'); เพิ่ม('DATABASENAME=db'); เพิ่ม('USERNAME=sa'); จบ; Session1.AddAlias('TESTSQL','MSSQL',MyList);//ミMSSQL Session1.SaveConfigFile; ในที่สุด MyList.ฟรี; Session1.ใช้งานอยู่:=จริง; Database1.DatabaseName:='DB'; Database1.AliasName:='TESTSQL'; Database1.LoginPrompt:=เท็จ; Database1.Params.Add('USERNAME=sa'); Database1.Params.Add('รหัสผ่าน='); Database1.Connected:=จริง; จบ; จบ; ขั้นตอน TForm1.Button2Click (ผู้ส่ง: TObject); เริ่ม Database1.Connected:=เท็จ; Session1.DeleteAlias('TESTSQL'); จบ; ◇[DELPHI] เล่นเพลงประกอบ ใช้ระบบ mm //เล่นดนตรี MCISendString('OPENe:/1.MIDTYPESEQUENCERALIASNN','',0,0); MCISendString('PLAYNNFROM0','',0,0); MCISendString('CLOSEANIMATION','',0,0); จบ; //หยุดเล่น. MCISendString('OPENe:/1.MIDTYPESEQUENCERALIASNN','',0,0); MCISendString('STOPNN','',0,0); MCISendString('CLOSEANIMATION','',0,0); ◇[DELPHI]โค้ดตัวอย่างสำหรับอินเทอร์เฟซและคลาส ประเภท{การประกาศอินเทอร์เฟซและคลาส: ความแตกต่างคือสมาชิกข้อมูล วิธีการที่ไม่ใช่แบบสาธารณะ และวิธีการสาธารณะไม่ได้ใช้คีย์เวิร์ด PUBLIC ในอินเทอร์เฟซ} Isample=interface//กำหนดอินเทอร์เฟซ Isample ฟังก์ชั่นgetstring:สตริง; จบ; Tsample=คลาส(TInterfacedObject,Isample) สาธารณะ ฟังก์ชั่นgetstring:สตริง; จบ; //นิยามฟังก์ชัน functionTsample.getstring:สตริง; เริ่ม ผลลัพธ์:='whatshowis'; จบ; //เรียกวัตถุคลาส varsample:Tsample; เริ่ม ตัวอย่าง:=Tsample.create; showmessage(sample.getstring+'classobject!'); ตัวอย่างฟรี; จบ; //ส่วนต่อประสานการโทร อินเทอร์เฟซ varsample:Isample; ตัวอย่าง:ตัวอย่าง; เริ่ม ตัวอย่าง:=Tsample.create; SampleInterface:=sample;//การใช้งานอินเทอร์เฟซต้องใช้คลาส {สองบรรทัดข้างต้นสามารถแสดงเป็น exampleInterface:=Tsample.create;} showmessage(sampleInterface.getstring+'Interface!'); //sample.free;{คลาสใน Interface ต่างจากคลาสในเครื่องโดยอัตโนมัติ} SampleInterface:=nil;{วัตถุอินเทอร์เฟซที่วางจำหน่าย} จบ; ◇[DELPHI] แถบงานดูไม่เหมือนโปรแกรมที่เหมาะสม var ExtendedStyle:จำนวนเต็ม; เริ่ม แอปพลิเคชันเริ่มต้น; ExtendedStyle:=GetWindowLong(Application.Handle,GWL_EXSTYLE); SetWindowLong (Application.Handle, GWL_EXSTYLE, ExtendedStyleORWS_EX_TOOLWINDOWANDNOTWS_EX_APPWINDOW); แอปพลิเคชัน CreateForm (TForm1, Form1); แอปพลิเคชันเรียกใช้; จบ. ◇[DELPHI]ALT+CTRL+DEL ไม่สามารถมองเห็นโปรแกรมได้ เพิ่มการประกาศหลังการใช้งาน: functionRegisterServiceProcess(dwProcessID,dwType:Integer):จำนวนเต็ม;stdcall;external'KERNEL32.DLL'; RegisterServiceProcess(GetCurrentProcessID,1);//Hide RegisterServiceProcess(GetCurrentProcessID,0);//Display ◇[DELPHI] ตรวจจับสัญลักษณ์ออปติคอลไดรฟ์ vardrive:ถ่าน; cdromID: จำนวนเต็ม; เริ่ม fordrive:='d'to'z'do เริ่ม cdromID:=GetDriveType(pchar(drive+':/')); ifcdromID=5thenshowmessage('ไดรฟ์ซีดีรอมของคุณคือ:'+drive+'disk!'); จบ; จบ; ◇[DELPHI] ตรวจจับการ์ดเสียง ifauxGetNumDevs()<=0แล้วแสดงข้อความ('Nosoundcardfound!')elseshowmessage('Anysoundcardfound!'); ◇[DELPHI]วาดในตารางสตริง เหตุการณ์ StringGrid.OnDrawCell withStringGrid1.Canvasdo วาด (Rect.Left, Rect.Top, Image1.Picture.Graphic); ◇[SQLSERVER]อีกวิธีหนึ่งในการเขียนคำสั่ง Like ใน SQL ตัวอย่างเช่น หากต้องการค้นหาผู้ใช้ทั้งหมดที่มีชื่อผู้ใช้มี "c" คุณสามารถใช้ usemydatabase เลือก*จากตาราง1โดยที่ชื่อผู้ใช้เหมือน '%c%" นี่เป็นอีกวิธีในการทำหน้าที่ข้างต้นให้สมบูรณ์: usemydatabase เลือก*จากตาราง1wherecharindex('c',ชื่อผู้ใช้)>0 ตามทฤษฎีแล้ว วิธีนี้มีคำตัดสินมากกว่าวิธีก่อนหน้า นั่นคือ >0 แต่กระบวนการตัดสินนี้เป็นวิธีที่เร็วที่สุด ฉันเชื่อว่าการดำเนินการมากกว่า 80% ถูกใช้ไปกับการค้นหาคำศัพท์ สำหรับการดำเนินการสตริงและการดำเนินการอื่นๆ การใช้ฟังก์ชัน charindex ไม่ใช่เรื่องใหญ่ นอกจากนี้ยังมีข้อดีในการใช้วิธีนี้ กล่าวคือ คุณจะไม่สามารถใช้ like สำหรับ %, | ฯลฯ ได้โดยตรง อักขระที่พบสามารถนำมาใช้โดยตรงใน charindex นี้ดังต่อไปนี้: usemydatabase เลือก*จากตาราง1wherecharindex('%',ชื่อผู้ใช้)>0 นอกจากนี้ยังสามารถเขียนเป็น: usemydatabase เลือก*จากตาราง1wherecharindex(ถ่าน(37),ชื่อผู้ใช้)>0 อักขระ ASCII คือ % ◇[DELPHI]SQL แสดงฐานข้อมูล/ตารางหลายรายการ SELECTDISTINCTA.bianhao,a.xingming,b.gongziจาก"jianjie.dbf"a,"gongzi.DBF"b WHEREA.bianhao=b.bianhao ◇[DELPHI]RFC (RequestForComment) ที่เกี่ยวข้อง IETF (Internet Engineering Task Force) ดูแลรักษาเอกสาร RFC http://www.ietf.cnri.reston.va.us RFC882: โครงสร้างส่วนหัวของข้อความ RFC1521: MIME ตอนที่ 1 วิธีการส่งข้อความ RFC1945: เอกสารการถ่ายโอนเอกสารมัลติมีเดีย ◇[DELPHI]การใช้งานโปรเซสเซอร์ TNMUUP varinStream,outStream:TFileStream; เริ่ม inStream:=TFileStream.create(infile.txt,fmOpenRead); outStream:=TFileStream(outfile.txt,fmCreate); NMUUE.Method:=uuCode;{UUEncode/Decode} //NMUUE.Method:=uuMIME;{MIME} NMUUE.InputStream:=ในสตรีม; NMUUE.OutputStream:=OutStream; NMUUE.Encode;{การประมวลผลการเข้ารหัส} //NMUUE.Decode;{การประมวลผลการถอดรหัส} inStream.free; outStream.free; จบ; ◇[DELPHI]การทำงานของ TFileStream //อ่านจำนวนไบต์จากตำแหน่งปัจจุบันของสตรีมไฟล์ไปยังบัฟเฟอร์บัฟเฟอร์ functionread (varbuffer; นับ: longint): longint; แทนที่; // อ่านบัฟเฟอร์บัฟเฟอร์ลงในสตรีมไฟล์ FunctionWrite (Constbuffer; Count: Longint): Longint; Override; // ตั้งค่าตัวชี้การอ่านและเขียนปัจจุบันของสตรีมไฟล์เพื่อชดเชย functionseek (ออฟเซ็ต: Longint; Origin: Word): Longint; Override; Origin = {sofrombeginning, sofromcurrent, sofromend} // คัดลอกนับจากตำแหน่งปัจจุบันในสตรีมไฟล์อื่นไปยังตำแหน่งปัจจุบันในสตรีมไฟล์ปัจจุบัน FunctionCopyFrom (ที่มา: TStream; Count: Longint): Longint; // อ่านไฟล์ที่ระบุไปยังสตรีมไฟล์ Varmyfstream: tfilestream; เริ่ม myfstream: = tfilestream.create (opendialog1.filename, fmopenread); จบ; [JavaScript] ตรวจสอบว่าติดตั้งปลั๊กอินแบบ shockwave & quicktime หรือไม่ - ขอบคุณสำหรับความอดทนในการอ่านคุณมีทักษะฉันหวังว่าคุณจะโพสต์ต่อไป!