HOME | プログラミングTClock |


バージョンチェック

TClock Light(031107以降)では、次のようにtcdll.tclockとtclang*.txtのバージョンをチェックをしています。

バージョン文字列

common/common.h の冒頭には、次のような文字列の定義があります。tcdll.tclockに大きな変更を加えた場合や、プロパティー画面を変更した場合は、この文字列を書き換えます。自分でTClock LightをベースにしたTClockを作るときは、"TClock Taro ver.1.0" のようにするといいでしょう。

#define TCLOCKVERSION "TClock Light 031107"

DLLのバージョンチェック

dll/main.cには、次のようなAPI関数GetTClockVersionを用意しています。

void WINAPI GetTClockVersion(char* dst)
{
    if(dst) strcpy(dst, TCLOCKVERSION);
}

exe/main2.cでは、このAPIを使ってDLLのバージョンを照合します。

BOOL CheckTCDLL(void)
{
    char str[80];
    GetTClockVersion(str);
    if(strcmp(str, TCLOCKVERSION) != 0)
    {
        MessageBox(NULL, "Invalid file version: tcdll.tclock",
            "Error", MB_OK|MB_ICONEXCLAMATION);
        return FALSE;
    }
    return TRUE;
}

tclang*.txtのバージョンチェック

tclang*.txtの [Main] セクションでは、Version= にcommon/common.hに記述したのと同じ文字列を書いておきます。

[Main]
DialogFont=MS Pゴシック,9
Version=TClock Light 031107

common/tclang.cには、tclang*.txtのバージョンを管理する関数CheckTCLangVersionがあります。この関数は、property/main.c のOnInitDialogから呼ばれます。

void CheckTCLangVersion(void)
{
    char buf[80];
    
    if(GetPrivateProfileString("Main", "Version", "", buf,
        80, g_langfile) > 0)
    {
        if(strcmp(buf, TCLOCKVERSION) == 0) return;
    }
    g_langfile[0] = 0;
}