C++Builder總結(jié)151121_第1頁(yè)
C++Builder總結(jié)151121_第2頁(yè)
C++Builder總結(jié)151121_第3頁(yè)
C++Builder總結(jié)151121_第4頁(yè)
C++Builder總結(jié)151121_第5頁(yè)
已閱讀5頁(yè),還剩9頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、1 串口接收程序使用: int i,j; String s; unsigned char *ReadBuffer=(char *)malloc(BufferLength); memcpy(ReadBuffer,Buffer,BufferLength);/C語(yǔ)言基礎(chǔ)性東西 for(i=0;i<BufferLength;i+) s = s + IntToHex(*ReadBuffer+,2)+ ' '存 Memo1->Text = Memo1->Text + s; Memo1->SelStart = Memo1->Text.Length(); Memo

2、1-> SelLength = 0; / free(ReadBuffer);/因?yàn)槭褂昧薘eadBuffer計(jì)算故不能釋放內(nèi)2 將Edit中的內(nèi)容輸入十六進(jìn)制轉(zhuǎn)換(其實(shí)是字符串轉(zhuǎn)換為十六進(jìn)制發(fā)送)AnsiString HexValue= "0x "+Edit1-> Text; int DecValue=StrToInt(HexValue); 再進(jìn)化一下TestCmdi+ = StrToInt("0x"+Edit2->Text);2 Read txtvoid _fastcall TForm1:Button1Click(TObject *S

3、ender) StringGrid1-> Align=alClient; StringGrid1-> ColCount=5; StringGrid1-> Cells00= "城市 " StringGrid1-> Cells10= "天氣 " StringGrid1-> Cells20= "最低氣溫 " StringGrid1-> Cells30= "最高氣溫 " StringGrid1-> Cells40= "風(fēng)力 " char const *Path

4、= "aaa.txt " if(!FileExists(Path)return; TStringList * thelist=new TStringList(); thelist-> LoadFromFile(Path); int rowCount; rowCount=thelist-> Count; StringGrid1-> RowCount=rowCount; TStringList * list2=new TStringList(); for(int k=0;k <rowCount-1;k+) String s; s=thelist->

5、 Stringsk; s=AnsiReplaceStr(s, ", ", "nr "); list2-> Clear(); list2-> DelimitedText=s; StringGrid1-> Cells0k+1=list2-> Strings0; StringGrid1-> Cells1k+1=list2-> Strings1; StringGrid1-> Cells2k+1=list2-> Strings2; StringGrid1-> Cells3k+1=list2-> Strin

6、gs3; StringGrid1-> Cells4k+1=list2-> Strings4; delete list2; list2=0; delete thelist; thelist=0; 3 循環(huán)時(shí)響應(yīng)外部事件在循環(huán)的時(shí)候,操作窗口不能動(dòng)作,可在循環(huán)中加入: Application->ProcessMessages(); this->Update();注意不是在程序剛開(kāi)始加入就OK,而是要在每次循環(huán)中加入才能起作用4 增加換行String + char(13)+char(10) 5同一事件共用代碼如何在CB中用Sender實(shí)現(xiàn)代碼重用?答:面向?qū)ο蟮木幊坦ぞ叩奶攸c(diǎn)

7、之一就是要提高代碼重用性(Reuse),寶蘭的BCB當(dāng)然可以實(shí)現(xiàn)這一功能。我們都知道,在BCB中,大部分程序代碼都直接或間接的對(duì)應(yīng)著一個(gè)事件,此程序稱(chēng)為事件處理句柄,它實(shí)際上就是一個(gè)過(guò)程。從應(yīng)用程序的工程到窗口、組件和程序,BCB強(qiáng)調(diào)的是其開(kāi)發(fā)過(guò)程中每一層次的重用性,可以充分利用已編寫(xiě)過(guò)的代碼來(lái)減少工作量,更會(huì)使你的程序變得優(yōu)美。代碼段間的共享都跟發(fā)生該事件的控件有關(guān)有關(guān),需要根據(jù)控件類(lèi)型做出相應(yīng)的處理,這時(shí)就要用到Sender參數(shù)。每個(gè)函數(shù)的開(kāi)頭都有形如:void _fastcall TForm1:Button1Click(TObject *Sender)其中的Sender是一個(gè)TObjec

8、t類(lèi)型的參數(shù),它告訴BCB哪個(gè)控件接收到這個(gè)事件并調(diào)用相應(yīng)的處理過(guò)程。我們可以編寫(xiě)一個(gè)單一的事件處理句柄,通過(guò)Sender參數(shù)和if語(yǔ)句或者case語(yǔ)句配合,來(lái)處理多個(gè)組件。在Delphi中可以用IS來(lái)測(cè)試Sender類(lèi)型,或者用AS進(jìn)行類(lèi)型轉(zhuǎn)換,BCB我們只在用dynamic_cast來(lái)進(jìn)行上面兩個(gè)工作。1進(jìn)行判斷我們用dynamic_case來(lái)測(cè)試Sender,以便找到調(diào)用這個(gè)事件的處理句柄或組件的類(lèi)型。如,我們將窗口中的編輯框和標(biāo)簽的Click事件的處理句柄都指向窗口的xxx函數(shù)(其實(shí)你只要先把一個(gè)控件的Click事件命名為xxx,并在其中寫(xiě)上共享代碼,其它控件的Click事件都指向xx

9、x就行了),本例中的編輯框和標(biāo)簽對(duì)Click事件將有不同的反應(yīng),代碼如下:void _fastcall TForm1:xxx(TObject *Sender) if(dynamic_cast<TEdit *>(Sender) ShowMessage("This is a editbox"); if(dynamic_cast<TLabel *>(Sender) ShowMessage("This is a label");當(dāng)然若是多個(gè)同類(lèi)組件,只是想共用一個(gè)事件,那要比這簡(jiǎn)單多了。舉個(gè)例子,若你的很多編輯框(Edit),你想在輸入某

10、一項(xiàng)的時(shí)候先把這一項(xiàng)清空,你只要寫(xiě)一個(gè)OnEnter事件就可以了:void _fastcall TForm1:Edit1Enter(TObject *Sender) TEdit *Edittemp=(TEdit*)(Sender);/把不同的編輯框統(tǒng)一起來(lái) Edittemp->Text="" 其它的Edit組件的OnEnter事件都指向Edit1Enter,這樣就行了,試一下,是不是鼠標(biāo)放在編輯框里一點(diǎn)就清空了J其實(shí)這里只是把不同的編輯框(Sender清楚是那一個(gè)編輯框)統(tǒng)一起來(lái),好用一個(gè)共同的事件來(lái)處理。你在同一組件共用同一事件時(shí)一定要注意這一點(diǎn)。printf的格式

11、控制的完整格式:% - 0 m.n l或h 格式字符下面對(duì)組成格式說(shuō)明的各項(xiàng)加以說(shuō)明:%:表示格式說(shuō)明的起始符號(hào),不可缺少。-:有-表示左對(duì)齊輸出,如省略表示右對(duì)齊輸出。0:有0表示指定空位填0,如省略表示指定空位不填。m.n:m指域?qū)?,即?duì)應(yīng)的輸出項(xiàng)在輸出設(shè)備上所占的字符數(shù)。N指精度。用于說(shuō)明輸出的實(shí)型數(shù)的小數(shù)位數(shù)。為指定n時(shí),隱含的精度為n=6位。l或h:l對(duì)整型指long型,對(duì)實(shí)型指double型。h用于將整型的格式字符修正為short型。格式字符格式字符用以指定輸出項(xiàng)的數(shù)據(jù)類(lèi)型和輸出格式。 d格式:用來(lái)輸出十進(jìn)制整數(shù)。有以下幾種用法:%d:按整型數(shù)據(jù)的實(shí)際長(zhǎng)度輸出。%md:m為指定的輸

12、出字段的寬度。如果數(shù)據(jù)的位數(shù)小于m,則左端補(bǔ)以空格,若大于m,則按實(shí)際位數(shù)輸出。%ld:輸出長(zhǎng)整型數(shù)據(jù)。o格式:以無(wú)符號(hào)八進(jìn)制形式輸出整數(shù)。對(duì)長(zhǎng)整型可以用"%lo"格式輸出。同樣也可以指定字段寬度用“%mo”格式輸出。例: main() int a = -1; printf("%d, %o", a, a); 運(yùn)行結(jié)果:-1,177777 程序解析:-1在內(nèi)存單元中(以補(bǔ)碼形式存放)為(1111111111111111)2,轉(zhuǎn)換為八進(jìn)制數(shù)為(177777)8。x格式:以無(wú)符號(hào)十六進(jìn)制形式輸出整數(shù)。對(duì)長(zhǎng)整型可以用"%lx"格式輸出。同樣也

13、可以指定字段寬度用"%mx"格式輸出。u格式:以無(wú)符號(hào)十進(jìn)制形式輸出整數(shù)。對(duì)長(zhǎng)整型可以用"%lu"格式輸出。同樣也可以指定字段寬度用“%mu”格式輸出。c格式:輸出一個(gè)字符。s格式:用來(lái)輸出一個(gè)串。有幾中用法%s:例如:printf("%s", "CHINA")輸出"CHINA"字符串(不包括雙引號(hào))。%ms:輸出的字符串占m列,如字符串本身長(zhǎng)度大于m,則突破獲m的限制,將字符串全部輸出。若串長(zhǎng)小于m,則左補(bǔ)空格。%-ms:如果串長(zhǎng)小于m,則在m列范圍內(nèi),字符串向左靠,右補(bǔ)空格。%m.ns:輸出

14、占m列,但只取字符串中左端n個(gè)字符。這n個(gè)字符輸出在m列的右側(cè),左補(bǔ)空格。%-m.ns:其中m、n含義同上,n個(gè)字符輸出在m列范圍的左側(cè),右補(bǔ)空格。如果n>m,則自動(dòng)取n值,即保證n個(gè)字符正常輸出。f格式:用來(lái)輸出實(shí)數(shù)(包括單、雙精度),以小數(shù)形式輸出。有以下幾種用法:%f:不指定寬度,整數(shù)部分全部輸出并輸出6位小數(shù)。%m.nf:輸出共占m列,其中有n位小數(shù),如數(shù)值寬度小于m左端補(bǔ)空格。 %-m.nf:輸出共占n列,其中有n位小數(shù),如數(shù)值寬度小于m右端補(bǔ)空格。e格式:以指數(shù)形式輸出實(shí)數(shù)??捎靡韵滦问剑?e:數(shù)字部分(又稱(chēng)尾數(shù))輸出6位小數(shù),指數(shù)部分占5位或4位。%m.ne和%-m.ne:

15、m、n和”-”字符含義與前相同。此處n指數(shù)據(jù)的數(shù)字部分的小數(shù)位數(shù),m表示整個(gè)輸出數(shù)據(jù)所占的寬度。g格式:自動(dòng)選f格式或e格式中較短的一種輸出,且不輸出無(wú)意義的零。關(guān)于printf函數(shù)的進(jìn)一步說(shuō)明:如果想輸出字符"%",則應(yīng)該在“格式控制”字符串中用連續(xù)兩個(gè)%表示,如:-printf("%f%", 1.0/3);輸出0.333333%。對(duì)于單精度數(shù),使用%f格式符輸出時(shí),僅前7位是有效數(shù)字,小數(shù)6位對(duì)于雙精度數(shù),使用%lf格式符輸出時(shí),前16位是有效數(shù)字,小數(shù)6位由高手指點(diǎn)對(duì)于m.n的格式還可以用如下方法表示(例)char ch20;printf(&quo

16、t;%*.*s/n",m,n,ch);前邊的*定義的是總的寬度,后邊的定義的是輸出的個(gè)數(shù)。分別對(duì)應(yīng)外面的參數(shù)m和n 。我想這種方法的好處是可以在語(yǔ)句之外對(duì)參數(shù)m和n賦值,從而控制輸出格式。6 十六進(jìn)制顯示處理方法要求:顯示十六進(jìn)制 0A先定義一個(gè)中間為unsigned char的變量處理:將十六進(jìn)制轉(zhuǎn)換為十進(jìn)制做加減法,函數(shù)i = StrToIntDef("0x"+Editx->Text,2);處理完后回顯示:Editx->Text = IntToHex(i);Memo1->Text="String"是顯示開(kāi)頭內(nèi)容(如果內(nèi)容超

17、出Memo1的范圍的話) Memo1->Lines->Add("String");是顯示結(jié)尾內(nèi)容(如果內(nèi)容超出Memo1的范圍的話) Memo1->Text=IdHTTP1->Get(" Memo1->Lines->Add("結(jié)束"); Text.Length();Memo1->Lines->Add(IntToStr(AnsiPos("a",a); Memo1->Lines->Add(a.SubString(1,2); c_str char *_fastcall c

18、_str() const 返回字符串?dāng)?shù)據(jù)的指針 Delete void _fastcall Delete(int index,int count) 由index處開(kāi)始刪除count個(gè)字符 Insert void _fastcall Insert(const AnsiString& str,int index) 由index處開(kāi)始插入字符str到原字符串中 IsEmpty bool _fastcall IsEmpty() const 返回字符串是否為空,true表示空字符串 Length int _fastcall Length() const 返回字符串長(zhǎng)度 LowerCase Ans

19、iString _fastcall LowerCase() const 將字符串中的大寫(xiě)字母改寫(xiě)成小寫(xiě) UpperCase AnsiString _fastcall UpperCase() const 將字符串中的小寫(xiě)字母改寫(xiě)成大寫(xiě) Pos int _fastcall Pos(cont AnsiString& substr)const; 找出子字符串在原字符串中由第幾個(gè)位置開(kāi)始 SubString AnsiString _fastcall SubString(int index,int count)const 返回由index處向后取count個(gè)字符 ToDouble double _

20、fastcall ToDouble() const 將字符轉(zhuǎn)成雙精度數(shù)值 ToInt int _fastcall ToInt() const 將字符轉(zhuǎn)成整形 IntToStr AnsiString _fastcall IntToStr(int Value) 將整形轉(zhuǎn)成字符串 Trim AnstString _fastcall Trim() const 返回一個(gè)新的字符串,它會(huì)將原字符串前后空白或控制字符清除后再返回 WideChar wchar_t fastcall WideChar(wchart* dest,int destsize)const 轉(zhuǎn)換AnsiString到一個(gè)寬字符數(shù)組(CO

21、M中常用) AnsiString成員函數(shù) 功能 傳統(tǒng)字符串函數(shù) = 字符串拷貝 strcpy += 字符串合并 strcat + 字符串連接 無(wú) =,!+=,>= 字符串比較 strcmp c_str() 相互轉(zhuǎn)換 無(wú),但可以利用指針實(shí)現(xiàn) Delete 刪除子字符串 無(wú) Insert 插入子字符串 無(wú) Length 求字符串長(zhǎng)度 strlen LowerCase 字母轉(zhuǎn)成小寫(xiě) strlwr Pos 找出子字符串 strstr SetLength 設(shè)置字符串長(zhǎng)度 無(wú) ToInt 轉(zhuǎn)成整形 無(wú) ToDouble 轉(zhuǎn)成雙精度 sprintf UpperCase 字母轉(zhuǎn)成大寫(xiě) struprn使用

22、SPCOMM和Memo顯示時(shí),之間以為是Memo太小不能接收太多數(shù)據(jù),其它是自己定義循環(huán)變量i時(shí)將16位字節(jié),定義成8位字長(zhǎng)引起的n浮點(diǎn)數(shù)轉(zhuǎn)換設(shè)置顯示幾位的方法Edit23->Text = FormatFloat("0.00",Rx)n使用iPlot時(shí),波形不刷新,修改nBCB使用victo串口控件時(shí)設(shè)置波特率一定要和它的頭文件一樣nBCB2010設(shè)置編譯為發(fā)布文件方法project->Options->C+Compiler->Build Configuration 選擇 Releaseproject->Options->C+Linker

23、中取消Use dynamic RTL前的對(duì)鉤在project->Options->Packages中取消Builder with runtime packages的對(duì)鉤project-Configuration Manager->Configuration 選擇 Release由於中間上方箭頭朝右的按鈕時(shí)灰色的所以鼠標(biāo)點(diǎn)擊一下左邊列表的行;然後中間上方的灰色的箭頭朝右的箭頭變成綠色,這時(shí)候可以點(diǎn)擊了,點(diǎn)擊綠色按鈕,再重新編譯即可;工程目錄下產(chǎn)生了Release目錄 nBCB6 ADO操作 access數(shù)據(jù)庫(kù)總結(jié)1 使用ADOConnection控件和ADOTable Data

24、Sours控件實(shí)現(xiàn) DBGrid用于顯示 ADOConnection 實(shí)現(xiàn)在數(shù)據(jù)庫(kù)建立連接ADOTable 實(shí)現(xiàn)對(duì)數(shù)據(jù)庫(kù)的操作增加 刪除 排序DataSours建立ADOTable 和DBGrid顯示的連接數(shù)據(jù)表刪除所有記錄 ADOTable1->First(); while(!ADOTable1->Eof) ADOTable1->Delete(); ADOTable1->Refresh();數(shù)據(jù)庫(kù)排序ADOTable1->Sort = "NO DESC" 按NO索引 降序ADOTable1->Sort = "NO ASC" 按NO索引 升序ADOTable1->Insert 插入提取某個(gè)單元格內(nèi)容 i = DBGrid1->Fields3->AsString;修改背景顏色DBGrid1->Canvas-&

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論