【手機(jī)軟件】symbian系統(tǒng)開發(fā)教程_第1頁
【手機(jī)軟件】symbian系統(tǒng)開發(fā)教程_第2頁
【手機(jī)軟件】symbian系統(tǒng)開發(fā)教程_第3頁
【手機(jī)軟件】symbian系統(tǒng)開發(fā)教程_第4頁
【手機(jī)軟件】symbian系統(tǒng)開發(fā)教程_第5頁
已閱讀5頁,還剩36頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

symbian系統(tǒng)開發(fā)教程(一)第一章:SymbianOS簡介作者:謝興enigma19971@1.1.Symbian系統(tǒng)簡介當(dāng)前有很多手機(jī)運行SymbianOS,數(shù)量甚至超出您的想象。到目前為止已經(jīng)有超過7500萬、100多種型號的手機(jī)運行SymbianOS。這些電話大部分都形態(tài)迥異:有的配有鍵盤,有的采用筆控輸入;有的配備TFT彩色屏幕,有的則配備黑白LCD顯示屏;有的擅長于音樂播放,有的專注于電子游戲、圖像處理甚至電視功能;有的手機(jī)面向個人消費者,有的專門針對商務(wù)用戶;有的是為單手操作設(shè)計的,有的是為雙手操作設(shè)計的——種類繁多不一而足。SymbianOS手機(jī)受到廣大消費者的喜愛。僅2005年就售出3400萬部SymbianOS手機(jī)——這相當(dāng)于每不到一秒鐘就有一部SymbianOS手機(jī)被出售。網(wǎng)絡(luò)運行商同樣青睞SymbianOS手機(jī)。全球有250多個移動電話網(wǎng)絡(luò)運行商選擇了SymbianOS手機(jī)。所有這些都表明現(xiàn)在市面上有成千上萬的手機(jī)是基于SymbianOS的,所以為symbian系統(tǒng)開發(fā)的應(yīng)用程序會得到廣泛的應(yīng)用?,F(xiàn)在已經(jīng)有5400多種商業(yè)性應(yīng)用軟件可供SymbianOS手機(jī)應(yīng)用。本教程旨在為您提供一些編寫SymbianOS應(yīng)用程序的入門知識。希望它會對您有所裨益,為開發(fā)SymbianOS應(yīng)用程序打下一個良好的基礎(chǔ)。1.2.開發(fā)語言從開發(fā)初期起,SymbianOS就是專門為移動電話而設(shè)計的,因此從彈性的電源管理(resilientpower-management)到內(nèi)存資源的謹(jǐn)慎使用,全都是為了滿足手機(jī)操作系統(tǒng)的特定需求。作為SymbianOS的開發(fā)人員,您將受益于SymbianOS這樣一個專門為移動設(shè)備而創(chuàng)立并隨著市場一起發(fā)展的開發(fā)平臺。SymbianOS最“基本”的編程語言是一種改進(jìn)的C++。SymbianOSC++經(jīng)過特殊設(shè)計與優(yōu)化,以利于降低手機(jī)電池能耗和內(nèi)存使用。比如,為了節(jié)約電池耗電,所有SymbianOS程序都是基于事件(event-based)的,而當(dāng)沒有任何程序進(jìn)行事件處理時,CPU就進(jìn)入休眠。您在開發(fā)軟件時也可以使用Java、Python、.NET(使用VisualBasic和帶AppForge’sCrossfire的C#)、Perl、OPL和AdobeFlash,但是SymbianOSC++是最強(qiáng)大(它允許最大限度的利用操作系統(tǒng)提供的所有功能)也是最快捷(因為它直接以編譯碼運行,而無需在運行時進(jìn)行解譯)的語言。這也就是為什么我們在本書中選擇C++來向您演示如何進(jìn)行SymbianOS開發(fā)的原因。好了,閑言少敘,讓我們言歸正傳。1.3.準(zhǔn)備工作首先您需要有一臺電腦能創(chuàng)建并測試在SymbianOS手機(jī)上運行的應(yīng)用程序。這也就是說電腦要有一個較快的CPU處理器(至少1.5GHz)和相當(dāng)大的RAM(512MB或更大)以及一個大容量硬盤(至少有2GB剩余空間)。該電腦必須能運行Windows2000或XP操作系統(tǒng)。然后您需要開發(fā)軟件來幫助您編寫代碼并進(jìn)行編譯。這可通過包含編輯程序(editor)、編譯程序(compiler)和鏈接程序(linker)的集成開發(fā)環(huán)境(IDE)來完成。在這推薦兩種適合SymbianOS程序開發(fā)的IDE。對于開發(fā)非商業(yè)用途的SymbianOS應(yīng)用程序,Nokia的Carbide.c++Express版本是最理想不過了,它建立在EclipseIDE的基礎(chǔ)上,供免費下載。對于使用VisualStudio.NET2003的程序員來說,也可選擇Carbide.vs。這是一套基于MicrosoftVisualStudio.NET2003IDE的工具,用于開發(fā)S60和Series80軟件。您還需要軟件開發(fā)包(SDK),專門用來編寫和創(chuàng)建SymbianOS應(yīng)用程序。基于不同手機(jī)類型,有不同版本的SDK供選擇,具體使用哪個SDK請見以下幾頁的說明。如果您還沒有決定具體的手機(jī)類型或平臺而無法確定選擇哪個SDK,我們建議您一開始可使用S60和UIQSDK。如果您想為最新款的手機(jī)(如Nokia3250、E60、E61、N71、N80、N91、N73或N93)編寫應(yīng)用程序,那就選擇基于SymbianOSv9的SDK(UIQ3或S60第三版),要么您就選擇更低版本的SDK(UIQ2.1或S60第二版)。不同版本的SymbianOS之間有什么區(qū)別?主要的分別是,在SymbianOS9.1版本之前,為較低版本的SymbianOS編寫的軟件往往可在較高版本上運行,但9.1版本與以往的版本截然不同。如要運行在9.1版的SymbianOS上,應(yīng)用程序必須稍加修改并進(jìn)行再次編譯。接下來您需要下載您所選擇的IDE和SDK。以下章節(jié)將向您介紹如何在互聯(lián)網(wǎng)上找到這些工具。1.4.S60平臺S60平臺是一個完整的應(yīng)用程序包(package),用戶接口和構(gòu)建于Symbian系統(tǒng)技術(shù)的開發(fā)工具。S60用戶接口(UI)經(jīng)過精心的設(shè)計,方便用戶使用,便于單手操作。從用戶的角度看來,該平臺最大的特點在于它的用戶界面:大的彩屏和各種輸入鍵(兩個軟件鍵,五方位的導(dǎo)航鍵,和幾個專用的鍵)。單手操作和大彩屏的優(yōu)點能使應(yīng)用程序開發(fā)者提供更有吸引力的內(nèi)容和提供更方便的導(dǎo)航功能,同時增加用戶使用手機(jī)時的愉快體驗。目前,s60平臺上已經(jīng)存在各種各樣的應(yīng)用軟件.其中最重要的有:高級智能電話應(yīng)用程序,個人信息管理應(yīng)用程序(PIM)(例如,電話簿,日歷,相冊),短信,網(wǎng)頁瀏覽,電子郵件和應(yīng)用程序安裝引擎,它能夠讓您自由地從電腦上下載軟件到您的手機(jī)上。S60第三版本支持兩種不同的外觀:?QVGAPortrait(240x320)?QVGALandscape(320x240)1.5.如何選擇SDK基于SymbianOS的手機(jī)外型各異,用戶界面(UI)也不盡相同。為了給特定的用戶界面編寫應(yīng)用程序,您必須選擇特定的SDK(盡管應(yīng)用程序的引擎往往與用戶界面無關(guān))。大部分運行SymbianOS的手機(jī)采用的是S60用戶界面并使用鍵盤操作。S60已經(jīng)發(fā)布了一系列版本,選擇正確的S60SDK和相應(yīng)的SymbianOS十分重要:S60第三版–SymbianOSv9.1S60第二版功能包3–SymbianOSv8.1S60第二版功能包2–SymbianOSv8.0aS60第二版功能包1–升級SymbianOSv7.0sS60第二版–SymbianOSv7.0sS60第一版–SymbianOSv6.1您可在以下網(wǎng)站查到每一系列S60SDK所包含的手機(jī)型號列表:/developer/sdks/sdks_series60.asp其它大部分基于SymbianOS的手機(jī)采用筆控輸入的UIQ用戶界面。以下網(wǎng)站列出了基于各版本的UIQSDK的手機(jī)機(jī)型/developer/sdks/sdks_uiq.asp您可以到以Nokia的網(wǎng)站下載SDK1.6.Carbide.c++集成開發(fā)環(huán)境(IDE)前面已經(jīng)提到了各種集成開發(fā)環(huán)境,這里我們主要介紹Carbide.c++的集成開發(fā)環(huán)境。Carbide.c++的集成開發(fā)環(huán)境(IDE)基于Eclipse集成開發(fā)環(huán)境版本3。增添了能使Eclipse處理symbianc++源文件和編譯Symbian工程的插件。這些插件分為以下幾類:?C/C++開發(fā)工具箱(CDT)。這是一個使得Eclipse管理和編譯symbian工程的工具集?Symbian插件。這些插件由symbian開發(fā),使得eclipse能夠處理EclipseC++的概念,同時提供對Symbian操作系統(tǒng)軟件開發(fā)工具箱和Symbian工具鏈的支持。?Nokia插件。由Nokia開發(fā),提供對Symbian操作系統(tǒng)工具箱的更多支持。插件實現(xiàn)了C++編譯器,symbian系統(tǒng)的調(diào)試器,并且加入了Carbide.c++系列產(chǎn)品的商業(yè)版本的高級特性。很明顯,因為Carbide.c++是基本的Eclipse集成開發(fā)環(huán)境,開發(fā)者可以進(jìn)一步定制其它的商業(yè)或免費的插件,比如說,一個版本控制系統(tǒng),一個UML建模系統(tǒng)等。Carbide.c++有自己的安裝程序,所以安裝比較簡單。在啟動這個產(chǎn)品之后,用戶看到的集成開發(fā)環(huán)境和Eclipse開發(fā)環(huán)境十分類似,如下圖所示,因為Carbide.c++是設(shè)計用于處理symbianc++應(yīng)用程序的,所以其集成開發(fā)環(huán)境的左邊顯示的是c/c++工程視圖,這個視圖用于顯示構(gòu)成一個典型symbianc++工程源文件、頭文件,資源文件。關(guān)于eclipse平臺和插件的相關(guān)知識,不是本教程所關(guān)心的重點,有興趣的讀者可參考相關(guān)的其他著述。1.7.開發(fā)環(huán)境的構(gòu)建?第一步:安裝JDK5.0?第二步:安裝ActivePerl(需要5.6.1以上版本)?第三步:安裝Symbiansdk?第三步:安裝Carbide.c++1.2版本。Carbide有不同的版本。其中Express版本是免費安裝的,但不支持UI設(shè)計功能,也不支持在手機(jī)上調(diào)試的功能。注意:這幾個文件需要放在一個目錄下面。否則,在編譯程序的過程中,可能會出現(xiàn)難以預(yù)料的錯誤。1.8.文件目錄的布局在動手寫代碼之前,我們有必要了解工程的文件組織結(jié)構(gòu)。如果您看過SDK中的例子工程,或是用IDE的工程向?qū)?chuàng)建一個UI應(yīng)用程序,您就會了解一個典型的工程文件結(jié)構(gòu)布局是怎樣的。當(dāng)工程增長到一定程度的時候,好的文件目錄布局將有助于幫助跟蹤代碼的變更。工程中包含了各種不同類型的文件,包括源文件和其他類型的文件,我們通常將這些文件分開來存放,下面我們簡短地介紹這些文件。資源文件,例如.bmp或.wav文件,通常被單獨地存放在一個目錄下面。測試代碼也會和產(chǎn)品代碼分開來存放。所以,一個典型的UI應(yīng)用程序會有如下這樣一些目錄結(jié)構(gòu)和文件。文件目錄存放文件類型data(S60)存放資源規(guī)格文件(.rss)Gfx(S60)應(yīng)用程序資源文件,例如圖片和聲音文件。Group該目錄存放工程文件(例如.mmp和bld.inf)Images(UIQ)應(yīng)用程序資源文件,例如圖片。Inc該目錄存放頭文件(typically.h,.hrh和.inl)rsrc(UIQ)存放資源規(guī)格文件(.rss,.ra)src該目錄存放.CPP文件Test存放測試代碼在group目錄下面,有兩個重要的文件,這兩個文件都與創(chuàng)建Symbian工程相關(guān):如果,需要在命令行編譯工程,必須創(chuàng)建如下兩個工程文件:·工程定義文件(.mmpfile),這個文件對要編譯的工程進(jìn)行描述,并定義要構(gòu)建的資源文件。該文件是環(huán)境無關(guān)的,編譯工具用它來生成針對各種目標(biāo)環(huán)境下的makefiles文件?!そM件描述文件(bld.inf),這個文件列出了一組相關(guān)的工程,并包含一些編譯指令.CodeWarrior和Carbide.c++都能夠?qū)牍こ潭x文件,并用它來在IDE環(huán)境下創(chuàng)建工程。下面詳細(xì)描述這些文件的格式。?組件(component)描述文件:bld.infBld.inf是一個文本文件。它的內(nèi)容非常繁瑣,主要包括工程定義文件mmp和其他的任何編譯工具所需要的文件。該文件分為多個節(jié),其中,mmp文件列表在PRJ_MMPFILES節(jié)中。即使一個工程文件只包含一個mmp文件,bld文件仍然是必須的。下面是一個典型的bld.inf文件。//目標(biāo)平臺PRJ_PLATFORMSWINSCWGCCE//從工程中輸出的文件PRJ_EXPORTS//None//工程定義文件PRJ_MMPFILESfilebrowseapp.mmp//工程定義文件(測試代碼用)PRJ_TESTMMPFILES..\test\FileBrowseTest.mmp在上面的例子中,如PRJ_PLATFORMS聲明所示,默認(rèn)情況下工程被編譯為針對WINSCW平臺和GCC-E平臺的執(zhí)行代碼。當(dāng)您用CodeWarrior為模擬器編譯代碼的時候,您使用的是WINSCW平臺,WINSCW的來由是,最終的代碼運行于Windows,單線程模式(inaSingleprocess),并用CodeWarrior編譯。平臺的名稱用來標(biāo)識最終的可執(zhí)行代碼所運行的那個平臺。所以,當(dāng)上面的代碼被編譯完后,可執(zhí)行程序被放在\epoc32\release\winscw目錄下面(根據(jù)是調(diào)試(debug)版本還是釋放(release)版本,被放在\udeb或\urel子目錄下面)。如果代碼是針對手機(jī)硬件的,需要選用GCCE平臺。這時,最終的可執(zhí)行代碼被放到\epoc32\release\gcce\目錄下面。?工程描述文件(mmp)mmp文件中的每個語句都以一個關(guān)鍵字開頭。下面是一個典型的mmp文件的例子。//filebrowseapp.mmpTARGETfilebrowseapp.exeTARGETTYPEexeUID0x100039CE0xE80000A6VENDORID0#ifdef__WINSCW__CAPABILITYAllFiles//AllFilesonemulatorsincenosigningisrequired#elseCAPABILITYNONE//Nocapabilitiesonhardware-otherwiseSISfilesigningisrequired#endifSOURCEPATH..\srcSOURCEFileBrowseAppUi.cppSOURCEFileBrowseDocument.cppSOURCEFileBrowseApplication.cppSOURCEFileBrowseBaseView.cppSOURCERFsEngine.cppSYSTEMINCLUDE\epoc32\includeUSERINCLUDE..\incSOURCEPATH..\dataSTARTRESOURCEfilebrowseapp.rssTARGETPATH\resource\appsHEADERENDSTARTRESOURCEfilebrowseapp_reg.rssTARGETPATH\private\10003A3F\appsENDSTARTRESOURCEfilebrowseapp_loc.rssTARGETPATH\resource\appsLANGSCHEADERENDSTARTBITMAPfilebrowseapp.mbmTARGETPATH\resource\appsHEADERSOURCEPATH..\gfxSOURCEC16folder.bmpSOURCEC16file.bmpSOURCE8mask.bmpENDLIBRARYeuser.libefsrv.libcone.libeikcore.libeikcoctl.libeikdlg.libegul.libeikctl.libapparc.libLIBRARYbafl.libLIBRARYavkon.libCommonEngine.lib下面簡單地描述每個關(guān)鍵字的作用:TARGET該關(guān)鍵字指明了目標(biāo)文件(exe或dll文件)的名稱。TARGETTYPE該關(guān)鍵字指明了工程所產(chǎn)生的目標(biāo)文件的類型,在上面的例子中,我們生成了一個可執(zhí)行文件。在大多數(shù)情況下,目標(biāo)文件的類型為dll,exe或是其他的插件(plugin)。UID目標(biāo)(通常指可以執(zhí)行的.exe或.dll文件)具有三個UID,這些UID用來標(biāo)識組件,第一個UID是無須指定的。因為它是編譯工具根據(jù)目標(biāo)的類型自動分配的。所以這里所指定的實際上是UID2,這個值進(jìn)一步指明了目標(biāo)的類型,上面例子中,值(0x100039CE)指明了目標(biāo)文件是一個應(yīng)用程序,Symbian系統(tǒng)使用這個值來標(biāo)識所有的應(yīng)用程序。下一個指定的UID對每個應(yīng)用程序來說都是唯一的。它標(biāo)識了這個應(yīng)用程序的注冊資源文件和該程序的安裝包文件.pkg。所以為了保證這個值的唯一性,您必須要向Symbian申請這個UID,由他們負(fù)責(zé)從數(shù)據(jù)庫中為您的應(yīng)用程序分配一個UID。可到Symbian的網(wǎng)站上了解更多的相關(guān)信息。有一些UID的值是用來測試的,例如SDK中的例子:文件系統(tǒng)瀏覽應(yīng)用程序(filesystembrowser)所使用的UID為0xE80000A6,您也可以在測試您的應(yīng)用程序的時候使用這個值,但注意,不要在您的最終產(chǎn)品中使用它。SECUREID這是個可選的關(guān)鍵了,上面的例子中沒有出現(xiàn)。該關(guān)鍵字為應(yīng)用程序定義了安全標(biāo)示符,用來指明這個程序可以訪問哪個私有的目錄。如果該關(guān)鍵字沒有使用,用UID3來代替該關(guān)鍵字。VENDORID該關(guān)鍵字是在SymbianOSv9.1版本新增的。用來指定軟件提供商的ID號。該關(guān)鍵字不是必須的,可省略。CAPABILITY這是SymbianOS9.1新增加的關(guān)鍵字。該關(guān)鍵字指明了應(yīng)用程序的權(quán)限(或稱作能力,如:查看系統(tǒng)目錄)。大上面的例子中,應(yīng)用程序在模擬器上和在手機(jī)上被分配了不同的能力(capability)。在模器上,該程序被賦予了AllFiles的權(quán)限,比在手機(jī)上運行時,能看到更多的私有文件系統(tǒng)的區(qū)域。沒有被賦予AllFiles能力的程序不能看到\Sym目錄下的內(nèi)容。應(yīng)用程序只有在經(jīng)過認(rèn)證(certificate)以后才能獲得AllFiles的能力。關(guān)于認(rèn)證和簽名的內(nèi)容,我們在這一章的后面會講到。SOURCEPATH和SOURCESOURCE關(guān)鍵字指明了有哪些源文件和資源文件需要編譯,而SOURCEPATH關(guān)鍵字指明了這些文件的位置。這個位置既可以是相對路徑(相對于mmp文件),也可以是絕對路徑。SYSTEMINCLUDE這個關(guān)鍵字指定了系統(tǒng)頭文件的位置,系統(tǒng)頭文件通常用#include<>語句包含。USERINCLUDE該關(guān)鍵字的作用類似于SYSTEMINCLUDE,它指明了在用戶自定義頭文件所在的位置。STARTRESOURCE…ENDSTARTRESOURCE關(guān)鍵字表明了一個信息塊的開始,這些信息指明了如何編譯資源文件。END標(biāo)示該信息塊結(jié)束。TARGETPATH該關(guān)鍵字用來指定被編譯后的資源文件的位置。注意:由于安全方面的考慮,所有的可執(zhí)行代碼(exe或dll)都從手機(jī)上的\sys\bin\目錄運行??蓤?zhí)行代碼不需要用該關(guān)鍵字指定位置。TARGETPATH關(guān)鍵字僅僅用來指定編譯后的資源文件的位置。HEADER這是一個可選的關(guān)鍵字,當(dāng)它被使用的時候,系統(tǒng)將會在\epoc32\include\路徑下創(chuàng)建資源頭文件(.rsg)。這個頭文件包含了允許以C++代碼引用特定資源的標(biāo)識符。LIBRARY這個關(guān)鍵字列出了應(yīng)用程序需要鏈接的庫文件。STATICLIBRARY該關(guān)鍵字用來指定需要被靜態(tài)鏈接的庫文件(庫文件中的代碼會被鏈接到您的程序中,而不是需要時才裝載到內(nèi)存)。STARTBITMAP…END這一節(jié)包含了應(yīng)用程序圖標(biāo)所使用的位圖(bitmap),以及如何將這些位圖編譯成.mbm(Symbian系統(tǒng)專有的圖像格式)的方式。EPOCSTACKSIZE該關(guān)鍵字是可選的,我們上面的例子中并未用到。在以前的SymbianOS版本中,缺省的棧大小為0X5000字節(jié)。在v9.1版本中,缺省值為0x2000。為了增加棧的大小,可以使用該關(guān)鍵字。例如:EPOCSTACKSIZE0x5000。要注意的是,對棧設(shè)置僅僅對真實設(shè)備有效,但對模擬器無效。EPOCHEAPSIZE該關(guān)鍵字也是可選的,我們上面的例子中并未用到。這個關(guān)鍵字指定了應(yīng)用程序可以使用的最大、最小堆空間。缺省情況下,4K為最小的尺寸,1M為最大的尺寸。1.9.第一個程序:HellowWorld1.9.1.創(chuàng)建工程運行Carbide集成開發(fā)環(huán)境,在菜單欄上選擇file->New->SymbianOSC++project,出現(xiàn)如下圖所示的對話框:我們選擇帶用戶界面設(shè)計器的圖形用戶界面應(yīng)用程序(CarbideExpress版本不支持用戶界面設(shè)計的功能)。然后點擊“下一步”按鈕。出現(xiàn)下面的對話框:用戶選擇一個sdk的版本(筆者的機(jī)器上安裝的是s60_3rd_FP1版本的sdk)。繼續(xù)下一步:按下一步,繼續(xù):選擇一個空的界面,這樣我們可以自由地在上面添加控件。下面的步驟一直按“下一步”,直到完成。1.9.2.在模擬器上運行和調(diào)試工程建立完成后,就可以構(gòu)建(build)工程了。在將程序放到手機(jī)上運行之前,我們通常需要先在模擬器上運行、調(diào)試程序。模擬器是SDK附帶的一個軟件,能夠模擬真實手機(jī)的運行情況。在工程透視圖中,選中工程,點擊右鍵,將活動構(gòu)建設(shè)置為EmulatorDebug(Winscw)。如下圖所示:這樣,編譯出來的程序版本才是針對模擬器的。設(shè)置后,可以構(gòu)建(build)工程了:在工程透視圖中選中工程,點擊右鍵,選擇“buildTargetOnly”(只編譯模擬器版本,節(jié)省時間)。最后,點擊工具欄上的運行按鈕,選擇RunAs->1RunSymbianOSApplicationCarbide啟動模擬器,這個過程需要持續(xù)幾十秒到幾分種,依賴機(jī)器的配置。在模擬器啟動后,點擊模擬器上的軟件鍵,模擬器會出現(xiàn)下面的界面:選擇Installed選項后,可以看到應(yīng)用程序的圖標(biāo):在模擬器上點擊按鈕,運行該程序。1.10.在手機(jī)上運行和調(diào)試1.10.1.基本概念能夠在模擬器上運行、調(diào)試程序后,您可能想要在真實的手機(jī)上運行您的程序。但在這之前,先需要搞清以下幾個基本概念:?GCCE版本和ARM版本:在真實設(shè)備上運行的程序版本不同于我們在模擬器上運行的程序版本,在設(shè)備上運行的版本必須是GCCE版本或ARM版本。其中GCCE版本是用SDK自帶的編譯器的,使用它不需要付費,而ARM版本是專門針對ARM平臺的,代碼經(jīng)過優(yōu)化,性能優(yōu)于GCCE版本的程序,但需要付費。?.sis文件和.pkg:創(chuàng)建應(yīng)用程序的GCCE版本以后,需要創(chuàng)建一個Symbian安裝文件(.sis)。從本質(zhì)上來講,.sis文件只是一個壓縮文件,它包含了組成應(yīng)用程序所需的exe,dll,rss文件,和一些手機(jī)接收應(yīng)用程序時所必須的信息(例如:語言種類,應(yīng)用程序的UID)?,F(xiàn)在的問題是,我們根據(jù)什么信息來創(chuàng)建這個sis文件呢?答案在于pkg文件,在創(chuàng)建這個文件之前,先需要創(chuàng)建一個pkg文件,pkg文件中包含了一些有用的信息,包括將工程文件拷貝到手機(jī)的哪個目錄下面,程序的版本號等。?簽名(sign):在開發(fā)s603rd版本的應(yīng)用程序時,所有的.sis文件在安裝到手機(jī)之前,必須被簽名。如果您的程序沒有用到capability或只用到了對所有的用戶都開放的功能(utility),您可以使用自簽名認(rèn)證(SelfSignedcertificate)。當(dāng)在自己的手機(jī)上調(diào)試程序時,這種方法特別管用。?機(jī)上調(diào)試代理(on-devicedebugagent):如果想要在真實的手機(jī)設(shè)備上調(diào)試程序,需要在手機(jī)上安裝機(jī)上調(diào)試代理,這個手機(jī)上的代理程序通過藍(lán)牙或USB串行鏈路與調(diào)試器通信,在Carbide.c++調(diào)試器和目標(biāo)機(jī)器之間的起到接口的作用。調(diào)試代理提供以下功能:1.運行在Symbian系統(tǒng)上作為調(diào)試代理。2.為Symbian系統(tǒng)提供一個穩(wěn)定的集成的接口3.能被用來在真實的設(shè)備上調(diào)試應(yīng)用程序4.能燒入到系統(tǒng)鏡像中,或是被安裝的sis文件。使用機(jī)上調(diào)試代理,我們可以使用Carbide.c++集成開發(fā)環(huán)境來調(diào)試運行在手機(jī)硬件上的應(yīng)用程序,這使得調(diào)試過程更為容易。機(jī)上調(diào)試代理可以在所有的S603rd版本的設(shè)備上工作。包括在UIQ2nd版本和UIQ3rd版本的設(shè)備上。1.10.2.編譯、運行應(yīng)用程序的手機(jī)版本在清楚這些基本的概念后,下面我們看看,如何編譯和運行GCCE版本的應(yīng)用程序:1.編譯這個應(yīng)用程序的GCCE版本.2.創(chuàng)建Symbian安裝文件(.sis)。3.給.sis文件簽名。4.在s60手機(jī)上安裝這個sis文件。5.運行該應(yīng)用程序。首先,我們按下面的步驟,在Carbide中,編譯GCCE版本和創(chuàng)建sis文件。1)從菜單上選擇Project>Properties選項.2)在屬性對話框上,點擊C/C++Build。3)從Configuration下拉菜單中選擇"S603.0GCCEUREL"。4)點擊OK。5)從菜單欄上點擊Project>BuildProject。如下圖所示:Carbide根據(jù)工程的設(shè)置,創(chuàng)建了一個能在手機(jī)上運行的版本。如果編譯的過中沒有出錯,可以在目錄\Symbian\9.2\S60_3rd_FP1\Epoc32\release\gcce\urel中找到已經(jīng)編譯好的可執(zhí)行文件。然后,可以進(jìn)行下一步:生成sis文件。打開工程視圖,找到sis文件夾中的.pkg文件,點右鍵,在彈出菜單中選擇:buildPKGfile。如下圖所示:如果邊編譯的過程沒有出錯,可以在sis文件夾中找到經(jīng)過簽名的.sis文件和擴(kuò)展名為.cer的證書文件和擴(kuò)展名為.key的密鑰文件。這兩個文件是Carbide自動生成的。將經(jīng)過簽名的.sis(或.sisx)文件通過USB接口下載到手機(jī)(WAP,郵件附件,紅外,藍(lán)牙),然后用文件管理器安裝,如果安裝的時候沒有錯誤提示,我們就可以在手機(jī)上運行程序了。1.10.3.在手機(jī)上調(diào)試在真實的手機(jī)設(shè)備上調(diào)試比在模擬器上調(diào)試更加準(zhǔn)確,而且不必使用昂貴的硬件調(diào)試設(shè)備。前面我們提到過,在手機(jī)上調(diào)試,需要安裝調(diào)試代理,有兩不同的機(jī)上調(diào)試代理,分別為:ApplicationTRK和SystemTRK·ApplicationTRK—僅僅支持應(yīng)用程序的調(diào)試。·SystemTRK—不但支持應(yīng)用程序的調(diào)試,還支持有限的ROM調(diào)試。設(shè)備制作商可用它來調(diào)試設(shè)備驅(qū)動程序?,F(xiàn)在,我們來看看:?如何在手機(jī)上安裝調(diào)試代理軟件打開..Carbide\plugins\com.nokia.Carbide.trk.support_9,\trk\s60目錄,可以看到有一個s60_3_1_app_trk_2_7.sisx文件,該文件就是調(diào)試代理(debugagent)的安裝程序,下面我們通過USB接口(或紅外、藍(lán)牙)將這個程序下載到手機(jī)上安裝。步驟如下:1.將電腦和手機(jī)設(shè)備通過USB接口連接。在手機(jī)識別出USB連接線后,設(shè)置手機(jī),讓它從PC上接收文件。1)選擇USBMode>FileTransfer,然后按OK鍵,這時有通知消息出現(xiàn):手機(jī)將處于離線狀態(tài)。2)按OK軟件鍵確認(rèn)該消息。2.將SISX文件拷貝到MMC卡。3.用“安全刪除硬件”的方式斷開手機(jī)和PC之間的USB連接。4.在手機(jī)上,用文件管理器安裝SISX文件。?在安裝好調(diào)試軟件后,現(xiàn)在就可以開始調(diào)試程序了。PC和手機(jī)的通信接口有兩種:藍(lán)牙和USB,由于大多數(shù)的PC機(jī)中只有USB接口,下面我們就以USB連接方式來調(diào)試程序。1.安裝最新的USB連接軟件,例如,S60設(shè)備使用的NokiaPC套件。2.用USB線連接Pc和手機(jī)。3.目標(biāo)設(shè)備被連擊后,在S60設(shè)備上,選擇PC套件作為USB連接模式。4.下載APPTRK或SystemTRKSISX文件到手機(jī)上。(如果在已經(jīng)下載安裝過該調(diào)試代理,這一步可省略)5.在PC上,打開設(shè)備管理,找到S60手機(jī)USB的條目,如下圖所示:記下端口號(在我們的例子中為COM5),后面我們要用到。在手機(jī)的USB模式列表上選擇PC套件模式。然后在手機(jī)上啟動AppTRK,將連接方式設(shè)置為USB,如下圖所示:選擇“back”,然后重新啟動AppTRK。在Carbide集成開發(fā)環(huán)境上(IDE),選擇工具欄上的調(diào)試按鈕,選擇“debug”,如下圖:這時,會啟動一個“調(diào)試面板”,我們選擇第一項:“SymbianOSAppTRK”,雙擊此項,將會生成一個啟動配置項(launchConfiguration),在這個面板的右邊有一些關(guān)于調(diào)試的選項,如下圖所示:安裝要求填寫這些配置項,這一步比較容易,有兩點要注意的是:Connection面板中,Serialport選擇的值(這里為com5)必須是我們前面在設(shè)備管理器中所記錄下來的值。另外,在Installation面板中,需要指明要安裝的文件,這個文件就是我們在前面生成的經(jīng)過簽名的sis文件,如下圖:1.11.用命令行方式編譯、運行GCCE釋放版本下面我們以SDK自帶的helloworldbasic工程為例子,演示如何用命令行的方式來編譯和運行GCCE版本的程序。?第一步:創(chuàng)建GCCE釋放版本:1.打開一個命令行窗口。2.用cdgroup進(jìn)入工程的group目錄。3.輸入下面的命令:bldmakebldfiles。4.再輸入:abldbuildgcceurel或abldgcceudeb(該命令產(chǎn)生手機(jī)上的調(diào)試版本)。上面的編譯腳本創(chuàng)建了一個GCCE版本的應(yīng)用程序,在下面的目錄可找到該文件:Epoc32\release\gcce\urel\?第二步:創(chuàng)建sis文件我們通過使用makesis工具來編譯.pkg文件得到.sis文件,在我們的例子中,該pkg文件位于例子中的\sis目錄下。1.打開命令行窗口,并進(jìn)入到HelloWorldBasic.pkg文件所在的路徑:<S60_SDK_installation_directory>\Symbian\9.2\S60_3rd_FP1\S60ex\helloworldbasic\sis2.輸入makesishelloworldbasic.pkg命令:3.我們可以看到,在該文件夾下生成了一個helloworldbasic.SIS文件。?第三步:用signsis工具為sis文件簽名在進(jìn)行簽名之前,我們需要兩個文件:私鑰文件和自簽名證書(selfsignedcertificate)文件。這涉及到密碼學(xué)的知識,讀者可自己參考相關(guān)著作。這里,我們用只是makekeys工具生成這兩個文件。makekeys工具在下面的目錄可找到。<SDK_installation_directory>\Symbian\9.2\S60_3rd_FP1\Epoc32。1.為了產(chǎn)生私鑰文件和自簽名認(rèn)證,在命令行下敲入以下命令:運行完該命令后(可能要花幾分鐘的時間),可以看到,在該目錄下產(chǎn)生了兩個新的文件:mykey.key和mycert.cer。2.給sis文件簽名,在命令行下敲入以下命令:?第四步:在手機(jī)上安裝sis文件。這一步比較簡單,僅僅將準(zhǔn)備好的sis文件下載到您的手機(jī)。這個過程可以通過不同的數(shù)據(jù)通道完成(WAP,郵件附件,紅外,藍(lán)牙,USB接口),采用何種方式,取決于您的手機(jī)。1.12.導(dǎo)入工程如果symbianc++的開發(fā)者在自己的計算機(jī)上已經(jīng)有了各種各樣的symbian工程,并且用codewarrior或者命令行工具鏈編譯過該工程,他們會發(fā)現(xiàn)可以很方便地移植這些工程到Carbide.c++,不需要創(chuàng)建一個新的工程和手工插入這些源文件。Eclipse實現(xiàn)了從集成開發(fā)環(huán)境導(dǎo)入和導(dǎo)出信息的框架,并通過向?qū)韺崿F(xiàn)這個過程。Carbide.c++也實現(xiàn)了這種工具。從菜單欄選擇File->import菜單項,用戶就啟動了一個有很多選項的導(dǎo)入面板。如下圖所示:例如:如果我們想導(dǎo)入sdk中自帶的filebrowser的例子工程,我們在導(dǎo)入面板中選擇SymbianOSBld.inffile選項,然后點擊下一步,這時會啟動“文件導(dǎo)入向?qū)А睂υ捒?,在對話框中輸入filebrowser工程中的bld.inf文件(通常,這個文件在group目錄中)。然后,一直點擊“下一步”按鈕,直到這個過程結(jié)束。如果工程被成功導(dǎo)入,在左邊的工程視圖中會出現(xiàn)該工程的信息。附錄資料:不需要的可以自行刪除Excel表格的35招必學(xué)秘技一、讓不同類型數(shù)據(jù)用不同顏色顯示在工資表中,如果想讓大于等于2000元的工資總額以“紅色”顯示,大于等于1500元的工資總額以“藍(lán)色”顯示,低于1000元的工資總額以“棕色”顯示,其它以“黑色”顯示,我們可以這樣設(shè)置。1.打開“工資表”工作簿,選中“工資總額”所在列,執(zhí)行“格式→條件格式”命令,打開“條件格式”對話框。單擊第二個方框右側(cè)的下拉按鈕,選中“大于或等于”選項,在后面的方框中輸入數(shù)值“2000”。單擊“格式”按鈕,打開“單元格格式”對話框,將“字體”的“顏色”設(shè)置為“紅色”。2.按“添加”按鈕,并仿照上面的操作設(shè)置好其它條件(大于等于1500,字體設(shè)置為“藍(lán)色”;小于1000,字體設(shè)置為“棕色”)。3.設(shè)置完成后,按下“確定”按鈕??纯垂べY表吧,工資總額的數(shù)據(jù)是不是按你的要求以不同顏色顯示出來了。二、建立分類下拉列表填充項我們常常要將企業(yè)的名稱輸入到表格中,為了保持名稱的一致性,利用“數(shù)據(jù)有效性”功能建了一個分類下拉列表填充項。1.在Sheet2中,將企業(yè)名稱按類別(如“工業(yè)企業(yè)”、“商業(yè)企業(yè)”、“個體企業(yè)”等)分別輸入不同列中,建立一個企業(yè)名稱數(shù)據(jù)庫。2.選中A列(“工業(yè)企業(yè)”名稱所在列),在“名稱”欄內(nèi),輸入“工業(yè)企業(yè)”字符后,按“回車”鍵進(jìn)行確認(rèn)。仿照上面的操作,將B、C……列分別命名為“商業(yè)企業(yè)”、“個體企業(yè)”……3.切換到Sheet1中,選中需要輸入“企業(yè)類別”的列(如C列),執(zhí)行“數(shù)據(jù)→有效性”命令,打開“數(shù)據(jù)有效性”對話框。在“設(shè)置”標(biāo)簽中,單擊“允許”右側(cè)的下拉按鈕,選中“序列”選項,在下面的“來源”方框中,輸入“工業(yè)企業(yè)”,“商業(yè)企業(yè)”,“個體企業(yè)”……序列(各元素之間用英文逗號隔開),確定退出。再選中需要輸入企業(yè)名稱的列(如D列),再打開“數(shù)據(jù)有效性”對話框,選中“序列”選項后,在“來源”方框中輸入公式:=INDIRECT(C1),確定退出。4.選中C列任意單元格(如C4),單擊右側(cè)下拉按鈕,選擇相應(yīng)的“企業(yè)類別”填入單元格中。然后選中該單元格對應(yīng)的D列單元格(如D4),單擊下拉按鈕,即可從相應(yīng)類別的企業(yè)名稱列表中選擇需要的企業(yè)名稱填入該單元格中。提示:在以后打印報表時,如果不需要打印“企業(yè)類別”列,可以選中該列,右擊鼠標(biāo),選“隱藏”選項,將該列隱藏起來即可。三、建立“常用文檔”新菜單在菜單欄上新建一個“常用文檔”菜單,將常用的工作簿文檔添加到其中,方便隨時調(diào)用。1.在工具欄空白處右擊鼠標(biāo),選“自定義”選項,打開“自定義”對話框。在“命令”標(biāo)簽中,選中“類別”下的“新菜單”項,再將“命令”下面的“新菜單”拖到菜單欄。按“更改所選內(nèi)容”按鈕,在彈出菜單的“命名”框中輸入一個名稱(如“常用文檔”)。2.再在“類別”下面任選一項(如“插入”選項),在右邊“命令”下面任選一項(如“超鏈接”選項),將它拖到新菜單(常用文檔)中,并仿照上面的操作對它進(jìn)行命名(如“工資表”等),建立第一個工作簿文檔列表名稱。重復(fù)上面的操作,多添加幾個文檔列表名稱。3.選中“常用文檔”菜單中某個菜單項(如“工資表”等),右擊鼠標(biāo),在彈出的快捷菜單中,選“分配超鏈接→打開”選項,打開“分配超鏈接”對話框。通過按“查找范圍”右側(cè)的下拉按鈕,定位到相應(yīng)的工作簿(如“工資.xls”等)文件夾,并選中該工作簿文檔。重復(fù)上面的操作,將菜單項和與它對應(yīng)的工作簿文檔超鏈接起來。4.以后需要打開“常用文檔”菜單中的某個工作簿文檔時,只要展開“常用文檔”菜單,單擊其中的相應(yīng)選項即可。提示:盡管我們將“超鏈接”選項拖到了“常用文檔”菜單中,但并不影響“插入”菜單中“超鏈接”菜單項和“常用”工具欄上的“插入超鏈接”按鈕的功能。四、制作“專業(yè)符號”工具欄在編輯專業(yè)表格時,常常需要輸入一些特殊的專業(yè)符號,為了方便輸入,我們可以制作一個屬于自己的“專業(yè)符號”工具欄。1.執(zhí)行“工具→宏→錄制新宏”命令,打開“錄制新宏”對話框,輸入宏名?如“fuhao1”?并將宏保存在“個人宏工作簿”中,然后“確定”開始錄制。選中“錄制宏”工具欄上的“相對引用”按鈕,然后將需要的特殊符號輸入到某個單元格中,再單擊“錄制宏”工具欄上的“停止”按鈕,完成宏的錄制。仿照上面的操作,一一錄制好其它特殊符號的輸入“宏”。2.打開“自定義”對話框,在“工具欄”標(biāo)簽中,單擊“新建”按鈕,彈出“新建工具欄”對話框,輸入名稱——“專業(yè)符號”,確定后,即在工作區(qū)中出現(xiàn)一個工具條。切換到“命令”標(biāo)簽中,選中“類別”下面的“宏”,將“命令”下面的“自定義按鈕”項拖到“專業(yè)符號”欄上(有多少個特殊符號就拖多少個按鈕)。3.選中其中一個“自定義按鈕”,仿照第2個秘技的第1點對它們進(jìn)行命名。4.右擊某個命名后的按鈕,在隨后彈出的快捷菜單中,選“指定宏”選項,打開“指定宏”對話框,選中相應(yīng)的宏(如fuhao1等),確定退出。重復(fù)此步操作,將按鈕與相應(yīng)的宏鏈接起來。5.關(guān)閉“自定義”對話框,以后可以像使用普通工具欄一樣,使用“專業(yè)符號”工具欄,向單元格中快速輸入專業(yè)符號了。五、用“視面管理器”保存多個打印頁面有的工作表,經(jīng)常需要打印其中不同的區(qū)域,用“視面管理器”吧。1.打開需要打印的工作表,用鼠標(biāo)在不需要打印的行(或列)標(biāo)上拖拉,選中它們再右擊鼠標(biāo),在隨后出現(xiàn)的快捷菜單中,選“隱藏”選項,將不需要打印的行(或列)隱藏起來。2.執(zhí)行“視圖→視面管理器”命令,打開“視面管理器”對話框,單擊“添加”按鈕,彈出“添加視面”對話框,輸入一個名稱(如“上報表”)后,單擊“確定”按鈕。3.將隱藏的行(或列)顯示出來,并重復(fù)上述操作,“添加”好其它的打印視面。4.以后需要打印某種表格時,打開“視面管理器”,選中需要打印的表格名稱,單擊“顯示”按鈕,工作表即刻按事先設(shè)定好的界面顯示出來,簡單設(shè)置、排版一下,按下工具欄上的“打印”按鈕,一切就OK了。六、讓數(shù)據(jù)按需排序如果你要將員工按其所在的部門進(jìn)行排序,這些部門名稱既的有關(guān)信息不是按拼音順序,也不是按筆畫順序,怎么辦?可采用自定義序列來排序。1.執(zhí)行“格式→選項”命令,打開“選項”對話框,進(jìn)入“自定義序列”標(biāo)簽中,在“輸入序列”下面的方框中輸入部門排序的序列(如“機(jī)關(guān),車隊,一車間,二車間,三車間”等),單擊“添加”和“確定”按鈕退出。2.選中“部門”列中任意一個單元格,執(zhí)行“數(shù)據(jù)→排序”命令,打開“排序”對話框,單擊“選項”按鈕,彈出“排序選項”對話框,按其中的下拉按鈕,選中剛才自定義的序列,按兩次“確定”按鈕返回,所有數(shù)據(jù)就按要求進(jìn)行了排序。七、把數(shù)據(jù)徹底隱藏起來工作表部分單元格中的內(nèi)容不想讓瀏覽者查閱,只好將它隱藏起來了。1.選中需要隱藏內(nèi)容的單元格(區(qū)域),執(zhí)行“格式→單元格”命令,打開“單元格格式”對話框,在“數(shù)字”標(biāo)簽的“分類”下面選中“自定義”選項,然后在右邊“類型”下面的方框中輸入“;;;”(三個英文狀態(tài)下的分號)。2.再切換到“保護(hù)”標(biāo)簽下,選中其中的“隱藏”選項,按“確定”按鈕退出。3.執(zhí)行“工具→保護(hù)→保護(hù)工作表”命令,打開“保護(hù)工作表”對話框,設(shè)置好密碼后,“確定”返回。經(jīng)過這樣的設(shè)置以后,上述單元格中的內(nèi)容不再顯示出來,就是使用Excel的透明功能也不能讓其現(xiàn)形。提示:在“保護(hù)”標(biāo)簽下,請不要清除“鎖定”前面復(fù)選框中的“∨”號,這樣可以防止別人刪除你隱藏起來的數(shù)據(jù)。八、讓中、英文輸入法智能化地出現(xiàn)在編輯表格時,有的單元格中要輸入英文,有的單元格中要輸入中文,反復(fù)切換輸入法實在不方便,何不設(shè)置一下,讓輸入法智能化地調(diào)整呢?選中需要輸入中文的單元格區(qū)域,執(zhí)行“數(shù)據(jù)→有效性”命令,打開“數(shù)據(jù)有效性”對話框,切換到“輸入法模式”標(biāo)簽下,按“模式”右側(cè)的下拉按鈕,選中“打開”選項后,“確定”退出。以后當(dāng)選中需要輸入中文的單元格區(qū)域中任意一個單元格時,中文輸入法(輸入法列表中的第1個中文輸入法)自動打開,當(dāng)選中其它單元格時,中文輸入法自動關(guān)閉。九、讓“自動更正”輸入統(tǒng)一的文本你是不是經(jīng)常為輸入某些固定的文本,如《電腦報》而煩惱呢?那就往下看吧。1.執(zhí)行“工具→自動更正”命令,打開“自動更正”對話框。2.在“替換”下面的方框中輸入“pcw”(也可以是其他字符,“pcw”用小寫),在“替換為”下面的方框中輸入“《電腦報》”,再單擊“添加”和“確定”按鈕。3.以后如果需要輸入上述文本時,只要輸入“pcw”字符?此時可以不考慮“pcw”的大小寫?,然后確認(rèn)一下就成了。十、在Excel中自定義函數(shù)Excel函數(shù)雖然豐富,但并不能滿足我們的所有需要。我們可以自定義一個函數(shù),來完成一些特定的運算。下面,我們就來自定義一個計算梯形面積的函數(shù):1.執(zhí)行“工具→宏→VisualBasic編輯器”菜單命令(或按“Alt+F11”快捷鍵),打開VisualBasic編輯窗口。2.在窗口中,執(zhí)行“插入→模塊”菜單命令,插入一個新的模塊——模塊1。3.在右邊的“代碼窗口”中輸入以下代碼:FunctionV(a,b,h)V=h*(a+b)/2EndFunction4.關(guān)閉窗口,自定義函數(shù)完成。以后可以像使用內(nèi)置函數(shù)一樣使用自定義函數(shù)。提示:用上面方法自定義的函數(shù)通常只能在相應(yīng)的工作簿中使用。十一、表頭下面襯張圖片為工作表添加的背景,是襯在整個工作表下面的,能不能只襯在表頭下面呢?1.執(zhí)行“格式→工作表→背景”命令,打開“工作表背景”對話框,選中需要作為背景的圖片后,按下“插入”按鈕,將圖片襯于整個工作表下面。2.在按住Ctrl鍵的同時,用鼠標(biāo)在不需要襯圖片的單元格(區(qū)域)中拖拉,同時選中這些單元格(區(qū)域)。3.按“格式”工具欄上的“填充顏色”右側(cè)的下拉按鈕,在隨后出現(xiàn)的“調(diào)色板”中,選中“白色”。經(jīng)過這樣的設(shè)置以后,留下的單元格下面襯上了圖片,而上述選中的單元格(區(qū)域)下面就沒有襯圖片了(其實,是圖片被“白色”遮蓋了)。提示?襯在單元格下面的圖片是不支持打印的。十二、用連字符“&”來合并文本如果我們想將多列的內(nèi)容合并到一列中,不需要利用函數(shù),一個小小的連字符“&”就能將它搞定(此處假定將B、C、D列合并到一列中)。1.在D列后面插入兩個空列(E、F列),然后在D1單元格中輸入公式:=B1&C1&D1。2.再次選中D1單元格,用“填充柄”將上述公式復(fù)制到D列下面的單元格中,B、C、D列的內(nèi)容即被合并到E列對應(yīng)的單元格中。3.選中E列,執(zhí)行“復(fù)制”操作,然后選中F列,執(zhí)行“編輯→選擇性粘貼”命令,打開“選擇性粘貼”對話框,選中其中的“數(shù)值”選項,按下“確定”按鈕,E列的內(nèi)容(不是公式)即被復(fù)制到F列中。4.將B、C、D、E列刪除,完成合并工作。提示:完成第1、2步的操作,合并效果已經(jīng)實現(xiàn),但此時如果刪除B、C、D列,公式會出現(xiàn)錯誤。故須進(jìn)行第3步操作,將公式轉(zhuǎn)換為不變的“值”。生成績條常有朋友問“如何打印成績條”這樣的問題,有不少人采取錄制宏或VBA的方法來實現(xiàn),這對于初學(xué)者來說有一定難度。出于此種考慮,我在這里給出一種用函數(shù)實現(xiàn)的簡便方法。此處假定學(xué)生成績保存在Sheet1工作表的A1至G64單元格區(qū)域中,其中第1行為標(biāo)題,第2行為學(xué)科名稱。1.切換到Sheet2工作表中,選中A1單元格,輸入公式:=IF(MOD(ROW(),3)=0,″″,IF(0MOD?ROW(),3(=1,sheet1!Aū,INDEX(sheet1!$A:$G,INT(((ROW()+4)/3)+1),COLUMN())))。2.再次選中A1單元格,用“填充柄”將上述公式復(fù)制到B1至G1單元格中;然后,再同時選中A1至G1單元格區(qū)域,用“填充柄”將上述公式復(fù)制到A2至G185單元格中。至此,成績條基本成型,下面簡單修飾一下。3.調(diào)整好行高和列寬后,同時選中A1至G2單元格區(qū)域(第1位學(xué)生的成績條區(qū)域),按“格式”工具欄“邊框”右側(cè)的下拉按鈕,在隨后出現(xiàn)的邊框列表中,選中“所有框線”選項,為選中的區(qū)域添加邊框(如果不需要邊框,可以不進(jìn)行此步及下面的操作)。4.同時選中A1至G3單元格區(qū)域,點擊“常用”工具欄上的“格式刷”按鈕,然后按住鼠標(biāo)左鍵,自A4拖拉至G186單元格區(qū)域,為所有的成績條添加邊框。按“打印”按鈕,即可將成績條打印出來。十四、Excel幫你選函數(shù)在用函數(shù)處理數(shù)據(jù)時,常常不知道使用什么函數(shù)比較合適。Excel的“搜索函數(shù)”功能可以幫你縮小范圍,挑選出合適的函數(shù)。執(zhí)行“插入→函數(shù)”命令,打開“插入函數(shù)”對話框,在“搜索函數(shù)”下面的方框中輸入要求(如“計數(shù)”),然后單擊“轉(zhuǎn)到”按鈕,系統(tǒng)即刻將與“計數(shù)”有關(guān)的函數(shù)挑選出來,并顯示在“選擇函數(shù)”下面的列表框中。再結(jié)合查看相關(guān)的幫助文件,即可快速確定所需要的函數(shù)。十五、同時查看不同工作表中多個單元格內(nèi)的數(shù)據(jù)有時,我們編輯某個工作表(Sheet1)時,需要查看其它工作表中(Sheet2、Sheet3……)某個單元格的內(nèi)容,可以利用Excel的“監(jiān)視窗口”功能來實現(xiàn)。執(zhí)行“視圖→工具欄→監(jiān)視窗口”命令,打開“監(jiān)視窗口”,單擊其中的“添加監(jiān)視”按鈕,展開“添加監(jiān)視點”對話框,用鼠標(biāo)選中需要查看的單元格后,再單擊“添加”按鈕。重復(fù)前述操作,添加其它“監(jiān)視點”。以后,無論在哪個工作表中,只要打開“監(jiān)視窗口”,即可查看所有被監(jiān)視點單元格內(nèi)的數(shù)據(jù)和相關(guān)信息。十六、為單元格快速畫邊框在Excel2002以前的版本中,為單元格區(qū)域添加邊框的操作比較麻煩,Excel2002對此功能進(jìn)行了全新的拓展。單擊“格式”工具欄上“邊框”右側(cè)的下拉按鈕,在隨后彈出的下拉列表中,選“繪圖邊框”選項,或者執(zhí)行“視圖→工具欄→邊框”命令,展開“邊框”工具欄。單擊工具欄最左側(cè)的下拉按鈕,選中一種邊框樣式,然后在需要添加邊框的單元格區(qū)域中拖拉,即可為相應(yīng)的單元格區(qū)域快速畫上邊框。提示:①如果畫錯了邊框,沒關(guān)系,選中工具欄上的“擦除邊框”按鈕,然后在錯誤的邊框上拖拉一下,就可以清除掉錯誤的邊框。②如果需要畫出不同顏色的邊框,可以先按工具欄右側(cè)的“線條顏色”按鈕,在隨后彈出的調(diào)色板中選中需要的顏色后,再畫邊框即可。③這一功能還可以在單元格中畫上對角的斜線。十七、控制特定單元格輸入文本的長度你能想象當(dāng)你在該輸入四位數(shù)的單元格中卻填入了一個兩位數(shù),或者在該輸入文字的單元格中你卻輸入了數(shù)字的時候,Excel就能自動判斷、即時分析并彈出警告,那該多好啊!要實現(xiàn)這一功能,對Excel來說,也并不難。例如我們將光標(biāo)定位到一個登記“年份”的單元格中,為了輸入的統(tǒng)一和計算的方便,我們希望“年份”都用一個四位數(shù)來表示。所以,我們可以單擊“數(shù)據(jù)”菜單的“有效性”選項。在“設(shè)置”卡片“有效性條件”的“允許”下拉菜單中選擇“文本長度”。然后在“數(shù)據(jù)”下拉菜單中選擇“等于”,且“長度”為“4”。同時,我們再來到“出錯警告”卡片中,將“輸入無效數(shù)據(jù)時顯示的出錯警告”設(shè)為“停止”,并在“標(biāo)題”和“錯誤信息”欄中分別填入“輸入文本非法!”和“請輸入四位數(shù)年份?!弊謽?。很顯然,當(dāng)如果有人在該單元格中輸入的不是一個四位數(shù)時,Excel就會彈出示的警告對話框,告訴你出錯原因,并直到你輸入了正確“樣式”的數(shù)值后方可繼續(xù)錄入。神奇吧?其實,在Excel的“數(shù)據(jù)有效性”判斷中,還有許多特殊類型的數(shù)據(jù)格式可選,比如“文本類型”啊,“序列大小”啊,“時間遠(yuǎn)近”啊,如你有興趣,何不自作主張,自己設(shè)計一種檢測標(biāo)準(zhǔn),讓你的Excel展示出與眾不同的光彩呢。十八、成組填充多張表格的固定單元格我們知道每次打開Excel,軟件總是默認(rèn)打開多張工作表。由此就可看出Excel除了擁有強(qiáng)大的單張表格的處理能力,更適合在多張相互關(guān)聯(lián)的表格中協(xié)調(diào)工作。要協(xié)調(diào)關(guān)聯(lián),當(dāng)然首先就需要同步輸入。因此,在很多情況下,都會需要同時在多張表格的相同單元格中輸入同樣的內(nèi)容。那么如何對表格進(jìn)行成組編輯呢?首先我們單擊第一個工作表的標(biāo)簽名“Sheet1”,然后按住Shift鍵,單擊最后一張表格的標(biāo)簽名“Sheet3”(如果我們想關(guān)聯(lián)的表格不在一起,可以按住Ctrl鍵進(jìn)行點選)。此時,我們看到Excel的標(biāo)題欄上的名稱出現(xiàn)了“工作組”字樣,我們就可以進(jìn)行對工作組的編輯工作了。在需要一次輸入多張表格內(nèi)容的單元格中隨便寫點什么,我們發(fā)現(xiàn),“工作組”中所有表格的同一位置都顯示出相應(yīng)內(nèi)容了。但是,僅僅同步輸入是遠(yuǎn)遠(yuǎn)不夠的。比如,我們需要將多張表格中相同位置的數(shù)據(jù)統(tǒng)一改變格式該怎么辦呢?首先,我們得改變第一張表格的數(shù)據(jù)格式,再單擊“編輯”菜單的“填充”選項,然后在其子菜單中選擇“至同組工作表”。這時,Excel會彈出“填充成組工作表”的對話框,在這里我們選擇“格式”一項,點“確定”后,同組中所有表格該位置的數(shù)據(jù)格式都改變了。十九、改變文本的大小寫在Excel中,為表格處理和數(shù)據(jù)運算提供最強(qiáng)大支持的不是公式,也不是數(shù)據(jù)庫,而是函數(shù)。不要以為Excel中的函數(shù)只是針對數(shù)字,其實只要是寫進(jìn)表格中的內(nèi)容,Excel都有對它編輯的特殊函數(shù)。例如改變文本的大小寫。在Excel2002中,至少提供了三種有關(guān)文本大小寫轉(zhuǎn)換的函數(shù)。它們分別是:“=UPPER(源數(shù)據(jù)格)”,將文本全部轉(zhuǎn)換為大寫;“=LOWER(源數(shù)據(jù)格)”,將文本全部轉(zhuǎn)換成小寫;“=PROPER(源數(shù)據(jù)格)”,將文本轉(zhuǎn)換成“適當(dāng)”的大小寫,如讓每個單詞的首字母為大寫等。例如,我們在一張表格的A1單元格中輸入小寫的“excel”,然后在目標(biāo)單元格中輸入“=UPPER(A1)”,回車后得到的結(jié)果將會是“EXCEL”。同樣,如果我們在A3單元格中輸入“mr.weiwei”,然后我們在目標(biāo)單元格中輸入“=PROPER(A3)”,那么我們得到的結(jié)果就將是“Mr.Weiwei”了。二十、提取字符串中的特定字符除了直接輸入外,從已存在的單元格內(nèi)容中提取特定字符輸入,絕對是一種省時又省事的方法,特別是對一些樣式雷同的信息更是如此,比如員工名單、籍貫等信息。如果我們想快速從A4單元格中提取稱謂的話,最好使用“=RIGHT(源數(shù)據(jù)格,提取的字符數(shù))”函數(shù),它表示“從A4單元格最右側(cè)的字符開始提取2個字符”輸入到此位置。當(dāng)然,如果你想提取姓名的話,則要使用“=LEFT(源數(shù)據(jù)格,提取的字符數(shù))”函數(shù)了。還有一種情況,我們不從左右兩端開始,而是直接從數(shù)據(jù)中間提取幾個字符。比如我們要想從A5單元格中提取“武漢”兩個字時,就只須在目標(biāo)單元格中輸入“=MID(A5,4,2)”就可以了。意思是:在A5單元格中提取第4個字符后的兩個字符,也就是第4和第5兩個字。二十一、把基數(shù)詞轉(zhuǎn)換成序數(shù)詞將英文的基數(shù)詞轉(zhuǎn)換成序數(shù)詞是一個比較復(fù)雜的問題。因為它沒有一個十分固定的模式:大多數(shù)的數(shù)字在變成序數(shù)詞都是使用的“th”后綴,但大凡是以“1”、“2”、“3”結(jié)尾的數(shù)字卻分別是以“st”、“nd”和“rd”結(jié)尾的。而且,“11”、“12”、“13”這3個數(shù)字又不一樣,它們卻仍然是以“th”結(jié)尾的。因此,實現(xiàn)起來似乎很復(fù)雜。其實,只要我們理清思路,找準(zhǔn)函數(shù),只須編寫一個公式,就可輕松轉(zhuǎn)換了。不信,請看:“=A2&IF(OR(VALUE(RIGHT(A2,2))={11,12,13}),″th″,IF(OR(VALUE(RIGHT(A2))={1,2,3,},CHOOSE(RIGHT(A2),″st″,″nd″,″rd″),″th″))”。該公式盡管一長串,不過含義卻很明確:①如果數(shù)字是以“11”、“12”、“13”結(jié)尾的,則加上“th”后綴;②如果第1原則無效,則檢查最后一個數(shù)字,以“1”結(jié)尾使用“st”、以“2”結(jié)尾使用“nd”、以“3”結(jié)尾使用“rd”;③如果第1、2原則都無效,那么就用“th”。因此,基數(shù)詞和序數(shù)詞的轉(zhuǎn)換實現(xiàn)得如此輕松和快捷。二十二、用特殊符號補齊位數(shù)和財務(wù)打過交道的人都知道,在賬面填充時有一種約定俗成的“安全填寫法”,那就是將金額中的空位補齊,或者在款項數(shù)據(jù)的前面加上“$”之類的符號。其實,在Excel中也有類似的輸入方法,那就是“REPT”函數(shù)。它的基本格式是“=REPT(“特殊符號”,填充位數(shù))”。比如,我們要在中A2單元格里的數(shù)字結(jié)尾處用“#”號填充至16位,就只須將公式改為“=(A2&REPT(″#″,16-LEN(A2)))”即可;如果我們要將A3單元格中的數(shù)字從左側(cè)用“#”號填充至16位,就要改為“=REPT(″#″,16-LEN(A3)))&A3”;另外,如果我們想用“#”號將A4中的數(shù)值從兩側(cè)填充,則需要改為“=REPT(″#″,8-LEN(A4)/2)&A4&REPT(″#″)8-LEN(A4)/2)”;如果你還嫌不夠?qū)I(yè),要在A5單元格數(shù)字的頂頭加上“$”符號的話,那就改為:“=(TEXT(A5,″$#,##0.00″(&REPT(″#″,16-LEN(TEXT(A5,″$#,##0.00″))))”,一定能滿足你的要求。二十三、創(chuàng)建文本直方圖除了重復(fù)輸入之外,“REPT”函數(shù)另一項衍生應(yīng)用就是可以直接在工作表中創(chuàng)建由純文本組成的直方圖。它的原理也很簡單,就是利用特殊符號的智能重復(fù),按照指定單元格中的計算結(jié)果表現(xiàn)出長短不一的比較效果。比如我們首先制作一張年度收支平衡表,然后將“E列”作為直方圖中“預(yù)算內(nèi)”月份的顯示區(qū),將“G列”則作為直方圖中“超預(yù)算”的顯示區(qū)。然后根據(jù)表中已有結(jié)果“D列”的數(shù)值,用“Wingdings”字體的“N”字符表現(xiàn)出來。具體步驟如下:在E3單元格中寫入公式“=IF(D30,REPT(″n″,ROUND(D3*100,0)),″″)”,也拖動填充柄至G14。我們看到,一個沒有動用Excel圖表功能的純文本直方圖已展現(xiàn)眼前,方便直觀,簡單明了。二十四、計算單元格中的總字?jǐn)?shù)有時候,我們可能對某個單元格中字符的數(shù)量感興趣,需要計算單元格中的總字?jǐn)?shù)。要解決這個問題,除了利用到“SUBSTITUTE”函數(shù)的虛擬計算外,還要動用“TRIM”函數(shù)來刪除空格。比如現(xiàn)在A1單元格中輸入有“howmanywords?”字樣,那么我們就可以用如下的表達(dá)式來幫忙:“=IF(LEN(A1)=0,0,LEN(TRIM(A1))-LEN(SUBSTITUTE(TRIM(A1),″,″,″″))+1)”該式的含義是先用“SUBSTITUTE”函數(shù)創(chuàng)建一個新字符串,并且利用“TRIM”函數(shù)刪除其中字符間的空格,然后計算此字符串和原字符串的數(shù)位差,從而得出“空格”的數(shù)量,最后將空格數(shù)+1,就得出單元格中字符的數(shù)量了。二十五、關(guān)于歐元的轉(zhuǎn)換這是Excel2002中的新工具。如果你在安裝Excel2002時選擇的是默認(rèn)方式,那么很可能不能在“工具”菜單中找到它。不過,我們可以先選擇“工具”菜單中的“加載宏”,然后在彈出窗口中勾選“歐元工具”選項,“確定”后Excel2002就會自行安裝了。完成后我們再次打開“工具”菜單,單擊“歐元轉(zhuǎn)換”,一個獨立的專門用于歐元和歐盟成員國貨幣轉(zhuǎn)換的窗口就出現(xiàn)了。與Excel的其他函數(shù)窗口一樣,我們可以通過鼠標(biāo)設(shè)置貨幣轉(zhuǎn)換的“源區(qū)域”和“目標(biāo)區(qū)域”,然后再選擇轉(zhuǎn)換前后的不同幣種即可。所示的就是“100歐元”分別轉(zhuǎn)換成歐盟成員國其他貨幣的比價一覽表。當(dāng)然,為了使歐元的顯示更顯專業(yè),我們還可以點擊Excel工具欄上的“歐元”按鈕,這樣所有轉(zhuǎn)換后的貨幣數(shù)值都是歐元的樣式了經(jīng)在Excel中完成過上百張財務(wù)報表,也許你已利用Excel函數(shù)實現(xiàn)過上千次的復(fù)雜運算,也許你認(rèn)為Excel也不過如此,甚至了無新意。但我們平日里無數(shù)次重復(fù)的得心應(yīng)手的使用方法只不過是Excel全部技巧的百分之一。本專題從Excel中的一些鮮為人知的技巧入手,領(lǐng)略一下關(guān)于Excel的別樣風(fēng)情。一、讓不同類型數(shù)據(jù)用不同顏色顯示在工資表中,如果想讓大于等于2000元的工資總額以“紅色”顯示,大于等于1500元的工資總額以“藍(lán)色”顯示,低于1000元的工資總額以“棕色”顯示,其它以“黑色”顯示,我們可以這樣設(shè)置。1.打開“工資表”工作簿,選中“工資總額”所在列,執(zhí)行“格式→條件格式”命令,打開“條件格式”對話框。單擊第二個方框右側(cè)的下拉按鈕,選中“大于或等于”選項,在后面的方框中輸入數(shù)值“2000”。單擊“格式”按鈕,打開“單元格格式”對話框,將“字體”的“顏色”設(shè)置為“紅色”。2.按“添加”按鈕,并仿照上面的操作設(shè)置好其它條件(大于等于1500,字體設(shè)置為“藍(lán)色”;小于1000,字體設(shè)置為“棕色”)。3.設(shè)置完成后,按下“確定”按鈕??纯垂べY表吧,工資總額的數(shù)據(jù)是不是按你的要求以不同顏色顯示出來了。二、建立分類下拉列表填充項我們常常要將企業(yè)的名稱輸入到表格中,為了保持名稱的一致性,利用“數(shù)據(jù)有效性”功能建了一個分類下拉列表填充項。1.在Sheet2中,將企業(yè)名稱按類別(如“工業(yè)企業(yè)”、“商業(yè)企業(yè)”、“個體企業(yè)”等)分別輸入不同列中,建立一個企業(yè)名稱數(shù)據(jù)庫。2.選中A列(“工業(yè)企業(yè)”名稱所在列),在“名稱”欄內(nèi),輸入“工業(yè)企業(yè)”字符后,按“回車”鍵進(jìn)行確認(rèn)。仿照上面的操作,將B、C……列分別命名為“商業(yè)企業(yè)”、“個體企業(yè)”……3.切換到Sheet1中,選中需要輸入“企業(yè)類別”的列(如C列),執(zhí)行“數(shù)據(jù)→有效性”命令,打開“數(shù)據(jù)有效性”對話框。在“設(shè)置”標(biāo)簽中,單擊“允許”右側(cè)的下拉按鈕,選中“序列”選項,在下面的“來源”方框中,輸入“工業(yè)企業(yè)”,“商業(yè)企業(yè)”,“個體企業(yè)”……序列(各元素之間用英文逗號隔開),確定退出。再選中需要輸入企業(yè)名稱的列(如D列),再打開“數(shù)據(jù)有效性”對話框,選中“序列”選項后,在“來源”方框中輸入公式:=INDIRECT(C1),確定退出。4.選中C列任意單元格(如C4),單擊右側(cè)下拉按鈕,選擇相應(yīng)的“企業(yè)類別”填入單元格中。然后選中該單元格對應(yīng)的D列單元格(如D4),單擊下拉按鈕,即可從相應(yīng)類別的企業(yè)名稱列表中選擇需要的企業(yè)名稱填入該單元格中。提示:在以后打印報表時,如果不需要打印“企業(yè)類別”列,可以選中該列,右擊鼠標(biāo),選“隱藏”選項,將該列隱藏起來即可。三、建立“常用文檔”新菜單在菜單欄上新建一個“常用文檔”菜單,將常用的工作簿文檔添加到其中,方便隨時調(diào)用。1.在工具欄空白處右擊鼠標(biāo),選“自定義”選項,打開“自定義”對話框。在“命令”標(biāo)簽中,選中“類別”下的“新菜單”項,再將“命令”下面的“新菜單”拖到菜單欄。按“更改所選內(nèi)容”按鈕,在彈出菜單的“命名”框中輸入一個名稱(如“常用文檔”)。2.再在“類別”下面任選一項(如“插入”選項),在右邊“命令”下面任選一項(如“超鏈接”選項),將它拖到新菜單(常用文檔)中,并仿照上面的操作對它進(jìn)行命名(如“工資表”等),建立第一個工作簿文檔列表名稱。重復(fù)上面的操作,多添加幾個文檔列表名稱。3.選中“常用文檔”菜單中某個菜單項(如“工資表”等),右擊鼠標(biāo),在彈出的快捷菜單中,選“分配超鏈接→打開”選項,打開“分配超鏈接”對話框。通過按“查找范圍”右側(cè)的下拉按鈕,定位到相應(yīng)的工作簿(如“工資.xls”等)文件夾,并選中該工作簿文檔。重復(fù)上面的操作,將菜單項和與它對應(yīng)的工作簿文檔超鏈接起來。4.以后需要打開“常用文檔”菜單中的某個工作簿文檔時,只要展開“常用文檔”菜單,單擊其中的相應(yīng)選項即可。提示:盡管我們將“超鏈接”選項拖到了“常用文檔”菜單中,但并不影響“插入”菜單中“超鏈接”菜單項和“常用”工具欄上的“插入超鏈接”按鈕的功能。四、制作“專業(yè)符號”工具欄在編輯專業(yè)表格時,常常需要輸入一些特殊的專業(yè)符號,為了方便輸入,我們可以制作一個屬于自己的“專業(yè)符號”工具欄。1.執(zhí)行“工具→宏→錄制新宏”命令,打開“錄制新宏”對話框,輸入宏名?如“fuhao1”?并將宏保存在“個人宏工作簿”中,然后“確定”開始錄制。選中“錄制宏”工具欄上的“相對引用”按鈕,然后將需要的特殊符號輸入到某個單元格中,再單擊“錄制宏”工具欄上的“停止”按鈕,完成宏的錄制。仿照上面的操作,一一錄制好其它特殊符號的輸入“宏”。2.打開“自定義”對話框,在“工具欄”標(biāo)簽中,單擊“新建”按鈕,彈出“新建工具欄”對話框,輸入名稱——“專業(yè)符號”,確定后,即在工作區(qū)中出現(xiàn)一個工具條。切換到“命令”標(biāo)簽中,選中“類別”下面的“宏”,將“命令”下面的“自定義按鈕”項拖到“專業(yè)符號”欄上(有多少個特殊符號就拖多少個按鈕)。3.選中其中一個“自定義按鈕”,仿照第2個秘技的第1點對它們進(jìn)行命名。4.右擊某個命名后的按鈕,在隨后彈出的快捷菜單中,選“指定宏”選項,打開“指定宏”對話框,選中相應(yīng)的宏(如fuhao1等),確定退出。重復(fù)此步操作,將按鈕與相應(yīng)的宏鏈接起來。5.關(guān)閉“自定義”對話框,以后可以像使用普通工具欄一樣,使用“專業(yè)符號”工具欄,向單元格中快速輸入專業(yè)符號了。五、用“視面管理器”保存多個打印頁面有的工作表,經(jīng)常需要打印其中不同的區(qū)域,用“視面管理器”吧。1.打開需要打印的工作表,用鼠標(biāo)在不需要打印

溫馨提示

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

評論

0/150

提交評論