HTA (vbs) - список дел - удалить или изменить элементы массива - PullRequest
0 голосов
/ 04 июля 2011

Я пытаюсь создать список дел 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>

Ответы [ 2 ]

0 голосов
/ 12 июля 2011

Если вы хотите прочитать файл с HTA, вы можете легко сделать это в javaScript. Поскольку контекст меняется, IE позволяет вам непосредственно читать файл на компьютере или в сети, с которой связан компьютер. Для этого вам нужно получить доступ к объекту файловой системы (FSO)

Полная документация по FSO

Если вы все еще ищете доступ к базе данных, вам нужно использовать ADODB.Connection. Это позволит вам подключаться к базе данных локально или удаленно. Несмотря на то, что документации на эту тему не так много, мы сделали это на моем рабочем месте. С небольшим воображением вы можете выяснить, как это исправить.

Документация по ADODB.Connnect В этой документации пример написан на VB, но вы можете написать их и на JS.

0 голосов
/ 05 июля 2011

Вы особенно привязаны к использованию текстовых файлов?Если вы использовали базу данных (например, доступ), вы могли бы сделать это довольно легко (вам не нужно устанавливать доступ, чтобы использовать базу данных доступа с HTA).И это открыло бы некоторые другие возможности.

Кстати, я также заметил, что вы делаете это:

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

Не большая вещь, но объединение таких строк не великодля исполнения.Вам лучше было бы записывать все это в переменную одновременно, в противном случае вам придется снова и снова записывать переменную в память.

...