第一篇:軟件編程問(wèn)題與錯(cuò)誤的總結(jié)(精選)
我的總結(jié)
1.在H文件中定義的變量可以再main函數(shù)中用,要包括頭文件;但main之前定義的全局變量不能在頭文件中用。(重復(fù)定義的錯(cuò)誤)。2.在寫(xiě)程序時(shí),必須首先畫(huà)出它的程序流程圖,也就是程序的走向。一步一步的將他在紙上寫(xiě)出來(lái)。3.調(diào)用數(shù)組函數(shù)時(shí),數(shù)組一般用的是數(shù)組名。
4.即使a、b是空類(lèi)型(void)的函數(shù),當(dāng)a函數(shù)要調(diào)用b函數(shù)情況發(fā)生,b函數(shù)必須寫(xiě)在a函數(shù)的前面。5.遇到問(wèn)題不要慌,認(rèn)真對(duì)待!從軟件開(kāi)始,一步一步地排除原因,當(dāng)實(shí)在找不出原因時(shí),再檢查硬件電路。6.在定義函數(shù)時(shí),無(wú)論是形參還是全局變量都要對(duì)其初始化,既方便自己寫(xiě)程序,也減少了不必要的錯(cuò)誤。7.中斷程序里不要定義變量,定義變量一般在主函數(shù)開(kāi)始的時(shí)候。
8.在調(diào)試程序中,我們要觀察程序執(zhí)行到哪里,可以用一個(gè)發(fā)光二極管去檢測(cè)。9.用switch語(yǔ)句有時(shí)候可以讓程序并行。10.C語(yǔ)言中的結(jié)構(gòu)體是一個(gè)重點(diǎn)。
11.不要交叉調(diào)用C頭文件。也就是在爭(zhēng)論先有雞還是先有蛋的問(wèn)題。12.中斷里不要又太長(zhǎng)的程序,要是周期性中斷,就必須保證有一定的閾值,否則程序就有可能跑錯(cuò)。13.當(dāng)程序中需要用到一些并列的語(yǔ)句時(shí),可以設(shè)置一個(gè)標(biāo)志變量Flag。當(dāng)情況一發(fā)生時(shí),F(xiàn)lag會(huì)自行加加,否則清零。在接下來(lái)的另一種情況中讓程序在Flag為0 的條件下執(zhí)行。這樣就達(dá)到了并列的效果。14.變量一般不定義在H文件中,因?yàn)楫?dāng)兩個(gè)C文件同時(shí)用到某個(gè)全局變量時(shí),那么就相當(dāng)于對(duì)全局變量定義了兩次,實(shí)際上這是不允許的。正確的處理方法是在要用的時(shí)候進(jìn)行變量定義,然后在H文件中進(jìn)行申明,申明為外部變量。最后在C文件中區(qū)定義。15.靜態(tài)變量和全局變量的好處就是:系統(tǒng)不會(huì)回收他們的內(nèi)存。也就是說(shuō),他們會(huì)保持上一次的值,也就是他們與局部變量的不同。同樣決定了他們的不足。16.“->” 表示指向結(jié)構(gòu)體運(yùn)算符,它的結(jié)合方向是從左向右的,優(yōu)先級(jí)最高。17.x*x不能寫(xiě)作x^2,在C語(yǔ)言中,“^”表示按位異或的意思。
18.定義結(jié)構(gòu)體變量時(shí),首先在H文件中申明,然后在C文件中要定義一個(gè)與結(jié)構(gòu)體相關(guān)的變量。這樣在程序中才能應(yīng)用。例如:先在H文件中申明一個(gè)結(jié)構(gòu)體extern typedef struct A{????}A;然后再C文件中定義A Other;這樣Other也具有和結(jié)構(gòu)體A相同的形式。
19.調(diào)用帶指針操作的函數(shù)時(shí),在形參的傳遞時(shí),注意用的是取址操作符’&’,還是指針操作符’*’。20.對(duì)于乘除操作時(shí),采用左移和右移的方法,比乘除執(zhí)行的速度要快。21.在對(duì)信號(hào)采集時(shí),我們經(jīng)常會(huì)碰到數(shù)的更新。有兩種方法。方法一:設(shè)定一個(gè)數(shù)組,每次先將a[i+1] = a[i],然后用當(dāng)前值對(duì)a[0]進(jìn)行更新。方法二:也是設(shè)定一個(gè)數(shù)組,在這里,處理的比較簡(jiǎn)單。只需將最舊的那個(gè)數(shù)進(jìn)行更新就可以了。也就是說(shuō)第一次將當(dāng)前值賦值給a[0],第二次賦值給a[1],以此類(lèi)推,進(jìn)行無(wú)限的循環(huán)。22.取表法是單片機(jī)程序中很常用的一種編程思想:要顯示的數(shù)據(jù)之間不存在簡(jiǎn)單的運(yùn)算關(guān)系,不能使用ADD和SUBB等指令根據(jù)上一個(gè)狀態(tài)計(jì)算出下一個(gè)狀態(tài)的顯示值。但顯示的數(shù)據(jù)存在依次取用的特點(diǎn),這是一般就會(huì)用到取表法。23.很多時(shí)候可以單步執(zhí)行,然后用示波器去檢測(cè)輸出口的波形,看到底程序是否跑對(duì)。24.單片機(jī)與計(jì)算機(jī)進(jìn)行串口通信時(shí),計(jì)算機(jī)端一般只設(shè)定整數(shù)值的波特率,這樣造成了單片機(jī)與計(jì)算機(jī)的通信的波特率不全相等,導(dǎo)致傳輸錯(cuò)誤的發(fā)生。串口通信模塊中有兩條指令經(jīng)常用到:“JBC TI,CHECK”和“JB RI,CHECK”他們分別用來(lái)檢測(cè)發(fā)送中斷標(biāo)志位TI和接收中斷標(biāo)志位RI,用來(lái)判斷接收完成情況。25.邊沿觸發(fā)對(duì)電平的要求是:如果晶振為12MHz ,至少需要1個(gè)機(jī)器周期的高電平,且向低電平跳變之后至少保持一個(gè)機(jī)器周期的低電平。26.在主函數(shù)的內(nèi)部,定義局部變量一定要放在任何函數(shù)或語(yǔ)句執(zhí)行之前,否則肯定報(bào)錯(cuò)。27.對(duì)于一個(gè)程序,中斷是一個(gè)很重要的東西,設(shè)置好中斷,程序會(huì)很簡(jiǎn)單。28.有時(shí)候想問(wèn)題不能死鉆牛角尖,不是那里的問(wèn)題,就不是。比如說(shuō)有些I/O口的輸入輸出設(shè)置,是一個(gè)很玄乎的東西,想問(wèn)題深入一點(diǎn),細(xì)致一點(diǎn)。29.注意引腳輸入輸出的定義,特別是一些好的單片機(jī),對(duì)引腳的輸入輸出有特殊的設(shè)置要求。例如:飛思卡爾的單片機(jī)的PE0和PE1只能作為固定輸入。30.在很多時(shí)候應(yīng)該想一些問(wèn)題的另一面,如果SMOD為某一寄存器的一位,其值只能是0或者是1.那么,2^SMOD =(SMOD + 1).有些運(yùn)算就得到了簡(jiǎn)化。31.寫(xiě)程序時(shí),應(yīng)該盡量用一些“與或非”操作。例如一個(gè)寄存器PCON.如果有操作:PCON |=0x80(就是將PCON的最高位寫(xiě)1,其他位不管)。而如果有操作PCON &=0x80(就是將PCON的低七位都清零)。與或非操作能夠大量的縮短程序執(zhí)行的時(shí)間,增強(qiáng)了代碼的可讀性。32.對(duì)某一個(gè)端口的某些位進(jìn)行操作時(shí),不管其他位的狀態(tài),需要用到或與相關(guān)的知識(shí)。例如,對(duì)P3口的高四位進(jìn)行讀值時(shí),不考慮低四位的狀態(tài)??梢杂靡粋€(gè)&符號(hào)。即temp=P3&0xf0;這樣低四位的值肯定全為零。而高四位就保持了狀態(tài)。33.AD9852_Data[0]=((unsigned char*)&FTW)[5];這條語(yǔ)句的意思是:第一步,&FTW是C中常用的一個(gè)取址的操作,取數(shù)組FTW的地址;第二步,對(duì)原本的數(shù)組FTW中的所有數(shù)據(jù)進(jìn)行強(qiáng)制轉(zhuǎn)換。第三步,是對(duì)數(shù)組中的數(shù)的取出。即FTW[5]。34.#define
AD9852_Set_IORESET()
do{AD9852_IORESET_DIR = 1;
AD9852_IORESET_OUT = 1;} while(0)
在以后有些函數(shù)用的比較多時(shí),盡量在宏定義中去寫(xiě)。宏定義中的函數(shù)盡量都是最底層的函數(shù),也就是沒(méi)有調(diào)用任何函數(shù),都是對(duì)寄存器的操作。35.宏定義的作用就是純屬的一個(gè)復(fù)制作用,它是把一些經(jīng)常用到的函數(shù)寫(xiě)在宏定義中。這樣的話就方便程序的修改。36.DDRA&=0xF8;DDRA|=temp;這兩句操作第一句能保證低三位首先清零。Temp的值也就是你要定義的低三位的輸入或輸出狀態(tài)。這樣的位操作在程序中用的比較多。應(yīng)多加應(yīng)用。37.當(dāng)函數(shù)的形參是全局變量的時(shí)候,這個(gè)時(shí)候可以將形參省略不寫(xiě),省略了不必要的代碼,但是也增加了別人讀代碼的難度。38.有時(shí)候某些端口必須有觸發(fā)功能,也就是說(shuō)它是上電復(fù)位的,在系統(tǒng)板上按復(fù)位鍵和按運(yùn)行鍵是有本質(zhì)區(qū)別的。39.以后在寫(xiě)程序的時(shí)候盡量做到模塊化,也就是說(shuō),在對(duì)端口的定義的時(shí)候,盡量不要直接寫(xiě)PORTA或者PORTB等??梢赃@樣定義: #define Set_Rs PTS_PTS2 = 1 #define Clr_Rs PTS_PTS2 = 0(定義它的控制字)
#define ad9851_w_clk_dir DDRB_DDRB0(定義輸入輸出方向)
這樣寫(xiě)的話以后可以方便改寫(xiě)端口,增強(qiáng)程序的可移植性。
40.有時(shí)候,數(shù)據(jù)需要轉(zhuǎn)換,讀數(shù)據(jù)的時(shí)候?qū)?yīng)的輸出端口的方向是輸入,而寫(xiě)數(shù)據(jù)的時(shí)候?qū)?yīng)的端口是輸出。41.有的時(shí)候?qū)懗绦虻南敕ú荒芴?,比如說(shuō)吧:a要從0到100,以10為步進(jìn),大多數(shù)人的想法是這樣的,if(a>=0&&a<10)do something;
else if(a>=10&&a<20)do something ???
就這樣一直寫(xiě)下去。現(xiàn)在我們回頭來(lái)想一下,到底需要怎么寫(xiě),可以減少程序的代碼量。我們可以向下面這樣寫(xiě): if(a>90)do something;else if(a>80)do something??? 從這樣的操作可以看出,減少了代碼量,還不會(huì)影響程序的執(zhí)行。42.在以后的程序設(shè)計(jì)中,盡量寫(xiě)好程序的相關(guān)說(shuō)明,最好像下面的所示: /***************************************************************** * 名 稱(chēng):Test(void)* 功 能:測(cè)試液晶屏 * 入口參數(shù):無(wú) * 出口參數(shù):無(wú)
* 說(shuō) 明:測(cè)試液晶屏是否正常工作 * 調(diào)用方法:Test();******************************************************************/ 43.我們寫(xiě)的函數(shù)應(yīng)該是容易讓別人讀懂的,更應(yīng)該具有通用性。比如說(shuō)畫(huà)一個(gè)坐標(biāo)軸xOy。就要寫(xiě)的方便別人改一點(diǎn)??梢赃@樣寫(xiě):
Draw_XY(y_org,x_org,Red);這樣寫(xiě)誰(shuí)都能看明白:y_org表示y軸的原點(diǎn)所在處。x_org表示x軸的原點(diǎn)所在處。Red表示畫(huà)出的圓的顏色。寫(xiě)的程序就方便改了,代碼也就很靈活。44.程序中應(yīng)該不要出現(xiàn),延時(shí)1毫秒以上的程序,最好都是通過(guò)中斷產(chǎn)生的。無(wú)論什么時(shí)候我們都要以實(shí)際應(yīng)用的角度去考慮程序的書(shū)寫(xiě)。45.對(duì)于一個(gè)程序員,如何釋放CPU,這是寫(xiě)合格程序的基礎(chǔ)。
46.以后寫(xiě)程序,將所有的Typedef、#define、常量的定義都放在一個(gè)頭文件MacroandConst.h中。47.C中的頭文件經(jīng)常會(huì)用到枚舉法這個(gè)概念,比如說(shuō)吧,在頭文件中,經(jīng)常會(huì)出現(xiàn)以下的:enum{black,blue,red,???}color;在程序中是這樣處理的。switch{case black: do something;break;case red:do something;break;???}這里情況默認(rèn)的情況是這樣的,black=0;blue=1;red=2;??所以稱(chēng)之為枚舉法。當(dāng)然也可以對(duì)初始的那個(gè)顏色賦值,例如:black=1;那么后面的數(shù)就會(huì)都加1.枚舉法在頭文件中經(jīng)常會(huì)用到,要熟加掌握。
48.頭文件的定義中,如果代碼寫(xiě)到了另外一行,一般情況下,要加上續(xù)行指令。續(xù)行指令的符號(hào)為“/”。
第二篇:軟件編程規(guī)范總結(jié)
軟件編程規(guī)范總結(jié)
本規(guī)范的內(nèi)容包括:基本原則、布局、注釋、命名規(guī)則、變量常量與類(lèi)型、表達(dá)式與語(yǔ)句、函數(shù)與過(guò)程、可靠性、可測(cè)性、斷言與錯(cuò)誤處理等。
一、基本原則
1.2.3.4.5.6.7.保持代碼的簡(jiǎn)明清晰,避免過(guò)分的編程技巧。所有的代碼盡量遵循ANSI C標(biāo)準(zhǔn)。
編程時(shí)首先達(dá)到正確性,其次考慮效率。避免或少用全局變量。盡量避免使用GOTO語(yǔ)句。盡可能重用、修正老的代碼。盡量減少同樣的錯(cuò)誤出現(xiàn)的次數(shù)。
二、文件布局
1.頭文件必須要避免重復(fù)包含。
2.包含標(biāo)準(zhǔn)庫(kù)頭文件用尖括號(hào) <>,包含非標(biāo)準(zhǔn)庫(kù)頭文件用雙引號(hào) “”。3.遵循統(tǒng)一的順序書(shū)寫(xiě)類(lèi)的定義及實(shí)現(xiàn)。類(lèi)的定義(在定義文件中)按如下順序書(shū)寫(xiě):
公有屬性
公有函數(shù)
保護(hù)屬性
保護(hù)函數(shù)
私有屬性
私有函數(shù)
類(lèi)的實(shí)現(xiàn)(在實(shí)現(xiàn)文件中)按如下順序書(shū)寫(xiě):
構(gòu)造函數(shù)
析構(gòu)函數(shù) 公有函數(shù) 保護(hù)函數(shù) 私有函數(shù)
4.程序中一行的代碼和注釋不能超過(guò)80列。5.定義指針類(lèi)型的變量,*應(yīng)放在變量前。
6.源程序中關(guān)系較為緊密的代碼應(yīng)盡可能相鄰。iLength iWidth = 10;
= 5;// 矩形的長(zhǎng)與寬關(guān)系較密切,放在一起。
StrCaption = “Test”;
7.禁止使用TAB鍵,必須使用空格進(jìn)行縮進(jìn)。縮進(jìn)為4個(gè)空格。
8.程序的分界符‘{’和‘}’應(yīng)獨(dú)占一行并且位于同一列,同時(shí)與引用它們的語(yǔ)句左對(duì)齊。{ }之內(nèi)的代碼塊使用縮進(jìn)規(guī)則對(duì)齊。
9.if、else、else if、for、while、do等語(yǔ)句自占一行,執(zhí)行語(yǔ)句不得緊跟其后。不論執(zhí)行語(yǔ)句有多少都要加 { }。
if(varible1 < varible2){
varible1 = varible2;}
10.11.聲明類(lèi)的時(shí)候,public、protected、private關(guān)鍵字與分界符{} 對(duì)齊,這些部分的內(nèi)容要進(jìn)行縮進(jìn)。
12.結(jié)構(gòu)型的數(shù)組、多維的數(shù)組如果在定義時(shí)初始化,按照數(shù)組的矩陣結(jié)構(gòu)分行書(shū)寫(xiě)。13.相關(guān)的賦值語(yǔ)句等號(hào)對(duì)齊。
14.在switch語(yǔ)句中,每一個(gè)case分支和default要用{ }括起來(lái),{ }中的內(nèi)容需要縮進(jìn)。
15.不同邏輯程序塊之間要使用空行分隔。16.一元操作符如“!”、“~”、“++”、“--”、“*”、“&”(地址運(yùn)算符)等前后不加空格?!埃郏荨薄ⅰ?”、“->”這類(lèi)操作符前后不加空格。
17.多元運(yùn)算符和它們的操作數(shù)之間至少需要一個(gè)空格。18.關(guān)鍵字之后要留空格。(if、for、while等關(guān)鍵字之后應(yīng)留一個(gè)空格再跟左括號(hào)‘(’,以突出關(guān)鍵字。)
19.函數(shù)名之后不要留空格。(函數(shù)名后緊跟左括號(hào)‘(’,以與關(guān)鍵字區(qū)別。)20.(’向后緊跟,‘)’、‘,’、‘;’向前緊跟,緊跟處不留空格。‘,’之后要留空格?!?’不是行結(jié)束符號(hào)時(shí)其后要留空格。
21.長(zhǎng)表達(dá)式(超過(guò)80列)要在低優(yōu)先級(jí)操作符處拆分成新行,操作符放在新行之首(以便突出操作符)。拆分出的新行要進(jìn)行適當(dāng)?shù)目s進(jìn),使排版整齊。
22.函數(shù)聲明時(shí),類(lèi)型與名稱(chēng)不允許分行書(shū)寫(xiě)。
三、注釋
1.一般情況下,源程序有效注釋量必須在20%以上。2.注釋符與注釋內(nèi)容之間要用一個(gè)空格進(jìn)行分隔。
3.文件頭部必須進(jìn)行注釋?zhuān)ǎ?h文件、.c文件、.cpp文件、.inc文件、.def文件、編譯說(shuō)明文件.cfg等。
4.函數(shù)頭部應(yīng)進(jìn)行注釋?zhuān)谐觯汉瘮?shù)的目的/功能、輸入?yún)?shù)、輸出參數(shù)、返回值、訪問(wèn)和修改的表、修改信息等。
5.包含在{ }中代碼塊的結(jié)束處應(yīng)加注釋?zhuān)阌陂喿x。特別是多分支、多重嵌套的條件語(yǔ)句或循環(huán)語(yǔ)句。
void Main(){
if(…){
… while(…)
{
…
} /* end of while(…)*/ …
} /* end of if(…)*/ // 指明是哪條語(yǔ)句結(jié)束 } /* end of void main()*/
// 指明函數(shù)的結(jié)束 // 指明該條while語(yǔ)句結(jié)束
6.保證代碼和注釋的一致性。修改代碼同時(shí)修改相應(yīng)的注釋?zhuān)辉儆杏玫淖⑨屢獎(jiǎng)h除。7.注釋?xiě)?yīng)與其描述的代碼相近,對(duì)代碼的注釋?xiě)?yīng)放在其上方或右方(對(duì)單條語(yǔ)句的注釋?zhuān)┫噜徫恢?,不可放在下面,如放于上方則需與其上面的代碼用空行隔開(kāi)。
8.全局變量要有詳細(xì)的注釋?zhuān)▽?duì)其功能、取值范圍、訪問(wèn)信息及訪問(wèn)時(shí)注意事項(xiàng)等的說(shuō)明。
9.注釋與所描述內(nèi)容進(jìn)行同樣的縮排。
10.對(duì)分支語(yǔ)句(條件分支、循環(huán)語(yǔ)句等)必須編寫(xiě)注釋。11.盡量避免在注釋中使用縮寫(xiě),特別是不常用縮寫(xiě)。
四、命名規(guī)則
1.標(biāo)識(shí)符要采用英文單詞或其組合,便于記憶和閱讀,切忌使用漢語(yǔ)拼音來(lái)命名。嚴(yán)格禁止使用連續(xù)的下劃線,下劃線也不能出現(xiàn)在標(biāo)識(shí)符頭或結(jié)尾(預(yù)編譯開(kāi)關(guān)除外)。
2.程序中不要出現(xiàn)僅靠大小寫(xiě)區(qū)分的相似的標(biāo)識(shí)符。
3.用正確的反義詞組命名具有互斥意義的變量或相反動(dòng)作的函數(shù)等。
4.宏、常量名都要使用大寫(xiě)字母, 用下劃線 ‘_’分割單詞。預(yù)編譯開(kāi)關(guān)的定義使用下劃線 ‘_’開(kāi)始。
5.變量名長(zhǎng)度應(yīng)小于31個(gè)字符,以保持與ANSI C標(biāo)準(zhǔn)一致。不得取單個(gè)字符(如i、j、k等)作為變量名,但是局部循環(huán)變量除外。
6.程序中局部變量不要與全局變量重名。7.使用一致的前綴來(lái)區(qū)分變量的作用域。
g_
:全局變量 s_
:模塊內(nèi)靜態(tài)變量
空:局部變量不加范圍前綴
8.使用一致的小寫(xiě)類(lèi)型指示符作為前綴來(lái)區(qū)分變量的類(lèi)型。說(shuō)明:常用變量類(lèi)型前綴列表如下:
i
: int
f
: float d : double c
: char uc
: unsigned char 或 BYTE l : long p
: pointer b
: BOOL h : HANDLE w
: unsigned short 或 WORD dw : DWORD或 unsigned long a
:數(shù)組,array of TYPE str
:字符串 t :結(jié)構(gòu)類(lèi)型
9.完整的變量名應(yīng)由前綴+變量名主體組成,變量名的主體應(yīng)當(dāng)使用“名詞”或者“形容詞+名詞”,且首字母必須大寫(xiě)。
float g_fValue;10.函數(shù)名用大寫(xiě)字母開(kāi)頭的單詞組合而成,且應(yīng)當(dāng)使用“動(dòng)詞”或者“動(dòng)詞+名詞”(動(dòng)賓詞組)。
11.結(jié)構(gòu)名、聯(lián)合名、枚舉名由前綴T_ 開(kāi)頭。事件名由前綴EV_ 開(kāi)頭。12.標(biāo)識(shí)符前最好不加項(xiàng)目、產(chǎn)品、部門(mén)的標(biāo)識(shí)。
五、變量常量與類(lèi)型
1.定義全局變量時(shí)必須仔細(xì)分析,明確其含義、作用、取值范圍及與其它全局變量間的關(guān)系。
2.明確全局變量與操作此全局變量的函數(shù)或過(guò)程的關(guān)系。3.一個(gè)變量有且只有一個(gè)功能,不能把一個(gè)變量用作多種用途。4.循環(huán)語(yǔ)句與判斷語(yǔ)句中,不允許對(duì)其它變量進(jìn)行計(jì)算與賦值。5.宏定義中如果包含表達(dá)式或變量,表達(dá)式和變量必須用小括號(hào)括起來(lái)。6.使用宏定義多行語(yǔ)句時(shí), 必須使用 { } 把這些語(yǔ)句括起來(lái)。
建議:
? 盡量構(gòu)造僅有一個(gè)模塊或函數(shù)可以修改、創(chuàng)建的全局變量,而其余有關(guān)模塊或函數(shù)只能訪問(wèn)。
? 對(duì)于全局變量通過(guò)統(tǒng)一的函數(shù)訪問(wèn)。
? 盡量使用const說(shuō)明常量數(shù)據(jù),對(duì)于宏定義的常數(shù),必須指出其類(lèi)型。? 最好不要在語(yǔ)句塊內(nèi)聲明局部變量。
7.結(jié)構(gòu)和聯(lián)合必須被類(lèi)型化。typedef struct {
char acName[NAME_SIZE];WORD wScore;} T_Student;
T_Student *ptStudent;
建議:
? 使用嚴(yán)格形式定義的、可移植的數(shù)據(jù)類(lèi)型,盡量不要使用與具體硬件或軟件環(huán)境關(guān)系密切的變量。
? 結(jié)構(gòu)是針對(duì)一種事務(wù)的抽象,功能要單一,不要設(shè)計(jì)面面俱到的數(shù)據(jù)結(jié)構(gòu)。? 不同結(jié)構(gòu)間的關(guān)系要盡量簡(jiǎn)單,若兩個(gè)結(jié)構(gòu)間關(guān)系較復(fù)雜、密切,那么應(yīng)合為一個(gè)結(jié)構(gòu)。
? 結(jié)構(gòu)中元素的個(gè)數(shù)應(yīng)適中。若結(jié)構(gòu)中元素個(gè)數(shù)過(guò)多可考慮依據(jù)某種原則把元素組成不同的子結(jié)構(gòu),以減少原結(jié)構(gòu)中元素的個(gè)數(shù)。
? 仔細(xì)設(shè)計(jì)結(jié)構(gòu)中元素的布局與排列順序,使結(jié)構(gòu)容易理解、節(jié)省占用空間,并減少引起誤用現(xiàn)象,對(duì)于結(jié)構(gòu)中未用的位明確地給予保留。
? 結(jié)構(gòu)的設(shè)計(jì)要盡量考慮向前兼容和以后的版本升級(jí),并為某些未來(lái)可能的應(yīng)用保留余地(如預(yù)留一些空間等)。
? 合理地設(shè)計(jì)數(shù)據(jù)并使用自定義數(shù)據(jù)類(lèi)型,盡量減少?zèng)]有必要的數(shù)據(jù)類(lèi)型默認(rèn)轉(zhuǎn)換與強(qiáng)制轉(zhuǎn)換。
? 當(dāng)聲明數(shù)據(jù)結(jié)構(gòu)時(shí),必須考慮機(jī)器的字節(jié)順序、使用的位域及字節(jié)對(duì)齊等問(wèn)題。
六、表達(dá)式與語(yǔ)句
1.在表達(dá)式中使用括號(hào),使表達(dá)式的運(yùn)算順序更清晰。
if(((iYear % 4 == 0)&&(iYear % 100!= 0))||(iYear % 400 == 0))2.避免表達(dá)式中的附加功能,不要編寫(xiě)太復(fù)雜的復(fù)合表達(dá)式。3.不可將浮點(diǎn)變量用“==”或“!=”與任何數(shù)字比較。
4.應(yīng)當(dāng)將指針變量用“==”或“!=”與NULL比較。
5.在switch語(yǔ)句中,每一個(gè)case分支必須使用break結(jié)尾,最后一個(gè)分支必須是default分支。
6.不可在for 循環(huán)體內(nèi)修改循環(huán)變量,防止for 循環(huán)失去控制。
建議:
? 循環(huán)嵌套次數(shù)不大于3次。
? do while語(yǔ)句和while語(yǔ)句僅使用一個(gè)條件。? 當(dāng)switch語(yǔ)句的分支比較多時(shí),采用數(shù)據(jù)驅(qū)動(dòng)方式。
如果循環(huán)體內(nèi)存在邏輯判斷,并且循環(huán)次數(shù)很大,宜將邏輯判斷移到循環(huán)體的外面。
? for語(yǔ)句的循環(huán)控制變量的取值采用“半開(kāi)半閉區(qū)間”寫(xiě)法。? 在進(jìn)行“==”比較時(shí),將常量或常數(shù)放在“==”號(hào)的左邊。
七、參數(shù)
1.如果函數(shù)沒(méi)有參數(shù),則用void填充。
void SetValue(int iWidth, int iHeight);float GetValue(void);2.如果參數(shù)是指針,且僅作輸入用,則應(yīng)在類(lèi)型前加const。(防止該指針在函數(shù)體內(nèi)被意外修改。)
3.當(dāng)結(jié)構(gòu)變量作為參數(shù)時(shí),應(yīng)傳送結(jié)構(gòu)的指針而不傳送整個(gè)結(jié)構(gòu)體,并且不得修改結(jié)構(gòu)中的元素,用作輸出時(shí)除外。
4.不要省略返回值的類(lèi)型,如果函數(shù)沒(méi)有返回值,那么應(yīng)聲明為void類(lèi)型。5.對(duì)于有返回值的函數(shù),每一個(gè)分支都必須有返回值。(為了保證對(duì)被調(diào)用函數(shù)返回值的判斷,有返回值的函數(shù)中的每一個(gè)退出點(diǎn)都需要有返回值)
6.對(duì)輸入?yún)?shù)的正確性和有效性進(jìn)行檢查。7.防止將函數(shù)的參數(shù)作為工作變量。
void SumData(int iNum, int *piData, int *piSum){
int iCount;
int iSumTmp;// 存儲(chǔ)“和”的臨時(shí)變量
iSumTmp = 0;
for(iCount = 0;iCount < iNum;iCount++)
{
iSumTmp += piData[iCount];}
*piSum = iSumTmp;} 反例:
void SumData(int iNum, int *piData, int *piSum){
int iCount;
*piSum = 0;
for(iCount = 0;iCount < iNum;iCount++){
*piSum += piData[iCount];// piSum成了工作變量,不好。} }
8.必須對(duì)所調(diào)用函數(shù)的錯(cuò)誤返回值進(jìn)行處理。(函數(shù)返回錯(cuò)誤,往往是因?yàn)檩斎氲膮?shù)不合法,或者此時(shí)系統(tǒng)已經(jīng)出現(xiàn)了異常。如果不對(duì)錯(cuò)誤返回值進(jìn)行必要的處理,會(huì)導(dǎo)致錯(cuò)誤的擴(kuò)大,甚至導(dǎo)致系統(tǒng)的崩潰。)
八、可靠性
1.在程序編制之前,必須了解編譯系統(tǒng)的內(nèi)存分配方式,特別是編譯系統(tǒng)對(duì)不同類(lèi)型的變量的內(nèi)存分配規(guī)則,如局部變量在何處分配、靜態(tài)變量在何處分配等。
2.防止內(nèi)存操作越界。
3.必須對(duì)動(dòng)態(tài)申請(qǐng)的內(nèi)存做有效性檢查,并進(jìn)行初始化;動(dòng)態(tài)內(nèi)存的釋放必須和分配成對(duì)以防止內(nèi)存泄漏,釋放后內(nèi)存指針置為NULL。
4.變量在使用前應(yīng)初始化,防止未經(jīng)初始化的變量被引用。5.指針類(lèi)型變量必須初始化為NULL。6.指針不要進(jìn)行復(fù)雜的邏輯或算術(shù)操作。
7.如果指針類(lèi)型明確不會(huì)改變,應(yīng)該強(qiáng)制為const類(lèi)型的指針,以加強(qiáng)編譯器的檢查。8.減少指針和數(shù)據(jù)類(lèi)型的強(qiáng)制類(lèi)型轉(zhuǎn)化。9.移位操作一定要確定類(lèi)型。
10.對(duì)變量進(jìn)行賦值時(shí),必須對(duì)其值進(jìn)行合法性檢查,防止越界等現(xiàn)象發(fā)生。11.類(lèi)中的屬性應(yīng)聲明為private,用公有的函數(shù)訪問(wèn)。
12.在編寫(xiě)派生類(lèi)的賦值函數(shù)時(shí),注意不要忘記對(duì)基類(lèi)的成員變量重新賦值。13.構(gòu)造函數(shù)應(yīng)完成簡(jiǎn)單有效的功能,不應(yīng)完成復(fù)雜的運(yùn)算和大量的內(nèi)存管理。14.不要在棧中分配類(lèi)的實(shí)例,也不要生成全局類(lèi)實(shí)例。
15.正確處理拷貝構(gòu)造函數(shù)與賦值函數(shù)。
16.過(guò)程/函數(shù)中申請(qǐng)的(為打開(kāi)文件而使用的)文件句柄,在過(guò)程/函數(shù)退出之前要關(guān)閉,除非要把這個(gè)句柄傳遞給其它函數(shù)使用。
九、可測(cè)試性
1.在同一項(xiàng)目組或產(chǎn)品組內(nèi),為準(zhǔn)備集成測(cè)試和系統(tǒng)聯(lián)調(diào),要有一套統(tǒng)一的調(diào)測(cè)開(kāi)關(guān)及相應(yīng)信息輸出函數(shù),并且要有詳細(xì)的說(shuō)明。統(tǒng)一的調(diào)試接口和輸出函數(shù)由模塊設(shè)計(jì)和測(cè)試人員根據(jù)項(xiàng)目特性統(tǒng)一制訂,由項(xiàng)目系統(tǒng)人員統(tǒng)一納入系統(tǒng)設(shè)計(jì)中。
2.在同一個(gè)項(xiàng)目組或產(chǎn)品組內(nèi),調(diào)測(cè)打印出的信息串要有統(tǒng)一的格式。信息串中應(yīng)當(dāng)包含所在的模塊名(或源文件名)及行號(hào)等信息。
3.在編寫(xiě)代碼之前,應(yīng)預(yù)先設(shè)計(jì)好程序調(diào)試與測(cè)試的方法和手段,并設(shè)計(jì)好各種調(diào)測(cè)開(kāi)關(guān)及相應(yīng)測(cè)試代碼(如打印函數(shù)等)。
十、斷言與錯(cuò)誤處理
1.整個(gè)軟件系統(tǒng)應(yīng)該采用統(tǒng)一的斷言。如果系統(tǒng)不提供斷言,則應(yīng)該自己構(gòu)造一個(gè)統(tǒng)一的斷言供編程時(shí)使用。
2.使用斷言捕捉不應(yīng)該發(fā)生的非法情況。不要混淆非法情況與錯(cuò)誤情況之間的區(qū)別,后者是必然存在的并且是一定要作出處理的。
3.指向指針的指針及更多級(jí)的指針必須逐級(jí)檢查。4.對(duì)較復(fù)雜的斷言加上明確的注釋。
5.用斷言保證沒(méi)有定義的特性或功能不被使用。
6.用調(diào)測(cè)開(kāi)關(guān)來(lái)切換軟件的DEBUG版和RELEASE版,而不要同時(shí)存在RELEASE版本和DEBUG版本的不同源文件,以減少維護(hù)的難度。
7.正式軟件產(chǎn)品中應(yīng)把斷言及其它調(diào)測(cè)代碼去掉(即把有關(guān)的調(diào)測(cè)開(kāi)關(guān)關(guān)掉)。8.在軟件系統(tǒng)中設(shè)置與取消有關(guān)測(cè)試手段,不能對(duì)軟件實(shí)現(xiàn)的功能等產(chǎn)生影響。9.用斷言來(lái)檢查程序正常運(yùn)行時(shí)不應(yīng)發(fā)生但在調(diào)測(cè)時(shí)有可能發(fā)生的非法情況。
第三篇:軟件編程實(shí)習(xí)總結(jié)_工作總結(jié)
軟件編程實(shí)習(xí)總結(jié)_工作總結(jié)
實(shí)習(xí)時(shí)間:3月1日———5月9日 實(shí)習(xí)地點(diǎn):廣州xx大學(xué)生實(shí)訓(xùn)基地 實(shí)訓(xùn)目標(biāo):
1.通過(guò)系統(tǒng)性的實(shí)訓(xùn),熟練掌握java se、java ee知識(shí)體系,具備java開(kāi)發(fā)經(jīng)驗(yàn);
2.了解企業(yè)軟件開(kāi)發(fā)流程規(guī)范,初步具備正確的軟件開(kāi)發(fā)編程思路,掌握軟件開(kāi)發(fā)的基本方法,養(yǎng)成規(guī)范化項(xiàng)目開(kāi)發(fā)習(xí)慣; 3.以項(xiàng)目案例帶動(dòng)實(shí)訓(xùn),以企業(yè)開(kāi)發(fā)為基礎(chǔ),對(duì)參加實(shí)訓(xùn)學(xué)生進(jìn)行項(xiàng)目分組管理,學(xué)生需按要求完成每天布置的項(xiàng)目案例,實(shí)訓(xùn)結(jié)束時(shí)必須按要求完成多個(gè)項(xiàng)目開(kāi)發(fā)工作,通過(guò)案例練習(xí)、企業(yè)項(xiàng)目開(kāi)發(fā)、評(píng)審,使學(xué)生初步具備軟件開(kāi)發(fā)的實(shí)戰(zhàn)能力; 實(shí)習(xí)單位概述:xx科技以中關(guān)村科技園區(qū)為依托,在中國(guó)軟件業(yè)發(fā)達(dá)城市——北京、上海、廣州、深圳、大連、南京、武漢、杭州、西安、蘇州、成都、太原等20大城市,建立了近40家培訓(xùn)中心,占地2萬(wàn)平米,年培訓(xùn)1萬(wàn)多名軟件人才。已累計(jì)為ibm、微軟、摩托羅拉、華為、中軟、用友、yahoo、阿里巴巴、tom、新浪、搜狐、百度、聯(lián)想、神州數(shù)碼、大唐電信、亞信等知名it企業(yè)培養(yǎng)輸送了7萬(wàn)多名中高級(jí)軟件人才,目前xx全國(guó)擁有600多名員工,年產(chǎn)值近2億元,是中國(guó)領(lǐng)先的中高端軟件人才培訓(xùn)機(jī)構(gòu)。xx科技目前提供的職業(yè)培訓(xùn)包括:外企軟件開(kāi)發(fā)工程師、軟件測(cè)試工程師、oracle數(shù)據(jù)庫(kù)管理員、unix系統(tǒng)
管理員、網(wǎng)絡(luò)系統(tǒng)工程師。實(shí)習(xí)概況:
1.java語(yǔ)言簡(jiǎn)介。包括java的發(fā)展、java語(yǔ)言的特點(diǎn)、java應(yīng)用程序的運(yùn)行機(jī)制和環(huán)境、java的垃圾回收機(jī)制、java開(kāi)發(fā)環(huán)境的安裝和配置和java源程序的編譯和運(yùn)行等。
其中,配置java開(kāi)發(fā)環(huán)境時(shí),需要修改環(huán)境變量(先在系統(tǒng)變量中新建一個(gè)java_home的變量,將其值設(shè)置為jdk1.6.0的安裝路徑;然后修改path變量,在該變量值類(lèi)加入路:%java_home%bin;%java_home%jrebin;接著再修改classpath變量,若沒(méi)有手動(dòng)加入,在其值類(lèi)加入路徑:.;最后利用javac-version測(cè)試java的版本);在編譯和運(yùn)行java源程序時(shí),先使用javac *.java進(jìn)行編譯,再利用java *進(jìn)行運(yùn)行。
2.java基本語(yǔ)法。包括java的命名規(guī)范、注釋、標(biāo)識(shí)符、數(shù)據(jù)類(lèi)型、變量、運(yùn)算符、表達(dá)式、控制語(yǔ)句等。其中,java的命名規(guī)范包括:以字母(unicode)﹑“$”﹑“—”﹑為開(kāi)頭。第二個(gè)字符開(kāi)始是字母(unicode)、數(shù)字、“$”﹑“—”,不限制長(zhǎng)度,不能是 java的關(guān)鍵字,區(qū)分大小寫(xiě)和可以是中文;java的基本數(shù)據(jù)類(lèi)型有八種:整型類(lèi)型(byte,short,int,long)、浮點(diǎn)類(lèi)型(float,double)、字符型(char)和布爾型(boolean);java的控制語(yǔ)句包括:選擇語(yǔ)句(if-else,switch-case)、循環(huán)語(yǔ)句(for,do-while,while)和循環(huán)跳轉(zhuǎn)語(yǔ)句(break結(jié)束整個(gè)
循,continue結(jié)束本次循環(huán))。
3.mysql數(shù)據(jù)庫(kù)基本指令。包括創(chuàng)建、查詢、刪除數(shù)據(jù)庫(kù)和表,向表中添加、刪除、更新數(shù)據(jù)和查詢表,修改表的結(jié)構(gòu)等。其中,列出數(shù)據(jù)庫(kù)實(shí)例和表: show databases; show tables; 使用數(shù)據(jù)庫(kù)實(shí)例: use databasename; 顯示表中列的屬性: desc tablename; 創(chuàng)建一張表:
create table tablename(屬性及其數(shù)據(jù)類(lèi)型); 查詢數(shù)據(jù):
select * from tablename(where id=); 添加數(shù)據(jù):
insert into tablename(屬性1,...)values(屬性值1,...);刪除數(shù)據(jù):
delete from tablename(where id=); 更新數(shù)據(jù):
update tablename set 字段名=??,字段名
=??(where id=); 表結(jié)構(gòu)的修改,如增加一個(gè)字段格式:
alter table tablename add column(字段名,字段類(lèi)型); 4.數(shù)組的介紹。包括數(shù)組的申明,初始化(靜態(tài)和動(dòng)態(tài)初始化),數(shù)組的訪問(wèn)、遍歷和復(fù)制等。
5.string中一些api方法。如找到指定位置的字符charat(int index),求字符串的長(zhǎng)度length(),字符串的連接concat、判斷字符串是否以指定的字符結(jié)束engswith(‘c’)、判斷兩個(gè)字符串是否相等equal等。
6.接口的介紹。包括collection、list、hashmap等,以及這些接口的一些api的使用。7.類(lèi)的封裝和重載。
8.mysql數(shù)據(jù)庫(kù)與myeclipse的連接,需要在工程中導(dǎo)
第四篇:軟件編程學(xué)習(xí)心得
軟件編程學(xué)習(xí)心得
隨著計(jì)算機(jī)技術(shù)的發(fā)展和工作的需要,為了能夠更好的維護(hù)公司生產(chǎn)管理系統(tǒng);公司安排我們到北大青鳥(niǎo)APTECH進(jìn)修。我們選擇了時(shí)下最流行、發(fā)展速度較快的語(yǔ)言C#。C#學(xué)習(xí)共分三個(gè)階段,目前我只學(xué)習(xí)了第一個(gè)階段;現(xiàn)將我在北大青鳥(niǎo)學(xué)習(xí)第一階段為期兩個(gè)月的學(xué)習(xí)心得總結(jié)如下:
C#是一種新的面向?qū)ο蟮木幊陶Z(yǔ)言,專(zhuān)門(mén)用于.NET運(yùn)行時(shí)。C#編譯器只能生成受管制的代碼,也可以使用.NET基類(lèi)。C#語(yǔ)言自C/C++演變而來(lái)。但是,它具有簡(jiǎn)單、現(xiàn)代、完全面向?qū)ο蠛皖?lèi)型安全等諸多特性。下面就簡(jiǎn)單說(shuō)說(shuō)簡(jiǎn)單和現(xiàn)代其中兩種特性。
1、簡(jiǎn)單
C#具有C++所沒(méi)有的一個(gè)優(yōu)勢(shì)就是學(xué)習(xí)簡(jiǎn)單。該語(yǔ)言首要的目標(biāo)就是簡(jiǎn)單。很多功能(還不如說(shuō)是缺少了C++的一些功能)有助于C#全方位的簡(jiǎn)單。
在C#中,沒(méi)有C++中流行的指針。默認(rèn)地,您工作在受管理的代碼中,在那里不允許如直接存取內(nèi)存等不安全的操作。我想沒(méi)有C++程序員可以聲稱(chēng),從沒(méi)有使用指針訪問(wèn)過(guò)不屬于他們的內(nèi)存。
C#棄用其它操作符,名字空間、成員和引用僅使用單個(gè)操作符 “.”。現(xiàn)在一個(gè)程序員所需要理解的就是嵌套名字的注解了。
C#使用統(tǒng)一的類(lèi)型系統(tǒng)。這種系統(tǒng)充許您把各種類(lèi)型作為一個(gè)對(duì)象查看,它是一個(gè)原始類(lèi)型還是一個(gè)full-blown 類(lèi)。和其它編程語(yǔ)言相比,由于加框(boxing)和消框(unboxing)的機(jī)制,把簡(jiǎn)單類(lèi)型當(dāng)作對(duì)象處理并不能獲得性能的改善。稍后將詳細(xì)解釋加框和消框,但基本上僅當(dāng)需要時(shí)才使用對(duì)象訪問(wèn)簡(jiǎn)單類(lèi)型這種技術(shù)。
2、現(xiàn)代
投入學(xué)習(xí)C#的努力是一筆大投資,因?yàn)镃#是為編寫(xiě)NGWS 應(yīng)用程序的主要語(yǔ)言而設(shè)計(jì)。很多用C++可以實(shí)現(xiàn)或者很費(fèi)力實(shí)現(xiàn)的功能,在C#中不過(guò)是一部分基本的功能而已。根據(jù)應(yīng)用程序的特殊需求,可以很容易地創(chuàng)建出新的一種數(shù)據(jù)類(lèi)型。
指針不再是編程武器的一部分。運(yùn)行時(shí)NGWS提供了一個(gè)垃圾收集器,負(fù)責(zé)C#程序中的內(nèi)存管理。因內(nèi)存和應(yīng)用程序都受到管理,所以很必要增強(qiáng)類(lèi)型安全,以確保應(yīng)用的穩(wěn)定性。
異常處理是C#的主要功能。C#的異常處理與C++的不同點(diǎn)在于它是交叉語(yǔ)言的(運(yùn)行時(shí)的另一個(gè)功能)。在沒(méi)有C#之前,您必須處理怪異的HRESULTs,但現(xiàn)在由于使用了基于異常的健壯的出錯(cuò)處理,這一切都結(jié)束了。
對(duì)于現(xiàn)代的應(yīng)用程序,安全是首要的,C#也不會(huì)例外。它提供了元數(shù)據(jù)語(yǔ)法,用于聲明下述NGWS安全模式的能力和許可。元數(shù)據(jù)是NGWS運(yùn)行時(shí)的一個(gè)關(guān)鍵的概念。
通兩個(gè)多月學(xué)習(xí),我能夠很好的掌握C#語(yǔ)言的基本語(yǔ)句、語(yǔ)法以及老師補(bǔ)充的一些要點(diǎn);能夠編寫(xiě)簡(jiǎn)單的應(yīng)用程序,例如電子郵件的收發(fā)等,為接下來(lái)的第二、第三階段學(xué)習(xí)打下了良好的基礎(chǔ)。
第五篇:用友軟件錯(cuò)誤91問(wèn)題匯總
[學(xué)習(xí)] 用友軟件錯(cuò)誤91問(wèn)題匯總
用友軟件, 匯總用友軟件, 匯總
1.在總賬中,查詢管理費(fèi)用時(shí)報(bào)“7-內(nèi)存溢出”或“未設(shè)置對(duì)象變量,運(yùn)行時(shí)91錯(cuò)誤”。此問(wèn)題請(qǐng)檢查機(jī)器環(huán)境: 機(jī)器名是否含特殊字符或中文,登陸操作系統(tǒng)的操作員名是否含特殊字符或中文,其權(quán)限是否為超級(jí)管理員或高級(jí)用戶.重新注冊(cè)軟件的所有組件,可使用通網(wǎng)站服務(wù)工具中的維護(hù)通2.0中的三十九號(hào)工具進(jìn)行注冊(cè).清空系統(tǒng)臨時(shí)文件夾,路徑:C:Documents and SettingsAdministratorLocal
SettingsTemp 如問(wèn)題未解決,請(qǐng)將賬套引入到其它機(jī)器確定是否為數(shù)據(jù)問(wèn)題.2.在總賬記賬時(shí)提示“運(yùn)行時(shí)錯(cuò)誤 91,未設(shè)置對(duì)象變量或With block 變量”。
總賬中遇到這種錯(cuò)誤,可能就是和計(jì)算機(jī)名稱(chēng)、登陸賬戶有關(guān)。計(jì)算機(jī)名稱(chēng)最好是全英文的,登陸賬戶也應(yīng)該用英文名。查看登陸操作系統(tǒng)的用戶具有什么權(quán)限,我們要求必須是超級(jí)用戶以上的權(quán)限才可以。
3.客戶在使用薪資統(tǒng)計(jì)查詢時(shí),出現(xiàn)“91號(hào)錯(cuò)誤,未設(shè)置對(duì)象變量或With block 變量”同時(shí)個(gè)人工資統(tǒng)計(jì)查詢表不可用,不能查詢出
結(jié)果
此問(wèn)題是因?yàn)榻M件丟失所致請(qǐng)重新注冊(cè)一下組件或是重新安裝一下軟件
4.銷(xiāo)售發(fā)票列表聯(lián)查銷(xiāo)售發(fā)票,出錯(cuò)“運(yùn)行錯(cuò)誤91”
開(kāi)發(fā)已做出補(bǔ)丁,請(qǐng)上網(wǎng)下載相應(yīng)版本的補(bǔ)丁。補(bǔ)丁路徑:用友通10.2標(biāo)準(zhǔn)版:tongserver補(bǔ)丁包補(bǔ)丁包用友通10.2補(bǔ)丁包標(biāo)準(zhǔn)版2007-11-05星期一23335-23067用友通10.2工業(yè)版tongserver補(bǔ)丁包補(bǔ)丁包用友通10.2補(bǔ)丁包工業(yè)版2007-11-05星期一23335-
23067
5.查詢賬表時(shí)提示,運(yùn)行時(shí)錯(cuò)誤91,服務(wù)器為2000server可以正常登陸,客戶端為xp出現(xiàn)此問(wèn)題< /font>
使用服務(wù)工具中的維護(hù)通2.0中的工具三十九把客戶端的組件重新注冊(cè)一下,或卸載客戶端軟件,刪除system32 fcomsql這個(gè)文件夾,然后再
重新安裝軟件。
6.憑證無(wú)法打印,預(yù)覽時(shí)提示“運(yùn)行時(shí)錯(cuò)誤91,未設(shè)置變量或with block”。
先檢查機(jī)器名是否為純英文,不允許有._%等特殊字符;2.如果正常,則刪除ZWSQLTemp.mdb文件,重新登錄產(chǎn)品,文件保存位置:ZWSQLTemp.mdb默認(rèn)路徑(XXX:指系統(tǒng)登錄帳戶)操作系統(tǒng)路徑Documents and SettingsXXXLocal SettingsTemp,此路徑即系統(tǒng)環(huán)境變量中用戶變量的Tmp變量值(參見(jiàn)系統(tǒng)環(huán)境參數(shù)章),如C:Documentsand SettingsAdministrator Local SettingsTemp;3.如果不行,請(qǐng)使用注冊(cè)組件的工具,下載:http: //tong.ufida.com.cn/infomanage/qudao/ewebeditor/UploadFile/***.rar還解決不了,請(qǐng)重新安裝
軟件,卸載完軟件后,刪除c:windowsystem32下的ufcomsql文件夾,再裝。
7.新裝系統(tǒng),安裝用友通10.1plus2后,運(yùn)行自定義轉(zhuǎn)帳、期間損益結(jié)轉(zhuǎn)、查詢明細(xì)賬時(shí)均報(bào)錯(cuò)“運(yùn)行時(shí)錯(cuò)誤91”。卸載軟件,刪除
ufcomsql后重裝軟件問(wèn)題依舊。
用for %%s in(%windir%system32ufcomsql*.dll)do regsvr32.exe/s %%s
for %%s in(%windir%system32ufcomsql*.ocx)do regsvr32.exe/s %%s
注冊(cè)后問(wèn)題依舊。
此提示有這個(gè)幾種情況
1、登錄系統(tǒng)的操作員不夠
2、登錄系統(tǒng)的操作員是中文名
3、ZWSQLTemp.mdb出錯(cuò),此文件存于操作系統(tǒng)路徑Documents
and SettingsXXXLocal SettingsTemp,刪除掉即可,所以建立一個(gè)新的只有英文字母的操作員來(lái)登錄系統(tǒng)。
8.在查詢明細(xì)賬時(shí)提示“運(yùn)行時(shí)錯(cuò)誤91,未設(shè)置對(duì)象變量或withblock變量”。
請(qǐng)看一下機(jī)器名和登陸操作系統(tǒng)的用戶名有沒(méi)有特殊符號(hào),或帶有中文名,如有請(qǐng)將機(jī)器名修改為純英文的,增加一個(gè)純英文的操作系統(tǒng)用戶。
如過(guò)沒(méi)有,那請(qǐng)將軟件進(jìn)行卸載,刪除system32下的ufcomsql文件夾,重新安裝軟件。
9.用戶在安裝用友通普及版10.2時(shí),在進(jìn)行打印設(shè)置時(shí),打印預(yù)覽憑證時(shí),提示:“運(yùn)行時(shí)錯(cuò)誤91未設(shè)置對(duì)象變量或 WITH BLOCK變量”。此時(shí)自動(dòng)退出.此后進(jìn)入填制憑證時(shí),剛又提示:“運(yùn)行時(shí)錯(cuò)誤429ACTIVEX.部件不能創(chuàng)建對(duì)象”.重新注冊(cè)后,才可進(jìn)行填制憑證界
面。已經(jīng)試過(guò)重裝軟件.等一些操作,仍不能解決問(wèn)題。
有控件沒(méi)有注冊(cè)上,重新注冊(cè)下列文件:ufmoney.ocx,ufrtpm.ocx,uszzpub.dll, usnate.dll2.硬盤(pán)可能有壞道,換一個(gè)硬盤(pán)安裝軟件 3.重
裝軟件沒(méi)刪除干凈,請(qǐng)重裝前把安裝目錄和注冊(cè)表以及c:windowsystem32ufcomsql 刪除
10.點(diǎn)擊如憑證打印,明細(xì)賬查詢,打印等查詢和打印時(shí)都提示“運(yùn)行時(shí)錯(cuò)誤91,未設(shè)置對(duì)象變量或with& nbsp;block 變量”。請(qǐng)檢查登陸操作系統(tǒng)的用戶名是否為中文名,計(jì)算機(jī)名稱(chēng)是否帶有特殊符號(hào),或是以中文開(kāi)頭,這兩者最好是全英文的。2.請(qǐng)將軟件進(jìn)行卸
載,然后停止mssqlserver服務(wù)(開(kāi)始/運(yùn)行/netstop mssqlserver),刪除ufcomsql文件夾,再啟動(dòng)mssqlserver服務(wù),重裝軟件。
11.在總賬模塊中,在進(jìn)行月末結(jié)賬時(shí)提示為"運(yùn)行錯(cuò)誤91"不能進(jìn)行結(jié)賬。
請(qǐng)檢查一下機(jī)器名是否帶有特殊符號(hào)或以數(shù)字開(kāi)頭,機(jī)器名最好是純英文的,還有登陸操作系統(tǒng)的用戶名也應(yīng)該上以英文字母開(kāi)頭,不能帶特
殊符號(hào)。
12.一客戶有普及版總賬.出現(xiàn)很多報(bào)錯(cuò).能做憑證其他的什么都不能做.包括打?。崾荆⑦\(yùn)行錯(cuò)誤91未設(shè)置對(duì)象變量或 withblock變量".如果重新注冊(cè)再進(jìn)問(wèn)題又發(fā)生變化了可能不能做憑證但能做其他的一項(xiàng).不知是什么原因造成的.安裝時(shí)沒(méi)有任
何報(bào)錯(cuò)。
請(qǐng)按如下操作假如操作系統(tǒng)安裝在c盤(pán)下 打開(kāi)開(kāi)始里的運(yùn)行輸入xp版本:regsvr32 c:windowssystem32ufcomsqlufmoney.ocx2000
版本:regsvr32 c:winntsystem32ufcomsqlufmoney.ocx提示成功。
13.固定資產(chǎn)減少時(shí)報(bào)錯(cuò)DAO-ADO對(duì)象模型,然后“運(yùn)行時(shí)錯(cuò)誤91”,“運(yùn)行時(shí)錯(cuò)誤440”
請(qǐng)檢查機(jī)器名字是否為純英文(不要有-號(hào)等特殊字符);請(qǐng)檢查卡片項(xiàng)目中是否有特殊字符。