這2天沒更新什麼Delphi的博客,緣由是F41的筆記本換成用Z500的筆記本上寫程序 可是Z500的機器有個問題 F1到F12只有按住FN功能纔是F1-F12,因此很很差調試,沒辦法,本身寫了一個改鍵工具,須要的時候把F1-F9換成1-9.函數
如今的Delphi的方向是,把本身的經常使用和有用的函數封裝成Delphi一個單元,之後方便調用.這2天封裝了一個函數,易語言的取硬盤特徵字,關鍵API是DeviceIoControl CreateFileA CloseHandle 部分關鍵代碼以下工具
if j_stOutBuffer.bIDEDeviceMap>0 then begin j_stInBuffer.cBufferSize:= 512; j_stInBuffer.bSectorCountReg := 1; j_stInBuffer.bSectorNumberReg := 1; j_stInBuffer.bDriveHeadReg := 160; j_stInBuffer.bCommandReg:= j_stOutBuffer.bIDEDeviceMap; if j_stInBuffer.bCommandReg =0 then begin j_stInBuffer.bCommandReg :=161; end; if j_stInBuffer.bCommandReg <>0 then begin j_stInBuffer.bCommandReg :=236; end; myDeviceIoContro2 (j_h, 508040, j_stInBuffer, 32, j_OutBuffer2, 544, j_ls, 0); begin for j_count:=0 to 19 do j_id[0+j_count]:=j_Outbuffer2[36+j_count]; end; begin for j_count:=0 to 7 do j_id1[0+j_count]:=j_Outbuffer2[62+j_count]; end; begin for j_count:=0 to 39 do j_id2[0+j_count]:=j_Outbuffer2[70+j_count]; end; begin j_zoid[2]:=0; j_zoid[3]:=0; j_last1:=0; j_x:=0; for j_count:=0 to 39 do begin j_x:=j_count+1; if j_x mod 2=0 then begin j_zoid[1]:=j_id2[j_count]; asm mov eax,j_zoid mov j_y,eax end; j_last1:=j_last1+j_y; end; if j_x mod 2<>0 then begin j_zoid[0]:=j_id2[j_count]; end; end; end; begin j_zoid[2]:=0; j_zoid[3]:=0; j_x:=0; for j_count:=0 to 7 do begin j_x:=j_count+1; if j_x mod 2=0 then begin j_zoid[1]:=j_id1[j_count]; asm mov eax,j_zoid mov j_y,eax end; j_last1:=j_last1+j_y; end; if j_x mod 2<>0 then begin j_zoid[0]:=j_id1[j_count]; end; end; end; begin j_zoid[2]:=0; j_zoid[3]:=0; j_x:=0; for j_count:=0 to 19 do begin j_x:=j_count+1; if j_x mod 2=0 then begin j_zoid[1]:=j_id[j_count]; asm mov eax,j_zoid mov j_y,eax end; j_last1:=j_last1+j_y; end; if j_x mod 2<>0 then begin j_zoid[0]:=j_id[j_count]; end; end; end; end; j_p:=@j_Outbuffer2; asm pushad xor eax,eax xor ebx,ebx mov eax,j_p add eax,18 mov bx,[eax] mov j_ml,bx add eax,4 mov bx,[eax] mov j_m2,bx add eax,6 mov bx,[eax] mov j_m3,bx add eax,30 mov bx,[eax] mov j_m4,bx popad end; myCloseHandle(j_h);
這裏本身本身初步找了一個貌似比較合適本身的Delphi命名規則:(g_ 全局變量前綴,b_ 程序集變量前綴,j_ 局部變量前綴 h表示句柄lp表示指針st表示結構sz表示字符串 dw表示整型 fl表示小數)spa
命令規則:做用域_形容+名字指針