2008年12月20日 星期六

無薪假 無心假

12/16 公司連續對全體員工開了兩槍...

1. 取消RD加班津貼..~好大的一槍
2. 無薪假實施 (約等於減薪15-20%)

而且兩封EMail公告發出間隔時間不到半小時~~~
真是重創所有員工~
看來我們應該是手機廠第一個實施這項措施的~唉

福利都沒比人家先 減薪竟然要搶先其他公司...

然後..用"共體時艱"這項字眼告訴大家
如果沒自己請無薪假(公告上美化名稱為"行政假") 公司就直接記曠職(不管你有沒有到公司)
這樣子 可以告嗎???

觀察了公司公告這兩項措施之後 幾乎每位RD都工作的很"無心"~~
希望這景氣不好的低潮趕緊過掉....

2008年12月17日 星期三

[BCB] 資料庫備份/還原程式

最近這套應用程式 加上其資料庫備份及還原的功能

備份還蠻容易做的, 直接將目前的 mdb檔案 複製到某個目錄下即可, 這部分我做成當使用者把form關掉的時候 自動備份

還原我遇到了一些問題, ADOConnection 這個元件, 我執行了 Close()這個函式之後, 資料庫依然被lock住, 最後搞了一個很賤的方法, 寫了另外一隻批次檔 當使用者選好他要還原的資料庫檔案
我會呼叫 這隻批次檔, 批次檔的內容是:
1. 將原本的應用程式關掉(這樣子就沒有資料庫被lock的問題)
2. 自動備份目前的資料庫到某個備份目錄下
3. 將使用者選的資料庫檔案替換掉目前使用的資料庫檔案
4. 重開應用程式

這裡遇到一個問題 怎麼關掉原本呼叫批次檔的這隻應用程式呢?
我找到一個shell指令, tasklist 以及 taskkill
tasklist 是顯示目前電腦中正在執行的程式
taskkill 則是讓他關掉, taskkill /f /im "應用程式名稱"

這樣子就完成了~這其實是無奈的解法(因為資料庫檔案一直被Lock住)

2008年12月15日 星期一

[BCB] 取得目前執行檔所在路徑

在BCB中取得目前執行檔所在路徑很簡單
只要一行 ExtractFilePath(Application->ExeName);

如果要在之後加一個資料夾 只要

AnsiString szExecPath;
AnsiString szBackupFolderPath;

szBackupFolderPath= szExecPath + "BackUpFolder\\";
CreaterDir(szBackupFolderPath.c_str());
這樣子就會在執行檔目錄下建立一個 "BackUpFolder" 的目錄囉

[BCB][WIN32] 檔案處理

這次終於把朋友請我客製化的軟體修改好

其中搞定了連接來電顯示裝置並得到來電號碼且跳至訂購單建立的功能以及自動建立一筆未存在資料庫的新客戶資料, 自動備份功能

而關於自動備份功能 就是當程式開啟以及關閉的時候, 將資料庫檔案拷貝到另外的資料夾而已

以下紀錄一下 我用的Win32API
資料夾建立API: CreateDir(填目錄名稱, ex: "\BKDB");
檔案拷貝API: CopyFile("來源檔名", "目的檔名", (FALSE: 強制覆蓋同檔名檔案, TRUE則否));

還有 在BCB去得到windows msg方法

1. 先於 header file 加入要聽取的號碼
#define WM_USBLINEMSG (WM_USER + 180)

2. 在 class definition的地方加入
void __fastcall RecvDeviceMsg(TMessage& Message);
BEGIN_MESSAGE_MAP
MESSAGE_HANDLER(WM_USBLINEMSG, TMessage, RecvDeviceMsg)
END_MESSAGE_MAP(TForm)
3. 將code implement到 cpp檔裡頭
void __fastcall TfmMain::RecvDeviceMsg(TMessage& Message)
{
int nMsg = LOWORD(Message.WParam);
int dwChannel = HIWORD(Message.WParam);
int intSearchRes=0;

pcMain->ActivePage = tsAddRecord;

switch(nMsg)
{
....
}
TForm::Dispatch(&Message);
}

這樣子就完成啦~

至於載入dll的方式 跟在vc上一樣 都是用 Win32 API, 就 LoadLibrary and FreeLibrary
在此紀錄一下