2011-07-04 11 views
0

HTA To Doリストをテキストファイルにローカルに保存しようとしています。 Submitボタンを押すたびに、hta body内に表示される新しいエントリが生成され、テキストファイル内に保存されます。私はさらにこれを開発したい:HTA(vbs) - リストを作成する - アレイアイテムを削除または変更する

  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> 

答えて

0

あなたは特にテキストファイルを使用していますか?データベースを使用した場合(アクセスなど)、これを非常に簡単に行うことができます(HTAでアクセスデータベースを使用するためにアクセス権をインストールする必要はありません)。それは他の可能性を開くだろう。

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

ない大きなものを、しかし、そのような文字列を連結することで、パフォーマンスのために素晴らしいではありません。

ちなみに、私はまた、あなたがこれをやっているに気づきます。同時に変数に書き込む方が良いでしょう。さもなければ変数をメモリに何度も何度も書き続ける必要があります。

+0

他の解決策に私の心を開くためのThx。しかし、以前はデータベースと一緒に働いたことはありません。データベースで同じことを達成する方法を示すいくつかの例を提供できますか? – cippall

+0

あなたが離れて遊ぶことができる本当に良い例がここにあります:http://www.codingforums.com/archive/index.php/t-63102.html – Simon

0

ファイルをHTAで読み込みたい場合は、簡単にjavaScriptでファイルを読み込むことができます。コンテクストの変更IEは、コンピュータまたはネットワーク上のファイルを直接読み込んで、コンピュータがリンクされるようにします。そうするためには、あなたはまだあなたがADODB.Connectionのを使用する必要があるデータベースにアクセスするために探している場合はファイルシステムオブジェクト(FSO)

Full Documentation on FSO

にアクセスする必要があります。これにより、ローカルまたはリモートのデータベースに接続することができます。私たちが職場でやったことについては、多くの文書はありません。ちょっと想像して、それを修正する方法を理解することができます。

Documentation on the ADODB.Connnect このドキュメントでは、この例はVBで記述されていますが、JSでも記述できます。

+0

これは素晴らしい例です。ありがとう。 – cippall

関連する問題