Time of Update: 2018-12-05
//合并 excelRangeParm.Merge(Missing.Value); //粗體設定 excelRangeParm.Font.Bold = true; //字型大小設定 excelRangeParm.Font.Size = 12; //水平對齊設定 excelRangeParm.HorizontalAlignment =
Time of Update: 2018-12-05
事件代理通常使學程式的人感到頭疼,看了這個例子,你或許就會慌然大悟. using System;using System.Collections.Generic;using System.Text;namespace EventDelegateApp{ //帶有參數的Deletegate 功能是:老版知道誰上班玩遊戲.只要有員工玩遊戲,立即通過代理通知老闆 public delegate void DeletegateClassHandle(object
Time of Update: 2018-12-05
前段我做的一個.NET(C#)的項目,其中有部分的水晶報表,在打包的時候碰到些問題,到風網上求解,看到許多2003打包,介紹VS2005打包很少,原來2005就這麼簡單,現在已解決,方法如下:在VS2005中建立安裝及部署項目,併合並"CRRedist2005_x86.msi 和 CRREdist2005_x86_chs.msi"檔案,剛開始我都是從網上下載,後來才知道在原生安裝路徑下就有:C:/Program Files/Microsoft Visual Studio 8/SDK/v2.0/
Time of Update: 2018-12-05
asp.net中簡單方法1.public static string MD5(string toCryString) { return FormsAuthentication.HashPasswordForStoringInConfigFile(toCryString, "MD5"); } 2.public static string MD5(string str) { MD5 md5 = new
Time of Update: 2018-12-05
1.首先拖一個GridView到表單,並選擇資料來源,然後配屬性Colums如:2.對它事件寫代碼如下: protected void GridView1_RowCommand(object sender, GridViewCommandEventArgs e) { GridView _gridView = (GridView)sender; int _selectedIndex =
Time of Update: 2018-12-05
VC中預先處理指令與宏定義的妙用剛接觸到MFC編程的人往往會被MFC 嚮導產生的各種宏定義和預先處理指令所嚇倒,但是預先處理和宏定義又是C語言的一個強大工具。使用它們可以進行簡單的原始碼控制,版本控制,預警或者完成一些特殊的功能。 一個經典的例子 使用預先處理與宏定義最經典的例子莫過於加在一個標頭檔中以避免標頭檔被兩次編譯。試想這種的情況,有一個檔案headerfile.h 它被包含在headerfile1.h中,同時在headerfile2.h 中也被包含了,現在有一個CPP檔案,imp
Time of Update: 2018-12-05
1:名稱遮蓋 名稱遮蓋就是子類中聲明的函數名與父類中聲明的函數名相同(傳回值,參數類型和個數同於不同無關緊要,函數是否為虛也無關緊要),子類對象訪問不到父類所定義的同名函數。樣本1:#include <iostream.h>class B{public:void fun1(){cout<<"B::fun1"<<endl;}};class D:public B{public:void fun1(int ){cout<<"D::fun1
Time of Update: 2018-12-05
使用標準C++的類型轉換符:static_cast、dynamic_cast、reinterpret_cast、和const_cast。3.1 static_cast用法:static_cast < type-id > ( expression ) 該運算子把expression轉換為type-id類型,但沒有運行時類型檢查來保證轉換的安全性。它主要有如下幾種用法:①用於類階層中基類和子類之間指標或引用的轉換。 進行上行轉換(把子類的指標或引用轉換成基類表示)是安全的;
Time of Update: 2018-12-05
try { //分析層 ILayer pLayer=this.axMapControl2.get_Layer(0); IFeatureLayer pInputFeatLayer=pLayer as IFeatureLayer; ITable pInputTable=pLayer as ITable; IFeatureClass
Time of Update: 2018-12-05
C中的預先處理命令是由ANSIC統一規定的,但它不是C語言的本身組成部分,不能直接對它們進行編譯,因為編譯器無法識別它們。必須對程式進行通常的編譯(包括詞法和文法分析,代碼產生,最佳化等)之前,先對程式中這些特殊的命令進行“預先處理”,例如:如果程式中用#include命令包含一個檔案“stdio.h”,則在預先處理時,將stdio.h檔案中的實際內容代替該命令。經過預先處理後的程式就像沒有使用預先處理的程式一樣乾淨了,然後再由編譯器對它進行編譯處理,得到可供執行的目標代碼。現在的編譯系統都包
Time of Update: 2018-12-05
在上次的文章聊了C++多線程的跨平台問題,後來感覺意猶未盡。今天順便說一下開發C++多線程應用程式時,有關調試和測試的一些注意事項。下面這些注意事項主要是針對C++,不過有些對於其它的語言也適用。 ★關於設定斷點和逐步執行 很多同學非常依賴於調試器的斷點功能和單步功能。這在單線程情況下倒還好(不過有些單線程但涉及GUI的程式,也會有點麻煩)。至於多線程程式的調試,這兩種手段簡直就是噩夢的開始。多線程造成的主要問題大都和競態條件(Race
Time of Update: 2018-12-05
在C++中,記憶體分成5個區,他們分別是堆、棧、自由儲存區、全域/靜態儲存區和常量儲存區。 棧,就是那些由編譯器在需要的時候分配,在不需要的時候自動清楚的變數的儲存區。裡面的變數通常是局部變數、函數參數等。 堆,就是那些由new分配的記憶體塊,他們的釋放編譯器不去管,由我們的應用程式去控制,一般一個new就要對應一個delete。如果程式員沒有釋放掉,那麼在程式結束後,作業系統會自動回收。
Time of Update: 2018-12-05
工作中使用的語言一直是C++,雖然曾經因項目需要用過一段時間的C#,但畢竟只是為了應用,只是大概的瞭解,沒有深入的學習。但我知道C#是在C++的基礎上發展出來的一門新的語言,拋開其.NET平台不說,其語言在文法語義上的設計都有其優越性。如果熟悉C#,在用C++編程設計時可以從其借鑒不少。(比如說,OOD中的針對介面編程原則,在C++中並沒有特定的文法來限制它,雖然我們可以用一個純抽象類別來表示一個介面,但C#則直接給了我們介面這種類型)
Time of Update: 2018-12-05
第2章:.NET環境1 .NET平台的組成1) .NET Framework:建立Web應用程式,Windows應用程式,Web服務2) 一系列開發工具:VS.NET3) 一系列伺服器: Win2000, SQL server, BizTalk Server4) 用戶端軟體: WinXP, WinCE,Office XP2 .NET平台的特點1) 跨語言:用一種語言編寫的程式被編譯成中間代碼,編譯好的代碼可以和從其他代碼編譯過來的代碼互動2) 跨系統平台:語言代碼--Compiler-->
Time of Update: 2018-12-05
基本和C++一致, 只記了與C++不太一樣的一些要點。1 C#類型分為實值型別和參考型別,實值型別變數儲存資料,參考型別變數儲存對實際資料的引用。2 所有的實值型別均隱式派生自Object類, 其包括bool類型,numeric類型,enum類型以及struct類型。3 參考型別的變數又稱為對象,其包括:Object基類: 基於.NET架構的System.Object, 可接受任何類型的值string:Unicode字串, 可用 ""或@"",引出字串。class:
Time of Update: 2018-12-05
第4章:C#物件導向的初級特性1 物件導向基本概念1) 對象與類:2) 繼承3) 封裝:使軟體的錯誤和修改可以局部化。4) 多態性:動態綁定(晚綁定),編譯器在真正調用的地方插入一段特殊的二進位代碼,通過使用存放在對象自身的資訊,這段代碼在運行時計算出實際應該被調用對象方法的地址。2 方法修飾符:virtual, static, new, abstract, override3 類的存取修飾詞:public, internal(僅限於當前工程代碼訪問, 預設)4
Time of Update: 2018-12-05
C#進階特性1 繼承1)衍生類別將繼承基類除了建構函式和解構函式的所有成員。2)與C++不同,C#只支援類的單一繼承。3)C#提供了關鍵字base來訪問基類成員,調用基類建構函式。4) 可以用new關鍵字來覆蓋基類的成員2 多態1)C#通過使用關鍵字virtual在基類中定義虛方法,用override在衍生類別中重載虛方法實現多態。3 抽象(abstract)1)抽象類別用abstract關鍵字聲明,只能作為基類, 不能執行個體化2)抽象類別可以包含抽象成員或非抽象成員, 如果包含的是抽象成員,
Time of Update: 2018-12-05
在物件導向的概念中,我們知道所有的對象都是通過類來描繪的,但是反過來卻不是這樣。並不是所有的類都是用來描繪對象的,如果一個類中沒有包含足夠的資訊來描繪一個具體的對象,這樣的類就是抽象類別。抽象類別往往用來表徵我們在對問題領域進行分析、設計中得出的抽象概念,是對一系列看上去不同,但是本質上相同的具體概念的抽象。比如:如果我們進行一個圖形編輯軟體的開發,就會發現問題領域存在著圓、三角形這樣一些具體概念,它們是不同的,但是它們又都屬於形狀這樣一個概念,形狀這個概念在問題領域是不存在的,它就是一個抽象
Time of Update: 2018-12-05
今天給新員工培訓C++ OOP時, 講了很多函數重定義的內容, 忽然下面提出一個關於資料成員重定義的問題,雖然不算很難,或者說比較基礎,但我還真不清楚了。。。 class Base{public: int m_i;};class Derived: public Base{public: int m_i;}Derived oDerived;oDerived.m_i = 1;問題是:上面這種情況,oDerived.m_i = 1被賦值的m_i到底是哪一個,子類還是基類中的,
Time of Update: 2018-12-05
----轉過來的一篇好文章,對堆棧的描述,起碼解決了目前的問題。http://blog.csdn.net/hzb1983/archive/2007/09/27/1803546.aspx在C++中,記憶體分成5個區,他們分別是堆、棧、自由儲存區、全域/靜態儲存區和常量儲存區。 棧,就是那些由編譯器在需要的時候分配,在不需要的時候自動清楚的變數的儲存區。裡面的變數通常是局部變數、函數參數等。 堆,就是那些由new分配的記憶體塊,他們的釋放編譯器不去管,由我們的應用程式去控制,一般一個new就