Re: [問題] Parse,TryParse,與字串轉換問題

作者: s4300026 (s4300026)   2018-02-01 10:34:05
原文怒刪~~
我來提供第四點一點想法
程式碼:https://ideone.com/XnMPPo
舉例:
我有一個相機,但是雜訊很多,因此我使用了average的方法做平均
因此我要設定average的值
我要在GUI中text設定值,但是它是string類別,你知道的
因此我需要轉換程某個特定類別
但是這個特定類別會可能不一樣,舉例來說,可以是int, double, float, short...
每次都要做轉換,就要 Int32.Parse(), double.Parse()... 然後程式碼重寫一遍
這樣不是很麻煩嗎?
因此就寫了一個轉換器宣告如下:
Setter<想轉換的型態>
(來源TextBox, 取得目標物被設定後的值, 給予目標物欲設定的值,
報錯關鍵字, 設定後的狀態)
好處是該setter可以用在很多地方,像是:
如果是FPS,就會像
Setter<double>(
sender as TextBox,
new DoublePtrVoid(camera.FPS),
new VoidPtrDouble(camera.FPS),
"Fps",
cameraControlGUI.LabelFpsShow);
如果是拍照後的存檔路徑:
Setter<string>(
sender as TextBox, new
StringPtrVoid(camera.SavePicPath),
new VoidPtrString(camera.SavePicPath),
"SavePath",
cameraControlGUI.LabelSavePathShow);
如果是取像平均:
Setter<int>(
sender as TextBox,
new IntPtrVoid(camera.Average),
new VoidPtrInt(camera.Average),
"Average",
cameraControlGUI.LabelAvgShow);
那你會問:輸入格式不符怎麼辦?
1. 如果是使用者白目,應該給數字的給文字,那就會被轉換器擋下來,然後報錯
2. 如果是硬體限制呢? 像是一秒要拍個1000000000000000張照片?
阿你可以寫在camera.FPS()那個Get/Set方法裡面擋住他,然後報錯
這也是為什麼我會除了有輸入值的delegate方法,還要有輸出值的delegate
因為你不會知道設定有沒有成功啊!!!
3. 為什麼要有text的 "\r\n" ,因為我把他設定成多行,但只有你按下 "換行"
,我的程式才會鳥你,不然一律視為你 "正在輸入",尚未輸入完成。
一點建議,僅供參考
話說上班回屁話,會不會被開除阿 (抖抖抖)
作者: commandoEX (卡曼都)   2018-02-01 19:34:00
現在講泛型感覺太早了吧@ @
作者: aa12783509 (Ace)   2018-02-01 20:27:00
謝謝你~ 你前半段提的概念 我有點可以理解但是後面的程式碼 或許就是要多看 多了解才會清楚了你講的這個 比較像是在影像處理吧!? 之前我大學同學他有做這部分 那時候有聽他大概講 他們就適用C#做的!!
作者: s4300026 (s4300026)   2018-02-02 07:59:00
因為原po在問有沒有更通用的寫法,那就只能走泛型了囧實際上這寫法還牽扯到 不定型委派,和關注點分離。因為泛型的關係,使你的委派指標不能被定下來,這就要多找一個不定型委派的語法,至於為什麼要用委派指標,則與關注點分離有關,因為關注點分離,這寫法還可以用在其他地方,而不僅限於影像處理。
作者: aa12783509 (Ace)   2018-02-02 08:19:00
哈哈哈 了解了 謝謝你 看你提到的 都偏向影像 會問有沒有比較常用的寫法 是因為說 我的觀念是建立在我自己查的資料 所以會有那種 東湊西湊的感覺 不確定正確性 或者是其實大家會其他類似更適合的寫法 不過也是謝謝你喲 感謝

Links booklink

Contact Us: admin [ a t ] ucptt.com