2007年7月21日 星期六

Working - Jiayu 02

時間:xx:00~xx:00(2007/07/20-07/21)
地點:Home
進度:設計顯示YCbCr整數化DCT係數的介面。

作業:
   ① 顯示介面。


   ② 設計。
     code

執行:run
   ... 已更新(2007.08.09/15:02)

心得:
   DCT係數顯示介面
   寫Histogram之前如果不先完成它的話
   我會一直掛心而很難跳過它繼續前進||b
   而且DCT係數也已確定沒算錯
   (參照學姐的方法)
   於是我就先把時間砸在設計上面

   之前在檢查我算的數與參考程式是否相同時
   由於每次都要重拉一次表格的ScrollBar來檢視我要的值
   就我懶惰的本性來說有點辛苦
   於是我想了個應該會較為方便的介面
   依照滑鼠點擊到的點
   顯示該點在做DCT時所屬Block裡的所有DCT係數值

   在這個方法中遇到的第一個難題是
   實際顯示的ChildForm大小ˋ位置不如我調整的
   屬性中我暫時沒有注意到相關設置
   網路上找了一陣子
   也都沒有提到類似問題
   於是使用暴力解決
   即程式碼中提到的初始ChildForm的大小ˋ位置

   第二個難題是
   OnMouseDown()下使用其它Form的StringGrid時
   顯示錯誤訊息...
   "Access Violation at address 004032EB in Module"
   我測試了另一個物件Image1也出現相同問題
   再改測試放在同一個Form時問題未出現
   上網查過這個訊息的意義
   解釋1:試圖訪問一塊已經釋放的內存
   腦中想到的是那個Form早就生出來了
   (OnMouseDown下有先判斷是否已生出)
   怎麼會是已釋放呢?
   (如果內存是我想像的這樣的話)
   該解決方法是打開CPU依位址找出程式設breakpoint
   我在依位址找出之後
   三四個區域我也沒有breakpoint該設哪一區的概念
   於是放棄||b
   之後便開始亂試
   目前成功的解決方法是
   在OnMouseDown下再新增一次顯示DCT係數的Form
   雖然沒有錯誤訊息
   但Form會一直增加(汗
   所以有時間會努力試其他方法修正

   未來幾天想要顯示Double型態的值
   以及讓使用者決定要顯示的大小
   以及新增顯示全部的功能
   ... 已更新(2007.07.22/17:55)
   不過終於可以心無旁騖地進入正題Histogram
   真的要開始寫了Orz

備註:①目前已知的Bug有:
    ⒜每更新一次DCT係數即產生一個新Form(上文有記載)
    ⒝目前取消顯示視窗未能確實取消顯示
     會盡快尋找到關閉其他Form的正確語法
    ⒞目前程式不提供超過一次的開圖
    ⒟DCT係數視窗最小化時
     不該作用的OnMouseDown事件仍繼續作用
    ... 已修正(2007.08.09/15:02)

   ②本隻程式本次更新項目如下:
    ⒜程式中,XY座標ˋRGB值ˋYCbCr值由原本的
     OnMouseDown顯示修改為OnMouseMove顯示
    ⒝程式中,所有需判斷當下可否執行的部份均做好判斷
     但暫無警告訊息提示使用者
    ... 已修正(2007.07.22/17:55)

   ③顯示視窗的選項是以沒有上述的Bug為前提
    所以目前如果點顯示視窗
    還是會在有視窗的情況下再顯示一個
    ... 已修正(2007.08.09/15:02)

   ④目前不足以形成一個8*8 Block的部分
    其DCT係數目前本隻程式先忽略
    待確定後再修改
    ... 已更新(2007.08.03/14:43)

沒有留言: