Keterampilan pengembangan dasar DELPHI
◇[DELPHI] Salin file dari Network Neighborhood
menggunakan shellapi;
copyfile(pchar('file baru.txt'),pchar('//namakomputer/direction/targer.txt'),false);
◇[DELPHI] menghasilkan efek drag mouse
Diimplementasikan melalui event MouseMove, event DragOver, event EndDrag, seperti LABEL di PANEL:
varxpanel,ypanel,xlabel,ylabel:integer;
Acara MouseMove PANEL:xpanel:=x;ypanel:=y;
Acara DragOver PANEL:xpanel:=x;ypanel:=y;
Acara MouseMove LABEL:xlabel:=x;ylabel:=y;
Acara EndDrag LABEL: label.left:=xpanel-xlabel;label.top:=ypanel-ylabel;
◇[DELPHI] Dapatkan direktori WINDOWS
menggunakan shellapi;
varwindir:array[0..255]ofchar;
getwindowsdirectory(windir,sizeof(windir));
Atau baca dari registry, lokasi:
HKEY_LOCAL_MACHINE/Perangkat Lunak/Microsoft/Windows/CurrentVersion
Kunci SystemRoot, diperoleh sebagai: C:/WINDOWS
◇[DELPHI] Gambar garis pada FORM atau wadah lainnya
varx,y:array[0..50]integer;
kanvas.pen.warna:=clred;
kanvas.pen.style:=PSDash;
form1.kanvas.moveto(trunc(x[i]),trunc(y[i]));
form1.kanvas.lineto(trunc(x[j]),trunc(y[j]));
◇ Penggunaan daftar string [DELPHI].
vartips:tstringlist;
tips:=tstringlist.buat;
tips.loadfromfile('namafile.txt');
edit1.teks:=tips[0];
tips.add('stringtambahan baris terakhir');
tips.insert(1,'insertstringatNO2line');
tips.savetofile('filebaru.txt');
tips.gratis;
◇[DELPHI]Operasi papan klip sederhana
richedit1.pilih semua;
richedit1.copytoclipboard;
richedit1.cuttoclipboard;
edit1.pastedaripapan klip;
◇[DELPHI] Tentang operasi file dan direktori
Chdir('c:/abcdir');Masuk ke direktori
Mkdir('namadir');Buat direktori
Rmdir('dirname'); hapus direktori
GetCurrentDir;//Dapatkan nama direktori saat ini, tanpa '/'
Getdir(0,s);//Dapatkan nama direktori kerja s:='c:/abcdir';
Hapusfile('abc.txt');//Hapus file
Ganti namafile('lama.txt','baru.txt');//Ganti nama file
ExtractFilename(filelistbox1.filename);//Dapatkan nama file
ExtractFileExt(filelistbox1.filename);//Dapatkan akhiran file
◇[DELPHI] Proses atribut file
attr:=filegetattr(filelistbox1.namafile);
if(attrandfaReadonly)=faReadonlythen...//hanya-baca
if(attrandfaSysfile)=faSysfilethen...//System
if(attrandfaArchive)=faArchivethen...//Archive
if(attrandfaHidden)=faHiddenthen...//Sembunyikan
◇[DELPHI]Jalankan file di luar program
WINEXEC//Panggil file yang dapat dieksekusi
winexec('command.com/ccopy*.*c:/',SW_Normal);
winexec('startabc.txt');
ShellExecute atau ShellExecuteEx//Mulai program asosiasi file
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] Dapatkan nama proses yang berjalan pada sistem
varhCurrentWindow:HWnd;szText:array[0..254]ofchar;
mulai
hCurrentWindow:=Getwindow(pegangan,GW_HWndFrist);
whilehCurrentWindow<>0lakukan
mulai
ifGetwindowtext(hcurrnetwindow,@sztext,255)>0thenlistbox1.items.add(strpas(@sztext));
hCurrentWindow:=Getwindow(hCurrentwindow,GW_HWndNext);
akhir;
akhir;
◇[DELPHI]Tentang penyematan perakitan
AsmEnd;
EAX, ECX, dan EDX dapat dimodifikasi sesuka hati; ESI, EDI, ESP, EBP, dan EBX tidak dapat dimodifikasi.
◇[DELPHI]Tentang fungsi konversi tipe
FloatToStr//Titik mengambang ke string
FloatToStrF//Memformat floating point ke string
IntToHex//Bilangan bulat ke heksadesimal
Waktu KeStr
TanggalKeStr
TanggalWaktuKeStr
FmtStr//Keluarkan string dalam format yang ditentukan
FormatDateTime('YYYY-MM-DD,hh-mm-ss',DATE);
◇[DELPHI]Prosedur dan fungsi string
Insert(obj,target,pos);//String target dimasukkan pada posisi pos. Jika hasil penyisipan lebih besar dari panjang maksimum target, maka karakter tambahan akan terpotong. Jika Pos di luar 255 maka akan terjadi kesalahan pengoperasian. Misalnya st:='Brian', maka Insert('OK',st,2) akan mengubah st menjadi 'BrOKian'.
Delete(st,pos,Num);//Menghapus substring karakter Num (integer) yang dimulai dari posisi pos (integer) pada string st. Misalnya st:='Brian', maka Delete(st,3,2) akan menjadi Brn.
Str(value,st);//Ubah nilai numerik (integer atau tipe real) menjadi string dan masukkan ke dalam st. Misalnya ketika a=2.5E4, str(a:10,st) akan membuat nilai st menjadi '25000'.
Val(st,var,code);//Ubah ekspresi string st menjadi bilangan bulat atau nilai riil yang sesuai dan simpan di var. St harus berupa string yang mewakili nilai numerik dan mematuhi aturan konstanta numerik. Selama proses konversi, jika tidak ada kesalahan yang terdeteksi, kode variabel disetel ke 0, jika tidak maka akan disetel ke posisi karakter kesalahan pertama. Misal st:=25.4E3, x adalah variabel real, maka val(st,x,code) akan membuat nilai X menjadi 25400 dan nilai kode menjadi 0.
Copy(st.pos.num);//Mengembalikan substring yang dimulai dari posisi pos (integer) dalam string st dan berisi karakter num (integer). Jika pos lebih besar dari panjang string st, string kosong akan dikembalikan. Jika pos di luar 255, kesalahan runtime akan terjadi. Misalnya, st:='Brian', lalu Copy(st,2,2) mengembalikan 'ri'.
Concat(st1,st2,st3...,stn);//Gabungkan string yang diwakili oleh semua variabel independen sesuai urutan yang diberikan, dan kembalikan nilai gabungan. Jika panjang hasilnya 255 maka akan terjadi error runtime. Misalnya, st1:='Brian',st2:='',st3:='Wilfred', lalu Concat(st1,st2,st3) mengembalikan 'BrianWilfred'.
Panjang(st);//Mengembalikan panjang ekspresi string st. Misalnya st:='Brian', maka nilai kembalian Panjang(st) adalah 5.
Pos(obj, target);//Mengembalikan posisi di mana string obj muncul untuk pertama kalinya di target string target. Jika target tidak memiliki string yang cocok, nilai kembalian dari fungsi Pos adalah 0. Misalnya target:='BrianWilfred', maka nilai kembalian Pos('Wil',target) adalah 7, dan nilai kembalian Pos('hurbet',target) adalah 0.
◇[DELPHI]Tentang penanganan registri
menggunakan Registri;
varreg:Registrasi;
reg:=Tregistry.buat;
reg.rootkey:='HKey_Current_User';
reg.openkey('ControlPanel/Desktop',salah);
reg.WriteString('JudulWallpaper','0');
reg.writeString('Wallpaper',filelistbox1.namafile);
reg.closereg;
reg.gratis;
◇[DELPHI]Tentang nama konstanta keyboard
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)
AZ:$41(65)--$5A(90)
0-9:$30(48)--$39(57)
◇[DELPHI] Tentukan terlebih dahulu bahasa asli program
Perintah DOS pada perangkat lunak DELPHI: ThisPROgramMustBeRunUnderWin32.
Perintah DOS untuk perangkat lunak VC++: ThisProgramCannotBeRunInDOSMode.
◇[DELPHI]Mengoperasikan Cookie
respon.cookies("nama").domain:='http://www.086net.com';
denganresponse.cookies.adddo
mulai
nama:='nama pengguna';
nilai:='nama pengguna';
akhir
◇[DELPHI] ditambahkan ke tautan menu dokumen
useshellapi,shlOBJ;
shAddToRecentDocs(shArd_path,pchar(filepath));//Tambahkan koneksi
shAddToRecentDocs(shArd_path,nil);//Hapus
◇[Lain-lain] Cadangkan kamus metode masukan ABC cerdas
windows/system/user.rem
windows/system/tmmr.rem
◇[DELPHI] Tentukan tombol mouse
ifGetAsyncKeyState(VK_LButton)<>0lalu...//Tombol kiri
ifGetAsyncKeyState(VK_MButton)<>0lalu...//Kunci tengah
ifGetAsyncKeyState(VK_RButton)<>0lalu...//Klik kanan
◇[DELPHI]Mengatur tampilan maksimum formulir
acara onFormCreate
self.width:=layar.lebar;
self.height:=layar.tinggi;
◇Tombol [DELPHI] untuk menerima pesan
Diproses dalam acara OnCreate: application.OnMessage:=MyOnMessage;
procedureTForm1.MyOnMessage(varMSG:TMSG;varHandle:Boolean);
mulai
ifmsg.message=256lalu...//kunci APA PUN
ifmsg.message=112lalu...//F1
ifmsg.message=113lalu...//F2
akhir;
◇[Lain-lain]Sembunyikan folder bersama
Efek berbagi: dapat diakses, namun tidak terlihat (dalam pengelolaan sumber daya, Network Neighborhood)
Beri nama bagiannya: arah$
Kunjungi ://komputer/arah/
◇[javaScript]Efek yang umum digunakan pada halaman web JavaScript
Halaman web dijadwalkan ditutup dalam 60 detik
tutup jendela
penutup
Transfer URL terjadwal
Dimungkinkan juga untuk mengkonfigurasi TQuery selama operasi, lihat bantuan Delphi untuk detailnya.
□◇[DELPHI] Dapatkan nilai RGB dari titik tertentu pada gambar
procedureTForm1.Image1MouseDown(Pengirim:TObject;Button:TMouseButton;
Shift:TShiftState;X,Y:Bilangan Bulat);
var
merah, hijau, biru: byte;
saya: bilangan bulat;
mulai
i:=gambar1.Kanvas.Piksel[x,y];
Biru:=GetBValue(i);
Hijau:=DapatkanGValue(i):
Merah:=GetRValue(i);
Label1.Caption:=inttostr(Merah);
Label2.Caption:=inttostr(Hijau);
Label3.Caption:=inttostr(Biru);
akhir;
□◇[DELPHI]Tentang dekomposisi dan konversi format tanggal
bervariasitahun,bulan,hari:Word;sekarang2:Tdatatime;
sekarang2:=tanggal();
decodedate(sekarang2,tahun,bulan,hari);
lable1.Teks:=inttostr(tahun)+'tahun'+inttostr(bulan)+'bulan'+inttostr(hari)+'hari';
◇[DELPHI]Cara menentukan mode koneksi jaringan saat ini
Hasil penilaiannya adalah mode MODEM, LAN atau proxy server.
menggunakanwininet;
FungsiKoneksiJenis:boolean;
varflags:kata sandi;
mulai
Hasil:=InternetGetConnectedState(@flags,0);
jikaHasillalu
mulai
if(benderadanINTERNET_CONNECTION_MODEM)=INTERNET_CONNECTION_MODEMlalu
mulai
tampilkan pesan('Modem');
akhir;
if(benderadanINTERNET_CONNECTION_LAN)=INTERNET_CONNECTION_LANlalu
mulai
tampilkan pesan('LAN');
akhir;
if(benderadanINTERNET_CONNECTION_PROXY)=INTERNET_CONNECTION_PROXYlalu
mulai
showmessage('Proksi');
akhir;
if(benderadanINTERNET_CONNECTION_MODEM_BUSY)=INTERNET_CONNECTION_MODEM_BUSYmaka
mulai
showmessage('ModemSibuk');
akhir;
akhir;
akhir;
◇[DELPHI]Cara menentukan apakah suatu string adalah alamat EMAIL yang valid
functionIsEMail(EMail:String):Boolean;
vars:String;ETpos:Integer;
mulai
ETpos:=pos('@',EMail);
jikaETpos>1lalu
mulai
s:=salin(EMail,ETpos+1,Panjang(EMail));
if(pos('.',s)>1)dan(pos('.',s)<panjang(s))maka
Hasil:=trueelseHasil:=salah;
akhir
kalau tidak
Hasil:=salah;
akhir;
◇[DELPHI] Tentukan apakah sistem terhubung ke INTERNET
Fungsi InetIsOffline di URL.DLL perlu diperkenalkan.
Deklarasi fungsinya adalah:
functionInetIsOffline(Bendera:Bilangan Bulat):Boolean;stdcall;external'URL.DLL';
Kemudian Anda dapat memanggil fungsi tersebut untuk menentukan apakah sistem terhubung ke INTERNET
ifInetIsOffline(0)thenShowMessage('tidak tersambung!')
elseShowMessage('terhubung!');
Fungsi ini mengembalikan TRUE jika sistem lokal tidak terhubung ke INTERNET.
Terlampir:
Kebanyakan sistem dengan IE atau OFFICE97 menyediakan DLL ini untuk panggilan.
InetIsOffline
BOOLlinetIsOffline(
DWORDdwBendera,
);
◇[DELPHI]Putar dan jeda file WAV dengan mudah
menggunakan sistem mm;
functionPlayWav(constFileName:string):Boolean;
mulai
Hasil:=PlaySound(PChar(NamaFile),0,SND_ASYNC);
akhir;
prosedurStopWav;
var
buffer:array[0..2]ofchar;
mulai
penyangga[0]:=#0;
PlaySound(Buffer,0,SND_PURGE);
akhir;
◇[DELPHI] Dapatkan informasi BIOS mesin
denganMemo1.Linesdo
mulai
Tambahkan('MainBoardBiosName:'+^I+string(Pchar(Ptr($FE061))));
Tambahkan('MainBoardBiosCopyRight:'+^I+string(Pchar(Ptr($FE091))));
Tambahkan('MainBoardBiosDate:'+^I+string(Pchar(Ptr($FFFF5))));
Tambahkan('MainBoardBiosSerialNo:'+^I+string(Pchar(Ptr($FEC71))));
akhir;
◇[DELPHI] Unduh file dari Internet
menggunakanUrlMon;
functionDownloadFile(Sumber,Tujuan:string):Boolean;
mulai
mencoba
Hasil:=UrlDownloadToFile(nil,PCar(sumber),PCar(Tujuan),0,nil)=0;
kecuali
Hasil:=Salah;
akhir;
akhir;
ifDownloadFile('http://www.borland.com/delphi6.zip,'c:/kylix.zip')lalu
ShowMessage('Pengunduhan berhasil')
elseShowMessage('Unduhan tidak berhasil')
◇[DELPHI]Selesaikan alamat IP server
menggunakanwinsock
functionIPAddrToName(IPAddr:String):String;
var
SockAddrIn:TSockAddrIn;
HostEnt:PHostEnt;
Data WSA:Data TWSA;
mulai
WSAStartup($101,WSAData);
SockAddrIn.sin_addr.s_addr:=inet_addr(PChar(IPAddr));
HostEnt:=gethostbyaddr(@SockAddrIn.sin_addr.S_addr,4,AF_INET);
ifHostEnt<>nilthenresult:=StrPas(Hostent^.h_name)elserresult:='';
akhir;
◇[DELPHI] Dapatkan koneksi di pintasan
functionExeFromLink(namaconstlink:string):string;
var
FDir,
Nama,
Nama Exe:PChar;
z: bilangan bulat;
mulai
Nama Exe:=StrAlloc(MAX_PATH);
NamaF:=StrAlloc(MAX_PATH);
FDir:=StrAlloc(MAX_PATH);
StrPCopy(FName,ExtractFileName(nama tautan));
StrPCopy(FDir,ExtractFilePath(nama tautan));
z:=TemukanExecutable(FName,FDir,ExeName);
jikaz>32lalu
Hasil:=StrPas(NamaExe)
kalau tidak
Hasil:='';
StrDispose(FDir);
StrDispose(FNama);
StrDispose(NamaExe);
akhir;
◇[DELPHI]Kontrol penyelesaian otomatis TCombobox
{'Properti TComboboxdiurutkan menjadi benar}
varlastKey:Word;//variabel global
//Acara OnChange di TCombobox
procedureTForm1.AutoCompleteChange(Pengirim:TObject);
var
SearchStr:string;
retVal: bilangan bulat;
mulai
SearchStr:=(SenderasTCombobox).Teks;
iflastKey<>VK_BACKthen//backspace:VK_BACKor$08
mulai
retVal:=(SenderasTCombobox).Perform(CB_FINDSTRING,-1,LongInt(PChar(SearchStr)));
ifretVal>CB_Errthen
mulai
(SenderasTCombobox).ItemIndex:=retVal;
(SenderasTCombobox).SelStart:=Panjang(SearchStr);
(SenderasTCombobox).Panjang Sel:=
(Panjang((SenderasTCombobox).Teks)-Panjang(SearchStr));
akhir;//retVal>CB_Err
akhir;//kunci terakhir<>VK_BACK
LastKey:=0;//resetlastKey
akhir;
//Acara OnKeyDown di TCombobox
procedureTForm1.AutoCompleteKeyDown(Pengirim:TObject;varKey:Word;
Pergeseran:TSiftState);
mulai
Kunci terakhir:=Kunci;
akhir;
◇[DELPHI]Cara menghapus direktori
functionEmptyDirectory(Direktori:String;Rekursif:Boolean):
Boolean;
var
PencarianRec:TSearchRec;
Res:Bilangan Bulat;
mulai
Hasil:=Salah;
Direktori:=NormalDir(Direktori);
Res:=FindFirst(TheDirectory+'*.*',faAnyFile,SearchRec);
mencoba
sementaraRes=0lakukan
mulai
if(SearchRec.Name<>'.')dan(SearchRec.Name<>'..')lalu
mulai
if((SearchRec.AttrandfaDirectory)>0)danRekursif
lalu mulai
BlankDirectory(TheDirectory+SearchRec.Name,True);
HapusDirektori(PChar(Direktori+SearchRec.Nama));
akhir
mulai lagi
HapusFile(PChar(Direktori+SearchRec.Nama))
akhir;
akhir;
Res:=TemukanBerikutnya(SearchRec);
akhir;
Hasil:=Benar;
Akhirnya
TemukanTutup(SearchRec.FindHandle);
akhir;
akhir;
◇[DELPHI]Cara menghitung ukuran direktori
functionGetDirectorySize(constADirectory:string):Integer;
var
Dir:TSearchRec;
Ret: bilangan bulat;
Jalur:tali;
mulai
Hasil:=0;
Jalur:=ExtractFilePath(ADirectory);
Ret:=Sysutils.FindFirst(ADirectory,faAnyFile,Dir);
ifRet<>NO_ERRORthenexit;
mencoba
whileret=NO_ERRORlakukan
mulai
inc(Hasil,Dir.Ukuran);
if(Dir.Attrin[faDirectory])and(Dir.Name[1]<>'.')then
Inc(Hasil,GetDirectorySize(Jalur+Dir.Nama+'/*.*'));
Ret:=Sysutils.FindNext(Dir);
akhir;
Akhirnya
Sysutils.FindClose(Dir);
akhir;
akhir;
◇[DELPHI]Cara menambahkan penginstal ke daftar Uninstall
Operasikan registri sebagai berikut:
1. Buat kunci utama di bawah kunci HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Windows/CurrentVersion/Uninstall dengan nama apa pun.
ContohHKEY_LOCAL_MACHINE/PERANGKAT LUNAK/Microsoft/Windows/CurrentVersion/Uninstall/MyUninstall
2. Masukkan dua nilai string di bawah HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Windows/CurrentVersion/Uninstall/MyUnistall,
Nama kedua nilai string ini spesifik: DisplayName dan UninstallString.
3. Tetapkan nilai string DisplayName ke nama yang ditampilkan di "Hapus Daftar Aplikasi", seperti 'AimingUninstallone';
Tetapkan string UninstallString ke perintah penghapusan yang dijalankan, seperti C:/WIN97/uninst.exe-f "C:/TestPro/aimTest.isu"
◇[DELPHI]Pesan penghentian sesi WM_QUERYEND disadap
jenis
TForm1=kelas(TForm)
procedureWMQueryEndSession(varMessage:TWWMQueryEndSession);messageWM_QUERYENDSESSION;
procedureCMEraseBkgnd(varMessage:TWMEraseBkgnd);MessageWM_ERASEBKGND;
pribadi
{Deklarasi Pribadi}
publik
{Deklarasi Publik}
akhir;
procedureTForm1.WMQueryEndSession(varMessage:TWMQueryEndSession);
mulai
Showmessage('komputer akan dimatikan');
akhir;
◇[DELPHI]Dapatkan tetangga online
proceduregetnethood();//NT digunakan sebagai server, dan debugging diteruskan pada WIN98.
var
a,i: bilangan bulat;
kode kesalahan: bilangan bulat;
netres:array[0..1023]ofnetresource;
enumhandle:handle;
enumentries: kata sandi;
ukuran buffer:kata sandi;
s:tali;
item daftar saya: item daftar;
item daftar saya: item daftar;
semuadomain:tstring;
mulai//daftarkomputerisalistampilankedaftarsemuakomputer;pusatkontroladalahform.
alldomain:=tstringlist.Buat;
withnetres[0]mulai
dwscope:=RESOURCE_GLOBALNET;
dwtype:=RESOURCETYPE_ANY;
dwdisplaytype:=RESOURCEDISPLAYTYPE_DOMAIN;
penggunaan:=RESOURCEUSAGE_CONTAINER;
lpnamalokal:=nihil;
lremotename:=nihil;
lpcomment:=nihil;
penyedia lp:=nihil;
end;//Dapatkan semua domain
kode kesalahan:=wnetopenenum(RESOURCE_GLOBALNET,RESOURCETYPE_ANY,RESOURCEUSAGE_CONTAINER,@netres[0],enumhandle);
iferrcode=NO_ERRORlalu mulai
enumentri:=1024;
ukuran buffer:=ukuran(netres);
kode kesalahan:=wnetenumresource(enumhandle,enumentries,@netres[0],buffersize);
akhir;
sebuah:=0;
mylistitems:=controlcenter.lstcomputer.Items;
mylistitems.Clear;
while(string(netres[a].lpprovider)<>'')dan(errcode=NO_ERROR)lakukan
mulai
alldomain.Tambahkan(netres[a].lpremotename);
a:=a+1;
akhir;
wnetcloseenum(pegangan enum);
//Dapatkan semua komputer
mylistitems:=controlcenter.lstcomputer.Items;
mylistitems.Clear;
fori:=0toalldomain.Hitungan-1lakukan
mulai
withnetres[0]mulai
dwscope:=RESOURCE_GLOBALNET;
dwtype:=RESOURCETYPE_ANY;
dwdisplaytype:=RESOURCEDISPLAYTYPE_SERVER;
penggunaan:=RESOURCEUSAGE_CONTAINER;
lpnamalokal:=nihil;
lremotename:=pchar(semuadomain[i]);
lpcomment:=nihil;
penyedia lp:=nihil;
akhir;
Kode Err:=WNetOpenEnum(RESOURCE_GLOBALNET,RESOURCETYPE_ANY,RESOURCEUSAGE_CONTAINER,@netres[0],EnumHandle);
iferrcode=NO_ERRORlalu
mulai
EnumEntri:=1024;
BufferSize:=Ukuran(NetRes);
ErrCode:=WNetEnumResource(EnumHandle,EnumEntries,@NetRes[0],BufferSize);
akhir;
sebuah:=0;
while(string(netres[a].lpprovider)<>'')dan(errcode=NO_ERROR)lakukan
mulai
mylistitem:=mylistitems.Tambahkan;
itemsaya.ImageIndex:=0;
mylistitem.Caption:=huruf besar(stringreplace(string(NetRes[a].lpremotename),'//','',[rfReplaceAll]));
a:=a+1;
akhir;
wnetcloseenum(pegangan enum);
akhir;
akhir;
◇[DELPHI] Dapatkan direktori bersama di komputer tertentu
proceduregetsharefolder(constcomputername:string);
var
kode kesalahan,a:integer;
netres:array[0..1023]ofnetresource;
enumhandle:handle;
enumentries,buffersize:dword;
s:tali;
item daftar saya: item daftar;
item daftar saya: item daftar;
mystrings:tstringlist;
mulai
withnetres[0]mulai
dwscope:=RESOURCE_GLOBALNET;
dwtype:=RESOURCETYPE_DISK;
dwdisplaytype:=RESOURCEDISPLAYTYPE_SHARE;
penggunaan:=RESOURCEUSAGE_CONTAINER;
lpnamalokal:=nihil;
lremotename:=pchar(nama komputer);
lpcomment:=nihil;
penyedia lp:=nihil;
end;//Dapatkan simpul akar
kode kesalahan:=wnetopenenum(RESOURCE_GLOBALNET,RESOURCETYPE_DISK,RESOURCEUSAGE_CONTAINER,@netres[0],enumhandle);
iferrcode=NO_ERRORlalu
mulai
EnumEntri:=1024;
BufferSize:=Ukuran(NetRes);
Kode Err:=WNetEnumResource(EnumHandle,EnumEntries,@NetRes[0],BufferSize);
akhir;
wnetcloseenum(pegangan enum);
sebuah:=0;
item daftar saya:=controlcenter.lstfile.Items;
mylistitems.Clear;
while(string(netres[a].lpprovider)<>'')dan(errcode=NO_ERROR)lakukan
mulai
dengan item saya lakukan
mulai
item daftar saya:=tambahkan;
itemsaya.ImageIndex:=4;
mylistitem.Caption:=extractfilename(netres[a].lpremotename);
akhir;
a:=a+1;
akhir;
akhir;
◇[DELPHI] Dapatkan nomor seri hard drive
varSerialNum:pdword;a,b:dword;Buffer:array[0..255]ofchar;
mulai
ifGetVolumeInformation('c:/',Buffer,SizeOf(Buffer),SerialNum,a,b,nil,0)thenLabel1.Caption:=IntToStr(SerialNum^);
akhir;
◇ Pembalikan halaman otomatis [DELPHI] MEMO
ProcedureScrollMemo(Memo:TMemo;Arah:char);
mulai
arah kasus
'd': mulai
Kirim Pesan(Memo.Handle,{HWNDoftheMemoControl}
WM_VSCROLL,{WindowsMessage}
SB_PAGEDOWN,{ScrollCommand}
0){Tidak Digunakan}
akhir;
'u': mulai
Kirim Pesan(Memo.Handle,{HWNDoftheMemoControl}
WM_VSCROLL,{WindowsMessage}
SB_PAGEUP,{ScrollCommand}
0);{Tidak Digunakan}
akhir;
akhir;
akhir;
procedureTForm1.Button1Click(Pengirim:TObject);
mulai
ScrollMemo(Memo1,'d');//Membuka halaman
akhir;
procedureTForm1.Button1Click(Pengirim:TObject);
mulai
ScrollMemo(Memo1,'u');//Turunkan halaman
akhir;
◇[DELPHI]Tekan enter untuk posisi berikutnya di DBGrid (tombol Tab)
procedureTForm1.DBGrid1KeyPress(Pengirim:TObject;varKey:Char);
mulai
ifKey=#13lalu
ifDBGrid1.Columns.Grid.SelectedIndex<DBGrid1.Columns.Count-1then
DBGrid1.Columns[DBGrid1.Columns.grid.SelectedIndex+1].Field.FocusControl
kalau tidak
mulai
Tabel1.berikutnya;
DBGrid1.Kolom[0].field.FocusControl;
akhir;
akhir;
◇[DELPHI]Cara memasang kontrol
Metode instalasi:
1. Untuk kontrol tunggal, Komponen-->installcomponent..-->PAS atau file DCU-->install
2. Untuk paket kontrol dengan file *.dpk, cukup klik File-->open (pilih *.dpk di kotak daftar drop-down)-->install.
3. Untuk paket kontrol dengan file *.dpl, InstallPackages-->Tambah-->nama file dpl.
4. Jika tombol Instal di atas tidak valid, coba tombol Kompilasi.
5. Jika itu adalah runtimelib, tambahkan ke runtimepackes di bawah paket di bawah opsi.
Jika muncul pesan bahwa file tidak dapat ditemukan selama kompilasi, biasanya karena direktori instalasi kontrol tidak ada di direktori Lib Delphi. Ada dua cara untuk mengatasi masalah tersebut:
1. Salin file instalasi asli ke direktori Lib delphi.
2. Atau tambahkan jalur kode asli kontrol ke direktori Delphi Lib di Tools-->EnvironmentOptions.
◇[DELPHI] Hapus direktori sepenuhnya (deltree)
procedureTForm1.DeleteDirectory(strDir:String);
var
sr:TSearchRec;
FileAttrs:Bilangan Bulat;
strnamafile:string;
strPth: tali;
mulai
strpth:=Dapatkancurrentdir();
FileAttrs:=faAnyFile;
ifFindFirst(strpth+'/'+strdir+'/*.*',FileAttrs,sr)=0lalu
mulai
if(sr.AttrandFileAttrs)=sr.Attrthen
mulai
strfilename:=sr.Nama;
iffileexists(strpth+'/'+strdir+'/'+strfilename)lalu
deletefile(strpth+'/'+strdir+'/'+strnamafile);
akhir;
whileFindNext(sr)=0lakukan
mulai
if(sr.AttrandFileAttrs)=sr.Attrthen
mulai
strfilename:=sr.nama;
iffileexists(strpth+'/'+strdir+'/'+strfilename)lalu
deletefile(strpth+'/'+strdir+'/'+strnamafile);
akhir;
akhir;
TemukanTutup(sr);
dihapusir(strpth+'/'+strdir);
akhir;
akhir;
◇[DELPHI] Dapatkan informasi baris dan kolom dari kursor saat ini dari kontrol TMemo ke Tpoint
1.functionReadCursorPos(SumberMemo:TMemo):TPoint;
varPoint:TPoint;
mulai
point.y:=SendMessage(SourceMemo.Handle,EM_LINEFROMCHAR,SourceMemo.SelStart,0);
point.x:=SourceMemo.SelStart-SendMessage(SourceMemo.Handle,EM_LINEINDEX,point.y,0);
Hasil:=Titik;
akhir;
2.Panjang Garis:=SendMessage(memol.handle,EM-LINELENGTH,Cpos,0);//Panjang garis
◇[DELPHI]Baca nomor seri hard disk
functionGetDiskSerial(DiskChar:Char):string;
var
Nomor Seri:kata sandi;
a,b:kata;
Buffer:array[0..255]ofchar;
mulai
hasil:="";
ifGetVolumeInformation(PChar(diskchar+":/"),Buffer,SizeOf(Buffer),SerialNum,
a,b,nihil,0)lalu
Hasil:=IntToStr(NomorSerial^);
akhir;
◇[INTERNET]Keterampilan umum CSS yang komprehensif
1. P:first-letter{font-size:300%;float:left}//Huruf pertama akan berukuran tiga kali lebih besar dari font biasa.
2.
3. Sematkan lembar gaya
4.
Arial//SPAN menerima atribut STYLE, CLASS dan ID
DIV dapat berisi paragraf, judul, tabel bahkan bagian lainnya
5.
6. //Lihat 3 untuk definisi. 7. Daftar properti Gaya font:gaya font:[normal|miring|miring]; Ukuran font: ukuran font: [xx-kecil|x-kecil|kecil|sedang|besar|x-besar|xx-besar|lebih besar|lebih kecil|<panjang>|<persen>] Dekorasi teks: dekorasi teks: [garis bawah||garis atas||garis tembus||berkedip] Transformasi teks:[tidak ada|huruf besar|huruf besar|huruf kecil] Warna latar belakang:warna latar:[<warna>|transparan] gambar-latar belakang:gambar-latar belakang:[ Tinggi garis:[normal|<angka>|<panjang>|<persen>] Gaya batas:[tidak ada|putus-putus|putus-putus|padat|ganda|alur|punggung bukit|sisipan|awal] mengapung:mengambang:[kiri|kanan|tidak ada] 8. satuan panjang Unit relatif: em (em, tinggi font elemen) ex(x-tinggi, tinggi huruf "x") px (piksel, relatif terhadap resolusi layar) Panjang mutlak: dalam (inci, 1 inci = 2,54 sentimeter) cm (sentimeter, 1 sentimeter = 10 milimeter) mm(meter) pt (titik, 1 titik = 1/72 inci) pc (Pa, 1 Pa = 12 poin) ◇[DELPHI] Langkah singkat pembuatan VCL 1. Buat acara metode atribut komponen (Buat unit perpustakaan, warisi sebagai tipe baru, tambahkan properti, metode, acara, daftarkan komponen, buat file paket) 2. Pemrosesan pesan 3. Penanganan pengecualian 4. Bagian terlihat ◇[DELPHI] Memuat perpustakaan tautan dinamis Pemuatan statis: procedurename;external'lib.dll'; Pemuatan dinamis:varhandle:Thandle; menangani:=loadlibrary('lib.dll'); jika menangani<>0lalu mulai {melakukan sesuatu} perpustakaan gratis(pegangan); akhir; ◇[DELPHI]Variabel dan alamat penunjuk varx,y:integer;p:^integer;//Penunjuk ke variabel INTEGER x:=10; //Penugasan variabel p:=@x;//Alamat variabel x y:=p^;//Tetapkan penunjuk P ke Y @@procedure//Mengembalikan alamat memori variabel proses ◇[DELPHI] menentukan apakah karakter tersebut merupakan karakter Cina ByteType('Apa kabar haha',1)=mbLeadByte//adalah karakter pertama ByteType('Apa kabar haha',2)=mbTrailByte//adalah karakter kedua ByteType('Apa kabar haha',5)=mbSingleByte//Bukan karakter Cina ◇[DELPHI]operasi pemosisian memo memo1.lines.delete(0)//Hapus baris 1 memo1.selstart:=10//Cari 10 byte ◇[DELPHI] Dapatkan kode internal karakter byte ganda functiongetit(s:string):integer; mulai Hasil:=byte(s[1])*$100+byte(s[2]); akhir; Gunakan: getit('calculation')//$bcc6 adalah desimal 48326 ◇[DELPHI]Panggil prosedur penyimpanan data TAMBAHKAN Prosedur tersimpannya adalah sebagai berikut: buatprosedurbacacatatan( catatan1varchar(10) catatan2varchar(20) ) sebagai mulai masukkan ke dalam nama tabel(bidang1,bidang2)nilai(:catatan1,:catatan2) akhir Jalankan prosedur tersimpan: EXECUTEprocedureaddrecord("urrecord1","urrecord2") ◇[DELPHI]Simpan file ke dalam bidang blob functionblobcontenttostring(constnamafile:string):string; mulai dengantfilestream.create(nama file,fmopenread)lakukan mencoba setlength(Hasil,ukuran); read(Pointer(Hasil)^,ukuran); Akhirnya bebas; akhir; akhir; //simpan bidang mulai jika(opendialog1.eksekusi)lalu mulai sFileName:=OpenDialog1.FileName; adotable1.edit; adotable1.fieldbyname('visio').asstring:=Blobcontenttostring(NamaFile); adotable1.posting; akhir; ◇[DELPHI]Salin semua file ke clipboard useshlobj,activex,clipbrd; procedureTform1.copytoclipbrd(varFileName:string); var FE:TFormatDll; Sedang:TStgMedium; dropfiles:PDropFiles; pFile:PChar; mulai FE.cfFormat:=CF_HDROP; FE.dwaspect:=DVASPECT_CONTENT; FE.tymed:=TYMED_HGLOBAL; Medium.hGlobal:=GlobalAlloc(GMEM_SHAREorGMEM_ZEROINIT,SizeOf(TDropFiles)+length(FileName)+1); ifMedium.hGlobal<>0lalumulai Sedang.tymed:=TYMED_HGLOBAL; dropfiles:=GlobalLock(Medium.hGlobal); mencoba dropfiles^.pfiles:=Ukuran(TDropFiles); dropfiles^.fwide:=Salah; longint(pFile):=longint(dropfiles)+SizeOf(TDropFiles); StrPCopy(pFile,NamaFile); Inc(pFile,Panjang(NamaFile)+1); pFile^:=#0; Akhirnya GlobalUnlock(Medium.hGlobal); akhir; Papan Klip.SetAsHandle(CF_HDROP,Medium.hGlobal); akhir; akhir; ◇[DELPHI] Buat daftar proses yang berjalan di sistem saat ini menggunakanTLHelp32; procedureTForm1.Button1Click(Pengirim:TObject); varlppe:TProcessEntry32; ditemukan: boolean; Tangan: Pegangan; mulai Tangan:=CreateToolhelp32Snapshot(TH32CS_SNAPALL,0); ditemukan:=Proses32Pertama(Tangan,lppe); sementara ditemukan mulai ListBox1.Items.Add(StrPas(lppe.szExeFile)); ditemukan:=Proses32Berikutnya(Tangan,lppe); akhir; akhir; ◇[DELPHI]Buat tabel baru Tabel2 berdasarkan BDETable1 Tabel2:=TTable.Create(nil); mencoba Tabel2.NamaDatabase:=Tabel1.NamaDatabase; Tabel2.FieldDefs.Assign(Tabel1.FieldDefs); Tabel2.IndexDefs.Assign(Tabel1.IndexDefs); Tabel2.NamaTabel:='tabel_baru'; Tabel2.CreateTable(); Akhirnya Tabel2.Gratis(); akhir; ◇[DELPHI] Cara terbaik untuk memahami pembuatan dan referensi DLL //Lihat DLLsource(FILE-->NEW-->DLL) terlebih dahulu proyek perpustakaan1; kegunaan SysUtils,Kelas; functionaddit(f:integer;s:integer):integer;ekspor; mulai jumlah makeasum:=f+s; akhir; ekspor tambahan; akhir. //Panggilan (INurPROJECT) pelaksanaan functionaddit(f:integer;s:integer):integer;far;external'project1';//Deklarasi {Panggilannya addit(2,4); hasilnya menunjukkan 6} ◇[DELPHI] Membaca ukuran program itu sendiri secara dinamis functionGesSelfSize:integer; var f:fileofbyte; mulai mode file:=0; tugaskanfile(f,aplikasi.exename); mengatur ulang(f); Hasil:=ukuran file(f);//Satuannya adalah byte tutup file(f); akhir; ◇[DELPHI]Baca informasi BIOS denganMemo1.Linesdo mulai Tambahkan('MainBoardBiosName:'+^I+string(Pchar(Ptr($FE061)))); Tambahkan('MainBoardBiosCopyRight:'+^I+string(Pchar(Ptr($FE091)))); Tambahkan('MainBoardBiosDate:'+^I+string(Pchar(Ptr($FFFF5)))); Tambahkan('MainBoardBiosSerialNo:'+^I+string(Pchar(Ptr($FEC71)))); akhir; ◇[DELPHI]Membuat alias MSSQL secara dinamis procedureTForm1.Button1Click(Pengirim:TObject); varDaftarSaya:TStringList; mulai Daftar Saya:=TStringList.Buat; mencoba dengan Daftar Sayalakukan mulai Tambahkan('NAMASERVER=210.242.86.2'); Tambahkan('DATABASENAME=db'); Tambahkan('USERNAME=sa'); akhir; Session1.AddAlias('TESTSQL','MSSQL',Daftar Saya);//ミMSSQL Sesi1.SimpanConfigFile; Akhirnya Daftar Saya.Gratis; Sesi1.Aktif:=Benar; Basis Data1.Nama Basis Data:='DB'; Basis Data1.NamaAlias:='TESTSQL'; Database1.LoginPrompt:=Salah; Database1.Params.Tambahkan('USERNAME=sa'); Database1.Params.Tambahkan('PASSWORD='); Database1.Terhubung:=Benar; akhir; akhir; procedureTForm1.Button2Click(Pengirim:TObject); mulai Database1.Connected:=Salah; Session1.DeleteAlias('TESTSQL'); akhir; ◇[DELPHI] Memutar musik latar menggunakan sistemmm //Putar musik MCISendString('OPENe:/1.MIDTYPESEQUENCERALIASNN','',0,0); MCISendString('PLAYNNFROM0','',0,0); MCISendString('CLOSEANIMATION','',0,0); akhir; //Berhenti bermain MCISendString('OPENe:/1.MIDTYPESEQUENCERALIASNN','',0,0); MCISendString('STOPNN','',0,0); MCISendString('CLOSEANIMATION','',0,0); ◇[DELPHI]Contoh kode untuk antarmuka dan kelas Type{Deklarasi antarmuka dan kelas: Perbedaannya adalah anggota data, metode non-publik, dan metode publik apa pun tidak menggunakan kata kunci PUBLIC di antarmuka} Isample=interface//Definisikan antarmuka contoh fungsigetstring:string; akhir; Tsample=kelas(TInterfacedObject,Isample) publik fungsigetstring:string; akhir; //definisi fungsi functionTsample.getstring:string; mulai hasil:='apa yang ditampilkan'; akhir; //Panggil objek kelas varsample:Sampel; mulai sampel:=Tsample.buat; showmessage(sample.getstring+'objek kelas!'); sampel.gratis; akhir; //Antarmuka panggilan antarmuka varsample:Contoh; sampel: Sampel; mulai sampel:=Tsample.buat; sampleInterface:=sample;//implementasi Interface harus menggunakan class {Dua baris di atas juga dapat dinyatakan sebagai sampleInterface:=Tsample.create;} showmessage(sampleInterface.getstring+'Interface!'); //sample.free;{Tidak seperti kelas lokal, kelas di Antarmuka dirilis secara otomatis} sampleInterface:=nil;{rilis objek antarmuka} akhir; ◇[DELPHI] Bilah tugas sepertinya bukan program yang sesuai var Gaya Diperluas:Integer; mulai Aplikasi.Inisialisasi; ExtendedStyle:=GetWindowLong(Application.Handle,GWL_EXSTYLE); SetWindowLong (Application.Handle, GWL_EXSTYLE, ExtendedStyleORWS_EX_TOOLWINDOWANDNOTWS_EX_APPWINDOW); Aplikasi.CreateForm(TForm1,Form1); Aplikasi.Jalankan; akhir. ◇[DELPHI]ALT+CTRL+DEL tidak dapat melihat program Tambahkan deklarasi setelah implementasi: functionRegisterServiceProcess(dwProcessID,dwType:Integer):Integer;stdcall;external'KERNEL32.DLL'; RegisterServiceProcess(GetCurrentProcessID,1);//Sembunyikan RegisterServiceProcess(GetCurrentProcessID,0);//Display ◇[DELPHI]Deteksi simbol drive optik vardrive:char; cdromID: bilangan bulat; mulai fordrive:='akan'z'do mulai cdromID:=GetDriveType(pchar(drive+':/')); ifcdromID=5thenshowmessage('Drive CD-ROM Anda adalah:'+drive+'disk!'); akhir; akhir; ◇[DELPHI] mendeteksi kartu suara ifauxGetNumDevs()<=0thenshowmessage('Nosoundcardfound!')elseshowmessage('Anysoundcardfound!'); ◇[DELPHI]Gambarlah kotak string Acara StringGrid.OnDrawCell denganStringGrid1.Canvasdo Gambar(Persegi.Kiri,Persegi.Atas,Gambar1.Gambar.Grafik); ◇[SQLSERVER]Cara lain untuk menulis pernyataan Suka di SQL Misalnya, untuk menemukan semua pengguna yang nama penggunanya mengandung "c", Anda dapat menggunakan gunakan database saya pilih*daritabel1dimananamapenggunaseperti'%c%" Berikut cara lain untuk menyelesaikan fungsi di atas: gunakan database saya pilih*daritabel1dimanacharindex('c',nama pengguna)>0 Secara teori, metode ini memiliki satu pernyataan penilaian lebih banyak dibandingkan metode sebelumnya, yaitu >0, tetapi proses penilaian ini adalah yang tercepat. Saya yakin lebih dari 80% operasi dihabiskan untuk mencari kata. Untuk operasi string dan lainnya, menggunakan fungsi charindex bukanlah masalah besar. Ada juga keuntungan menggunakan metode ini, yaitu tidak bisa langsung menggunakan seperti untuk %, |, dll. Karakter yang ditemukan dapat langsung digunakan di charindex ini, sebagai berikut: gunakan database saya pilih*daritabel1dimanacharindex('%',nama pengguna)>0 Dapat juga ditulis sebagai: gunakan database saya pilih*daritabel1dimanacharindex(char(37),nama pengguna)>0 Karakter ASCII adalah % ◇[DELPHI]SQL menampilkan beberapa database/tabel SELECTDISTINCTA.bianhao,a.xingming,b.gongziDARI"jianjie.dbf"a,"gongzi.DBF"b WHEREA.bianhao=b.bianhao ◇[DELPHI]RFC (RequestForComment) terkait IETF (Internet Engineering Task Force) menyimpan dokumen RFC http://www.ietf.cnri.reston.va.us RFC882: Struktur header pesan RFC1521: MIME Bagian 1, Metode Pesan Transmisi RFC1945: Dokumentasi Transfer Dokumen Multimedia ◇[DELPHI]Penggunaan Prosesor TNMUUP varinStream,outStream:TFileStream; mulai inStream:=TFileStream.create(infile.txt,fmOpenRead); outStream:=TFileStream(outfile.txt,fmCreate); NMUUE.Metode:=uuCode;{UUEncode/Decode} //NMUUE.Metode:=uuMIME;{MIME} NMUUE.InputStream:=DalamStream; NMUUE.OutputStream:=Aliran Keluar; NMUUE.Encode;{pemrosesan pengkodean} //NMUUE.Decode;{pemrosesan decoding} diStream.gratis; outStream.gratis; akhir; ◇[DELPHI]Operasi TFileStream //Baca jumlah byte dari posisi aliran file saat ini ke buffer BUFFER functionread(varbuffer;count:longint):longint;override; // Baca buffer buffer ke dalam aliran file functionwrite (constbuffer; count: longint): longint; override; // Atur pointer baca dan tulis saat ini dari stream file untuk mengimbangi functionseek (offset: longint; asal: kata): longint; override; Origin = {sofrombeginning, sofromcurrent, sofromend} // Salin hitungan dari posisi saat ini di aliran file lain ke posisi saat ini di aliran file saat ini functionCopyFrom (Sumber: tstream; Count: longint): longint; // Baca file yang ditentukan ke aliran file Varmyfstream: tfilestream; mulai myfstream: = tfileStream.create (openDialog1.fileName, fMopenread); akhir; [JavaScript] Periksa apakah IE plug-in shockwave & quicktime diinstal ------------------------------ Terima kasih atas kesabaran Anda dalam membaca, Anda memiliki keterampilan, saya harap Anda akan terus mempostingnya!