Time of Update: 2018-12-04
C++裡如果將數組定義成類中的成員,將面臨初始化的問題. 如下: Class A{public: A(); ~A(){}; int abc[3];} 很直觀的想法是 A::A(): abc({1,2,3}){ } 很遺憾,你將見到編譯提示法錯誤 當然這裡可以採用變通方法 A::A(){ for( int nLoop=1;nLoop<=3;nLoop++)
Time of Update: 2018-12-04
1.design with the delegates.Use the ?? operator everywhere to simplify a bitexample:if (jump == null){ Run();} else{ jump();} should be:(jump ?? Run)();or(jump ?? Run).Invoke(); 2. 版本Application.ProductVersion3. Html to wordvar varWord = new
Time of Update: 2018-12-04
使用 DEF檔案從 DLL 匯出模組定義 (.def) 檔案是包含一個或多個描述 DLL 各種屬性的 Module 語句的文字檔。如果不使用__declspec(dllexport) 關鍵字匯出 DLL 的函數,則 DLL需要 .def 檔案。.def 檔案必須至少包含下列模組定義語句:檔案中的第一個語句必須是 LIBRARY 語句。此語句將 .def 檔案標識為屬於 DLL。LIBRARY 語句的後面是DLL 的名稱。連結器將此名稱放到 DLL 的匯入庫中。EXPORTS
Time of Update: 2018-12-04
大家知道MFC中有個資源檔的東東,在C#中也有資源檔,有了他管理各種資源。假如我們程式裡面用到一些字串,但是這些字串有可能在以後會改版,那麼就可以用資源檔來管理,以後修改就更方便了。 廢話少說,我覺得這種東西還是直接用圖片和代碼更加容易懂一些。 先添加新項目,選擇Resource File,然後給檔案命名,這裡我們命名為:StringResourceManage.resx 吧 Add 之後,就可以在VS IDE中對字元進行編輯了。如所示:
Time of Update: 2018-12-04
在寫一個console程式時,想寫一個函數來處理輸出錯誤資訊,像下面這樣 void ExportError( LPCTSTR pError ); 然後在裡面直接通過printf來列印資訊。 void ExportError( LPCTSTR pError ){ printf( pError );} 後來,想這個函數不夠方便,因為我們知道printf支援可變參數的。這樣列印一些錯誤資訊時很方便,如printf( "Error No:%d", 1
Time of Update: 2018-12-04
C++利用記憶體檔案對應讀寫打檔案的方法最近需要每次讀寫2TB的資料,所以找了種方法來解決。希望對大家對於讀取打檔案有所瞭解。或許哪天就能用的到。 HANDLE m_handle_file = CreateFile(strFilePath,GENERIC_READ|GENERIC_WRITE,0,NULL,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,NULL); if(m_handle_file == INVALID_HANDLE_VALUE) {
Time of Update: 2018-12-04
什麼是MasterPage呢?我覺得就是一個模板,把不同網頁的相同部分,如導覽列,Logo,頁頭,頁尾做成一個MasterPage,這樣就可以減少工作量,不用每個網頁都維護一套代碼了。廢話少說: 1.在VS中建立一個MasterPage頁,添加New Item,添加MasterPage,示: 2. 在MasterPage中布局,注意ContentPlaceHolder是讓其它頁面用來擺放自己的控制項的。我們只需放每個網頁公用的就行了, 3. 建立頁面,選中“Select
Time of Update: 2018-12-04
歡迎回到“使用C++和DX開發GUI”的第四部分。接著我們的主題(我是如何為我未來的遊戲開發GUI的 — Quaternion),本文將關注所有的有關遊戲GUI的細節問題。4.1、儲存視窗 視窗序列化(儲存和載入視窗)對你的工程而言或許不重要。如果你的遊戲GUI很簡單,你可以全靠程式在遊戲中實現視窗。但如果你的GUI相對複雜,或者隨著開發的過程經常會改變,那麼你會想寫程式以把一個視窗(和所有它的子視窗)存到檔案裡,然後再裝載它。對初學者而言,視窗序列化代碼允許你改變遊戲的GUI而不用重新編譯,
Time of Update: 2018-12-04
在作應用系統開發時,管理配置是必不可少的。例如資料庫伺服器的配置、安裝和更新配置等等。由於Xml的興起,現在的設定檔大都是以xml文檔來儲存。比如Visual Studio.Net自身的設定檔Mashine.config,Asp.Net的設定檔Web.Config,包括我在介紹Remoting中提到的設定檔,都是xml的格式。 傳統的設定檔ini已有被xml檔案逐步代替的趨勢,但對於簡單的配置,ini檔案還是有用武之地的。ini檔案其實就是一個文字檔,它有固定的格式,節Section的名字用[]
Time of Update: 2018-12-04
namespace System.Configuration;1. 建立配置節類必須建立繼承自ConfigurationSection的對象才能進行配置資料讀寫操作,ConfigurationSection提供了索引器用來擷取和設定配置資料,需要注意的是擁有ConfigurationProperty特性的屬性才會被儲存,並且名稱要保持大小寫完全一致,如下面的代碼中,所有的"id"必須保持一樣。 class ConfigSectionData :
Time of Update: 2018-12-04
1 microsoft 提供了一個檢測指標越界訪問的工具pageheap。 2記憶體對應檔 有個一很難發現的問題是,建立基於系統調頁檔案的記憶體對應檔核心對象是通過傳入hFile為 INVALID_HANDLE_VALUE 的參數來標記的,而建立或開啟普通硬碟檔案失敗時的傳回值也是INVALID_HANDLE_VALUE. ...... HANDLE hFile = CreateFile (....) ;
Time of Update: 2018-12-04
一 1 在分析一個操作執行太慢,則需要首先分類的是IO操作密集還是cpu計算密集。 這個可以這樣區分,用虛擬硬碟工具(例如ramdisk tool)把一部分記憶體虛擬成硬碟,應用程式和基準檔案都安裝在虛擬硬碟上,如果程式效能改善明顯,則是IO相關的問題。二 2 針對IO瓶頸的最佳化: 每次IO操作大約在10ms的量級,100次就是1s左右,所以盡量避免不必要的IO,具體做法有: 預先順序讀檔案避免隨機訪問
Time of Update: 2018-12-04
測試發現,Pro*C中,不管ORACLE資料庫中的number欄位是多大,只要欄位的值大於綁定的變數所能夠容納的範圍,就會出現“ORA-01455: 轉換列溢出整數資料類型”。不過,Pro*C不支援long long(64位)類型的綁定。當number欄位的值大於2147483647或小於- 2147483648時,建議使用double類型來綁定,然後再將double類型轉換成long long類型。double temp;long long value;//…EXEC SQL SELECT
Time of Update: 2018-12-04
編碼中發現一個奇怪的編譯錯誤,花了很長時間才找到問題所在。下面把重現這個問題的最精簡的代碼貼出來:/**//*MyClass.h存在一個namespace和一個類*/#ifndef _MY_CLASS_H_#define _MY_CLASS_H_namespace MySpace...{class MyClass...{public: int Field;};}#endif 下面的一個檔案聲明一個全域的指標,因為僅僅指示聲明,所以盡量不包含其他檔案:/**//*global.
Time of Update: 2018-12-04
一)位元組序,顧名思義位元組的順序,再多說兩句就是大於一個位元組類型的資料在記憶體中的存放順序(一個位元組的資料當然就無需談順序的問題了)。其實大部分人在實際的開發中都很少會直接和位元組序打交道。唯有在跨平台以及網路程式中位元組序才是一個應該被考慮的問題。在所有的介紹位元組序的文章中都會提到位元組序分為兩類:Big-Endian和Little-Endian,引用標準的Big-Endian和Little-Endian的定義如下:a) Little-Endian就是低位位元組排放在記憶體的低地址端,
Time of Update: 2018-12-04
最近在研究驅動的代碼,發現這樣一個宏,沒太搞懂什麼用途:#define E1000_ROUNDUP(i, size) ((i) = (((i) + (size) - 1) & ~((size) - 1))) 調用的時候是這樣的: unsigned int i = 4097; E1000_ROUNDUP(i, 4096); 拆解這個運算,還是沒明白到底要幹什麼:簡化的運算式相當於: i = (i + 0x00000fff) | 0xfffff000;
Time of Update: 2018-12-04
Pro*C中批量讀取遊標中的資料的時候,需要注意:最後一次批量讀取遊標中的資料的時候,資料被取到HostArray中,同時sqlca.sqlcode被置為1403(NO_DATA_FOUND)。如果在fetch後立即判斷sqlca.sqlcode的話,可能就導致最後一次的資料取不到。 保險的辦法是定義一個變數記錄上次的讀取條數:if (sqlca.sqlcode==1403 && sqlca.sqlerrd[2]<=nLastCount){
Time of Update: 2018-12-04
int i=atoi(m_strSendPeriod); //轉為整型SetTimer(1,m_strSendPeriod,NULL); ////////////////////////////////////////////////////////////////////// _itoa, _i64toa, _ui64toa, _itow, _i64tow, _ui64tow Convert an integer to a string. char *_itoa( int
Time of Update: 2018-12-04
最近因為忙!!經常外出工作!有時晚上趕不回公司,所以就在網上下了個自動關機程式!!不過自己一直想自己寫個!!但還不會調用API所以就想用C寫了個!!以後會用API寫的的!雖然沒技術含量,但必竟是自己寫的,還是比較開心的!!不過程式很簡單!!只是調用了系統的自動關機罷了!!代碼如下:#include <stdio.h>#include <stdlib.h>int main(){ system ("at 00:00 shutdown -s");
Time of Update: 2018-12-04
今天看到了一道c#筆試題,是關於靜態欄位和靜態建構函式初始化的。靜態函數是c#新的特性,如果不知道它的初始化順序就會對這道題暈頭轉向。對於靜態建構函式可以參考http://www.cnblogs.com/michaelxu/archive/2007/03/29/693401.html。下來從這道筆試題來分析一下靜態建構函式的初始化順序。 1 class A 2 { 3 public static int X; 4 static A() 5 { 6 X =