在HTA应用程序中使用ADODB.stream的vbscript和jscript之间存在奇怪的行为差异

时间:2012-12-13 13:22:07

标签: vbscript stream ado jscript hta

VBscript示例:

Function ADO_WriteToFile(FileURL,data)
Dim arrBytes
    SET ADObj = CreateObject("ADODB.Stream")
    ADObj.Open
    ADObj.Charset = "iso-8859-1" 
    ADObj.Type = adTypeText
    ADObj.WriteText data
    ADObj.SaveToFile FileURL, adSaveCreateOverwrite
    ADObj.Close
    ADObj.Open
    ADObj.Type = adTypeBinary
    ADObj.LoadFromFile FileURL
    ADObj.Position = 3
    arrBytes = ADObj.Read
    ADObj.Position = 0
    ADObj.SetEOS
    ADObj.Write data
    ADObj.SaveToFile FileURL, adSaveCreateOverwrite
    ADObj.Close
End Function

JScript示例:

function writeTo(fileName,str) {
var ado =  new ActiveXObject("ADODB.Stream");
ado.Type = 2;
ado.Open();
ado.Position = 0;
ado.WriteText(str,0);
ado.SaveToFile(fileName,2);
ado.Close();
ado.Open();
ado.Type = 1;

ado.Position = 2;//line 19
var temp = ado.Read();
ado.Position = 0;
ado.SetEOS;
ado.Write(temp);
ado.SaveToFile(fileName,2);
ado.Close();
}

为什么VBScript示例能够完美地工作,除了它不能接受包含空格的文件路径这一事实?

JScript示例错误消息“对参数的赋值不正确”。如果我将Position设置为0,则不会发生这种情况:

ado.Position = 0;

我正在使用它将二进制文件写入磁盘btw

1 个答案:

答案 0 :(得分:0)

以下是一些差异:

  • 在VBScript版本中,position设置为3;在JScript版本中,它设置为2
  • 在VBScript版本中,定义了字符集;在JScript版本中,它是未定义的
  • 在VBScript版本中,WriteText和write都引用了参数;在JScript版本中,只有WriteText引用它

<强>参考