Skip to Content

BCB

如何判斷磁碟機是硬碟、光碟或隨身碟

判斷磁碟的型態,可以知道磁碟機是硬碟、光碟、隨身碟、遠端網路磁碟及記憶體虛擬磁碟。

    AnsiString Drive = "C:";
    AnsiString Type;
    int i = GetDriveType(Drive.c_str());
    switch (i)
    {
        case  0 :
        case  1 :                     // 未知的,不存在的
            Type = "DRIVE_UNKNOWN";
            break;
        case  DRIVE_REMOVABLE  :      // 可移除的裝置,例如 USB 隨身碟,軟碟機
            Type = "DRIVE_REMOVABLE";
            break;
        case  DRIVE_FIXED      :      // 不可移除的裝置,像硬碟
            Type = "DRIVE_FIXED";
            break;
        case  DRIVE_REMOTE     :      // 遠端磁碟,例如網路磁碟機
            Type = "DRIVE_REMOTE";
            break;
        case  DRIVE_CDROM      :      // 光碟機
            Type = "DRIVE_CDROM";
            break;
        case  DRIVE_RAMDISK    :      // 記憶體虛擬磁碟
            Type = "DRIVE_RAMDISK";
            break;
    }
    ShowMessage(Drive + Type);

BCB5 使用 Regular Expression

過去為了工作需要,陸續在 BCB5 加進了支持 Unicode、資料庫的元件,當時還說未來最希望找到支援 Regular Expression (正規表達式,底下簡稱 RE) 的元件。前二天要把一個 perl 的程式移植到 BCB 來,因為該 perl 程式大量使用了 RE ,所以不得不停下工作,開始測試支援 RE 的資料。

這幾年的寫程式經驗中,perl 曾把我帶到另一個領域,最令人激賞的就是 perl 的 hash 及 RE,因為工作中有許多處理文字的問題,這些用 c++ 來寫非常不便,但 perl 的魔力卻讓這些事變的簡單許多,若不考慮圖形介面與效率的程式,perl 幾乎就是我隨手寫程式的工具了。

這幾月又重拾 BCB 寫程式,也開始用 set 及 map 來取代 perl 的 hash(BCB 6 內含的 STLport 已有 hash_set 及 hash_map,應該更好用,BCB5 還要自己去找來安裝),如今 BCB 找到了內嵌式的資料庫,若再加上 RE 的功能,那真是如虎添翼,寫起程式一定是更加得心應手了。

BCB5專業版使用內嵌資料庫 (二)

去年 12 月寫了篇「BCB5 專業版使用內嵌資料庫」,那只是基本研究,讓資料庫可以在 BCB5 Pro 呈現,但諸多細節都沒有深入研究,這二天又研究了一些東西,終於確定資料庫的應用沒有問題了。

資料庫依然是選擇火鳥 (http://www.firebirdsql.org/),並使用其內嵌版的 DLL。如此一來,使用者就不用額外安裝資料庫客戶端程式。

資料庫與 BCB5 Pro 的介面就是 UIB -- Unified Interbase (http://www.progdigy.com/modules.php?name=UIB),它等於是 BCB 控制資料庫的元件。

資料庫的建立與操作可以用 FlameRobin (http://www.flamerobin.org/),這是一個客戶端的程式,可用來建立與操作火鳥的資料庫,我用他來建立資料庫與建立表格。

BCB 處理 7z 壓縮格式

這次要把大正藏與卍續藏全部裝在一片 CD 中是一個蠻大的考驗。由於考慮到某些國家與地區不像台灣有高普及率的 DVD 光碟機,所以使用一般 640 M 的 CDR 是主要的考量,為了這個目的,先前就嘗試把 Zip 的壓縮格式換成 RAR 格式,而且採用緊密壓縮,果然省下許多空間,為此還特別去找支援 RAR 解壓縮的工具,花了一些時間才順利使用。

好景不常,在努力測試下,發現估計的容量是 620M,可是壓片廠老板曾說最好保持在 600M,才能保證資料不會因為太滿而流失,所以為這個原因,同仁又去找了 7z 的壓縮程式來試。

7z 的壓縮率果然更厲害,142 冊的經文壓縮起來硬是比 RAR 少了近 50M,如此一來一片裝光碟的理想就很有可能順利實現,但新的問題就是要改寫程式,又是花了一個下午,才把 7z 的格式搞定。

BCB5專業版使用內嵌資料庫

BCB5 專業版一直是我對外正式使用的寫程式工具,因為它是公司買的正式版,而且只是教育版而已,企業版是貴的嚇人的東西,我實在不敢要老板買,不過雖然如此,專業版大部份的功能已經足夠我使用了。

有時我私下會用用 BCB6 企業版,這個寫起資料庫就輕鬆許多,但也因為沒有版權,只是拿來試用。

最近在寫的程式,一直希望能有資料庫的功能,否則過去土法練鋼的方法太辛苦,效率也不好,再加上一些新增的功能和資料庫的應用有關,因此利用此次程式改版的機會,也開始找相關的資料。

內含 Checkbox 的 TreeView 元件

最近一直在做明年要推出的光碟,而心中也有一些新的功能想加入程式中,會注意到這個功能,主要是因為全文檢索範圍的設計已不敷使用,希望有一個好的方法來處理。

在舊版的設計中,是每一冊提供一個 Checkbox,但在未來大正藏 56 冊及卍續藏 86 冊共142 冊的數量中,舊的格式實在不夠,所以想找一個能清楚呈現層次,可以用快速選擇各種分類的經目,甚至可以細到單經的選擇。單經的選擇是過去所沒有提供的,但這功能卻是許多使用者希望見到的,在思索許久之後,終於想到利用內含 Checkbox 的 TreeView 元件。

當初第一個方案是想到利用 yap 介紹的 Virtual Treeview 這個元件 (http://www.soft-gems.net/VirtualTreeview/),它的畫面蠻美觀的,也支援 Unicode,理當是最佳的選擇,不過試了一下,發覺用法不太習慣,範例也大多是 Delhpi 的,甚至許多參數在 BCB 上與 Delhpi 不同,花了不少時間卻成果有限,想想時間不夠用,實在無法花太多時間研究,只好暫時放棄,下次的正式版再來考慮這個元件。

接著在網路搜尋,找到一個方法可以把原來的 Treeview 元件變成有 Checkbox 的支援,程式很少,這樣就可以了。

  

天啊,還沒支援 Unicode!

在 5/13 交差後,並沒有因此好好休息一陣子,因為在趕專案的同時,許多不重要的常態工作都被暫時累積起來,因此在結案後,雖然工作上沒有那麼大的壓力,但卻也有許多瑣事一一待辦,同事都笑我說總算開始清垃圾了。

今天清的差不多,又開始想下一步的進度是什麼了。其實重點只有二個,一個是經錄專案要持續進行,因為這是一個二年的專案,明年還得有新的成果出來。另一個就是閱藏系統的開發。

閱藏系統的開發有二個重點,一個是功能的加強,一個是開發跨平台程式。

在跨平台方面,目前在想像中有二大方向,一個是學習 Java,一個是利用跨平台的 C# 程式,但這二者何者較好?我也不確定,得花時間再測試了。

至於功能加強上,在去年年底時,我就拿到一套 Borland 的新產品--BDS 2006,那時雖然躍躍欲試,但經錄專案在手中,沒空試新功能,而且二月還得出新版的光碟,我不想在出光碟之前,安裝一些新東西,若系統被破壞了,那就麻煩了。

今天終於有時間玩 BDS 2006,之前就聽說這一版的 VCL 有支援 Unicode,這可是我期待許久的功能,上一版用了不少方法才解決這個難題,我不希望用那麼麻煩的方法了。

安裝好之後,才牛刀小試一番,就發現 Unicode 不能直接用,怎麼回事?

訂閱文章