编辑文本并保存
Edit text and save
我正在hta中做一个脚本,需要他具备以下功能:
具有以下功能:
- 如果文件 .txt 不存在,请不要打开脚本。
- 删除输入框,仍然可以保存更改。
- 如果用户尝试保存空文本,则会出现错误。
- 如果用户进行了有效修改(非空),则显示一条消息
说明已保存。
代码:
<HTML>
<head><title>Name</Title>
<HTA:Application
Border= "thin"
Application="/md/input"
Scoll="NO"
Singleinstance="Yes"
Icon="01.ico">
ShowInTaskbar="Yes"
Caption="Yes">
</Head>
<Script Language="VBSCRIPT" Type = "text/vbscript">
Sub Window_Onload
Window.resizeTo 400,500
End Sub
Const ForReading = 1
Const ForWriting = 2
Const ForAppending = 8
Set fSo1 = CreateObject("Scripting.FileSystemObject")
wkDir = "test.txt"
'----------------------------------------------------------
sub Window_onLoad()
Window.resizeTo 400,500
set oFSO=CreateObject("Scripting.FileSystemObject")
set oFile=oFSO.OpenTextFile("Test.txt",1)
text=oFile.ReadAll
document.all.DataArea.value=text
oFile.Close
end sub
'----------------------------------------------------------
FUNCTION SaveFile(FileName, DataArea)
CALL FileStat(FileName, msg)
on error resume next
sFile = wkDir & FileName.value
Set wrFile = fSo1.OpenTextFile(sFile, ForWriting)
wrFile.writeline(DataArea.value)
self.close
END FUNCTION
'----------------------------------------------------------
FUNCTION CloseFile(FileName, DataArea)
Call FileStat(FileName, msg)
on error resume next
cFile = wkDir & FileName.value
Set wrFile = fSo1.OpenTextFile(cFile, ForAppending)
wrFile.Close
DataArea.value = ""
FileName.Value = ""
END FUNCTION
'----------------------------------------------------------
FUNCTION QuitEdit
self.close
END FUNCTION
'----------------------------------------------------------
FUNCTION FileStat(FileName, msg)
eFile = wkDir & FileName
IF (fSo1.FileExists(eFile)) THEN
msg = oFile & " exists."
ELSE
on error resume next
END IF
END FUNCTION
'----------------------------------------------------------
</Script>
<body bgcolor="C0C0C0">
<Table>
<Th> Name </Th>
<TR><td><input type="text" name="FileName"></td></TR>
</Table>
<Table border="2">
<TR><td>
<textarea name="DataArea" rows="18" cols=37></textarea>
</td></TR>
<TR><td>
<input type="BUTTON" value="Save" onclick="SaveFile FileName, DataArea">
<input type="BUTTON" value="Cancel" onclick="QuitEdit">
</td></TR>
</Table>
</body>
</html>
90% 的问题都是由代码编写引起的。因此,获得好脚本的简单方法是摆脱该代码。 4% 的 VBScript 问题是由 not 以 "Option Explicit" 开头引起的。所以让我们补充一下。 4% 的 VBScript 问题是由通过 "On Error Resume Next" 隐藏错误引起的。永远不要在全局范围内使用它,并且永远不要在它之后最多两行没有检查。
删除 (a) 与编辑文件无关的所有内容(图标、其他不相关的 HTA 属性、调整大小、重复(wkDir,"test.txt"),看起来像是付费程序员编写的内容每小时(调用语句,没有 return 的函数,使用一次变量)和 (b) - 目前 - 必须 编写的代码解决 "editing a file" 问题,我们得到:
<html>
<head>
<title>Edit File Demo</title>
<hta:application
id="demo"
></hta>
<script type="text/vbscript">
Option Explicit
Sub Window_OnLoad()
End Sub
Sub SaveFile()
End Sub
</script>
</head>
<body>
<form>
<textarea name="DataArea" rows="18" cols=37></textarea>
<input type="BUTTON" value="Save" onclick="SaveFile">
</form>
</body>
</html>
没有所有的脂肪,将脚本放入头部并将小部件放入表单是自然而然的。
现在需要的代码:我们需要一个文件规范(比名字更好)和 a/the 一个且唯一的 FileSystemObject(永远不要命名为 ofs1);如果文件存在,应该加载到文本区域;应保存文本区域的内容。所以新的 VBScript 部分是:
Option Explicit
Const csFSpec = "E:\trials\SoTrials\answers41045\hta505115.txt"
Dim goFS : Set goFS = CreateObject("Scripting.FileSystemObject")
Sub Window_OnLoad()
If goFS.FileExists(csFSpec) Then
document.all.DataArea.value = goFS.OpenTextFile(csFSpec).ReadAll()
Else
document.all.DataArea.value = csFSpec & " created"
End If
End Sub
Sub SaveFile()
goFS.CreateTextFile(csFSpec).Write document.all.DataArea.value
End Sub
我正在hta中做一个脚本,需要他具备以下功能:
具有以下功能:
- 如果文件 .txt 不存在,请不要打开脚本。
- 删除输入框,仍然可以保存更改。
- 如果用户尝试保存空文本,则会出现错误。
- 如果用户进行了有效修改(非空),则显示一条消息 说明已保存。
代码:
<HTML>
<head><title>Name</Title>
<HTA:Application
Border= "thin"
Application="/md/input"
Scoll="NO"
Singleinstance="Yes"
Icon="01.ico">
ShowInTaskbar="Yes"
Caption="Yes">
</Head>
<Script Language="VBSCRIPT" Type = "text/vbscript">
Sub Window_Onload
Window.resizeTo 400,500
End Sub
Const ForReading = 1
Const ForWriting = 2
Const ForAppending = 8
Set fSo1 = CreateObject("Scripting.FileSystemObject")
wkDir = "test.txt"
'----------------------------------------------------------
sub Window_onLoad()
Window.resizeTo 400,500
set oFSO=CreateObject("Scripting.FileSystemObject")
set oFile=oFSO.OpenTextFile("Test.txt",1)
text=oFile.ReadAll
document.all.DataArea.value=text
oFile.Close
end sub
'----------------------------------------------------------
FUNCTION SaveFile(FileName, DataArea)
CALL FileStat(FileName, msg)
on error resume next
sFile = wkDir & FileName.value
Set wrFile = fSo1.OpenTextFile(sFile, ForWriting)
wrFile.writeline(DataArea.value)
self.close
END FUNCTION
'----------------------------------------------------------
FUNCTION CloseFile(FileName, DataArea)
Call FileStat(FileName, msg)
on error resume next
cFile = wkDir & FileName.value
Set wrFile = fSo1.OpenTextFile(cFile, ForAppending)
wrFile.Close
DataArea.value = ""
FileName.Value = ""
END FUNCTION
'----------------------------------------------------------
FUNCTION QuitEdit
self.close
END FUNCTION
'----------------------------------------------------------
FUNCTION FileStat(FileName, msg)
eFile = wkDir & FileName
IF (fSo1.FileExists(eFile)) THEN
msg = oFile & " exists."
ELSE
on error resume next
END IF
END FUNCTION
'----------------------------------------------------------
</Script>
<body bgcolor="C0C0C0">
<Table>
<Th> Name </Th>
<TR><td><input type="text" name="FileName"></td></TR>
</Table>
<Table border="2">
<TR><td>
<textarea name="DataArea" rows="18" cols=37></textarea>
</td></TR>
<TR><td>
<input type="BUTTON" value="Save" onclick="SaveFile FileName, DataArea">
<input type="BUTTON" value="Cancel" onclick="QuitEdit">
</td></TR>
</Table>
</body>
</html>
90% 的问题都是由代码编写引起的。因此,获得好脚本的简单方法是摆脱该代码。 4% 的 VBScript 问题是由 not 以 "Option Explicit" 开头引起的。所以让我们补充一下。 4% 的 VBScript 问题是由通过 "On Error Resume Next" 隐藏错误引起的。永远不要在全局范围内使用它,并且永远不要在它之后最多两行没有检查。
删除 (a) 与编辑文件无关的所有内容(图标、其他不相关的 HTA 属性、调整大小、重复(wkDir,"test.txt"),看起来像是付费程序员编写的内容每小时(调用语句,没有 return 的函数,使用一次变量)和 (b) - 目前 - 必须 编写的代码解决 "editing a file" 问题,我们得到:
<html>
<head>
<title>Edit File Demo</title>
<hta:application
id="demo"
></hta>
<script type="text/vbscript">
Option Explicit
Sub Window_OnLoad()
End Sub
Sub SaveFile()
End Sub
</script>
</head>
<body>
<form>
<textarea name="DataArea" rows="18" cols=37></textarea>
<input type="BUTTON" value="Save" onclick="SaveFile">
</form>
</body>
</html>
没有所有的脂肪,将脚本放入头部并将小部件放入表单是自然而然的。
现在需要的代码:我们需要一个文件规范(比名字更好)和 a/the 一个且唯一的 FileSystemObject(永远不要命名为 ofs1);如果文件存在,应该加载到文本区域;应保存文本区域的内容。所以新的 VBScript 部分是:
Option Explicit
Const csFSpec = "E:\trials\SoTrials\answers41045\hta505115.txt"
Dim goFS : Set goFS = CreateObject("Scripting.FileSystemObject")
Sub Window_OnLoad()
If goFS.FileExists(csFSpec) Then
document.all.DataArea.value = goFS.OpenTextFile(csFSpec).ReadAll()
Else
document.all.DataArea.value = csFSpec & " created"
End If
End Sub
Sub SaveFile()
goFS.CreateTextFile(csFSpec).Write document.all.DataArea.value
End Sub