ทักษะการพัฒนาพื้นฐานของ DELPHI จากบรรพบุรุษของเรา
การรวบรวม: ผู้เช่า ที่มา: Monopoly Forum
◇[DELPHI] คัดลอกไฟล์จาก Network Neighborhood
ใช้เชลลาปี;
copyfile(pchar('newfile.txt'),pchar('//ชื่อคอมพิวเตอร์/ทิศทาง/targer.txt'),false);
◇[DELPHI] สร้างเอฟเฟกต์การลากเมาส์
ดำเนินการผ่านเหตุการณ์ MouseMove, เหตุการณ์ DragOver, เหตุการณ์ EndDrag เช่น LABEL บน PANEL:
var xpanel,ypanel,xlabel,ylabel:integer;
เหตุการณ์ 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
ใช้เชลลาปี;
var windir:array[0..255] ของถ่าน;
getwindowsdirectory(windir,ขนาดของ(windir));
หรืออ่านจากรีจิสตรี ที่ตั้ง:
HKEY_LOCAL_MACHINE/ซอฟต์แวร์/Microsoft/Windows/CurrentVersion
รหัส SystemRoot ได้รับเป็น: C:/WINDOWS
◇[DELPHI] วาดเส้นบน FORM หรือคอนเทนเนอร์อื่นๆ
var x,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] การใช้รายการสตริง
เคล็ดลับ var: tstringlist;
เคล็ดลับ:=tstringlist.create;
tips.loadfromfile('filename.txt');
edit1.text:=เคล็ดลับ[0];
tips.add('สตริงการบวกบรรทัดสุดท้าย');
tips.insert(1,'ใส่สตริงที่บรรทัดที่ 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';
Deletefile('abc.txt');//ลบไฟล์
Renamefile('old.txt','new.txt');//เปลี่ยนชื่อไฟล์
ExtractFilename(filelistbox1.filename);//รับชื่อไฟล์
ExtractFileExt(filelistbox1.filename);//รับส่วนต่อท้ายไฟล์
◇[DELPHI] ประมวลผลแอตทริบิวต์ของไฟล์
attr:=filegetattr(filelistbox1.filename);
if (attr และ faReadonly)=faReadonly แล้ว ... //อ่านอย่างเดียว
ถ้า (attr และ faSysfile)=faSysfile ดังนั้น ... //system
ถ้า (attr และ faArchive)=faArchive ดังนั้น ... //Archive
ถ้า (attr และ faHidden)=faHidden แล้ว ... //ซ่อน
◇[DELPHI]เรียกใช้งานไฟล์ภายนอกโปรแกรม
WINEXEC//เรียกไฟล์ปฏิบัติการ
winexec('command.com /c copy *.* c:/',SW_Normal);
winexec('เริ่ม 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] ของถ่าน;
เริ่ม
hCurrentWindow:=Getwindow(จัดการ,GW_HWndFrist);
ในขณะที่ hCurrentWindow <> 0 ทำ
เริ่ม
ถ้า Getwindowtext(hcurrnetwindow,@sztext,255)>0 แล้วก็ listbox1.items.add(strpas(@sztext));
hCurrentWindow:=Getwindow(hCurrentwindow,GW_HWndNext);
จบ;
จบ;
◇[DELPHI]เกี่ยวกับการฝังแอสเซมบลี
สิ้นสุด Asm;
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) จะส่งกลับ 'Brian Wilfred'
ความยาว(st);//ส่งคืนความยาวของนิพจน์สตริง st ตัวอย่างเช่น st:='Brian' ค่าที่ส่งกลับของความยาว(st) คือ 5
Pos(obj,target);//ส่งคืนตำแหน่งที่สตริง obj ปรากฏขึ้นเป็นครั้งแรกในเป้าหมายสตริงเป้าหมาย หากเป้าหมายไม่มีสตริงที่ตรงกัน ค่าที่ส่งคืนของฟังก์ชัน Pos จะเป็น 0 ตัวอย่างเช่น target:='Brian Wilfred' ดังนั้นค่าที่ส่งคืนของ Pos('Wil',target) คือ 7 และค่าที่ส่งคืนของ Pos('hurbet',target) จะเป็น 0
◇[DELPHI]เกี่ยวกับการจัดการรีจิสทรี
ใช้รีจิสทรี;
var reg:Tregistry;
reg:=Tregistry.create;
reg.rootkey:='HKey_Current_User';
reg.openkey('แผงควบคุม/เดสก์ท็อป',false);
reg.WriteString('วอลเปเปอร์ชื่อเรื่อง','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: โปรแกรมนี้จะต้องทำงานภายใต้ Win32
พรอมต์ DOS สำหรับซอฟต์แวร์ VC++: โปรแกรมนี้ไม่สามารถทำงานในโหมด DOS ได้
◇[DELPHI]คุกกี้ปฏิบัติการ
response.cookies("name").domain:='http://www.086net.com';
ด้วย response.cookies.add do
เริ่ม
ชื่อ:='ชื่อผู้ใช้';
ค่า:='ชื่อผู้ใช้';
จบ
◇[DELPHI] เพิ่มในลิงก์เมนูเอกสาร
ใช้shellapi,shlOBJ;
shAddToRecentDocs(shArd_path,pchar(filepath));//เพิ่มการเชื่อมต่อ
shAddToRecentDocs(shArd_path,nil);//Clear
◇ [เบ็ดเตล็ด] สำรองพจนานุกรมวิธีการป้อนข้อมูล ABC อัจฉริยะ
windows/ระบบ/user.rem
หน้าต่าง/ระบบ/tmmr.rem
◇[DELPHI] กำหนดปุ่มเมาส์
ถ้า GetAsyncKeyState(VK_LButton)<>0 แล้ว ... //ปุ่มซ้าย
ถ้า GetAsyncKeyState(VK_MButton)<>0 ดังนั้น ... //middle key
ถ้า GetAsyncKeyState(VK_RButton)<>0 จากนั้น ... //คลิกขวา
◇[DELPHI]ตั้งค่าการแสดงผลสูงสุดของแบบฟอร์ม
เหตุการณ์ onFormCreate
self.width:=หน้าจอความกว้าง;
self.height:=screen.height;
◇ปุ่ม [DELPHI] เพื่อรับข้อความ
ประมวลผลในเหตุการณ์ OnCreate: application.OnMessage:=MyOnMessage;
ขั้นตอน TForm1.MyOnMessage (var MSG: TMSG; var Handle: Boolean);
เริ่ม
ถ้า msg.message=256 ดังนั้น ... //คีย์ใดก็ได้
ถ้า msg.message=112 แล้ว ... //F1
ถ้า msg.message=113 แล้ว ... //F2
จบ;
◇[เบ็ดเตล็ด]ซ่อนโฟลเดอร์ที่แชร์
เอฟเฟกต์การแบ่งปัน: เข้าถึงได้ แต่มองไม่เห็น (ในการจัดการทรัพยากร, Network Neighborhood)
ตั้งชื่อการแชร์: ทิศทาง $
เยี่ยมชม: //คอมพิวเตอร์/ทิศทาง/
◇[java Script] เอฟเฟกต์ที่ใช้กันทั่วไปบนหน้าเว็บ Java Script
หน้าเว็บมีกำหนดจะปิดใน 60 วินาที
<script language="จาวาสคริปต์"><!--
settimeout('window.close();',60000)
--></สคริปต์>
ปิดหน้าต่าง
<a href="/" onclick="Javascript:window.close();return false;">ปิด</a>
การถ่ายโอน URL ตามกำหนดเวลา
<meta http-equiv="รีเฟรช" 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;
ถ้า checkbox1.checked แล้ว richedit1.font.style:=richedit1.font.style+[fsBold] else richedit1.font.style:=richedit1.font.style-[fsBold]//bold
ถ้า checkbox1.checked แล้ว richedit1.font.style:=richedit1.font.style+[fsItalic] else richedit1.font.style:=richedit1.font.style-[fsItalic]//italic
ถ้า checkbox1.checked แล้ว richedit1.font.style:=richedit1.font.style+[fsUnderline] else richedit1.font.style:=richedit1.font.style-[fsUnderline]//underline
memo1.alignment:=taLeftJustify;//ซ้าย
memo1.alignment:=taRightJustify;//right
memo1.alignment:=taCenter;//อยู่กึ่งกลาง
◇[DELPHI] สร้างสีข้อความแบบสุ่ม
สุ่ม;//สุ่มเมล็ด
memo1.font.color:=rgb(สุ่ม(255),สุ่ม(255),สุ่ม(255));
◇[DELPHI]DELPHI5 UPDATE อัพเกรดหมายเลขซีเรียลแพตช์
1000003185
90X25fx0
◇[DELPHI]การกรองอักขระที่ผิดกฎหมายในชื่อไฟล์
สำหรับ i:=1 ถึงความยาวทำ
ถ้า s[i] ใน ['/','/',':','*','?','<','>','|'] แล้ว
◇[DELPHI]คำจำกัดความและคำอธิบายของฟังก์ชันการแปลง
datetimetofiledate (datetime:Tdatetime):longint; แปลงค่าวันที่และเวลาในรูปแบบ Tdatetime ให้เป็นค่าวันที่และเวลาในรูปแบบ DOS
datetimetostr (datetime:Tdatetime):string; แปลงตัวแปรรูปแบบ Tdatatime เป็นสตริง หากพารามิเตอร์ datetime ไม่มีค่าวันที่ วันที่ของสตริงที่ส่งคืนจะแสดงเป็น 00/00/00 พารามิเตอร์ datetime สตริงที่ส่งคืนจะเป็นส่วนเวลาที่แสดงเป็น 00:00:00 น
datetimetostring (สตริงผลลัพธ์ var;
รูปแบบ const:สตริง;
datetime:Tdatetime); แปลงค่าเวลาและวันที่ตามสตริงรูปแบบที่กำหนด ผลลัพธ์คือสตริงผลลัพธ์ รูปแบบคือสตริงรูปแบบการแปลง วันที่เวลาคือค่าวันที่และเวลา
datetostr (วันที่: Tdatetime) ใช้สตริงรูปแบบที่กำหนดโดยตัวแปรส่วนกลาง shortdateformat เพื่อแปลงพารามิเตอร์ date ให้เป็นสตริงที่เกี่ยวข้อง
floattodecimal (ผลลัพธ์ var:Tfloatrec;value:
ขยาย;ความแม่นยำ,ทศนิยม:
จำนวนเต็ม) แปลงเลขทศนิยมให้เป็นทศนิยม
floattostr (ค่า:ขยาย):string แปลงค่าจุดลอยตัวเป็นรูปแบบสตริง การแปลงนี้ใช้รูปแบบตัวเลขธรรมดา และจำนวนหลักที่มีประสิทธิผลที่แปลงคือ 15
floattotext (บัฟเฟอร์: pchar; ค่า: ขยาย;
รูปแบบ:Tfloatformat;ความแม่นยำ,
digits:integer):integer; ใช้รูปแบบ ความแม่นยำ และทศนิยมที่กำหนดเพื่อแปลงค่าทศนิยมให้เป็นค่าทศนิยม ผลลัพธ์การแปลงจะถูกเก็บไว้ในพารามิเตอร์บัฟเฟอร์ บัฟเฟอร์ไม่ใช่บัฟเฟอร์สตริงเป็น 0 ผลลัพธ์
floattotextfmt (บัฟเฟอร์: pchar; ค่า: ขยาย;
format:pchar):integer ใช้รูปแบบที่กำหนดเพื่อแปลงค่าจุดทศนิยมให้เป็นค่าทศนิยม ผลลัพธ์การแปลงจะถูกเก็บไว้ในพารามิเตอร์บัฟเฟอร์
intttohex (value:longint;ตัวเลข:จำนวนเต็ม):
string แปลงค่าตัวเลขที่กำหนดให้เป็นสตริงเลขฐานสิบหก หลักพารามิเตอร์จะให้จำนวนหลักที่มีอยู่ในสตริงผลลัพธ์การแปลง
inttostr (value:longint):string แปลงจำนวนเต็มเป็นสตริงทศนิยม
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):extensed; แปลงสตริงที่กำหนดให้เป็นตัวเลขทศนิยม สตริงมีรูปแบบดังต่อไปนี้:
[+|-]nnn…[.]nnn…[<+|-><E|e><+|->nnnn]
strtoint (const S:string):longint แปลงสตริงตัวเลขให้เป็นจำนวนเต็ม สตริงสามารถอยู่ในรูปแบบทศนิยมหรือฐานสิบหกได้ หากสตริงไม่ใช่สตริงตัวเลขตามกฎหมาย ระบบจะสร้างข้อยกเว้น ECONVERTERROR
strtointdef (const S:สตริง;ค่าเริ่มต้น:
longint):longint; แปลงสตริง S เป็นตัวเลข หากไม่สามารถแปลงเป็นตัวเลขได้ ฟังก์ชัน strtointdef จะส่งกลับค่าของค่าเริ่มต้นของพารามิเตอร์
strtotime (const S:string):Tdatetime แปลงสตริง S เป็นค่า TDATETIME S มีรูปแบบ HH:MM:SS[AM|PM]
timetostr (เวลา: Tdatetime): สตริง; แปลงพารามิเตอร์ TIME เป็นสตริง รูปแบบของสตริงผลลัพธ์การแปลงสัมพันธ์กับการตั้งค่าค่าคงที่ที่เกี่ยวข้องกับเวลาของระบบ
◇[DELPHI] โปรแกรมไม่ปรากฏใน ALT+CTRL+DEL
เพิ่มการประกาศหลังการใช้งาน:
ฟังก์ชั่น RegisterServiceProcess (dwProcessID, dwType: Integer): จำนวนเต็ม; stdcall; ภายนอก 'KERNEL32.DLL';
RegisterServiceProcess(GetCurrentProcessID, 1);//Hide
RegisterServiceProcess(GetCurrentProcessID, 0);//Display
มองไม่เห็นด้วย ALT+DEL+CTRL
โปรแกรม ◇[DELPHI] ไม่ปรากฏในทาสก์บาร์
ใช้หน้าต่าง
var
ExtendedStyle : จำนวนเต็ม;
เริ่ม
แอปพลิเคชันเริ่มต้น;
//================================================ ==============
ExtendedStyle := GetWindowLong (Application.Handle, GWL_EXSTYLE);
SetWindowLong (Application.Handle, GWL_EXSTYLE, ExtendedStyle หรือ WS_EX_TOOLWINDOW
และไม่ใช่ WS_EX_APPWINDOW);
//================================================ ===============
แอปพลิเคชัน CreateForm (TForm1, Form1);
แอปพลิเคชันเรียกใช้;
จบ.
◇[DELPHI]วิธีตรวจสอบว่าเครือข่ายแบบเรียกผ่านสายโทรศัพท์เปิดหรือปิดอยู่
ถ้า GetSystemMetrics(SM_NETWORK) AND $01 = $01 แล้ว
showmessage('ออนไลน์!')
else showmessage('ไม่ออนไลน์!');
◇[DELPHI]แปลง IP เป็นชื่อโดเมน
ฟังก์ชัน GetDomainName(Ip:string):string;
var
pH: PHostent;
ข้อมูล:twsadata;
ii:dWord;
เริ่ม
WSAStartup ($101, ข้อมูล);
ii:=inet_addr(pchar(ip));
pH:=gethostbyaddr(@ii,ขนาดของ(ii),PF_INET);
ถ้า (ph<>ไม่มี) แล้ว
ผลลัพธ์:=pH.h_name
อื่น
ผลลัพธ์:='';
WSACleanup;
จบ;
◇[DELPHI] วิธีจัดการกับ "เมนูคลิกขวา"
var
reg: การลงทะเบียน;
เริ่ม
reg := TRegistry.Create;
reg.RootKey:=HKEY_CLASSES_ROOT;
reg.OpenKey('*/shell/check/command', จริง);
reg.WriteString('', '"' + application.ExeName + '" "%1"');
reg.CloseKey;
reg.OpenKey('*/shell/diary', false);
reg.WriteString('', 'การดำเนินการ(&C)');
reg.CloseKey;
reg.ฟรี;
showmessage('เสร็จสิ้น!');
จบ;
◇[DELPHI]ส่งค่าคีย์เสมือน ctrl V
ขั้นตอนการส่งวาง;
เริ่ม
keybd_event(VK_Control, MapVirtualKey(VK_Control, 0), 0, 0);
keybd_event(อ๊อด('V'), MapVirtualKey(อ๊อด('V'), 0), 0, 0);
keybd_event(อ๊อด('V'), MapVirtualKey(อ๊อด('V'), 0), KEYEVENTF_KEYUP, 0);
keybd_event(VK_Control, MapVirtualKey(VK_Control, 0), KEYEVENTF_KEYUP, 0);
จบ;
◇[DELPHI]อักษรระบุไดรฟ์ของออปติคัลไดรฟ์ปัจจุบัน
ขั้นตอน getcdrom (var cd: char);
var
STR:สตริง;
ไดรเวอร์:จำนวนเต็ม;
คนขับ:ถ่าน;
ฉัน, อุณหภูมิ: จำนวนเต็ม;
เริ่ม
ไดรเวอร์:=getlogicdrives;
อุณหภูมิ:=(1 และไดรเวอร์);
สำหรับ i:=0 ถึง 26 ทำ
เริ่ม
ถ้า temp=1 แล้ว
เริ่ม
ไดรเวอร์:=char(i+integer('a'));
str:=ไดรเวอร์+':';
ถ้า getdrivetype(pchar(str))=drive_cdrom แล้ว
เริ่ม
ซีดี:=ไดรเวอร์;
ออก;
จบ;
จบ;
ไดรเวอร์:=(ไดรเวอร์ shr 1);
อุณหภูมิ:=(1 และไดรเวอร์);
จบ;
จบ;
◇[DELPHI]การเข้ารหัสและถอดรหัสอักขระ
ฟังก์ชั่น cryptstr (const s: string; stype: dword): string;
var
ฉัน: จำนวนเต็ม;
fkey: จำนวนเต็ม;
เริ่ม
ผลลัพธ์:='';
ประเภทกรณีของ
0: เซ็ตพาส;
เริ่ม
สุ่ม;
fkey := สุ่ม($ff);
สำหรับ i:=1 ถึงความยาวทำ
ผลลัพธ์ := ผลลัพธ์+chr( ord(s[i]) xor i xor fkey);
ผลลัพธ์ := ผลลัพธ์ + ถ่าน (fkey);
จบ;
1:getpass
เริ่ม
fkey := ord(s[ความยาว]);
สำหรับ i:=1 ถึงความยาว - 1 ทำ
ผลลัพธ์ := ผลลัพธ์+chr( ord(s[i]) xor i xor fkey);
จบ;
จบ;
□◇[DELPHI] ส่งคีย์จำลองไปยังแอปพลิเคชันอื่น
var
h:THจัดการ;
เริ่ม
h := FindWindow(ไม่มี, 'ชื่อแอปพลิเคชัน');
PostMessage(h, WM_KEYDOWN, VK_F9, 0);//ส่งคีย์ F9
จบ;
□◇[DELPHI] รูปแบบข้อมูล DAO ที่ DELPHI รองรับ
td.Fields.Append(td.CreateField ('dbBoolean',dbBoolean,0));
td.Fields.ผนวก(td.CreateField ('dbByte',dbByte,0));
td.Fields.ผนวก(td.CreateField ('dbInteger',dbInteger,0));
td.Fields.ผนวก(td.CreateField ('dbLong',dbLong,0));
td.Fields.ผนวก(td.CreateField ('dbCurrency',dbCurrency,0));
td.Fields.ผนวก(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.ผนวก(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 แล้ว ควรมีสองรายการใน "System DSN" ใน ODBC
แหล่งข้อมูล อันหนึ่งคือ MQIS และอีกอันคือ LocalSever เลือกอันใดอันหนึ่งแล้วคลิกปุ่มกำหนดค่า ฉันไม่รู้จัก SQL7.0 ของคุณ
มีการติดตั้งบนเครื่องท้องถิ่นหรือไม่ หากติดตั้ง ให้ดำเนินการขั้นตอนถัดไปโดยตรง
เซิร์ฟเวอร์ จากนั้นดำเนินการขั้นตอนถัดไปและกรอก ID ล็อกอินและรหัสผ่าน (ID ล็อกอินและรหัสผ่านเป็นตัวเลือกผู้ใช้ใน SQL7.0
ตั้งอยู่ใจกลางเมือง)
ขั้นตอนที่สองคือการกำหนดค่า BDE:
เปิด BDE ของ Delphi แล้วคลิก MQIS หรือ LocalServer คุณจะได้รับแจ้งให้ระบุชื่อผู้ใช้และรหัสผ่าน
ชื่อผู้ใช้และรหัสผ่าน ODBC เหมือนกัน เพียงกรอกลงไป
ขั้นตอนที่สามคือการกำหนดค่าโปรแกรม:
หากคุณใช้ TTable ให้เลือก MQIS หรือ LocalServer ใน DatabaseName ของ TTable จากนั้นเลือก
เพียงเลือกการขายใน TableName จากนั้นเปลี่ยน Active เป็น True Delphi จะปรากฏขึ้นกล่องโต้ตอบพร้อมท์และกรอกชื่อผู้ใช้
ชื่อและรหัสผ่าน
หากคุณใช้ TQuery ให้คลิกขวาที่ TQuery แล้วคลิก "SQL Builder" ซึ่งได้รับการกำหนดค่าผ่านอินเทอร์เฟซ
คำสั่ง SQL หรือกรอกคำสั่ง SQL ใน SQL ของ TQuery สุดท้ายอย่าลืมเปลี่ยน Active เป็น True
นอกจากนี้ยังสามารถกำหนดค่า 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]เกี่ยวกับการแยกย่อยและการแปลงรูปแบบวันที่
var ปี,เดือน,วัน:word;now2:Tdatatime;
now2:=วันที่();
ถอดรหัส (ตอนนี้ 2, ปี, เดือน, วัน);
lable1.Text :=inttostr(ปี)+'ปี'+inttostr(เดือน)+'เดือน'+inttostr(วัน)+'วัน';
◇[DELPHI]วิธีตรวจสอบโหมดการเชื่อมต่อเครือข่ายปัจจุบัน
ผลการพิจารณาคือโหมด MODEM, LAN หรือพร็อกซีเซิร์ฟเวอร์
ใช้วินิเน็ต;
ประเภทการเชื่อมต่อฟังก์ชัน :boolean;
ธง var: 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('โมเด็มไม่ว่าง');
จบ;
จบ;
จบ;
◇[DELPHI]วิธีตรวจสอบว่าสตริงเป็นที่อยู่อีเมลที่ถูกต้องหรือไม่
ฟังก์ชั่น IsEMail (อีเมล: สตริง): บูลีน;
var s: String; ETpos: จำนวนเต็ม;
เริ่ม
ETpos:= pos('@', อีเมล);
ถ้า ETpos > 1 แล้ว
เริ่ม
s:= สำเนา(อีเมล,ETpos+1,ความยาว(อีเมล));
ถ้า (pos('.', s) > 1) และ (pos('.', s) < length(s)) แล้ว
ผลลัพธ์:= จริง อย่างอื่น ผลลัพธ์:= เท็จ;
จบ
อื่น
ผลลัพธ์:= เท็จ;
จบ;
◇[DELPHI] ตรวจสอบว่าระบบเชื่อมต่อกับอินเทอร์เน็ตหรือไม่
จำเป็นต้องแนะนำฟังก์ชัน InetIsOffline ใน URL.DLL
การประกาศฟังก์ชั่นคือ:
ฟังก์ชัน InetIsOffline (แฟล็ก: จำนวนเต็ม): บูลีน; stdcall ภายนอก;
จากนั้นคุณสามารถเรียกใช้ฟังก์ชันเพื่อตรวจสอบว่าระบบเชื่อมต่อกับอินเทอร์เน็ตหรือไม่
ถ้า InetIsOffline (0) ดังนั้น ShowMessage ('ไม่ได้เชื่อมต่อ!')
อย่างอื่น ShowMessage('เชื่อมต่อแล้ว!');
ฟังก์ชันนี้จะคืนค่า TRUE หากระบบภายในเครื่องไม่ได้เชื่อมต่อกับอินเทอร์เน็ต
ที่แนบมา:
ระบบส่วนใหญ่ที่ใช้ IE หรือ OFFICE97 จะมี DLL นี้สำหรับการโทร
InetIsออฟไลน์
BOOL InetIsออฟไลน์(
DWORD dwFlags,
-
◇[DELPHI] เล่นและหยุดไฟล์ WAV ชั่วคราวได้อย่างง่ายดาย
ใช้ระบบ mm;
ฟังก์ชั่น PlayWav (const FileName: string): Boolean;
เริ่ม
ผลลัพธ์ := PlaySound(PChar(ชื่อไฟล์), 0, SND_ASYNC);
จบ;
ขั้นตอน StopWav;
var
บัฟเฟอร์: อาร์เรย์ [0..2] ของถ่าน;
เริ่ม
บัฟเฟอร์ [0] := #0;
PlaySound (บัฟเฟอร์, 0, SND_PURGE);
จบ;
◇[DELPHI] รับข้อมูล BIOS ของเครื่อง
ด้วย Memo1.Lines ทำ
เริ่ม
เพิ่ม('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;
ฟังก์ชั่น DownloadFile (ที่มา, ปลายทาง: สตริง): บูลีน;
เริ่ม
พยายาม
ผลลัพธ์ := UrlDownloadToFile(nil, PChar(source), PChar(Dest), 0, nil) = 0;
ยกเว้น
ผลลัพธ์ := เท็จ;
จบ;
จบ;
ถ้า DownloadFile('http://www.borland.com/delphi6.zip, 'c:/kylix.zip') แล้ว
ShowMessage('ดาวน์โหลดสำเร็จ')
else ShowMessage('ดาวน์โหลดไม่สำเร็จ')
◇[DELPHI] แก้ไขที่อยู่ IP ของเซิร์ฟเวอร์
ใช้ winsock
ฟังก์ชัน IPAddrToName(IPAddr : String): สตริง;
var
SockAddrIn: TSockAddrIn;
โฮสต์เอนท์: 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);
ถ้า HostEnt<>ไม่มี ผลลัพธ์:=StrPas(Hostent^.h_name) else ผลลัพธ์:='';
จบ;
◇[DELPHI] รับการเชื่อมต่อในทางลัด
ฟังก์ชั่น ExeFromLink (const linkname: string): 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);
ถ้า z > 32 แล้ว
ผลลัพธ์:= StrPas(ExeName)
อื่น
ผลลัพธ์:= '';
StrDispose(FDir);
StrDispose(FName);
StrDispose(ExeName);
จบ;
◇[DELPHI]ควบคุมการทำให้ TCombobox สมบูรณ์โดยอัตโนมัติ
{คุณสมบัติ 'เรียงลำดับ' ของ TCombobox ให้เป็นจริง }
var LastKey: Word; //ตัวแปรทั่วโลก
//เหตุการณ์ OnChange ของ TCombobox
ขั้นตอน TForm1.AutoCompleteChange (ผู้ส่ง: TObject);
var
SearchStr: สตริง;
retVal: จำนวนเต็ม;
เริ่ม
SearchStr := (ผู้ส่งเป็น TCombobox) ข้อความ;
ถ้า LastKey <> VK_BACK ดังนั้น // backspace: VK_BACK หรือ $08
เริ่ม
retVal := (ผู้ส่งเป็น TCombobox).ดำเนินการ(CB_FINDSTRING, -1, LongInt(PChar(SearchStr)));
ถ้า retVal > CB_Err แล้ว
เริ่ม
(ผู้ส่งเป็น TCombobox).ItemIndex := retVal;
(ผู้ส่งเป็น TCombobox).SelStart := ความยาว(SearchStr);
(ผู้ส่งเป็น TCombobox).SelLength :=
(ความยาว((ผู้ส่งเป็น TCombobox).ข้อความ) - ความยาว(SearchStr));
สิ้นสุด; // retVal > CB_Err
สิ้นสุด; // LastKey <> VK_BACK
LastKey := 0; // รีเซ็ต LastKey
จบ;
//เหตุการณ์ OnKeyDown ของ TCombobox
ขั้นตอน TForm1.AutoCompleteKeyDown (ผู้ส่ง: TObject; คีย์ var: Word;
กะ: TShiftState);
เริ่ม
LastKey := คีย์;
จบ;
◇[DELPHI]วิธีล้างไดเร็กทอรี
ฟังก์ชั่น EmptyDirectory(TheDirectory :String ; Recursive : Boolean) :
บูลีน;
var
SearchRec : TSearchRec;
Res : จำนวนเต็ม;
เริ่ม
ผลลัพธ์ := เท็จ;
TheDirectory := NormalDir(TheDirectory);
ความละเอียด := FindFirst(TheDirectory + '*.*', faAnyFile, SearchRec);
พยายาม
ในขณะที่ Res = 0 ทำ
เริ่ม
ถ้า (SearchRec.Name <> '.') และ (SearchRec.Name <> '..') แล้ว
เริ่ม
ถ้า ((SearchRec.Attr และ 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 (ผลลัพธ์, Dir.Size);
ถ้า (Dir.Attr ใน [faDirectory]) และ (Dir.Name[1] <> '.') แล้ว
Inc (ผลลัพธ์, GetDirectorySize (เส้นทาง + Dir.Name + '/*.*'));
Ret := Sysutils.FindNext(Dir);
จบ;
ในที่สุด
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 ให้กับชื่อที่แสดงใน "ลบรายการแอปพลิเคชัน" เช่น 'เล็งถอนการติดตั้งหนึ่ง';
กำหนดสตริง UninstallString ให้กับคำสั่งการลบที่ดำเนินการ เช่น C:/WIN97/uninst.exe -f "C:/TestPro/aimTest.isu"
◇[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
ก, ฉัน: จำนวนเต็ม;
รหัสข้อผิดพลาด: จำนวนเต็ม;
netres:array[0..1023] ของ netresource;
แจกแจง: จัดการ;
รายการ:dword;
ขนาดบัฟเฟอร์:dword;
ส:สตริง;
รายการของฉัน: รายการรายการ;
รายการของฉัน:tlistitem;
โดเมนทั้งหมด: tstrings;
start //listcomputer เป็น listview สำหรับแสดงรายการคอมพิวเตอร์ทั้งหมด controlcenter เป็นรูปแบบหนึ่ง
alldomain:=tstringlist.Create;
ด้วย netres[0] จะเริ่มต้น
dwscope :=RESOURCE_GLOBALNET;
dwtype :=RESOURCETYPE_ANY;
dwdisplaytype :=ทรัพยากร CEDISPLAYTYPE_DOMAIN;
ใช้งาน :=RESOURCEUSAGE_CONTAINER;
lplocalname :=ไม่มี;
lpremotename :=ไม่มี;
lpcomment :=ไม่มี;
lpprovider :=ไม่มี;
จบ; // รับทุกสาขา
รหัสข้อผิดพลาด:=wnetopenenum(RESOURCE_GLOBALNET,RESOURCETYPE_ANY,RESOURCEUSAGE_CONTAINER,@netres[0],enumhandle);
ถ้า errcode=NO_ERROR ให้เริ่มต้น
รายการ:=1024;
ขนาดบัฟเฟอร์:=ขนาดของ(netres);
รหัสข้อผิดพลาด:=wnetenumresource(enumhandle,enumentries,@netres[0],ขนาดบัฟเฟอร์);
จบ;
ก:=0;
รายการของฉัน :=controlcenter.lstcomputer.Items;
mylistitems.Clear;
ในขณะที่ (string(netres[a].lpprovider)<>'') และ (errcode=NO_ERROR) ทำ
เริ่ม
alldomain.Add (netres[a].lpremotename);
ก:=ก+1;
จบ;
wnetcloseenum(ระบุตัวเลข);
// รับคอมพิวเตอร์ทั้งหมด
รายการของฉัน :=controlcenter.lstcomputer.Items;
mylistitems.Clear;
สำหรับ i:=0 ถึง alldomain.Count-1 ทำ
เริ่ม
ด้วย netres[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);
ถ้า errcode=NO_ERROR แล้ว
เริ่ม
รายการแจงนับ:=1024;
BufferSize:=ขนาดของ(NetRes);
ErrCode:=WNetEnumResource(EnumHandle,EnumEntries,@NetRes[0],BufferSize);
จบ;
ก:=0;
ในขณะที่ (string(netres[a].lpprovider)<>'') และ (errcode=NO_ERROR) ทำ
เริ่ม
mylistitem :=mylistitems.Add;
รายการของฉัน ImageIndex :=0;
mylistitem.Caption :=ตัวพิมพ์ใหญ่(stringreplace(string(NetRes[a].lpremotename),'//','',[rfReplaceAll]));
ก:=ก+1;
จบ;
wnetcloseenum(ระบุตัวเลข);
จบ;
จบ;
◇[DELPHI] รับไดเร็กทอรีที่แชร์บนคอมพิวเตอร์บางเครื่อง
ขั้นตอน getsharefolder (const ชื่อคอมพิวเตอร์: string);
var
รหัสข้อผิดพลาด,a:จำนวนเต็ม;
netres:array[0..1023] ของ netresource;
แจกแจง: จัดการ;
รายการบัฟเฟอร์ขนาด: dword;
ส:สตริง;
รายการของฉัน: รายการรายการ;
รายการของฉัน:tlistitem;
mystrings:tstringlist;
เริ่ม
ด้วย netres[0] จะเริ่มต้น
dwscope :=RESOURCE_GLOBALNET;
dwtype :=RESOURCETYPE_DISK;
dwdisplaytype :=ทรัพยากร CEDISPLAYTYPE_SHARE;
ใช้งาน :=RESOURCEUSAGE_CONTAINER;
lplocalname :=ไม่มี;
lpremotename :=pchar(ชื่อคอมพิวเตอร์);
lpcomment :=ไม่มี;
lpprovider :=ไม่มี;
สิ้นสุด; // รับโหนดรูท
รหัสข้อผิดพลาด:=wnetopenenum(RESOURCE_GLOBALNET,RESOURCETYPE_DISK,RESOURCEUSAGE_CONTAINER,@netres[0],enumhandle);
ถ้า errcode=NO_ERROR แล้ว
เริ่ม
รายการแจงนับ:=1024;
BufferSize:=ขนาดของ(NetRes);
ErrCode:=WNetEnumResource(EnumHandle,EnumEntries,@NetRes[0],BufferSize);
จบ;
wnetcloseenum(ระบุตัวเลข);
ก:=0;
รายการของฉัน:=controlcenter.lstfile.Items;
mylistitems.Clear;
ในขณะที่ (string(netres[a].lpprovider)<>'') และ (errcode=NO_ERROR) ทำ
เริ่ม
ด้วย mylistitems ทำ
เริ่ม
รายการของฉัน:=เพิ่ม;
รายการของฉัน ImageIndex :=4;
mylistitem.Caption :=extractfilename(netres[a].lpremotename);
จบ;
ก:=ก+1;
จบ;
จบ;
◇[DELPHI] รับหมายเลขซีเรียลของฮาร์ดไดรฟ์
var SerialNum : pdword; a, b : dword; บัฟเฟอร์ : อาร์เรย์ [0..255] ของถ่าน;
เริ่ม
ถ้า GetVolumeInformation('c:/', Buffer, SizeOf(Buffer), SerialNum, a, b, nil, 0) แล้วก็ Label1.Caption := IntToStr(SerialNum^);
จบ;
◇[DELPHI]MEMO การเปลี่ยนหน้าอัตโนมัติ
ขั้นตอน ScrollMemo (บันทึก: TMemo; ทิศทาง: ถ่าน);
เริ่ม
ทิศทางกรณีของ
'd': เริ่มต้น
SendMessage (Memo.Handle, { HWND ของการควบคุมบันทึก)
WM_VSCROLL, { ข้อความ Windows }
SB_PAGEDOWN, { คำสั่งเลื่อน }
0) { ไม่ได้ใช้ }
จบ;
'คุณ' : เริ่ม
SendMessage (Memo.Handle, { HWND ของการควบคุมบันทึก)
WM_VSCROLL, { ข้อความ Windows }
SB_PAGEUP, { คำสั่งเลื่อน }
0); { ไม่ได้ใช้ }
จบ;
จบ;
จบ;
ขั้นตอน TForm1.Button1Click (ผู้ส่ง: TObject);
เริ่ม
ScrollMemo(Memo1,'d'); //เลื่อนหน้าขึ้น
จบ;
ขั้นตอน TForm1.Button1Click (ผู้ส่ง: TObject);
เริ่ม
ScrollMemo(Memo1,'u'); //ปิดหน้า
จบ;
◇[DELPHI]กด Enter ไปยังตำแหน่งถัดไปใน DBGrid (ปุ่ม Tab)
ขั้นตอน TForm1.DBGrid1KeyPress (ผู้ส่ง: TObject; คีย์ var: Char);
เริ่ม
ถ้าคีย์ = #13 แล้ว
ถ้า DBGrid1.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-->เปิด (เลือก *.dpk ในกล่องรายการแบบเลื่อนลง)-->ติดตั้ง
3. สำหรับแพ็คเกจควบคุมที่มีไฟล์ *.dpl ให้ติดตั้งแพ็คเกจ-->เพิ่ม-->ชื่อไฟล์ dpl
4. หากปุ่มติดตั้งด้านบนไม่ถูกต้อง ให้ลองใช้ปุ่มคอมไพล์
5. หากเป็น run time lib ให้เพิ่มลงใน runtimepackes ภายใต้แพ็คเกจภายใต้ตัวเลือก
หากระบบแจ้งว่าไม่พบไฟล์ในระหว่างการคอมไพล์ มักเป็นเพราะไดเร็กทอรีการติดตั้งของตัวควบคุมไม่อยู่ในไดเร็กทอรี Lib ของ Delphi มีสองวิธีในการแก้ปัญหา:
1. คัดลอกไฟล์การติดตั้งดั้งเดิมลงในไดเร็กทอรี Lib ของ delphi
2. หรือเพิ่มเส้นทางรหัสต้นฉบับของตัวควบคุมไปยังไดเร็กทอรี Delphi Lib ในเครื่องมือ -> ตัวเลือกสภาพแวดล้อม
◇[DELPHI] ลบไดเร็กทอรีทั้งหมด (deltree)
ขั้นตอน TForm1.DeleteDirectory (strDir:String);
var
sr: TSearchRec;
FileAttrs: จำนวนเต็ม;
strfilename:สตริง;
strPth:สตริง;
เริ่ม
strpth:=Getcurrentdir();
FileAttrs := faAnyFile;
ถ้า FindFirst(strpth+'/'+strdir+'/*.*', FileAttrs, sr) = 0 แล้ว
เริ่ม
ถ้า (sr.Attr และ FileAttrs) = sr.Attr แล้ว
เริ่ม
strfilename:=sr.ชื่อ;
หากมีไฟล์อยู่ (strpth+'/'+strdir+'/'+strfilename) แล้ว
ลบไฟล์(strpth+'/'+strdir+'/'+strfilename);
จบ;
ในขณะที่ FindNext(sr) = 0 ทำ
เริ่ม
ถ้า (sr.Attr และ FileAttrs) = sr.Attr แล้ว
เริ่ม
strfilename:=sr.name;
หากมีไฟล์อยู่ (strpth+'/'+strdir+'/'+strfilename) แล้ว
ลบไฟล์(strpth+'/'+strdir+'/'+strfilename);
จบ;
จบ;
ค้นหาปิด(sr);
ลบออก(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): string;
var
serialnum: pdword;
A, B: DWORD;
บัฟเฟอร์: อาร์เรย์ [0..255] ของถ่าน;
เริ่ม
ผลลัพธ์: = "";
ถ้า getVolumeInformation (pchar (diskchar+":/"), บัฟเฟอร์, sizeof (บัฟเฟอร์), serialnum,
a, b, nil, 0) จากนั้น
ผลลัพธ์: = inttoStr (serialnum^);
จบ;
◇ [อินเทอร์เน็ต] ทักษะที่ครอบคลุม CSS ทั่วไป
1. P: ตัวอักษรตัวแรก {ขนาดตัวอักษร: 300%;
2. <link rel = stylesheet href = "basics.css" title = "Contemporary"> // เชื่อมต่อแผ่นสไตล์ภายนอก
3. ฝังแผ่นสไตล์
<style type = "text/css" สื่อ = หน้าจอ>
-
@Import url (http://www.htmlhelp.com/style.css); // นำเข้ารูปแบบภายนอกภายนอก
@import url (/stylesheets/punk.css); // เหมือนกับข้างบน
ร่างกาย {พื้นหลัง: url (foo.gif) สีแดง;
.punk {สี: มะนาว; พื้นหลัง: #ff80c0} // ดู 5 สำหรับการอ้างอิง
#wdg97 {ตัวอักษรขนาด: ใหญ่กว่า} // ดู 6 สำหรับการอ้างอิง
-
</style>
4. <p style = "color: red; font-family: '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. รายการทรัพย์สิน
รูปแบบตัวอักษร: แบบอักษร: [Normal |
ขนาดตัวอักษร: ขนาดตัวอักษร: XX-SMALL |
การตกแต่งข้อความ: การตกแต่งข้อความ: [ขีดเส้นใต้ ||
การแปลงข้อความ: การเปลี่ยนข้อความ: [ไม่มี
สีพื้นหลัง: พื้นหลังสี: [<color> |
ภาพพื้นหลัง: ภาพพื้นหลัง: [<urls> |
Line-Height: [ปกติ |
สไตล์ชายแดน: ไม่มี
Float: Float: [ซ้าย |
8. หน่วยความยาว
หน่วยสัมพัทธ์:
em (em, ความสูงของตัวอักษรขององค์ประกอบ)
Ex (X-height, ความสูงของตัวอักษร "x")
PX (พิกเซลสัมพันธ์กับความละเอียดของหน้าจอ)
ความยาวสัมบูรณ์:
ใน (นิ้ว 1 นิ้ว = 2.54 เซนติเมตร)
CM (เซนติเมตร 1 เซนติเมตร = 10 มิลลิเมตร)
มม. (เมตร)
PT (จุด, 1 point = 1/72 นิ้ว)
PC (PA, 1 PA = 12 คะแนน)
◇ [Delphi] ขั้นตอนสั้น ๆ สำหรับการสร้าง VCL
1. สร้างกิจกรรมเมธอดแอตทริบิวต์ส่วนประกอบ
(สร้างหน่วยไลบรารีสืบทอดเป็นประเภทใหม่เพิ่มคุณสมบัติวิธีการกิจกรรมส่วนประกอบลงทะเบียนและสร้างไฟล์แพ็คเกจ)
2. การประมวลผลข้อความ
3. การจัดการการจัดการ
4. ส่วนที่มองเห็นได้
◇ [Delphi] การโหลดไลบรารีลิงก์แบบไดนามิก
การโหลดแบบคงที่: ชื่อขั้นตอน; ภายนอก 'lib.dll';
การโหลดแบบไดนามิก: ด้ามจับ VAR: thandle;
มือจับ: = loadlibrary ('lib.dll');
ถ้าจัดการ <> 0 แล้ว
เริ่ม
{dosomething}
FreeLibrary (มือจับ);
จบ;
◇ [Delphi] ตัวแปรตัวชี้และที่อยู่
var x, y: จำนวนเต็ม; p:^จำนวนเต็ม; // ตัวชี้ไปยังตัวแปรจำนวนเต็ม
x: = 10;
p: =@x; // ที่อยู่ของตัวแปร x
y: = p^; // กำหนดตัวชี้ p เป็น y
@@ procedure // ส่งคืนที่อยู่หน่วยความจำของตัวแปรกระบวนการ
◇ [Delphi] กำหนดว่าตัวละครเป็นตัวละครจีน
bytetype ('คุณเป็นอย่างไรบ้างฮ่าฮ่า', 1) = mbleadbyte // เป็นตัวละครตัวแรก
bytetype ('คุณเป็นอย่างไรบ้างฮ่าฮ่า', 2) = mbtrailbyte // เป็นอักขระที่สอง
Bytetype ('คุณเป็นอย่างไรบ้างฮ่าฮ่า', 5) = mbsinglebyte // ไม่ใช่ตัวละครจีน
◇ [Delphi] การทำงานของบันทึกบันทึก
memo1.lines.delete (0) // ลบบรรทัด 1
memo1.SelStart: = 10 // ค้นหา 10 ไบต์
◇ [Delphi] รับรหัสภายในอักขระสองไบต์
ฟังก์ชั่น getit (s: string): จำนวนเต็ม;
เริ่ม
ผลลัพธ์: = byte (s [1]) * $ 100 + ไบต์ (s [2]);
จบ;
ใช้: getIt ('การคำนวณ') // $ bcc6 ซึ่งเป็นทศนิยม 48326
◇ [Delphi] การโทรเพิ่มขั้นตอนการจัดเก็บข้อมูล
ขั้นตอนที่เก็บไว้มีดังนี้:
สร้างขั้นตอน addRecord (
Record1 Varchar (10)
Record2 Varchar (20)
-
เช่น
เริ่ม
แทรกลงใน tableName (field1, field2) ค่า (: record1 ,: record2)
จบ
ดำเนินการตามขั้นตอนที่เก็บไว้:
ดำเนินการตามขั้นตอน addRecord ("urrecord1", "urrecord2"))
◇ [delphi] บันทึกไฟล์ลงในฟิลด์ Blob
ฟังก์ชั่น blobcontentToString (ชื่อไฟล์ const: สตริง): สตริง;
เริ่ม
ด้วย tfilestream.create (ชื่อไฟล์, fmopenread) ทำ
พยายาม
setLength (ผลลัพธ์ขนาด);
อ่าน (ตัวชี้ (ผลลัพธ์)^, ขนาด);
ในที่สุด
ฟรี;
จบ;
จบ;
// บันทึกฟิลด์
เริ่ม
if (opendialog1.execute) จากนั้น
เริ่ม
sfilename: = opendialog1.filename;
Adotable1.edit;
Adotable1.fieldByName ('visio'). assTring: = blobContentToString (ชื่อไฟล์);
Adotable1.post;
จบ;
◇ [Delphi] คัดลอกไฟล์ทั้งหมดไปยังคลิปบอร์ด
ใช้ shlobj, activex, clipbrd;
โพรซีเดอร์ TFORM1.COPYTOCLIPBRD (ชื่อ FILENAME: String);
var
FE: TFORMATETC;
ปานกลาง: TSTGMedium;
dropfiles: pdropfiles;
pfile: pchar;
เริ่ม
fe.cfformat: = cf_hdrop;
Fe.dwaspect: = dvaspect_content;
Fe.tymed: = tymed_hglobal;
medium.hglobal: = globalalloc (gmem_share หรือ gmem_zeroinit, sizeof (tdropfiles)+ความยาว (ชื่อไฟล์) +1);
ถ้า medium.hglobal <> 0 แล้วเริ่มต้น
Medium.tymed: = tymed_hglobal;
dropfiles: = globallock (medium.hglobal);
พยายาม
dropfiles^.pfiles: = sizeof (tdropfiles);
dropfiles^.fwide: = false;
Longint (pfile): = longint (dropfiles)+sizeof (tdropfiles);
strpcopy (pfile, ชื่อไฟล์);
Inc (pfile, ความยาว (ชื่อไฟล์) +1);
pfile^: = #0;
ในที่สุด
GlobalUnlock (Medium.hglobal);
จบ;
clipboard.setashandle (cf_hdrop, medium.hglobal);
จบ;
จบ;
◇ [Delphi] แสดงรายการกระบวนการทำงานปัจจุบัน
ใช้ tlhelp32;
ขั้นตอน TForm1.Button1Click (ผู้ส่ง: TObject);
var lppe: tprocessentry32;
พบ: บูลีน;
Hand: Thandle;
เริ่ม
มือ: = createToolHelp32SnapShot (Th32CS_SNAPALL, 0);
พบ: = process32first (มือ, lppe);
ในขณะที่พบ
เริ่ม
listbox1.items.add (strpas (lppe.szexefile));
พบ: = process32NEXT (Hand, LPPE);
จบ;
จบ;
◇ [Delphi] สร้างตารางใหม่ Table2 ตาม bdetable1
ตารางที่ 2: = ttable.create (ไม่มี);
พยายาม
table2.databasename: = table1.databasename;
table2.fielddefs.assign (ตารางที่ 1.fielddefs);
table2.indexdefs.assign (ตารางที่ 1.indexdefs);
table2.tablename: = 'new_table';
table2.createtable ();
ในที่สุด
table2.free ();
จบ;
◇ [Delphi] วิธีที่ดีที่สุดในการทำความเข้าใจการสร้างและการอ้างอิง DLL
// ดูที่แหล่ง DLL (ไฟล์-> ใหม่-> dll) ก่อน
โครงการห้องสมุด 1;
การใช้งาน
Sysutils, ชั้นเรียน;
ฟังก์ชั่นเพิ่มเติม (f: จำนวนเต็ม; s: จำนวนเต็ม): จำนวนเต็ม; ส่งออก;
เริ่ม
makeasum: = f+s;
จบ;
การส่งออก
เพิ่ม;
จบ.
// โทร (ในโครงการของคุณ)
การดำเนินการ
ฟังก์ชั่นเพิ่มเติม (f: จำนวนเต็ม; s: จำนวนเต็ม): จำนวนเต็ม; ไกล; ภายนอก 'project1'; // การประกาศ
{การโทรคือเพิ่ม (2,4);
◇ [Delphi] อ่านขนาดของโปรแกรมแบบไดนามิกแบบไดนามิก
ฟังก์ชั่น gesselfsize: จำนวนเต็ม;
var
F: ไฟล์ของไบต์;
เริ่ม
FileMode: = 0;
กำหนดไฟล์ (f, application.exename);
รีเซ็ต (f);
ผลลัพธ์: = filesize (f); // หน่วยคือไบต์
ปิดไฟล์ (f);
จบ;
◇ [Delphi] อ่านข้อมูล BIOS
ด้วย memo1.lines ทำ
เริ่ม
เพิ่ม ('mainboardbiosname:'+^i+string (pchar (ptr ($ fe061))));
เพิ่ม ('mainboardbioscopyright:'+^i+string (pchar (ptr ($ fe091))));
เพิ่ม ('mainboardbiosdate:'+^i+string (pchar (ptr ($ ffff5))));
เพิ่ม ('mainboardbiosserialno:'+^i+สตริง (pchar (ptr ($ fec71))));
จบ;
◇ [Delphi] สร้างนามแฝง MSSQL แบบไดนามิก
ขั้นตอน TForm1.Button1Click (ผู้ส่ง: TObject);
var mylist: tstringlist;
เริ่ม
mylist: = tstringlist.create;
พยายาม
กับ mylist ทำ
เริ่ม
เพิ่ม ('ชื่อเซิร์ฟเวอร์ = 210.242.86.2');
เพิ่ม ('ชื่อฐานข้อมูล = db');
เพิ่ม ('ชื่อผู้ใช้ = SA');
จบ;
Session1.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 ('รหัสผ่าน =');
ฐานข้อมูล 1.Connected: = true;
จบ;
จบ;
ขั้นตอน TForm1.Button2Click (ผู้ส่ง: TObject);
เริ่ม
ฐานข้อมูล 1.Connected: = false;
Session1.deletealias ('testsql');
จบ;
◇ [Delphi] เล่นเพลงประกอบ
mmsystem ใช้
// เล่นเพลง
McIsendString ('Open E: /1.mid ประเภท Sequencer นามแฝง nn', '', 0, 0);
McIsendString ('เล่น NN จาก 0', '', 0, 0);
McIsendString ('Close Animation', '', 0, 0);
จบ;
// หยุดเล่น
McIsendString ('Open E: /1.mid ประเภท Sequencer นามแฝง nn', '', 0, 0);
McIsendString ('Stop Nn', '', 0, 0);
McIsendString ('Close Animation', '', 0, 0);
◇ [Delphi] รหัสตัวอย่างสำหรับอินเทอร์เฟซและคลาส
พิมพ์ {อินเตอร์เฟสและการประกาศคลาส: ความแตกต่างคือสมาชิกข้อมูลวิธีการที่ไม่ใช่สาธารณะและวิธีการสาธารณะไม่ได้ใช้คำหลักสาธารณะในอินเทอร์เฟซ}
isample = อินเตอร์เฟส // กำหนดอินเตอร์เฟส isample
ฟังก์ชั่น getString: สตริง;
จบ;
tsample = class (tinterfacedObject, isample)
สาธารณะ
ฟังก์ชั่น getString: สตริง;
จบ;
// นิยามฟังก์ชั่น
ฟังก์ชั่น tsample.getString: สตริง;
เริ่ม
ผลลัพธ์: = 'รายการอะไรคือ';
จบ;
// วัตถุคลาสโทร
ตัวอย่าง var: tsample;
เริ่ม
ตัวอย่าง: = tsample.create;
showMessage (sample.getString+'คลาสคลาส!');
ตัวอย่างฟรี;
จบ;
// การโทรอินเตอร์เฟส
VAR SampleInterface: isample;
ตัวอย่าง: tsample;
เริ่ม
ตัวอย่าง: = tsample.create;
SampleInterface: = ตัวอย่าง; // การใช้งานอินเตอร์เฟสต้องใช้คลาส
{สองบรรทัดข้างต้นยังสามารถแสดงเป็น sampleInterface: = tsample.create;}
showMessage (SampleInterface.getString+'อินเตอร์เฟส!');
//sample.free; {ไม่ชอบคลาสท้องถิ่นคลาสในอินเตอร์เฟสจะถูกปล่อยออกมาโดยอัตโนมัติ}
SampleInterface: = nil; {release interface object}
จบ;
◇ [Delphi] แถบงานไม่เหมือนโปรแกรมที่เหมาะสม
var
ExtendedStyle: จำนวนเต็ม;
เริ่ม
Application.initialize;
ExtendedStyle: = getWindowLong (application.handle, gwl_exstyle);
setWindowLong (application.handle, gwl_exstyle, extendedstyle หรือ ws_ex_toolwindow และไม่ใช่ ws_ex_appwindow);
application.createform (tform1, form1);
Application.run;
จบ.
◇ [delphi] alt+ctrl+del ไม่สามารถดูโปรแกรมได้
เพิ่มการประกาศหลังจากการดำเนินการ:
Function RegisterServiceProcess (dwprocessid, dwtype: จำนวนเต็ม): จำนวนเต็ม;
RegistERServiceProcess (getCurrentProcessId, 1); // ซ่อน
RegistERServiceProcess (getCurrentProcessId, 0); // แสดงผล
◇ [Delphi] ตรวจจับสัญลักษณ์ไดรฟ์ออปติคัล
VAR Drive: Char;
CDROMID: จำนวนเต็ม;
เริ่ม
สำหรับไดรฟ์: = 'd' ถึง 'z' ทำ
เริ่ม
cdromid: = getDriveType (pchar (ไดรฟ์+':/'));
ถ้า cdromid = 5 แล้ว showMessage ('ไดรฟ์ซีดีรอมของคุณคือ:'+ไดรฟ์+'ดิสก์!');
จบ;
จบ;
◇ [Delphi] ตรวจจับการ์ดเสียง
ถ้า auxgetNumDevs () <= 0 จากนั้น showMessage ('ไม่พบการ์ดเสียง!') else showmessage ('soundcard ใด ๆ ที่พบ!');
◇ [Delphi] วาดในกริดสตริง
StringGrid.ondrawcell เหตุการณ์
ด้วย StringGrid1.canvas DO
วาด (rect.left, rect.top, image1.picture.graphic);
◇ [SQL Server] อีกวิธีหนึ่งในการเขียนคำสั่ง Like ใน SQL
ตัวอย่างเช่นในการค้นหาผู้ใช้ทั้งหมดที่มีชื่อผู้ใช้มี "C" คุณสามารถใช้งานได้
ใช้ myDatabase
เลือก * จากตารางที่ 1 ซึ่งชื่อผู้ใช้เช่น '%c%"
นี่เป็นอีกวิธีหนึ่งในการทำฟังก์ชั่นด้านบน:
ใช้ myDatabase
เลือก * จากตารางที่ 1 โดยที่ Charindex ('C' ชื่อผู้ใช้)> 0
ในทางทฤษฎีวิธีนี้มีคำสั่งตัดสินมากกว่าวิธีการก่อนหน้านี้นั่นคือ> 0 แต่กระบวนการตัดสินนี้เร็วที่สุด
สำหรับสตริงและการดำเนินการอื่น ๆ ไม่ใช่เรื่องใหญ่ที่จะใช้ฟังก์ชั่น Charindex
อักขระที่พบสามารถใช้โดยตรงใน Charindex นี้ดังนี้:
ใช้ myDatabase
เลือก * จากตารางที่ 1 โดยที่ Charindex ('%' ชื่อผู้ใช้)> 0
นอกจากนี้ยังสามารถเขียนเป็น:
ใช้ myDatabase
เลือก * จากตารางที่ 1 โดยที่ Charindex (ถ่าน (37) ชื่อผู้ใช้)> 0
ตัวละคร ASCII คือ %
◇ [Delphi] SQL แสดงฐานข้อมูล/ตารางหลายฐานข้อมูล
เลือก A.Bianhao ที่แตกต่าง, A.Xinging, B.Gongzi จาก "Jianjie.dbf" A, "Gongzi.dbf" B
โดยที่ A.Bianhao = B.Bianhao
◇ [Delphi] RFC (ขอความคิดเห็น) ที่เกี่ยวข้อง
IETF (Internet Engineering Task Force) เก็บรักษาเอกสาร RFC http://www.ietf.cnri.reston.va.us
RFC882: โครงสร้างส่วนหัวข้อความ
RFC1521: MIME Part 1, วิธีการส่งข้อความ
RFC1945: เอกสารการถ่ายโอนเอกสารมัลติมีเดีย
◇ [Delphi] การใช้ tnmuupprocessor
Var Instream, Outstream: tfilestream;
เริ่ม
โปรแกรม: = tfilestream.create (infile.txt, fmopenread);
Outstream: = tfilestream (outfile.txt, fmcreate);
nmuue.method: = uucode; {uuencode/decode}
//nmuue.method:=uumime;
nmuue.inputstream: = stream;
nmuue.outputStream: = Outstream;
nmuue.encode; {การเข้ารหัสการประมวลผล}
//nmuue.decode; {decoding processing}
stream.free;
Outstream.free;
จบ;
◇ [delphi] การทำงาน tfilestream
// อ่านจำนวนไบต์จากตำแหน่งปัจจุบันของสตรีมไฟล์ไปยังบัฟเฟอร์บัฟเฟอร์
ฟังก์ชั่นอ่าน (var buffer; count: longint): longint; แทนที่;
// อ่านบัฟเฟอร์บัฟเฟอร์ลงในสตรีมไฟล์
ฟังก์ชั่นเขียน (บัฟเฟอร์ const; นับ: Longint): Longint; Override;
// ตั้งค่าตัวชี้การอ่านและเขียนปัจจุบันของสตรีมไฟล์เพื่อชดเชย
ฟังก์ชั่นค้นหา (ออฟเซ็ต: Longint; Origin: Word): Longint; Override;
Origin = {sofrombeginning, sofromcurrent, sofromend}
// คัดลอกนับจากตำแหน่งปัจจุบันในสตรีมไฟล์อื่นไปยังตำแหน่งปัจจุบันในสตรีมไฟล์ปัจจุบัน
ฟังก์ชั่น copyfrom (ที่มา: tstream; count: longint): longint;
// อ่านไฟล์ที่ระบุไปยังสตรีมไฟล์
var myfstream: tfilestream;
เริ่ม
myfstream: = tfilestream.create (opendialog1.filename, fmopenread);
จบ;
[JavaScript] ตรวจสอบว่าติดตั้งปลั๊กอินแบบ shockwave & quicktime หรือไม่
<ภาษาสคริปต์ = "JavaScript">
var myplugin = navigator.plugins ["shockwave"];
ถ้า (myplugin)
document.writeln ("คุณได้ติดตั้ง Shockwave แล้ว!")
อื่น
document.writeln ("คุณยังไม่ได้ติดตั้ง Shockwave!")
</script> <br>
<ภาษาสคริปต์ = "JavaScript">
var myplugin = navigator.plugins ["quicktime"];
ถ้า (myplugin)
document.writeln ("คุณติดตั้ง QuickTime แล้ว!")
อื่น
document.writeln ("คุณยังไม่ได้ติดตั้ง QuickTime!")
</script>
[อินเทอร์เน็ต] ผลของการอ้างอิง iframe ในตาราง
<table cellpadding = "0" cellspacing = "0">
<tr>
<td> <ilayer id = "ad1" visibility = "ซ่อน"> </ilayer> <Nolayer> <iframe src = "i:/jinhtml/zj/h21.htm" marginwidth = "0" marginheight = "110" hspace " = "10" vspace = "20" frameBorder = "0" scrolling = "1"> </iframe> </olayer> </td>
</tr>
</ตาราง>
◇ [Delphi] ทักษะการควบคุม WebBrowser
1. ตระหนักถึงฟังก์ชั่นการพิมพ์
Var Vain, Vaout: Olevariant;
WebBrowser.ControlInterface.execwb (OLECMDID_PRINT, OLECMDEXECOPT_DONTPROMPTUSER, VAIN, VAOUT);
2. WebBrowser อ่านหน้าจากสตรีม
ฟังก์ชั่น tform1.loadfromstream (const astream: tstream): HRESULT;
เริ่ม
Astream.seek (0, 0);
ผลลัพธ์: = (WebBrowser1.Document เป็น ipersistStreamInit) .load (tStreamadapter.create (Astream));
จบ;
3. "เกี่ยวกับ:" โปรโตคอลจะช่วยให้คุณนำทางไปยังสตริง HTML:
โพรซีเดอร์ TFORM1.loadhtmlstring (shtml: สตริง);
VAR Flags, TargetFrameName, Postdata, ส่วนหัว: Olevariant;
WebBrowser1.Navigate ('เกี่ยวกับ:' + shtml, Flags, targetFrameName, postdata, ส่วนหัว)
4. "RES:" โปรโตคอลจะช่วยให้คุณนำทางไปยังไฟล์ HTML ที่เก็บไว้เป็นทรัพยากร
โพรซีเดอร์ TFORM1.LoadhtmlResource;
VAR Flags, TargetFrameName, Postdata, ส่วนหัว: Olevariant;
WebBrowser1.Navigate ('res: //' + application.exename + '/myhtml', Flags, 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 เป็น ihtmldocument2;
Persistfile: = htmldocument เป็น ipersistfile;
persistfile.save (stringtoolest ('test.htm'), true);
ในขณะที่ htmldocument.readystate <> 'เสร็จสมบูรณ์' ทำ
Application.processMessages;
จบ;
◇ [Delphi] ติดตั้งการควบคุม WebBrowser (Embedded IE Control)
ก่อนอื่นคุณต้องตรวจสอบให้แน่ใจว่าระบบมีการติดตั้ง Internet Explorer 4 หรือใหม่กว่าเมนู Delphi-องค์ประกอบ-เข้าควบคุม ActiveX เลือก Microsoft Internet Controls "ในรายการและเพิ่มลงในไฟล์แพ็คเกจที่มีอยู่ แผงควบคุม ActiveX
◇ [Delphi] ใช้รูปแบบโปร่งแสง Windows2000
ฟังก์ชั่น SetLayeredWindowAttributes (HWND: HWND; CRKEY: LONGINT; BALPHA: BYTE; DWFLAGS: Longint): Longint;
ขั้นตอน TForm1.FormCreate (ผู้ส่ง: TObject);
var l: Longint;
เริ่ม
l: = getWindowLong (มือจับ, gwl_exstyle);
l: = l หรือ $ 80000;
SetWindowLong (ด้ามจับ, GWL_EXSTYLE, L);
SetlayeredWindowattributes (ด้ามจับ, 0, 180, 2);
จบ;
◇ [Delphi] โปรแกรมแสดงโฆษณา WebBrowser กำลังโหลดรูปภาพ
VAR Flag, Frame, PDATA, Header: Olevariant;
เริ่ม
WebBrowser1.Navigate ('http://www.chineseall.com/images/logo.jpg', Flag, Frame, PDATA, Header)
จบ;
◇ [Delphi] คำนวณขนาดของไดเรกทอรี
ฟังก์ชั่น getDirectorySize (const adirectory: string): จำนวนเต็ม;
var
DIR: tsearchrec;
ret: จำนวนเต็ม;
เส้นทาง: สตริง;
เริ่ม
ผลลัพธ์ := 0;
PATH: = ExtractFilePath (Adirectory);
ret: = sysutils.findfirst (Adirectory, Faanyfile, Dir);
ถ้า ret <> no_error แล้ว
ออก;
พยายาม
ในขณะที่ ret = no_error ทำ
เริ่ม
Inc (ผลลัพธ์, dir.size);
// ถ้าเป็นไดเรกทอรีและไม่ใช่ '.' หรือ '..
if (dir.attr ใน [fadirectory]) และ (dir.name [1] <> '.') จากนั้น
Inc (ผลลัพธ์, getDirectorySize (PATH + DIR.NAME + '/*.*'));
ret: = sysutils.findnext (dir);
จบ;
ในที่สุด
sysutils.findclose (dir);
จบ;
จบ;
◇ [Delphi] ล้างไดเร็กทอรี
ฟังก์ชั่น 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);
จบ;
จบ;
◇ [Delphi] เผยแพร่โปรแกรม ADO และติดตั้ง ADO
เรียกใช้ mdac_typ.exe หนึ่งครั้ง
ไดเรกทอรีหลังจากโปรแกรมการติดตั้งถูกติดตั้งเหมือนกับเส้นทางไดเรกทอรีที่ตั้งไว้ในโปรแกรม ถูกติดตั้ง
◇ [Delphi] การสกัดกั้นข้อความระบบ Windows: ข้อความ WM_CLOSE
ขั้นตอน wmclose (var msg: tmessage); ข้อความ wm_close;
ขั้นตอน tmainform.wmclose (var msg: tmessage);
เริ่ม
m_bclosenoquery: = false;
สืบทอด;
จบ;