2012年9月27日 星期四

[VB6] 讓VB6能夠使用滑鼠滾輪的方法

最近工作一直在使用VB6,有個地方讓我覺得快抓狂了,
就是它在看程式碼的時候居然沒有辦法使用滑鼠滾輪,
於是,在用了一、二個禮拜之後我終於受不了啦!
心裡想說Google看看有沒有人有跟我一樣的困擾,
沒想到,原來受害人不只我一人呀!

現在就來分享一下該怎麼讓VB6裡的滑鼠滾輪產生作用吧!

Step 1:首先按此下載Wheel.exe(載點是Microsoft的連結),然後先將它解壓縮。

Step 2:「開始」→「執行」→輸入「regsrv32 <解壓檔案路徑>\VB6IDEMouseWheelAddin.dll」→按確定
註:如果跟我一樣會出現「…失敗,找不到指定的模組」的,我最後是將 VB6IDEMouseWheelAddin.dll 檔案複製放到「C:\WINDOWS\system32」底下去執行就可以了!

Step 3:再來開啟你的Visual Basic 6.0,在上方的工具列上選擇「增益集」→「增益功能管理員」→在增益功能管理員中選擇「MouseWheel Fix」後把「載入/載出」、「在啟動時載入」這兩項打勾

如此一來,在VB6中你也可以用你的滾輪,看你愛移到哪就移到哪囉!

2012年9月26日 星期三

[C#]為自定義的函式加上說明

這幾天一直嘗試著寫寫C#,想到什麼功能就試著去用程式把它寫出來,
但是每次寫函式等到要用的時候有時候會忘記每個參數代表的意義,
在VS裡面本身所提供的函式在使用時都會有說明出現,
於是乎,我就開始Google一下如果是自定的函式有沒有辦法加上說明,
花了幾分鐘就找到啦!只要在函式上方加上以下幾行說明即可:

/// <summary>函式說明</summary>
/// <param name="參數名1">參數說明</param>
/// <param name="參數名2">參數說明 </param>


不知道在VB.NET中是不是也是像這樣的方式?
P.S.參數如果有多個就多幾行 /// <param name="參數名">參數說明 </param> 就可以囉!

2012年9月20日 星期四

[C#]統一編號驗證 Uniform No. Validator

碼數01234567
統一編號00238778
運算x1x2x1x2x1x2x4x1
新值10026814288每個值的十位數與個位數加總直到只剩個位數
新值2002685108
新值30+0+2+6+8+5+1+8=30每個數值加總後可整除10即代表統編正確

protected bool CheckUniformNo(string strCardno)
{
    if (strCardno.Trim().Length < 8)
    {
        return false;
    }
    else
    {
        int[] intTmpVal = new int[6];
        int intTmpSum = 0;
        for (int i = 0; i < 6; i++)
        {
            //位置在奇數位置的*2,偶數位置*1,位置計算從0開始
            if (i % 2 == 1)
                intTmpVal[i] = overTen(int.Parse(strCardno[i].ToString()) * 2);
            else
                intTmpVal[i] = overTen(int.Parse(strCardno[i].ToString()));

            intTmpSum += intTmpVal[i];
        }
        intTmpSum += overTen(int.Parse(strCardno[6].ToString()) * 4); //第6碼*4
        intTmpSum += overTen(int.Parse(strCardno[7].ToString())); //第7碼*1

        if (intTmpSum % 10 != 0) //除以10後餘0表示正確,反之則錯誤
            return false;
    }
    return true;
}
private int overTen(int intVal) //超過10則十位數與個位數相加,直到相加後小於10
{
    if (intVal >= 10)
        intVal = overTen((intVal / 10) + (intVal % 10));
    return intVal;
}

2012年9月19日 星期三

[C#] 驗證信用卡卡號 Credit Card No. Validator

碼數0123456789101112131415
信用卡卡號3456789012345675
運算x2x1x2x1x2x1x2x1x2x1x2x1x2x1x2x1
新值1641061481802264106145
=>把每個[新值1]的個位數與十位數加總,產生[新值2]
新值26+4+1+6+5+8+9+0+2+2+6+4+1+6+5+5=70=>加總每個[新值2]後若可整除10即代表卡號正確

protected bool CheckCreditCardNo(string strCardno)
{
    if (strCardno.Trim().Length < 16)
    {
        return false;
    }
    else
    {
        int[] intTmpVal = new int[16];
        int intTmpSum = 0;
        for (int i = 0; i < 16; i++)
        {
            //位置在奇數位置的*1,偶數位置*2,位置計算從0開始
            if (i % 2 == 1)
                intTmpVal[i] = int.Parse(strCardno[i].ToString());
            else
                intTmpVal[i] = int.Parse(strCardno[i].ToString()) * 2;

            //以上處理後若結果大於10的將其個位數+十位數
            if (intTmpVal[i] >= 10)
                intTmpVal[i] = (intTmpVal[i] / 10) + (intTmpVal[i] % 10);

            //將所得的所有結果加總
            intTmpSum += intTmpVal[i];
        }
        if (intTmpSum % 10 != 0) //除以10後餘0表示正確,反之則錯誤
            return false;
    }
    return true;
}

2012年9月16日 星期日

[VB6]Excel使用

1. 開啟Excel檔案
Dim xlsBook As Excel.Workbook
'開啟Excel檔案
Set xlsBook = Workbooks.Open(".xls檔案位置")

2. 取得Excel第一個Sheet名稱
Dim sheetName As String
sheetName = xlsBook.Sheets(1).Name '取得Excel第一個活頁簿的名稱
Set xlsSheet = xlsBook.Worksheets(sheetName)

2012年9月12日 星期三

[C#]日期驗證 Date Validator

1.日期驗證(for 西元年)
public static bool IsDate(string anyString)
{
    if (anyString.Length != 8) //這是在沒有任何符號(/.-)的狀況下
        return false;
    else
    {
        //在沒有符號的狀況下補上日期分隔符號
        anyString = anyString.Substring(0, 4) + "/" + anyString.Substring(4, 2) + "/" + anyString.Substring(6, 2);
        //====以上若已經有在輸入時即限制輸入格式可不需要====
        try
        {
            DateTime dt;
            dt = DateTime.Parse(anyString);
            return true;
        }
        catch
        {
            return false;
        }
    }
}
註:如果是要判斷民國年就將原本的民國年轉為數值後加上19110000再判斷即可

2.日期區間判斷
DateTime t1 = (DateTime.Parse((int.Parse(d1.Text.Substring(0, d1.Text.Length - 4)) + 1911) + "-" + d1.Text.Substring(d1.Text.Length - 4, 2) + "-" + d1.Text.Substring(d1.Text.Length - 2, 2)));
DateTime t2 = (DateTime.Parse((int.Parse(d2.Text.Substring(0, d2.Text.Length - 4)) + 1911) + "-" + d2.Text.Substring(d2.Text.Length - 4, 2) + "-" + d2.Text.Substring(d2.Text.Length - 2, 2)));

TimeSpan ts = t2 - t1;

//驗證日期區間起始輸入是否正確,後面日期不可小於前面日期
if (ts.Days < 0)
{
    MessageBox.Show("ERROR:請輸入正確日期區間,查詢起始日期必須小於結束日期");
    return false;
}

//天數限制
if (ts.Days >= 31)
{
    messageShow.Text = "ERROR:日期區間最多不可超過31日";
    return false;
}
else
{
    return true;
}

2012年9月11日 星期二

[C#] 資料夾/檔案是否存在與建立資料夾

1. 判斷資料夾是否存在,並新增資料夾
using System.IO;
if (Directory.Exists(資料夾路徑))
{
    //資料夾存在
}
else
{
    //新增資料夾
    Directory.CreateDirectory(@"D:\temp\");
}


2. 判斷檔案是否存在

using System.IO;

if (File.Exists(檔案路徑))
{
    //檔案存在
}


注意:
路徑前必須加上@,如:@"D:\temp\"
否則會出現「無法辨認的逸出序列」的錯誤