開發語言越便捷,我們要越仔細

leniz發表於2009-03-31

昨天方生在寫他的自動傳送報表程式時出現一個問題,就是字串會自動截斷,我開始懷疑是長度問題,因為他用的是String型別,不清楚可用長度,於是改用C型別,把長度定位1024,這個長度是大於他的所有字元長,可是結果仍然截斷。

  早上方生把問題查出來了,是他寫的大於小於符號搞的鬼,因為”>”,”是標籤的字元,他的程式實現用郵件的方式傳送報表,郵件內容用的是網頁的格式,所以在出現標籤字元時要考慮轉義。 HTML在處理大於小於號時使”&lt”,”&gt”,

他按照這個方法去做,發現還是不行,沒有顯示大於小於符號,而是出現了一個微分符號“∫”,這個挺怪的。我檢查了一下他的字串,發現大於小於後面連得單詞是“Internal”,而int好像是微分的簡寫,所以是否是最後的字元是“&int”,也就是說字元“lt”不見了。 我懷疑是否是前後字元的問題,所以加了一個空格轉義“&nbsp;”,無意中想起轉義字元最後要用分好結束,所以大於小於應該是“&lt;”、“&gt;”。 他是把這個符號宣告為變數的,我在測試的時候把所有的內容都遮蔽了,直接寫了幾個字元,其中就包含“<”,因為我想用最簡單的方式把轉義是否成功測試出來。 結果傳送後檢查郵件,出現了久違的“>”,通過這一點證明轉義的功能是正確的,那麼下一步我就判斷是否在程式連線所有的字元時出現了一些異常,那麼最好的方面就是逐步除錯,當程式執行到通過判讀得出大於小於符號式,賦值的“&lt;”、“&gt;”變成了一個字元“&”,看了有點難過,原來在宣告大於小於變數時用的是預設的一個字元長度,所以後面的東西都被截掉了,原來問題發生在這裡。ABAP在宣告變數時,如果不指定型別,預設為C型,長度為1.

    在程式設計過程,宣告變數時,系統的便利性帶了了一些意想不到東西,所以程式語言越是便捷,我們越是要小心。

 

 

 

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/554557/viewspace-582300/,如需轉載,請註明出處,否則將追究法律責任。

相關文章