2009年06月02日

NVelocity

NVelocityっていう
テンプレートエンジンがあるみたい

PHPだと

Smarty

とかが有名だし
Perlだと

数か数の

moduleがあるから
それ入れればいいんだけど

しかし

それらは

if
とか

foreach
とか
使うだけだと

重い
単に置換するだけなら

replaceで

いけるけど

問題は

if


foreach

をどうやって
実現するかなんだけど

ちょっと

考えて
簡易テンプレートエンジンを

作ってみたいなあ

そうしたら

PCで

Movable type
みたいなのを

FTP

使って
できるような

気がする

そうすると

サーバーに
重いって

文句いわれない

(数々文句いわれ続けてます)
NVelocity NVelocity テンプレート テンプレート
posted by kiyo at 22:35| ファイル | このブログの読者になる | 更新情報をチェックする

2008年11月05日

CSV形式のファイルの読み込み

VB2008にはCSV形式のファイルの読み込みをしてくれる関数が用意されています。


"テニス","ラケット","シューズ"


というCSVファイルを


テニス


ラケット


シューズ


と読んでくれます。

 
下記の例は


FilePathでファイルを指定して


そこに書いてある
サイトのリストを読み込んでいます


"ID","Domain","Directory","URL","Title"


という形式のサイトリストを


List形式のDictionaryに読み込みます

 

 Public Function AllSiteListData(ByVal FilePath As String) As List(Of Dictionary(Of String, String))
        Dim FileName As String = gDataPath & "\" & FilePath
        Dim SiteData As New List(Of Dictionary(Of String, String))


        If IO.File.Exists(FileName) = False Then
            MessageBox.Show(FileName & vbCrLf & "がありません", "警告", MessageBoxButtons.OK)


            Return SiteData
            Exit Function
        End If


        Using parser As New TextFieldParser(FileName)
            parser.TextFieldType = FieldType.Delimited
            parser.SetDelimiters(",") ' 区切り文字はコンマ
            parser.HasFieldsEnclosedInQuotes = True '単純に,で区切り


            Do While Not parser.EndOfData
                Dim row As String() = parser.ReadFields()
                Dim Item As New Dictionary(Of String, String)
                Item("ID") = row(0)
                Item("Domain") = row(1)
                Item("Directory") = row(2)
                Item("URL") = row(3)
                Item("Title") = row(7)


                SiteData.Add(Item)
            Loop
        End Using
        Return SiteData


    End Function

posted by kiyo at 15:57| ファイル | このブログの読者になる | 更新情報をチェックする

複数行のテキストファイルの読み込み

複数行のテキストファイルを読み込んで見ましょう


例として


test.txtに


VB2008
初心者


と2行のテキストファイルがあるとします


Function ReadFile() as Dictionary(Of String,String)


        Dim FileName As String = DataPath & "\test.txt"
        Dim Data As New Dictionary(Of String, String)


        If IO.File.Exists(FileName) = False Then
            MessageBox.Show(FileName & vbCrLf & "がありません", "警告", MessageBoxButtons.OK)


            Return Data
            Exit Function
        End If


        Dim TextFile As IO.StreamReader
        Dim Line As String
        Dim i As Integer


        TextFile = New IO.StreamReader(FileName)
        i = 0
        Do While -1
            Line = TextFile.ReadLine


            Select Case i
                Case 0
                    Data("Soft") = Line
                Case 1
                    Data("Class") = Line
            End Select


            i = i + 1


            If Line Is Nothing Then
                Exit Do
            End If
        Loop
        TextFile.Close()
        Return Data
    End Function

 
これまでが関数です


この


FunctionはDictionary を返すわけです


Dim Word as New Dictionary(Of String,String)


Word = ReadFile()


Msgbox( Word("Soft"))

'ここで、ファイルの一行目 VB2008とメッセージボックスがでます


MsgBox (Word("Class"))
'ここでファイルの2行目の 初心者とメッセージが出されます

posted by kiyo at 14:54| ファイル | このブログの読者になる | 更新情報をチェックする

テキストファイルの書き出し

ファイルにデータを書き出してみましょう。

ここでは、

書き出すディレクトリ
テキスト
ファイルの名前


を指定して


指定したディレクトリに指定したファイル名でファイルを書き出します。



  'データの書き出し
    Public Function SaveData(ByVal DirectoryName As String, ByVal SaveText As String, ByVal FileName As String) As Boolean


        'ServerDirectoryがなけばエラーを返す
        If IO.Directory.Exists(DirectoryName) = False Then
            MsgBox(DirectoryPath & "がありません")
            Return False
            Exit Function
        End If


        Dim TextFile As IO.StreamWriter

        TextFile = New IO.StreamWriter(DirectoryName & FileName)
        TextFile.Write(SaveText)
        TextFile.Close()

        Return True

    End Function


使い方としては


Dim DirectoryName as String = "C:\Test"
Dim SaveText as String = "こんにちは、初めてファイルを書き出します。"
Dim FileName as String = "save.txt"

SaveData(DirectoryName,SaveText,FileName)


C:\Test\save.txt

文字コードがutf-8で
こんにちは、初めてファイルを書き出します。

と書き出します

FormにTextBoxを貼り付けて


Dim SaveText as String=TextBox1.Text.Trim

としてテキストボックスの内容を書き出してもいいでしょう


ここのTrimは

最初と最後の改行と空白を取り除いてくれます
posted by kiyo at 13:19| ファイル | このブログの読者になる | 更新情報をチェックする

2008年10月30日

ファイルの更新日時と作成日を求める

PC上にあるファイルの作成日とか
最終更新日(最後に書き込んだ日時)の求め方の例です。



この例は

VBのbin\debug\Keyword.txtの作成日と更新日を求めます



        Dim FileName As String = Application.StartupPath() & "\Keyword.txt
        Dim LastDate as Date


        If IO.File.Exists(FileName) Then
        'ファイルが存在するかどうか確認する


            LastDate = IO.File.GetLastWriteTime(FileName)
            msgbox("最終更新日は" & LastDate)
            'GetLstWriteTimeは最後にファイルが書き込まれた日


            LastDate = IO.File.GetCreationTime(FileName)
            msgbox("作成日は" & LastDate)
            'GetCreationTimeはファイルを作成した日時


        Else

            msgbox(FileName & " がありません")
            'FileNameがなかったらメッセージを出す

        End If


という感じで

作成日と更新日を求めることができます。



たとえばローカルに保存してあるHPの更新日を求めることで
そろそろ更新しておかなきゃとかなるわけですね

posted by kiyo at 13:31| ファイル | このブログの読者になる | 更新情報をチェックする
×

この広告は1年以上新しい記事の投稿がないブログに表示されております。