2011年10月4日 星期二

VS2008 ftp file DOWNLOAD and DELETE

Private Function GetOnlyDirectories(ByVal v_server As String, ByVal v_user As String, ByVal v_pw As String) As String
    Dim TheShortList As String = FTPListDirectory(v_server, v_user, v_pw, True)
    Dim theDirectories As String = ""
    If TheShortList <> "" Then
        Dim TheLists() As String = Split(TheShortList.Trim, vbCrLf)
        For Each thelist As String In TheLists
            If thelist.Trim.ToLower.EndsWith(".xml") Then
                Dim v_ffile As String = v_server + thelist.Trim.ToLower
                Dim v_tfile As String = "../temp.xml"
                If ftpDownload(v_ffile, v_tfile, v_user, v_pw) Then
                    ftpDelete(v_ffile, v_user, v_pw)
                End If
            End If
            theDirectories &= vbCrLf & thelist.Trim
            theDirectories = theDirectories.Trim
        Next
    End If
    Return theDirectories
End Function

Public Shared Function ftpDownload(ByVal source As String, ByVal target As String, ByVal v_fuser As String, ByVal v_fpw As String) As Boolean
    Dim v_ret As Boolean = True
    Dim credential As New NetworkCredential(v_fuser, v_fpw)

    Dim clsrequest As FtpWebRequest = _
  DirectCast(WebRequest.Create(source), FtpWebRequest)
    clsrequest.Method = WebRequestMethods.Ftp.DownloadFile
    clsrequest.Credentials = credential

    Dim response As FtpWebResponse = _
          DirectCast(clsrequest.GetResponse, FtpWebResponse)
    Dim stream As Stream = response.GetResponseStream

    Dim reader As New StreamReader(stream)
    Dim v_cont As String = reader.ReadToEnd()

    If (File.Exists(target)) Then
        File.Delete(target)
    End If

    Dim FS As FileStream = New FileStream(target, FileMode.CreateNew, FileAccess.Write)
    Dim SW As StreamWriter = New StreamWriter(FS, Encoding.GetEncoding("utf-8"))
    SW.WriteLine(v_cont)

    SW.Flush()
    FS.Close()
    reader.Close()
    response.Close()

 

    'Read to dataset

Dim ds As DataSet = New DataSet
    Dim FSr As FileStream
    FSr = New FileStream(target, FileMode.Open)
    Dim XmlRead As New XmlTextReader(FSr)
    ds.ReadXml(XmlRead)
    FSr.Close()
    XmlRead.Close()

    'do process of dataset ……

    ds.Dispose()
    Return v_ret
End Function

   Function FTPListDirectory(ByVal Target As String, ByVal UID As String, _
ByVal Pass As String, Optional ByVal Shortlist As Boolean = False) As String
       Try
           Dim clsRequest As System.Net.FtpWebRequest = DirectCast(System.Net.WebRequest.Create(Target),  _
           System.Net.FtpWebRequest)
           clsRequest.Credentials = New System.Net.NetworkCredential(UID, Pass)
           If Shortlist Then
               clsRequest.Method = System.Net.WebRequestMethods.Ftp.ListDirectory
           Else
               clsRequest.Method = System.Net.WebRequestMethods.Ftp.ListDirectoryDetails
           End If
           Dim str As String = GetStringResponse(clsRequest)
           clsRequest.Abort()
           Return str
       Catch ex As Exception
           Throw New Exception("Connection Problem – Error:" & vbCrLf & vbCrLf & ex.Message)
           Return ""
       End Try
   End Function

   Private Function GetStringResponse(ByVal ftp As FtpWebRequest) As String
       Dim result As String = ""
       Using response As FtpWebResponse = CType(ftp.GetResponse, FtpWebResponse)
           Dim size As Long = response.ContentLength
           Using datastream As Stream = response.GetResponseStream
               Using sr As New StreamReader(datastream)
                   result = sr.ReadToEnd()
                   sr.Close()
               End Using
               datastream.Close()
           End Using
           response.Close()
       End Using
       Return result
   End Function

Public Shared Function ftpDelete(ByVal source As String, ByVal v_fuser As String, ByVal v_fpw As String) As Boolean
    Dim v_ret As Boolean = True
    Dim credential As New NetworkCredential(v_fuser, v_fpw)

    Dim clsrequest As FtpWebRequest = _
  DirectCast(WebRequest.Create(source), FtpWebRequest)
    clsrequest.Method = WebRequestMethods.Ftp.DeleteFile
    clsrequest.Credentials = credential

    Dim response As FtpWebResponse = _
          DirectCast(clsrequest.GetResponse, FtpWebResponse)
    Dim v_mmm As String = response.StatusDescription

    response.Close()
    Return v_ret
End Function

2011年7月4日 星期一

Adobe Reader PDF檔出現空白

自從換Windows7 64bit 每次執行Crystal Report

轉PDF檔 總是出現一個空白訊息視窗Adobe Reader

裡面只顯示一個?圖示其他都空白一片, Adobe Reader 9

重新安裝, IE8 更新成 IE9結果都一樣, Google了很久發現

可能是字元集不全的問題,到Adobe的官方網站下載

字元集包
http://www.adobe.com/support/products/enterprise/knowledgecenter/c4230.pdf

執行AsianFontPackYes.reg安裝後到目前為止都可以

正常開啟PDF檔了.

曼陀羅(情花)

20110622888

20110608880

20110622890

紅色殺手-3

20110622885

20110623895

2011年6月22日 星期三

Javascript 數值千分位顯示

function FormatNumber(n) {
    n += "";
    var arr = n.split(".");
    var re = /(\d{1,3})(?=(\d{3})+$)/g;
    return arr[0].replace(re,"$1,") + (arr.length == 2 ? "."+arr[1] : "");
}

//取消千分位:

nn = parseInt(v_p.replace(",",""),10);

//test   
document.write("1234567 -> " + FormatNumber(1234567) + "<br>");
document.write("12345678.12 -> " + FormatNumber("12345678.12") + "<br>");
document.write("123456789.1234 -> " + FormatNumber(123456789.1234) + "<br>");
document.write("-123456.123 ->" + FormatNumber(-123456.123) + "<br>");

引用來源

File MD5 Checksum

    Public Shared Function file_checksum(ByVal file_path As String) As String
        Dim md5 As MD5CryptoServiceProvider = New MD5CryptoServiceProvider
        Dim fs As FileStream = New FileStream(file_path, FileMode.Open, FileAccess.Read, FileShare.Read)
        md5.ComputeHash(fs)

        Dim hash As Byte() = md5.Hash
        Dim buff As StringBuilder = New StringBuilder
        Dim hashByte As Byte
        For Each hashByte In hash
            buff.Append(String.Format("{0:X2}", hashByte))
        Next
        fs.Close()
        Return buff.ToString.Trim
    End Function

2011年4月2日 星期六

AVI to sd-video standard ver. 1.2 - AVCHD

 

前陣子換了一台Panasonic TH-P42G20W電漿電視,
用數位相機拍的影片AVI檔, 無法在SD槽播放.

手冊上說: SD卡支援 SD-Video Standard Ver. 1.2 , [MPEG-2(PS格式)] 和帶有MPEG-1/Layer-2格式或杜比數位格式之音訊格式的AVCHD標準相容檔案

維基上說:
AVCHD (Advanced Video Codec High Definition)是索尼公司與松下電器於2006年5月聯合發表的高畫質光碟壓縮技術...

花了半天時間終於找到解決的方法:

先下載並安裝二套免費軟體:

1. Avidemux - http://avidemux.berlios.de/download.html
2. multiAVCHD - http://multiavchd.deanbg.com/tutorial.php

執行Avidemux點選左上角的File->Open, 開啟數位相機拍的影片AVI檔:

Open_file

在左方三個選項分別選擇如下:

Video: MPEG-2(avcodec)

Video

Audio:AC3(lav)

Audio

Filters –> 勾選:Resampling(Hz): 48000

Audio_48k

Format:MPEG-PS(A+V)

format

Configure –> Muxing Format 點選 : DVD

format_CONFIG 

完成上列選項即可存檔:

save

輸入檔名及MPG副檔名.

save_mpg save_ok

執行multiAVCHD並點選左上角Add video files開啟剛剛

由Avidemux轉出的檔案(本例:CIMG0059.MPG):

M_OPEN

點選左下角存檔路徑並選擇輸出檔案路徑:

PATH

選好路徑按OK後回到主畫面按右下角的START按鈕

START

此時會出現媒體選項:

1.選擇左方中間的: Panasonic General AVCHD.

2.點選其上方右邊的Camcoder (NTSC/…).

SD_VIDEO 自動建立:

OK

將整個SD_VIDEO目錄COPY到SD卡根目錄,

FINISH

找一張舒適的沙發可以開始看影片了.

2011年3月22日 星期二

x64-bit環境執行32-bit COM DLL(80004027)

如果發生下列錯誤,為具有 CLSID {166EB857-8CCD-4D83-8F27-CADDB2800374} 的元件擷取 COM Class Factory 失敗: 80004027。

乃是由於在x64-bit環境上執行32-bit DLL所致.

x64-bit環境如何執行32-bit COM DLL?

1.如果已經註冊32-bit 到 x64 作業系統, 先解除安裝例如: "regsvr32 /u C:\MyDLL\CRAXDRT.DLL"
2.確定dll不在Windows目錄像C:\Windows. 本例CRAXDRT.DLL 放在C:\MyDLL目錄中.
3.執行控制台->系統及安全->系統管理工具->元件服務
->電腦->我的電腦->COM+應用程式->右鍵->新增->應用程式.
4.歡迎使用COM+應用程式安裝精靈->下一步.
5.選擇"建立空的應用程式".
6.本例名稱用CRAXDRT, 選伺服器應用程式->下一步.
7.選"互動式使用者-目前登入的使用者"->下一步, 下一步->完成.
8.現在在COM+應用程式下多了一個CRAXDRT, 點選CRAXDRT左方三角型會看到下拉元件, 傳統元件, 角色三個目錄, 點選元件右鍵新增->元件.
9.歡迎使用COM+元件安裝精靈->下一步.
10.選安裝新元件->選擇:C:\MyDLL\CRAXDRT.DLL.->下一步->完成.
11.點選CRAXDRT右鍵->內容->安全性, 不勾選->強制此應用程式的存取檢查, 不勾選->套用軟體限制原則, 模擬等級選匿名->確定.
12.如須由WEB 應用程式存取DLL(如本例)則必須加設定ASPNET及IIS_WPG角色.
13.點選CRAXDRT->角色->CreateOwner->使用者->右鍵->新增->使用者.
14.分別加入ASPNET及IIS_WPG二個使用者到CreateOwner.
15.大功告成.