2008年7月25日 星期五

VS2005為什麼沒有ASP .Net Web應用程式專案可選

在這個月中旬到新竹總公司報到時 ,公司就發了一台新的ASUS W7 Notebook給我,所以這次報表開發的工作就是在新的NB上作的。

昨天把報表程式改成C#版寄出去後我就下班了,我老闆Call我說,專案的窗口發mail問怎麼沒看到.designer.cs的檔案,這個問題我遇過,知道好像是Web應用程式才會有*.designer.*的檔案,可是我在我的VS2005中要新建專案都沒看到Web應用程式的專案類型可選,所以就先回mail說我的程式裡沒有這些檔案。

早上專案的窗口回mail說是website專案不會有*.designer.cs的檔案,他已經檔案轉成WebApplication就OK了。

所以我又去拜Google大神了,原來是我週一才灌的VS2005還沒上Service Pack,上了SP1,ASP .Net Web應用程式專案範本就出現囉!

C#如何轉換VB.NET的ReDim Preserve

之前一直是用VB.NET作開發,最近換公司老闆的第一個交付的任務就是叫我寫報表,寫好後交出去,專案經理才說要用C#...

那就只好改囉!自己改嗎?我C#又不熟,當然是用工具。下面這個網站可以提供VB.NET和C#程式碼雙向轉換。http://labs.developerfusion.co.uk/convert/vb-to-csharp.aspx

前幾支報表轉的還都順利,只有在取出DataTable內資料時要手動改一下,如:
dtResult.Rows(i).("Item") 要改成 dtResult.Rows[i]["Item"]
但是轉到後面幾支比較複雜的報表,要計算表格的RowSpan,我的程式中有用到ReDim的地方就出現訊息
    // ERROR: Not supported in C#: ReDimStatement

所以就參考網路資料寫了一個Function ReDim:
參考網址:http://www.cnblogs.com/skyiv/archive/2005/09/19/ReDim.html
static int[] ReDim(int[] array, int newLength)
{
    if (array == null)
    {
        throw new ArgumentNullException("array");
    }
    if (array.Rank != 1)
    {
        throw new ArgumentException("只允許一維陣列", "array");
    }
    if (newLength < 0)
    {
        throw new ArgumentOutOfRangeException("newLength", "newLength需大於0");
    }
    if (newLength == array.Length) return array;

    int[] newArray = new int[newLength];
    Array.Copy(array, 0, newArray, 0, Math.Min(array.Length, newLength));
    return newArray;
}

因為我用到的是整數陣列,所以我就將範例中原本宣告為Array的部份都直接改成int[],不然我還要找要怎麼作型別轉換,將傳回的Array轉回int[],我C#還不熟,趕專案先,以後再研究。

2008年7月22日 星期二

又是停用服務惹的禍!

環境:
Win XP SP2+Office 2007

問題:
1.開啟Word檔時會出現"此文件無法註冊,無法在其他文件建立與此文件的連結。"錯誤訊息
2.Windows Live Writer程式無法開啟
3.Outlook選項內的"建立簽名"及"信箋和字形"等按鈕,按下無反應

解決方式:
原來又是我亂停用服務的毛病所致,啟動DCOM Server Process Launcher就好了!