0

我正在尝试创建一个本地保存到文本文件的 HTA 待办事项列表。每次按下提交按钮时都会生成一个新条目,该条目显示在 hta 正文中,并保存在文本文件中。我想进一步发展这个:

  1. 删除条目并更新正文/文本文件
  2. 修改条目并更新正文/文本文件
  3. 将新条目放在顶部

有什么建议么?

     <html>
    <head>
    <HTA:APPLICATION SINGLEINSTANCE="yes" APPLICATIONNAME="To Do List">
    </head>

    <SCRIPT Language="VBScript">
    Sub Window_OnLoad 
    ReadBlog
    End Sub 

        Sub SaveData
        strDel1="<"
        strDel2=">"
            Set objFSO = CreateObject("Scripting.FileSystemObject")
            If objFSO.FileExists("C:\Test.txt") Then
               Set objFile = objFSO.OpenTextFile("C:\Test.txt", 8)
                strLine = strDel1 & Time & vbTab & Date & vbTab & Title.Value & vbTab & Message.Value & strDel2
                objFile.WriteLine strLine
                objFile.Close
            Else
                Set objFile = objFSO.CreateTextFile("C:\Test.txt")
                strLine = strDel1 & Time & vbTab & Date & vbTab & Title.Value & vbTab & Message.Value & strDel2
                objFile.WriteLine strLine
                objFile.Close
            End If

             ReadBlog
             ClearText
        End Sub

        Sub ReadBlog
        Const ForReading = 1, ForWriting = 2
         dim sampletext, objRegExp, SearchPattern, ReplacePattern, matches
         Dim objFSO
         Set objFSO = CreateObject("Scripting.FileSystemObject")
         Set objFile = objFSO.OpenTextFile("C:\Test.txt", ForReading)
             Do Until objFile.AtEndOfStream
                sampletext = objFile.ReadAll
                SearchPattern = "<" 
                SearchPattern = SearchPattern & "(.*?)([\s\S]*?)" 
                SearchPattern = SearchPattern & ">" 
                Set objRegExp = New RegExp
                objRegExp.Pattern = searchpattern ' apply the search pattern
                objRegExp.Global = True ' match all instances if the serach pattern
                objRegExp.IgnoreCase = True ' ignore case 
                Set matches = objRegExp.execute(sampletext)


                    If matches.Count > 0 Then ' there was at least one match to the search pattern  
                        i=0
                        For Each match in matches

                        arrEntry = Split(Split(match.Value, "<")(1), ">")(0)
                        arrFields = Split(arrEntry, vbTab)
                        strTime = arrFields(0)
                        strDate = arrFields(1)
                        strTitle = arrFields(2)
                        strMessage = arrFields(3)

                            strHTML = strHTML & "<p>" & strTime & "</p>"
                            strHTML = strHTML & "<p>" & strDate & "</p>"
                            strHTML = strHTML & "<p>" & strTitle & "</p>"
                            strHTML = strHTML & "<p>" & strMessage & "</p>" 
                            strHTML = strHTML & "<input type='button' name='Delete' value='Delete' >"& i &"<p>"
                        i=i+1
                        Next

                    Else ' there were no matches found
                      MsgBox objRegExp.Pattern & "was not found in the string"
                    End If  
                Loop
        DataArea.InnerHTML = strHTML
        Set objRegExp = Nothing
        Set objFSO = Nothing
    End Sub



    Sub ClearText
           Title.Value = "" 
           Message.Value = ""
     End Sub

    </SCRIPT>

    <body>
        <input type="text" name="Title" size="101"><p>
        <textarea rows="10" cols="76" type="text" name="Message" size="25"></textarea><p>
        <input type="button" value="Submit" onClick="SaveData">
        <p><div id="DataArea"></div></p> 
    </body>
</html>
4

2 回答 2

0

您是否特别喜欢使用文本文件?如果您使用数据库(例如 access),您可以很容易地做到这一点(您也不必安装 access 来使用带有 HTA 的 access 数据库)。它会开辟一些其他的可能性。

顺便说一句,我还注意到您正在这样做:

                        strHTML = strHTML & "<p>" & strTime & "</p>"
                        strHTML = strHTML & "<p>" & strDate & "</p>"
                        strHTML = strHTML & "<p>" & strTitle & "</p>"
                        strHTML = strHTML & "<p>" & strMessage & "</p>" 

没什么大不了的,但是像这样连接字符串对性能来说并不是很好。您最好同时将其全部写入变量,否则它必须一遍又一遍地将变量写入内存。

于 2011-07-04T20:24:06.187 回答
0

如果您想使用 HTA 读取文件,您可以在 javaScript 中轻松完成。由于上下文更改 IE 允许您直接读取计算机或网络上的文件以连接到计算机。为此,您需要访问文件系统对象 (FSO)

FSO 的完整文档

如果您仍在寻找访问数据库,您需要使用 ADODB.Connection。这将允许您本地或远程连接到数据库。虽然没有太多关于我们在工作场所所做的主题的文档。只需一点想象力,您就可以弄清楚如何解决它。

关于 ADODB.Connnect 的 文档 在本文档中,示例是用 VB 编写的,但您也可以用 JS 编写它们。

于 2011-07-12T12:05:10.147 回答