PIXNET Logo登入

程式狂想曲

跳到主文

這裡是程式的筆記,與對未來的狂想 分享,是學習的開始~

部落格全站分類:數位生活

  • 相簿
  • 部落格
  • 留言
  • 名片
  • 10月 25 週二 201121:16
  • 爆笑...對 Sirri 唱情歌

http://it.oc.com.tw/ocitview.asp?gitid=1908482
爆笑...對 Sirri 唱情歌,尤其是後半段 一直Stop Stop 哈哈
不過,很直德懷疑,Apple 的下個目標並不是甚麼蘋果電視
應該是 人工 AI .......全世界的蘋果手機使用者在幫蘋果培養 人工AI 
(繼續閱讀...)
文章標籤

Rh 發表在 痞客邦 留言(0) 人氣(22)

  • 個人分類:程式狂想
▲top
  • 10月 23 週日 201122:20
  • 自定義物件 List.Sort()

在 List 中  有 sort 的功能
但如果裡面的資料不是 數字型態,要他們作 sort()  往往會作出不符合需求的排序
甚至作不出來(自定義的 class 要繼承  IComparable  但這是一件很麻煩的事)
並不是每一個 class 都要發展成 完美或者一個很龐大的物件
這時  可以透過直接在 sort 中寫入簡短的程式碼  來省略這個步驟
首先 讓我們來建立一個  Class
public Class cObj
    public mNum as integer
    public mNmae as string
    public mDate as new DateTimr
end Class
再來  讓我們自行建立一個以這個 class 為 T 的 List
Dim  newList as new list(of cObj)
再來 請自行 產生 數個    加入 newList 中
Dim new1 as new cObj
new1.mNum = 99
new1.mName = "new1"
new1.mDate = now
Dim new2 as new cObj
new1.mNum = 10
new1.mName = "new2"
new1.mDate = now
newList.add(new1)
newList.add(new2)
....... (省略....請自行建立數個資料 然後加入  newList)
再來 讓我們對 mNum 作排序
newList.sort( Function(item1 As cObj, item2 As cObj) item1.mNum.CompareTo(item2.mNum))
我們使用 mNum 這個基本資料型態(Integer)  中定義好的  CompareTo() 來作資料排序
如此  就可以順利對自定義的 List 作想要的排序
'================================================================================================
(繼續閱讀...)
文章標籤

Rh 發表在 痞客邦 留言(0) 人氣(1,069)

  • 個人分類:C#.NET and VB.NET
▲top
  • 10月 23 週日 201114:58
  • 檢查 及 呼叫 外部程式(process)

首先  Import System.Diagnostics
在來讓我們來檢查 目前 正在執行的程式中是否有我們要的程式
此時有兩種檢查方式
1. 將所有的 Process 讀出 再來檢察
Dim pro() As Process = System.Diagnostics.Process..GetProcesses()
2. 直接輸入要找尋的 程式名稱
Dim pro() As Process = System.Diagnostics.Process.GetProcessesByName("ReviewMap")
當然  最快的方式是第二種,將已知的 程式名找出後輸入
要將找出的程式關閉
For Each proces in Pro
    proces.kill()
end For
如此,Windows 中 就沒有同樣的程式在執行了
再來,我們開始準備要呼叫的程式
            Dim newPro As New Process
            newPro .StartInfo.FileName = "C:\DeltaPsi2\DeltaPsi2.exe"            '要呼叫程式的路徑
            newPro .StartInfo.Arguments = "/OEM:HIROSE"                                '呼叫時需要輸入的  參數
            newPro .Start()
            newPro .StartInfo.WindowStyle = ProcessWindowStyle.Hidden        '將執行的程式的視窗  隱藏 對Console 的比較有作用
            
            newPro.start()                                                                                   '程式開始執行
(繼續閱讀...)
文章標籤

Rh 發表在 痞客邦 留言(0) 人氣(2,740)

  • 個人分類:C#.NET and VB.NET
▲top
  • 10月 13 週四 201123:07
  • Interface 與 DLL 動態聯結運用

運用 interface 與 DLL 動態聯結的運用  最大的好處是  當DLL 更新的時候  整個程式不需要重新編譯就可以直接使用
這用在 DLL 更新時是一個很方便的地方
但有個先決條件,  Interface 必須先定義好,因為如果後續要增加 任何的  sub Function 也是一樣必須重新編譯

Interface
首先建立一個 專案(類別庫)    進到程式碼編輯模式,將 Class 改成  Interface
在 Interface 中可以先預定好 要使用的  sub Function Event 甚至 Class
(再來到專案屬性設定   將  根命名空間 改成  nThickness  此部分可以不改在後面導入時只要清楚是哪個 Namespace 就可以)
Public Interface iThickness
    Sub Measure(ByVal Model As String)                                              '呼叫量測功能
    Sub Result()                                                                                   '取得上一次量側的結果
    Event ReportStateEvent(ByVal sander As Object, ByVal e As EventArgs)            '事件  回報目前狀態
    Event ReportModelListEvent(ByVal sander As Object, ByVal e As EventArgs)        '事件  啟動回報取得的 Model
    ''' <summary>
    ''' 膜厚的值
    ''' </summary>
    ''' <remarks></remarks>
    Class cThickness
        Public MeasoureList As New List(Of String)      '量測的值
        Public ParameterList As New List(Of String)     '量測的參數名稱
    End Class
End InterFace
Class
建立 要由 Interface 來導入的 Class, 在 方案中直接新增一個 類別庫 專案
再來參考  直接參考剛剛建立 Interface 的專案( 測試中 參考專案就可以,但正式使用  最好是將 Interface 的專案編譯成 DLL,在這參考這DLL)
在Class 中繼承上面的 Interface
當繼承後會自動把 Interface 定義好的  Sub Function  Event 都自懂導入,省去自行Key程式的時間,當然 裡面的程式碼都是空的
(如果可以有自行產生要的程式碼  多好........................)
Imports nThickness
Public Class cHoribaSE
    Implements nThickness.iThickness
     (省略)...............................
End Class
Process
再來 就是重頭戲了,首先在要當主程式參考 Interface 的專案或Dll
一樣在程式碼 Import 專案
        Dim HoribaSE  As nThickness.iThickness                                                                                                                                       '在這邊宣告一個 Interface   準備拿來作連接使用
        Dim asmFile As String = Application.StartupPath + "\Resources\cHoribaSE.dll"                                                                            '要導入Dll 的路徑
        Dim asm As System.Reflection.Assembly = System.Reflection.Assembly.LoadFrom(asmFile)                                                        '要來導入的 DLL 的工具 與程式寫法
        Try
            HoribaSE = DirectCast(System.Activator.CreateInstance(asm.GetType("cHoribaSE.cHoribaSE")), nThickness.iThickness)
            AddHandler HoribaSE.ReportStateEvent, AddressOf GetSEMessage                   '取得 SE 回報
            AddHandler HoribaSE.ReportModelListEvent, AddressOf GetNewSERecipe        '取得 SE Model
         
        Catch ex As Exception
            Msgbox("無法連線 SE Server", ex.ToString)
        End Try
重點就在上面Mark 起來的這一行
後面 GetType 這個部分
"cHoribaSE.cHoribaSE"     <--  代表  Namespace.Class     就是上面建立的Class 的  根命名空間.Class
nThickness.iThickness   <--  代表  Namespace.Class      也就是上面一開始建立的 Interface 專案的  Namespace.Class
如此  就可以在主程式開始使用  動態導入的物件  
(繼續閱讀...)
文章標籤

Rh 發表在 痞客邦 留言(0) 人氣(1,124)

  • 個人分類:C#.NET and VB.NET
▲top
  • 10月 13 週四 201123:06
  • XML 與 Linq (二) 將查詢的資料存入自訂一物件,加快查詢後的資料運用

Linq 與 XML 是一個很好的搭配
但在某些情況之下,會照成效能的浪費,這種特定情況就是當查詢的時後原先XML檔案很大( >10MB)
然後在使用Linq 時 用的又是隱涵數查詢(沒有宣告物件)
例
Dim queray = from abc in xDoc.Root.Elements("RcpList")
                               select abc.Element("RecipeName")
這樣看起來沒有任何問題,在使用上也沒有任何問題
但問題就發生在使用 queay 的上面
設個中斷點,在查詢之後,然後把滑鼠移動到 queay 上面,會顯示 記憶體查詢
假設我們查詢出來的結果有十筆,當我們要從query裡面把資料取出時
事實上,每取出一次的動作,就是再做一次查詢
十筆資料都拿出來,那就是查詢十次
加上第一次的查詢,一共做了 11次
當原先的資料很大時( >10MB or 5000筆以上的資料  就會很明顯)
這時,查詢時就不能用 隱涵數的方式查詢,在一開始就必須宣告物件
當查詢出來的資料一樣是 XML 格式時,就比較簡單
將最外圍的 XML  標籤框起來就可以了
 Dim SelectData As XElement = <GlassIDList></GlassIDList>
 SelectData = <GlassIDList>
                                 <%= From abc In XquaryGlassIDList.Elements("GlassList") _
                                     Where abc.Elements("OKNG").Value = "NG" _
                                     Select abc _
                                 %>
                             </GlassIDList>
查詢出來的資料是自定議的物件時,就需要自行指定查詢出來的資料位置
自訂議的物件
 Public Structure Keith_Type
        Public MeaDevice As Integer
        Public MeaMode As Integer
        Public inputParameter As Double
 End Structure
 Dim query As Keith_Type() = From RcpList In xDoc.Elements("_strKeith") _
                                                Select New With {.MeaDevice = System.Convert.ToInt32(RcpList.Element("MeaDevice ")), _
                                                .MeaMode = System.Convert.ToInt32(RcpList.Element("MeaMode ")), _
                                                .inputParameter = System.Convert.ToDouble(RcpList.Element("inputParameter "))) _
                                                }
 
如範例,就可以把查詢出來的資料存到自定議的物件  
(繼續閱讀...)
文章標籤

Rh 發表在 痞客邦 留言(0) 人氣(139)

  • 個人分類:C#.NET and VB.NET
▲top
  • 10月 13 週四 201123:04
  • For Each 與 GetType.Fields 運用

在 .Net 的環境下,所有的 Class (類)  都延伸自  Syatem.Object
而在 Object 下有些基本 Function
其中  GetType 是一個非常豐富的 資料集合,透過 GetType 可以 取出物件中非常多 的資料
由其是當自建 Class 時,可以由其中取得  Fields 的資料
Class cABC
    public aaa as string = ""                        'string的初始宣告是 string.Empty  必須先填個空字串   不然取getFields 時會告知未宣告
    public bbb as integer
    public ddd as double
end class
getType 中的 GetValue 和  setValue 是今天的主角
Dim test as new cABC
'以下逐一將 宣告成 cABC 的 test 中的 Field 一個一個取出
For Each field in test.getType.Fields
      dim A = field.getValue()
      msgbox(A.tostring)
end For
'在來是把值填進去    填進去就比較麻煩 因為三個的資料型態都不一樣
'實際在運用時  有多做一個  資料型態判別Function
'setValue 需要原先物件的配合    field.setValue(test,      要填入的値           )
For Each field in test.getType.GetFields
      select case field.FieldsName
            case "String"
                    field.setValue(test , "100")
            case "Integer"
                    field.setValue(test, 100)
            case "Double"
                    field.setValue(test,100.0)
      end select
end for
以上  用在 SE 的資料傳輸  物件化的基本................................
(繼續閱讀...)
文章標籤

Rh 發表在 痞客邦 留言(0) 人氣(263)

  • 個人分類:C#.NET and VB.NET
▲top
  • 6月 19 週日 201122:34
  • 委派其實很簡單(二)---跨執行緒

在第一篇 委派其實很簡單(一)介紹了委派的基本應用
相信很多人也聽過  跨執行緒時,需要用委派來處理,由其針對會改變Form表單上得資料時,更是必要
 
首先讓我們來做些小小的改變
(繼續閱讀...)
文章標籤

Rh 發表在 痞客邦 留言(2) 人氣(6,510)

  • 個人分類:C#.NET and VB.NET
▲top
  • 6月 15 週三 201109:04
  • 委派其實很簡單(一)

委派  說難不難,了解之後  使用就跟喝開水一樣,裝水 之後就喝水了
整個的動做可以分成兩個大部分,每個部分可以再分成兩個
大的可以分成  電台  與 收音機  兩者發送與接收在同一頻道的時候  收音機就可以撥放出電台傳送的音樂
電台可以細分為  發設機 與 發設天線
(繼續閱讀...)
文章標籤

Rh 發表在 痞客邦 留言(1) 人氣(1,831)

  • 個人分類:C#.NET and VB.NET
▲top
  • 5月 25 週三 201123:33
  • List 資料的查詢 用 Find 方法

網路上有許多篇相關的資料   但美中不足的都是 C#的文章
今天剛好遇到新的課題,發現用List.Find 剛好符合,可以來試試
在Framwork 下 泛型是一個相當好用方式,今天就來結合 泛型 與 List.Find 的結合
首先  讓我們創建 要做泛型的結構
Structure OriginInfo
    public Name as string
    public Org as pointf
End Structure
Dim OrgList as new List<of Origininfo>
Dim a1 as Origininfo
Dim a2 as Origininfo
Dim a3 as Origininfo
a1.Name = "AAA"
a1.Org = new PointF(100,100)
a2.Name = "BBB"
a2.Org = new PointF(100,100)
a3.Name = "CCC"
a3.Org = new PointF(100,100)
OrgList.ADD(a1)
OrgList.ADD(a2)
OrgList.ADD(a3)
資料建好後  再來就可以開始做搜尋的動做
(ps 在網路上有看到建議可以用Linq 的方式做查詢,其實也不是不行,但在使用上比較不方便,等會就可以看到,我們需要的是其中的特定資料
Linq 查詢出來的是一組資料,而且無法一開始就指定資料型態
特別需要注意,List.Find 是找出資料中符合的第一筆資料,如果裡面有2個以上資料相符, 而且都需要 ,就不適合用 Find 方法
或許是我這邊學的不好,有好的做法請多多提供)
Dim query as string = "BBB"
Dim result as Origininfo = OrgList.Find( Function( o as Origininfo) o.Name = query)
ok 就如此簡單,就能在 List 結構 找出所需要的資料
(繼續閱讀...)
文章標籤

Rh 發表在 痞客邦 留言(2) 人氣(2,852)

  • 個人分類:C#.NET and VB.NET
▲top
  • 5月 22 週日 201114:57
  • 雲端 雲端 飛上雲端 ??

這兩三年來  雲端是IT 業一個很火的話題
大廠在推雲端,小廠也在推雲端。每樣東西都要跟雲端扯上點關係
大從Google的作業系統,小到一些文件編輯軟體
IT 界只要不跟雲端扯上關係,好像就要被淘汰,落伍了。
(繼續閱讀...)
文章標籤

Rh 發表在 痞客邦 留言(0) 人氣(63)

  • 個人分類:程式狂想
▲top
«1...67811»

個人資訊

Rh
暱稱:
Rh
分類:
數位生活
好友:
累積中
地區:

參觀人氣

  • 本日人氣:
  • 累積人氣:

程式碼

熱門文章

  • (27,570)Form Show 與 ShowDialog 的比較
  • (6,510)委派其實很簡單(二)---跨執行緒
  • (6,189)XML 與 Linq 的結合一 之Xelement
  • (3,526)With 與 美化DataGridView
  • (2,852)List 資料的查詢 用 Find 方法
  • (1,124)Interface 與 DLL 動態聯結運用
  • (1,085)修改 Form表單上的物件的形狀
  • (1,069)自定義物件 List.Sort()
  • (914)Garbage Collector
  • (837)VB6 MSHFlexGrid 匯出到 Excel

文章分類

  • SQL (1)
  • Halcon (5)
  • 電腦應用 (3)
  • 影像處理 (3)
  • 影像處理 (7)
  • VC++ (1)
  • 生活狂想 (5)
  • C#.NET and VB.NET (51)
  • GDI+ (11)
  • Jsp Servlet 專題 (1)
  • Excel (1)
  • 程式狂想 (5)
  • 未分類文章 (1)

最新文章

  • MIT Yolo V9 rd 使用:三、強化訓練參數設定
  • MIT Yolo V9 rd 使用:二、影像訓練
  • MIT Yolo V9 rd 使用:一、 Anaconda 環境設定
  • Windows 11 (Win11) 設置 Visual studio 默認以管理者權限啟用
  • WIFI DHCP 的DNS異常
  • VMware 無法使用鍵盤處裡
  • 七夕求人緣桃花
  • 台灣房價開始起跌 (青壯年人口與結婚人數會影響買房的需求) II
  • Halcon 形狀物件特性
  • 多點手眼標定

最新留言

  • [25/09/12] 一柱擎天 於文章「MIT Yolo V9 rd 使用:三、...」留言:
    大男人 https://www.tw9g.com/go...
  • [21/10/27] 訪客 於文章「Bitmap 進階繪圖(一) 可移動 改...」留言:
    謝謝 受益良多...
  • [18/06/21] n622689 於文章「Halcon 形狀物件特性...」留言:
    p0hO奢侈品仿牌,保固說到做到,誠信經營,,官網秋冬同步設...
  • [17/07/23] Roy Chang 於文章「Halcon 3D (一) 相機校正...」留言:
    您好,想請問如果是使用 羅技 Webcam C920r HD...
  • [16/10/19] Ting 於文章「Bitmap 進階繪圖(二) 可移動...」留言:
    佛心來著,受益良多...
  • [16/02/23] Liu Cheng-Kun 於文章「Backgroundworker...」留言:
    你好,請叫一下,我按照你的方法,將myobj宣告完, 結果...
  • [15/02/17] Ken 於文章「由記憶體取圖...」留言:
    您好,想跟您請教如何存圖(format16bppGraySc...
  • [14/10/28] ktbs6088 於文章「如何雙開 VM 還可以很順暢...」留言:
    ﹍字§幕♀機﹉製造﹂商○tinyurl.com/mfmg8...
  • [13/09/10] 訪客 於文章「委派其實很簡單(一)...」留言:
    您好 ~ 謝謝您的分享 有個問題跟你請教一下 直接寫這樣...
  • [13/03/03] Rh 於文章「Bitmap 進階繪圖(二) 可移動...」留言:
    圓形是 Circle 方形請用 Rectangle...

文章搜尋