㈠ c#中 怎麼件類文件 在winform中用的,我想把資料庫的一些頻繁操作的比如連接等操作添加到類文件里。
資源文件顧名思義就是存放資源的文件。資源文件在程序設計中有著自身獨特的優勢,他獨立於源程序,這樣資源文件就可以被多個程序使用。同時在程序設計的時候,有時出於安全或者其他方面因素的考慮,把重要東西存放在資源文件中,也可以達到保密、安全的效果。那麼Visual C#所使用的資源文件中到底存放哪些東西呢?在用Visual C#創建資源文件大致可以存放三種類型的數據資源,分別是位元組數組、各種對象和字元串。本文將結合一個程序例子來具體說明用Visual C#是如何創建資源文件的。
一.用Visual C#在創建資源文件用到的一些概念和理論:
在.Net FrameWork SDK中的一個名字叫System.Resources名稱空間,在此名稱空間中為應用程序提供了許多創建、存儲和使用資源文件的類和介面。其中有一個類叫ResourceWriter,Visual C#就是通過調用這個類來實現創建、存儲資源文件的。
二.Visual C#如何創建資源文件:
首先要繼承一個ResourceWriter類,然後調用ResourceWriter類的一個方法Generate ( ),就可以產生一個資源文件了。具體語句如下:
ResourceWriter rw = new ResourceWriter ( "My.resources" ) ;
rw.Generate ( ) ;
此時在磁碟的中就會產生一個名稱為"My.resources"的資源文件,但此時的資源文件沒有任何內容,下面我們就來看看如何往資源文件中添加資源。
三.在資源文件中添加資源:
在ResourceWriter類中提供了一個AddResource ( )方法,這個方法的作用就是往資源文件中添加資源的。在Visual C#中對不同的資源有著不同的加入方式。
(1).加入位元組數組,語法格式為:
public void AddResource ( string , byte [ ] ) ;
注釋:其中string是在使用資源文件的時候,此位元組數組在程序中的的唯一標識符
(2).加入對象,語法格式為:
public void AddResource ( string , object );
注釋:其中string是在使用資源文件的時候,此對象在程序中的唯一標識符
在本文程序中,我們利用這種調用方式來加入圖標和圖象,具體如下:
Icon ico = new Icon ( "Demo.ico" ) ;
Image canceloff = Image.FromFile ("cancel-off.png") ;
Image cancelon = Image.FromFile ( "cancel-on.png" ) ;
Image cancelover = Image.FromFile ( "cancel-over.png" ) ;
Image okdown = Image.FromFile ( "ok-down.png" ) ;
Image okoff = Image.FromFile ( "ok-off.png" ) ;
Image okon = Image.FromFile ( "ok-on.png" ) ;
rw.AddResource ( "demo.ico" , ico ) ;//在資源文件中加入圖標
//以下是在資源文件中加入圖象
rw.AddResource ( "cancel-off.png" , canceloff ) ;
rw.AddResource ( "cancel-on.png" , cancelon ) ;
rw.AddResource ( "cancel-over.png" , cancelover ) ;
rw.AddResource ( "ok-down.png" , okdown ) ;
rw.AddResource ( "ok-off.png" , okoff ) ;
rw.AddResource ( "ok-on.png" , okon ) ;
(3).加入字元串,具體語法如下:
public void AddResource ( string1 , string2) ;
注釋:其中string1是在使用資源文件的時候,此字元串在程序中的唯一標識符在本文的程序中,是如此使用的:
rw.AddResource ( "MyStr" , "從資源文件中讀取字元串!" );
至此我們已經創建了一個資源文件,並且在資源文件中加入了若干個資源,當然在這之後,還應該注意,保存此資源文件,並關閉資源文件,具體如下:
rw.Close ( ) ;
四.創建資源文件的源程序代碼:
通過上面的論述,我們不難理解下面這些代碼。下列程序代碼的作用就是,創建一個名稱為"My.resources"資源文件,並且在此資源文件中加入一個圖標資源,若干個圖象資源,和一個字元串資源。具體代碼如下:
CreatResources.cs:
using System ;
using System.Drawing ;
using System.Resources ;
class CreatResource
{
public static void Main ( )
{
ResourceWriter rw = new ResourceWriter ( "My.resources" ) ;
Icon ico = new Icon ( "Demo.ico" ) ;
Image canceloff = Image.FromFile ("cancel-off.png") ;
Image cancelon = Image.FromFile ( "cancel-on.png" ) ;
Image cancelover = Image.FromFile ( "cancel-over.png" ) ;
Image okdown = Image.FromFile ( "ok-down.png" ) ;
Image okoff = Image.FromFile ( "ok-off.png" ) ;
Image okon = Image.FromFile ( "ok-on.png" ) ;
rw.AddResource ( "demo.ico" , ico ) ;
rw.AddResource ( "cancel-off.png" , canceloff ) ;
rw.AddResource ( "cancel-on.png" , cancelon ) ;
rw.AddResource ( "cancel-over.png" , cancelover ) ;
rw.AddResource ( "ok-down.png" , okdown ) ;
rw.AddResource ( "ok-off.png" , okoff ) ;
rw.AddResource ( "ok-on.png" , okon ) ;
rw.AddResource ( "MyStr" , "從資源文件中讀取字元串!" ) ;
rw.Generate ( ) ;
rw.Close ( ) ;
}
}
最好還要提醒一下,在成功編譯成執行文件後,在執行此文件的時候,必須保證在此執行文件的相同目錄,存在上面代碼中提到名稱的圖標和圖象,否則在創建資源文件的時候是會出錯的。
五.總結:
可見用Visual C#創建資源文件並不是一個復雜的過程,在下一篇文章中,我們將介紹如何在Visual C#使用資源文件中資源。這才是Visual C#資源文件編程的重點和難點。當然文中所使用的資源文件就是以本文中創建的資源文件。
使用資源文件
在《Visual C#資源文件編程--創建資源文件》中已經介紹了如何用Visual C#創建資源文件。本文將接著上篇文章的話題來探討資源文件另外一個問題,在Visual C#如何使用資源文件。在上一篇文章中,我們已經成功的創建了一個名稱為"My.resources"的資源文件。這個資源文件中包含有一個圖標資源,在文件中的名稱為"demo.ico",若干個圖片資源和一個字元串資源,在文件中的名稱為"MyStr"。我們將以上一篇文章創建的此資源文件為對象,結合一個具體的程序例子來看一下用Visual C#如何使用資源文件。
一.本文程序設計和運行的軟體環境:
(1).微軟公司視窗2000伺服器版
(2)..Net FrameWork SDK Beta 2
二.程序設計中的一些概念和理論:
程序設計時涉及到的概念和理論主要是二種變數的相互轉換。這就是二種變數就是所謂的實值類型變數(Value Type Variable)和參考類型變數(Reference Type Variable)。而二者之間的相互轉換,在Visual C#中被稱為裝箱(Boxing)和出箱(Unboxing)。所謂裝箱就是把實值類型變數轉換成參考類型變數的過程,反之就是出箱。那麼什麼類型的變數是參考類型的變數,什麼類型的變數又是實值類型變數呢?這二者之間有什麼區別么?在Visual C#中的參考類型就是泛指這些類型,如:Object、Class、Interface、Delegate、String、Array等。這些類型定義的變數就是參考類型變數。而實值類型就是平常的平常使用的整型、布爾型、枚舉型等,由這些類型定義的變數就是實值類型變數。他們之間的最大區別是參考類型變數是指向實體對象的指針,而實值類型變數就是實在的實體對象。由於裝箱和出箱是一個概念性很強的操作過程,詳細介紹需要很大的篇幅。而這超出了本文探討的主要范疇。所以本文只介紹和程序相關的操作即出箱。具體的操作步驟,將在下一屆結合程序來介紹。
三.程序設計的思路已經重要步驟的解決方法:
(1).如何在程序編譯的時候中嵌入資源。資源文件和程序是二個獨立的文件,要把資源文件嵌入到最後生成的程序中,需要在編譯的時候加上"/resource"命令,這個命令可以簡寫為"/res"。在本文中程序的名稱為"use.cs",資源文件的名稱為"My.resources",則把資源嵌入程序的編譯命令如下:
Csc.exe /res:My.resources use.cs
(2).如何在程序管理資源文件中的資源:
在.Net FrameWork SDK這提供了一個關於資源文件創建和使用的名稱空間--System.Resources。在這個名稱空間中有一個Class為ResourceManager,這個Class的主要作用就是管理並使用資源文件。Visual C#是通過這個類來管理並使用嵌入程序中的資源文件中的資源。下列代碼就是定義一個ResourceManager類來管理嵌入程序資源文件中的資源:
ResourceManager rm = new ResourceManager ( "Images" , Assembly.GetExecutingAssembly ( ) ) ;
(3).如何在程序中使用資源文件中的資源:
在上一篇文章中,我們已經了解到在創建資源文件的時候,使用了AddResource ( )方法來加入資源,他的語法中的第一個參數是用戶可以定義的字元串,這個字元串就是資源在資源文件的唯一標識,在程序設計中,就是通過這個唯一標識符來使用某個資源的。那麼如何在程序中通過這個標識符來得到所需資源?這就要使用到ResourceManager類中的GetObject()和GetString()方法。這二個方法作用是獲得指定的資源。下面是這二個方法的語法:
object GetSting(String)
object GetObject(String)
其中的"String"就是資源在資源文件中的那個唯一標識符。細心的讀者可能已經注意到,這二個方法的返回值都是一個Object類型的變數,也就是一個參考類型的變數,而在程序中的字元串或者圖象等,是一個實值類型變數。這就需要進行轉換,而這種轉換就是上面所說的裝箱和出箱。下列代碼是從資源文件中提取字元串、圖象和圖標資源:
提取字元串資源:
String s = ( ( String ) rm.GetString ( "MyStr" ) ) ;
提取圖標資源:
Icon icoDemo = ( ( Icon ) rm.GetObject ( "demo.ico" ) ) ;
提取圖象資源:
Image a = ( ( Image ) ( rm.GetObject ( "ok-off.png" ) ) ) ;
四.結合一個程序例子來看一下,資源文件的具體使用方法:
下面的程序例子所使用的資源文件是上一篇文章中創建的資源文件"My.resources",程序中定義了三個Lable組件,其中的二個的作用是顯示資源文件中圖象資源,另外一個的作用是顯示資源文件中字元串資源,程序的圖標是取自資源文件中的圖標資源。下面是程序的源代碼:
using System ;
using System.Drawing ;
using System.Collections ;
using System.ComponentModel ;
using System.Windows.Forms ;
using System.Data ;
using System.Resources ;
using System.Reflection ;
public class Form1 : Form
{
private Label lblOK ;
private Label lblCancel ;
private System.ComponentModel.Container components = null ;
private Label lblResource ;
public Form1 ( )
{
//初始化窗體中的組件
InitializeComponent ( ) ;
}
//清除程序中使用過的資源
protected override void Dispose ( bool disposing )
{
if ( disposing )
{
if ( components != null )
{
components.Dispose ( ) ;
}
}
base.Dispose ( disposing ) ;
}
private void InitializeComponent ( )
{
ResourceManager rm = new ResourceManager ( "Images" , Assembly.GetExecutingAssembly ( ) ) ;
this.lblOK = new Label ( ) ;
this.lblCancel = new Label ( ) ;
this.lblResource = new Label ( ) ;
this.SuspendLayout ( ) ;
this.lblOK.BackColor = System.Drawing.Color.White ;
//使用資源文件中的圖象資源
this.lblOK.Image = ( ( Image ) ( rm.GetObject ( "ok-off.png" ) ) ) ;
this.lblOK.Location = new System.Drawing.Point ( 24 , 40 ) ;
this.lblOK.Name = "lblOK" ;
this.lblOK.Size = new System.Drawing.Size ( 75 , 23 ) ;
this.lblOK.TabIndex = 0 ;
this.lblOK.Click += new System.EventHandler ( this.lblOK_Click ) ;
this.lblOK.MouseEnter += new System.EventHandler ( this.lblOK_MouseEnter ) ;
this.lblOK.MouseLeave += new System.EventHandler ( this.lblOK_MouseLeave ) ;
//出箱
//使用資源文件中的圖象資源
this.lblCancel.Image = ( ( Image ) ( rm.GetObject ( "cancel-off.png" ) ) ) ;
this.lblCancel.Location = new System.Drawing.Point ( 152 , 40 ) ;
this.lblCancel.Name = "lblCancel" ;
this.lblCancel.Size = new System.Drawing.Size ( 75 , 23 ) ;
this.lblCancel.TabIndex = 1 ;
this.lblCancel.Click += new System.EventHandler ( this.lblCancel_Click ) ;
this.lblCancel.MouseEnter += new System.EventHandler ( this.lblCancel_MouseEnter ) ;
this.lblCancel.MouseLeave += new System.EventHandler ( this.lblCancel_MouseLeave ) ;
this.lblResource.Location = new System.Drawing.Point ( 88 , 8 ) ;
this.lblResource.Name = "lblResource" ;
this.lblResource.TabIndex = 2 ;
//出箱
//使用資源文件中的字元串資源
this.lblResource.Text = ( ( String ) rm.GetString ( "MyStr" ) ) ;
this.AutoScaleBaseSize = new System.Drawing.Size ( 5 , 13 ) ;
this.ClientSize = new System.Drawing.Size ( 240 , 101 ) ;
this.Controls.Add ( lblResource ) ;
this.Controls.Add ( lblCancel ) ;
this.Controls.Add ( lblOK ) ;
//出箱
//使用資源文件中的圖標資源
Icon icoDemo = ( ( Icon ) rm.GetObject ( "demo.ico" ) ) ;
this.Icon = icoDemo ;
this.Name = "Form1" ;
this.Text = "Visual C#中使用資源文件!" ;
this.ResumeLayout ( false ) ;
}
static void Main ( )
{
Application.Run ( new Form1 ( ) ) ;
}
private void lblOK_MouseEnter ( object sender , System.EventArgs e )
{
ResourceManager rm = new ResourceManager ( "Images" , Assembly.GetExecutingAssembly ( ) ) ;
this.lblOK.Image = ( ( Image ) ( rm.GetObject ( "ok-on.png" ) ) ) ;
}
private void lblOK_MouseLeave ( object sender , System.EventArgs e )
{
ResourceManager rm = new ResourceManager ( "Images" , Assembly.GetExecutingAssembly ( ) ) ;
this.lblOK.Image = ( ( Image ) ( rm.GetObject ( "ok-off.png" ) ) ) ;
}
private void lblOK_Click ( object sender, System.EventArgs e )
{
ResourceManager rm = new ResourceManager ( "Images" , Assembly.GetExecutingAssembly ( ) ) ;
this.lblOK.Image = ( ( Image ) ( rm.GetObject ( "ok-down.png" ) ) ) ;
}
private void lblCancel_MouseEnter ( object sender , System.EventArgs e )
{
ResourceManager rm = new ResourceManager ( "Images" , Assembly.GetExecutingAssembly ( ) ) ;
this.lblCancel.Image = ( ( Image ) ( rm.GetObject ( "cancel-onr.png" ) ) ) ;
}
private void lblCancel_MouseLeave ( object sender , System.EventArgs e )
{
ResourceManager rm = new ResourceManager ( "Images" , Assembly.GetExecutingAssembly ( ) ) ;
this.lblCancel.Image = ( ( Image ) ( rm.GetObject ( "cancel-off.png" ) ) ) ;
}
private void lblCancel_Click(object sender, System.EventArgs e)
{
ResourceManager rm = new ResourceManager ( "Images" , Assembly.GetExecutingAssembly ( ) ) ;
this.lblCancel.Image = ( ( Image ) ( rm.GetObject ( "cancel-over.png" ) ) ) ;
}
}
五.總結:
至此我們已經完成了在Visual C#資源文件方面編程的全部內容,其中的主要內容就是創建資源文件和使用資源文件二大方面,我想通過這二篇文章的介紹,你對資源文件應該有了一個比較全面的認識了吧!
祝你好運..
㈡ 可編程邏輯器件主要有哪些基本資源,並簡述其功能作用
邏輯器件可分為兩大類 - 固定邏輯器件和可編程邏輯器件。 一如其名,固定邏輯器件中的電路是永久性的,它們完成一種或一組功能 - 一旦製造完成,就無法改變。 另一方面,可編程邏輯器件(PLD)是能夠為客戶提供范圍廣泛的多種邏輯能力、特性、速度和電壓特性的標准成品部件 - 而且此類器件可在任何時間改變,從而完成許多種不同的功能。
對於固定邏輯器件,根據器件復雜性的不同,從設計、原型到最終生產所需要的時間可從數月至一年多不等。 而且,如果器件工作不合適,或者如果應用要求發生了變化,那麼就必須開發全新的設計。 設計和驗證固定邏輯的前期工作需要大量的「非重發性工程成本」,或NRE。 NRE表示在固定邏輯器件最終從晶元製造廠製造出來以前客戶需要投入的所有成本,這些成本包括工程資源、昂貴的軟體設計工具、用來製造晶元不同金屬層的昂貴光刻掩模組,以及初始原型器件的生產成本。 這些NRE成本可能從數十萬美元至數百萬美元。
對於可編程邏輯器件,設計人員可利用價格低廉的軟體工具快速開發、模擬和測試其設計。 然後,可快速將設計編程到器件中,並立即在實際運行的電路中對設計進行測試。 原型中使用的PLD器件與正式生產最終設備(如網路路由器、ADSL數據機、DVD播放器、或汽車導航系統)時所使用的PLD完全相同。 這樣就沒有了NRE成本,最終的設計也比採用定製固定邏輯器件時完成得更快。
採用PLD的另一個關鍵優點是在設計階段中客戶可根據需要修改電路,直到對設計工作感到滿意為止。 這是因為PLD基於可重寫的存儲器技術--要改變設計,只需要簡單地對器件進行重新編程。 一旦設計完成,客戶可立即投入生產,只需要利用最終軟體設計文件簡單地編程所需要數量的PLD就可以了。
可編程邏輯器件的兩種主要類型是現場可編程門陣列(FPGA)和復雜可編程邏輯器件(PLD)。 在這兩類可編程邏輯器件中,FPGA提供了最高的邏輯密度、最豐富的特性和最高的性能。 現在最新的FPGA器件,如Xilinx Virtex系列中的部分器件,可提供八百萬"系統門"(相對邏輯密度)。 這些先進的器件還提供諸如內建的硬連線處理器(如IBM Power PC)、大容量存儲器、時鍾管理系統等特性,並支持多種最新的超快速器件至器件(device-to-device)信號技術。 FPGA被應用於范圍廣泛的應用中,從數據處理和存儲,以及到儀器儀表、電信和數字信號處理等。
與此相比,PLD提供的邏輯資源少得多 - 最高約1萬門。 但是,PLD提供了非常好的可預測性,因此對於關鍵的控制應用非常理想。 而且如Xilinx CoolRunner系列PLD器件需要的功耗極低。
㈢ 編程有幾種類型
編程語言的種類繁多,總的來說分為機器語言、匯編語言以及高級語言三大類。
機械語言(machine language):計算機可直接識別、運行的二進制代碼,執行速度快,資源佔用少,但可讀性不強,編程復雜;
匯編語言(assembly language):一種用於電子計算機、微處理器、微控制器或其他可編程器件的低級語言,亦稱為符號語言。目標代碼簡短,佔用內存少,執行速度快,但缺乏可移植性,編程復雜;
高級語言(High-level programming language):相對於機器語言以及匯編語言,高級語言的可讀性強,可移植性高,一般通過事先編好的一個叫做編譯程序的機器語言程序編譯成用機器指令表示的目標程序。現在流行的高級語言有Java、C語言、C++、C#、Pascal、Basic等等。
(3)編程中的資源類型有哪些擴展閱讀:
計算機對除機器語言以外的源程序不能直接識別、理解和執行,都必須通過某種方式轉換為計算機能夠直接執行的。
這種將高級程序設計語言編寫的源程序轉換到機器目標程序的方式有兩種:解釋方式和編譯方式。
解釋方式下,計算機對高級語言書寫的源程序一邊解釋一邊執行,不能形成目標文件和執行文件。
編譯方式下,首先通過一個對應於所用程序設計語言的編譯程序對源程序進行處理,經過對源程序的詞法分析、語法分析、語意分析、代碼生成和代碼優化等階段將所處理的源程序轉換為用二進制代碼表示的目標程序,然後通過連接程序處理將程序中所用的函數調用、系統功能調用等嵌入到目標程序中,構成一個可以連續執行的二進制執行文件。調用這個執行文件就可以實現程序員在對應源程序文件中所指定的相應功能。
㈣ C語言中handle類型是什麼意思
1、handle是句柄類型,來源於Handle-C,Handle-C是硬體描述語言。windows在創建一個系統對象的同時,把一個句柄賦值給這個實體 ,可以用這個句柄來識別或者修改這個對象, 這就是handle句柄的作用。
2、句柄(HANDLE)是資源的標識。操作系統要管理和操作這些資源,都是通過句柄來找到對應的資源。按資源的類型,又可將句柄細分成圖標句柄(HICON),游標句柄(HCURSOR),窗口句柄(HWND),應用程序實例句柄(HINSTANCE)等等各種類型的句柄。 所以HWND是一種HANDLE