Time of Update: 2015-12-25
標籤:最近遇到一個項目就是要從一份word中提取出所有的圖片資訊,功能看起來不是很難,只要使用office內建的Microsoft.Office.Interop.Word就可以解決問題。網上也有不少的文章來說明如何去實現。不過總體來說網上的內容分為兩派一個是使用剪貼簿來實現,一個是通過將圖片轉為byte數組來完成。個人傾向於後者,但是在實踐過程中遇到了問題。問題一:通過byte的方式來實現圖片的提取會導致提取出來的圖片的品質嚴重下降,這樣的圖片品質下降是無法通過修改圖片品質的代碼來最佳化和提高的
Time of Update: 2015-12-25
標籤: void ConvertProject() { List<BaseProjectConverter> convertors = new List<BaseProjectConverter>(); Assembly archiverAssembly = this.GetType().Assembly; foreach (Type type in
Time of Update: 2015-12-25
標籤:c#事件執行個體二事件驅動程式與過程式程式最大的不同就在於,程式不再不停地檢查輸入裝置,而是獃著不動,等待訊息的到來,每個輸入的訊息會被排進隊列,等待程式處理它。如果沒有訊息在等待,則程式會把控制交回給作業系統,以運行其他程式。作業系統只是簡單地將訊息傳送給對象,由對象的事件驅動程式確定事件的處理方法。作業系統不必知道程式的內部工作機制,只是需要知道如何與對象進行對話,也就是如何傳遞訊息。先來看看事件編程有哪些好處。1.使用事件,可以很方便地確定程式執行順序。2.當事件驅動程式等待事件時,
Time of Update: 2015-12-25
標籤:c#事件執行個體一Observe設計模式;Observe設計模式是為了定義對象之間一種一對多的額依賴關係,以便當一個對象的狀態改變時, 其他依賴於它的對象會被自動告知並更新,是一種解耦的設計模式滴呀; subject:它往往包含其他對象所感興趣的內容,在本例子中,熱水器就是一個監視對象, Observer:監視者,它監視Subject,當Subject中的某件事發生的時候,會告知Observer,而Observer則會採取相應的行動。
Time of Update: 2015-12-25
標籤:一、使用regasm.exe將DLL提取出TLB檔案regasm.exe "Tools.HMIBrowserDetector.dll" /tlb二、使用wix的heat.exe程式用法如下:heat file <*.dll> -out <*.wxs>其中<*.dll>是你用c#編寫的activex的dll檔案名稱,<*.wxs>是你要輸出的wxs檔案名稱。heat.exe "Tools.HMIBrowserDetector.dll"
Time of Update: 2015-12-25
標籤:public partial class Form1 : Form { public Form1() { InitializeComponent(); } List<Orag> list = new List<Orag>(); private void Form1_Load(object sender, EventArgs e) {
Time of Update: 2015-12-25
標籤:用C#寫了一個運用ICE組件進行介面通訊的服務程式,程式運行很正常,可是在用戶端調用ICE介面時出現了大量的資料丟失,而且偶爾還通訊不上,服務端最明顯的現象就是telnet服務的通訊連接埠時不通(cmd視窗一閃而過),經過大量時間的跟蹤測試,最終只能通過tfs上的曆史修改記錄來一步一步恢複還原,最後問題定位在GC.Collect();這一句代碼上:大部份介面都存在這一句代碼進行記憶體回收,而把這句注掉以後,通訊和資料轉送都正常下來了!
Time of Update: 2015-12-25
標籤:這兩天因為工作需要,要到某個網站採集資訊,一是要類比登陸,二是要破解驗證碼,本想用第三方付費打碼,但是想想網上免費的代碼也挺多的,於是乎準備從網上擼點代碼下來,誰知道,擼了好多個都不行,本人以前也沒接觸過這方面的,代碼無從下手,最後不知道在哪個兄台部落格找到一個國外的第三方開源OCR,說是強大的Google公司做維護,C++開發的,有.NET封裝的連結庫,甚好!項目地址:https://github.com/tesseract-ocr/tesseract語言庫:https://github
Time of Update: 2015-12-25
標籤:轉自:www.scottqian.com--概述與導航
Time of Update: 2015-12-25
標籤:工作中自己用C#寫了專門讀寫EXCEL(不需要OFFICE環境,直接讀原始檔案,速度快)的COM組件,在使用過程中,發現原先的註冊程式是有問題的。網上也有同樣的網友碰到這個問題,但都沒找到合適的解決辦法。現在我把問題和解決方案都寫出來,供讀者參考。 其實問題都是出在COM組件的註冊上,根本的原因就是REGASM /u 命令有些時候是無效的! 我這邊提供的註冊過程是先卸載,然後註冊。原先的註冊過程是: (1)
Time of Update: 2015-12-25
標籤:一、 C# 6.0,對應.NET 4.6,對應VS 2015,新特性:主建構函式、using靜態類、屬性運算式、方法運算式、枚舉參數、null判斷、Constructor type parameter inference、內聯out、自動屬性增強、字串嵌入值string.Format變成直接"{變數}"、nameof運算式、異常過濾器、catch和finally 中的 await 、無參數的結構體建構函式1、字串嵌入值這個Resharper有自動提示,可以自動轉換,但怕技術太新,
Time of Update: 2015-12-24
標籤:用C#編寫Windows Service時,執行輪詢一般有兩種方式,一種是用Timer,System.Timers或者是System.Thread下的,這種執行是按時間迴圈執行,缺點是也許上個執行還沒有完成,又開始執行新的。另一種方式是利用線程,在OnStart裡單開一個線程去跑含有死迴圈結構的函數,這種方式的缺點是,對線程的控制困難,停止服務了,線程還有可能在執行,不過 .Net 4.0+
Time of Update: 2015-12-24
標籤:類型基礎所有類型都從System.Object派生 CLR要求所有對象都用new 操作符來建立。Employee e = new Employee("Constructor Parameters"); 以下是 new 操作符所做的事情:#1, 計算類型及所有基底類型(一直到System.Object, 雖然它沒有定義自己的執行個體欄位)中定義的所有執行個體欄位需要的位元組數。堆上的每個對象還需要一些額外(overhead 開銷成員)的成員 --
Time of Update: 2015-12-24
標籤: 在WinCE下,使用DateTime.Now擷取的系統時間是不帶毫秒的,如果想要它帶毫秒,需要耍點手段。話不多說,直接上代碼: public static DateTimePrecisely{ //定義一個全域變數,用來儲存一個毫秒的0點。 private static int m_offset = 0; static DateTimePrecisely() { int s = DateTime.Now.Second; //
Time of Update: 2015-12-24
標籤:一、封裝 封裝:就是將成員變數設為private私人的,然後將其封裝出一個屬性屬性是具有get和set兩個函數的讀取寫入器,能夠成為賦值取值做資料傳遞。 封裝的方法:在欄位名上點擊右鍵,重構—封裝欄位,即可將欄位封裝。 二、繼承
Time of Update: 2015-12-24
標籤: 1、類與對象 類是物件導向編程的基本單元;類造出來的變數叫對象。 一個類包含倆種成員:欄位與方法。 欄位即變數,方法即函數。 物件導向思想:教給我們如何合理的運用類的規則去編寫代碼。2、類的欄位 欄位代表了類中的資料。在變數之前可以加上public、private和protected表示欄位的存取權限。3、類的方法(1)、函數的概念
Time of Update: 2015-12-24
標籤:一、類是物件導向課程的基本單元。在類的裡面可以直接定義欄位(成員變數),也可以定義方法(函數)。例如:這裡的public是修飾符,修飾符的作用是用來限定它的可存取範圍。兩個同範圍(同一個類中,或者父子類中)兩個同名但參數類型不同或者參數個數不同的方法互相間構成重載關係。兩個構成重載關係的方法(函數)必須滿足以下條件:(1)方法(函數)名相同;(2)參數類型不同,或參數個數不同。這裡需要注意的是,函數傳回值類型的不同不是函數重載的判斷條件。 二、靜態成員 屬性、方法和
Time of Update: 2015-12-24
標籤: 最近客戶提了一個需求,要在網站中添加百度地圖的顯示,其實原來是有Google地圖的,但由於Google在大陸遭到封殺,只好再給使用者增加一個選擇了。下面我將自己最近整理的一些知識分享給大家。 如何使用百度地圖API:1、要先引用API庫的連結: eg:<script type="text/javascript"
Time of Update: 2015-12-24
標籤:如何才能在編程領域迅速牛起來呢?要想成為編程達人,可以分為四步走。第一步:海量觀摩與學習,快速找到章法。編程需要很多的知識,不同的語言有不同的文法,有不同的應用環境。學習編程的第一步,就是我們各種編程的基礎知識,包括資料結構,基礎文法,網路知識概念等。然後通過別人寫的例子進行學習,快速理解各種文法規則等。簡單點,就是多看書,多學習。第二步:找機會大量練手,以數量取勝編程是需要大量實踐的,理論再好,不會動手也不可以。當你在第一步的基礎上時,你通過海量的觀摩和學習,現在就是要講你學習的給輸出。
Time of Update: 2015-12-24
標籤: 儲存時期即生存周期——變數在記憶體中保留的時間 變數的範圍和連結一起表明程式的哪些部分可以通過變數名來使用該變數。 注意:生存期和範圍是兩個不同的概念。 範圍 範圍描述了程式中可以訪問一個標識符的一個或多個地區。一個C變數的範圍可以是代碼塊範圍、函數原型範圍,或者檔案範圍。