BCB日常使用小集錦
2019-09-06 23:33:38
供稿:網(wǎng)友
如有疑問,請聯(lián)系 xuchao@orient-it.com
以下為我的日常筆記,整理出來,供大家分享。
1、BCB 編輯快捷鍵
左/右移 塊代碼
選中 塊代碼
1 CTRL+ SHIFT+ I 是整片往右移,
2 CTRL+ SHIFT+ U 是整片文字往左移
2、得到執(zhí)行程序的當前路徑
ExtractFileDir(Application->ExeName);
3、循環(huán)中響應(yīng)其它操作
在循環(huán)內(nèi)加入Application->ProcessMessage()這一句。
4、向外部提供dll函數(shù)標準windows格式
extern "C" __declspec(dllexport) __stdcall __int32 Fun(__int32 n32_i);
5、從外部dll輸入函數(shù)標準windows格式
extern "C" __declspec(dllimport) __stdcall __int32 Fun(__int32 n32_i);
6、對DLL的調(diào)試
RUN/PARAMETERS 中填上調(diào)用該DLL的 *.exe。
7、使用*.chm幫助文件
ShellExecute(NULL,NULL,幫助文件的路徑,NULL,NULL,SW_SHOWNORMAL);
8、PB_C數(shù)據(jù)類型轉(zhuǎn)換表
PB_C數(shù)據(jù)類型轉(zhuǎn)換表 MICROSOFT PB(16Bit) PB(32Bit)
Bool Boolean Boolean
Byte, Char Char Char
Char* Ref string Ref String
Colorref Uint Ulong
Double Double Double
Dword Uint Ulong
Float N/A N/A
Handle Uint Ulong
Hdc Uint Ulong
Hfile Uint Ulong
Hinstance Uint Ulong
Hwnd Uint Ulong
Int Int Int
Long Long Long
Lparam Uint Ulong
Lpbyte Ref Int Ref Long
Lpcwstr Ref Blob Ref Blob (Unicode use ToUnicode())
Lpcvoid Ref String Ref String
Lpdword Ref Uint Ref Ulong
Lpfiletime Ref Time Ref Time
Lpint Ref Int Ref Long
Lpstr,Lpcstr Ref String Ref String
Lpvoid Ref Structstruct_inst Ref Struct struct_inst
Lpword Ref Int Ref Ulong
Mcierror Long Long
Pbyte Ref Int[#] Ref Long[#]
Short Int Int
Structure Ref Struct struct_inst Ref Struct Struct_inst
Uint Uint Uint
Void** SUBROUTINE SUBROUTINE
Word Int Long
Wparam Uint Ulong
9、使用CB內(nèi)存漏洞工具
選中Progect/Option->CodeGuard
支持環(huán)境CG32.LIB/CG32.DLL
10、MFC基本運行庫目錄
mfc42.dll
MFC42D.DLL
MFCD42D.DLL
MFCN42D.DLL
MFCO42D.DLL
MSVCP60.DLL
MSVCP60D.DLL
MSVCRTD.DLL
NTDLL.DLL
11、數(shù)據(jù)庫連接測試(ADO)
建一文件,TestDataBase.udl,內(nèi)容空。
雙擊,按照提示操作。
12、編譯器設(shè)置
Project|Options
Compiler(編譯)
"Full debug"(完全調(diào)試模式)
"Code optimization"(代碼優(yōu)化)
"debugging"(調(diào)試)
"Debug information"(調(diào)試信息)
"Line number information"(行數(shù)信息)
"Disable inline expansions"(禁用內(nèi)聯(lián)擴展)
"Pascal"標簽
"Optimization"優(yōu)化
"debugging"(調(diào)試)
"Linker"(鏈接)
"Create debug information"(生成調(diào)試信息)
"Don’t generate state files"(不要生成狀態(tài)文件)
"Use dynamic RTL"(使用動態(tài)RTL)
"Directories/Conditionals"(路徑/條件)
"Packages"(程序包)
"Build with runtime packages"(帶運行時程序包編譯)
Tools|Debugger Options
Integrated debugging"(集成調(diào)試器)
Project|Build All(徹底的編譯)
13、設(shè)置RTL
C builder 有幾種運行時庫,多線程靜態(tài)鏈接庫,單線程靜態(tài)鏈接庫 以及動態(tài)的,含有
VCL的,下面介紹多線程靜態(tài)鏈接庫,單線程靜態(tài)鏈接庫 是沒有VCL的,VCL中自動 包含多線程。
Use RTL multi-threaded static library 使用多線程靜態(tài)鏈接庫
到*.bpr 中,按下面的修改即可。
<CFLAG1 value="-tWD -tWM -Od -H=$(BCB)libvcl50.csm -Hc -Vx -Ve -X- -r- -a8 -b- -k -y -v -vi- -c"/>
<ALLLIB value="$(LIBFILES) $(LIBRARIES) import32.lib cw32mt.lib"/>
Use RTL single-threaded static library 使用單線程靜態(tài)鏈接庫
到*.bpr 中,按下面的修改即可。
<ALLLIB value="$(LIBFILES) $(LIBRARIES) import32.lib cw32.lib"/>
14、CODEGUARD調(diào)試器
庫文件CG32.LIB/CG32.DLL
一、編譯 (Project/Option-> CodeGuard)
二、運行(Tools/CodeGuard Configuration)
文件為*.CGI
日志文件中,文件名為 *.CGI。用 View/Debug Window/CodeGuard Log察看或者記事本。