顯示具有 CxxlMan2 程式庫 標籤的文章。 顯示所有文章
顯示具有 CxxlMan2 程式庫 標籤的文章。 顯示所有文章

2018年5月8日 星期二

猜數字 - ML 多國語言應用範例

這是一個實驗程式,有兩個實驗目標。

  1. 測試 ML 在 主程式 和 插件 是否能各別建立自己的多國語言能力,但兩者間又能互通,因插件可能和主程式在不同時期或不同人所開發,因此能否各別獨立建立自己的多國語言能力,勢必成為必須的目標。但還得讓插件可以隨主程式一起變動,這是可選擇性的,但卻是最常用的選項。這部份的實驗很成功,同時使用 "wxWidgets 的延伸控制件 for ML" 可以即時更動 GUI 的文字語言,結果很令人滿意。
  2. 測試 主程式 和 插件 間的非同步互動,這部份花了最多時間,也很雜亂,應該還有 bug 存在,因有時還是會出槌。因為是非同步處理所以抓 bug 又很麻煩,所以點到就好了,主要還是在 ML 的實驗。事後想想若一開始用圖靈機制規劃好應該會比較容易。
主程式所用的譯文檔置於 Lang 子目錄下,插件所用的譯文檔在 plugin\GuestCore_1_0\Lang,插件還提供機器人用的 密語,純好玩別當真,可用 MLedit 增修更多語言的譯文檔。

2018年5月7日 星期一

MLedit 多國語言編輯器

這是為 ML 插件製作譯文檔的輔助程式,本身所用的譯文檔置於 Lang 子目錄下,觀迎大家幫忙擴增更多語言的譯文。

下載點:

完整檔案包,可直接執行 MLedit.exe

MLedit_0.1.0_complete.7z


精簡檔案包,適用於已安裝 CxxlMan2 開發環境懶人包,執行 "MLedit.exe - 捷徑 "

MLedit_0.1.0_simplify.7z


原始檔案包,適用於已安裝 CxxlMan2 開發環境懶人包,解壓到 C:\MySrc,支援 CMake 建立編譯專案

MLedit_0.1.0_Src.7z






CxxlMan2 開發環境懶人包

這是以 CodeBlocks 為開發環境架構出來的懶人包,包含 CxxlMan2 程式庫和插件、MinGw 5.1 以及  wxWidgets 3.1.1,內含設置說明

CxxlMan2 開發環境懶人包 20180606.7z


以下是 wxWidgets 教程簡體中文譯文:
https://wizardforcel.gitbooks.io/wxwidgets-book/index.html


2018年5月6日 星期日

wxWidgets 的延伸控制件 for ML(多國語言插件)

延伸 wxWidgets 的控制件,達成和 ML 互動
延伸出的控制件的命名為原控制件名稱後多加 Ext,如:wxMenuExt
配合 CodeBlocks 的 wxSmith 的用法以順利取代原控件

目前提供的控制件如以下所列,可依樣畫葫蘆自己增加

2018年1月2日 星期二

Sprintf 簡單風格字串格式化

用於處理字串格式化的小工具,可指定參數在字串中的插入位置。

範例:

stringstream ss;
Sprintf(ss, "我搭{1}去{0}。", "台北", "火車");

{0} = 第一個參數
{1} = 第二個參數
...

若有錯誤回傳 false,表示指定的參數超過提供的數量範圍

下載:
SPRINTF_1_1_4.zip

2018年1月1日 星期一

TlcMultiple 小工具程式原碼

用於處理 CxxlMan2 函數庫 TLC 文件的同名項目的小工具。
最好的處理方式是 匯入->排序->匯出,以人工方式處理標示同名的項目。
除非確定自動刪除同名項目不會有問題,否則請小心使用 MultipleClear() 功能

下載:
TlcMultiple_1_0_0.zip

使用範例:
先安裝好 CxxlMan2 函數庫,以下是使用範例

2017年12月9日 星期六

CMRegSelf 插件註冊輔助

這是一個輔助性的插件,幫忙減輕 cxxlObjectPlugin 插件註冊的繁雜規劃,也減輕應用程式註冊插件的負擔。為此,CxxlMan2 的標準插件 CxxlMan2Plugin 全部修改成全面支援 CMRegSelf。

CMRegSelf 的機制在於讓 CxxlMan2Plugin 插件檔(dll 檔)有自我註冊插件的能力,並提供主程式註冊這些插件檔的功能。同時也提供一個範例,以期能完全瞭解這些運作。

注意!由於不同系列編譯器編碼的差異(比如 vc 與 gcc),不要把它們放置在一起或同一個插件搜尋路徑中,否則註冊處理時會有當掉的危險。所以內定的 CxxlMan2Plugin 資料夾也要有分別,比如分成 C:\CxxlMan2Plugin_vc 和 C:\CxxlMan2Plugin_gcc

下載點:
CMRegSelf_Src_20180113.zip

2017年5月6日 星期六

碎形幾何測試程式




以上影片說的是碎形幾何,若覺得手癢也想試試,以下的程式可幫上一點忙。

程式使用到 CxxlMan2 程式庫,可到 http://blog.cxxl3d.tk/2015/10/cxxlman2-class-lib.html 下載,不過只用到 cxxlcommon\include 內的引入檔,所以不用編譯這個程式庫,只要把 THREADMGR.HPP 所在的完整路徑加到 include path 就可以了。

程式在 Win10 用 vs2015 和 MinGW 6.3 編譯跑過沒有問題,程式只是一個架構,把程式碼整個複製貼上就能用了。

2017年4月30日 星期日

替死鬼模式

cxxlObject 物件須所有持有者放棄才會結束,若有特殊的持有者不會主動放棄,而是要等其他所有持有者放棄之後才會跟者放棄。

這時就有難題了,要怎麼知道其他持有者都放棄了,這時替死鬼就派上用場了,特殊的持有者仍持有該物件,其他持有者則改持有替身,等所有持有者放棄替身後,再由替身去要求特殊的持有者放棄該物件。

2016年9月12日 星期一

選用 OneDrive

在 放棄 Dropbox 文中有提到自動同步會失去備份的意義,有一個解決的辦法,就是把 Dropbox 資料夾的內容再備份一份,但這樣在電腦中就會多了一份,且會面臨可能會不一致的問題

而微軟出品的 OneDrive 有一個方便的功能,可以選擇哪些資料要同步

因而確定中選,但不願意同步的資料夾,在本機上不會留存會自動刪掉,不過仍存放在 OneDrive 請放心

本站上和 CxxlMan2 程式庫相關的檔案已由 Dropbox 轉到 OneDrive,可以下載了

2016年9月11日 星期日

放棄 Dropbox

由於這網站許多檔案放在 Dropbox 免費空間作為分享,但最近不知為什麼檔案的連結功能被鎖了,點選檔案的連結會得到如下的回應畫面

Dropbox 的一個特點是可以自己電腦中的檔案和 Dropbox 儲存的檔案自動同步,看似很方便,但卻失去了備份意義。如果你誤刪了自己電腦中的檔案,Dropbox 儲存的那份也會被刪掉,反過來看誤刪了Dropbox 儲存的檔案也會刪掉自己電腦中的那一份,不管哪一邊被入侵都等於全完了

以上兩點原因決定放棄 Dropbox,不過須要一點時間尋找存放空間,以及修改連結


2016年9月6日 星期二

CMReg 註冊輔助插件

【已放棄此用法,會再上傳新版本,新做法,舊有插件也會更動,敬請期待...】
這是一個輔助性的插件,幫忙減輕 cxxlObjectPlugin 插件註冊的繁雜規劃,也減輕應用程式註冊插件的負擔。

下載點:
CMReg_Src_20160906.zip

2016年8月29日 星期一

網路通訊插件

適用於 CxxlMan2 程式庫的插件,讓程式設計比較容易上手,目前只提供 TCP/IP 協定機制,可跨平台。
內含使用說明及範例,下載點:

CxxlSocket_Src_20160906.zip




2016年8月20日 星期六

cxxlObject 結束時要小心

CxxlMan2 程式庫的核心 cxxlObject 和 Smart_Ptr 保證了兩件事:
  1. cxxlObject 已沒有在被使用時,垃圾處理核心會自動銷毀。
  2. cxxlObject 若還在被使用就不會被銷毀,所以持有者可以放心使用,因至少還有一個持有者還在使用。

2015年10月28日 星期三

Smart_Ptr 的注意事項

Smart_Ptr 對包裹的對象採取隱性轉型的方式,使用有它的方便性,但也有它的危險性,用一個例子來說:

class A:public cxxlObject;
void f(const Smart_Ptr<A> &A_Arg);

A *pA = new A;
f(pA);

Smart_Ptr<A> 的建構子會隱性的接收 pA,而自動產生 Smart_Ptr<A> 實例傳給 f(),若 f() 的實作並未使用 Smart_Ptr<A> 保存,由 f() 返回時就會把 pA 刪掉。解決的辦法就是儘早先將 pA 先放入 Smart_Ptr:

多國語言插件

適用於 CxxlMan2 程式庫的插件,可輕鬆為你開發的程式擁有多國語言的能力。
內含使用說明及範例,下載點:

cxxlMutiLang_Src_20180202.zip (支援 CMRegSelf)



2015年10月10日 星期六

CxxlMan 程式庫 停止維護

因已發佈 CxxlMan2 程式庫,即日起不再對 CxxlMan 程式庫 進行更新和修改


CxxlMan2 程式庫 開放下載

這函數庫能讓 C++ 擁有垃圾回收的能力,並提供相關的配套支援,以 C++11 的標準編寫,可以很容易跨平台。

以源碼的形式發佈,允許任何方式的應用,包括用於開發商用軟體,但不淮增、刪、改,以維持標準的一致性,有發現錯誤或建議,請留言,謝謝!!

下載點:

CxxlMan2_Src_r199.zip
  1. 為 UTF8_String 提供 Compare() 比較函數,UTF8_String 也可以處理 NULL 資料源的包裹
  2. 更改 cxxlList 的 Sort() 及 For_each() 的參數用法
  3. cxxlComposite 的 Export() 參數改用 std::function
  4. 將處理比較的 virtual cxxlAVL_Tree::Comp() 改成採用 std::function 的方式,並提供一個 GetComp() 成員函數
  5. cxxlAVL_Tree::cxxlList_Create() 增加一個 std::function 的參數作為過瀘用,原先的 cxxlList_CreateFilter() 虛擬函數已移除
  6. 將 Delegate<T> 和 Delegate2<T> 的 struct DelegateErr_NoBind 移出,放在 DELEGATE.HPP
  7. 因使用方法做了一些修改,和舊版有些不相容
  8. 增加一個 FixSlash() 函數
CxxlMan2_Src_r179.zip
  1. 重新調整永續儲存處理程式碼架構,配合 介面繼承+組合代替繼承,ref() 可不必在呼叫父類別的 ref()
  2. UTF8_String 建構函數增加  const char 單一字元參數
  3. 永續儲存修正對 UTF8_String 處理的 bug
CxxlMan2_Src_r174.zip
增加一個 BM_SEARCH.HPP
CxxlMan2_Src_r168.zip 優化 THREADMGR.HPP
修改 Delegate 和 Delegate2 的 IBind::Function() 宣告的 bug
ThreadLimit 和 ThreadPool 增加 Clear() 清除尚未處理的任務
修改一些小 bug 能通過 MinGW 編譯
CxxlMan2_Src_r162.zip
  1. 修改 Semaphore 建構函數多了一個 ThreadMaxNum 參數,並內定參數值為 {0,0}
  2. 增加 THREADMGR.HPP
  3. 修改 cxxlAVL_Tree<>::Comp() 不再為純虛擬函數,所以可不繼承直接使用
  4. 修改多處的 bug
CxxlMan2_Src_r160.zip 修改核心中的 _YanLuoWang 建構方式為 &_YanLuoWang = *new YanLuoWang,原本為變數形態,應用程式結束時,有時會出現 mutex 還在 busy 的例外錯誤,更改後 _YanLuoWang 沒有解構的機會
CxxlMan2_Src_r159.zip 增加一個 EventSender 元件,以及修改一些 bug
CxxlMan2_Src_r157.zip
  1. 為 cxxlAVL_Tree 增加 GetKeyList()
  2. 把 cxxlList_t::PT_PS_TYPE 獨立出來,比較方便使用
  3. 為 Semaphore 增加一個多載函數 Semaphore<F>::Wait(F WaitEvent),進入等待,會先呼叫 WaitEvent()
  4. 為垃圾處理核心增加一個函數 Wait_cxxlObjectDeathQueue_Emptied()
CxxlMan2_Src_r152.zip
Carry_TLC 及 Carry_MDC 的 GroupReplace,修改其 Key 為 GroupReplace_Key
CxxlMan2_Src_r151.zip
  1. Carry_TLC 及 Carry_MDC 增加 GroupReplace 選項
  2. ElementRegDelegate 增加 Import()
  3. SaveFilter 及 LoadFilter 增加 Stream()
CxxlMan2_Src_r141.zip 主要在修改 CMakeLists.txt、版本選擇... 以適應 linux
CxxlMan2_Src_r137.zip 增加 cxxlCM_GetFullDllName() CM 的轉助函數、ICM::Get_ElementRegDelegate(),修改一些 bug
CxxlMan2_Src_r129.zip 修改以下這些智能指標的組成方式,提升執行效率:
Smart_Ptr、UTF8_String、PSmart_Ptr、PSmart_Set、P2Smart_Ptr 、P2Smart_Set
CxxlMan2_Src_r127.zip


參考手冊下載:
CxxlMan2_Help_20180713.zip

另外在 Linux 須用到 uuid 函數庫,若不存在須安裝套件,比如在 Ubuntu 用以下命令安裝:
sudo apt-get install uuid-dev