Недопустимый вызов процедуры или аргумент в vbscript - PullRequest
4 голосов
/ 30 июня 2009

Я использую скрипт vb для загрузки файла на сервер. У меня проблема в том, что когда я устанавливаю файл в формате ASCII, как это ...

Set oFile = oFS.CreateTextFile(sPath & FileName, True, False)

Я получаю ошибку, когда вызывается саб, в котором говорится

Недопустимый вызов процедуры или аргумент

но если я установлю файл в юникод

Set oFile = oFS.CreateTextFile(sPath & FileName, True, True)

загружается успешно, но не открывается из-за неправильной кодировки. Эта строка выдает ошибку, если формат ASCII, это

oFile.Write BinaryToString(FileData)

где oFile - файл ASCII, который я создал выше

Вот исходный код, который выдает ошибку. Это функция загрузки, я вышел из сети ..

Public Sub SaveToDisk(sPath)
        Dim oFS, oFile
        Dim nIndex

        If sPath = "" Or FileName = "" Then Exit Sub
        If Mid(sPath, Len(sPath)) <> "\" Then sPath = sPath & "\"

        Set oFS = Server.CreateObject("Scripting.FileSystemObject")
        If Not oFS.FolderExists(sPath) Then Exit Sub

        Set oFile = oFS.CreateTextFile(sPath & FileName, True, False)
        oFile.Write BinaryToString(FileData)

        oFile.Close
    End Sub

    Function BinaryToString(Binary)
        'Antonin Foller, http://www.motobit.com
        'Optimized version of a simple BinaryToString algorithm.

        Dim cl1, cl2, cl3, pl1, pl2, pl3
        Dim L
        cl1 = 1
        cl2 = 1
        cl3 = 1
        L = LenB(Binary)

        Do While cl1<=L
            pl3 = pl3 & Chr(AscB(MidB(Binary,cl1,1)))
            cl1 = cl1 + 1
            cl3 = cl3 + 1
            If cl3>300 Then
                pl2 = pl2 & pl3
                pl3 = ""
                cl3 = 1
                cl2 = cl2 + 1
                If cl2>200 Then
                    pl1 = pl1 & pl2
                    pl2 = ""
                    cl2 = 1
                End If
            End If
        Loop
        BinaryToString = pl1 & pl2 & pl3
    End Function

Может ли это быть конфигурации на сервере? Если это имеет смысл, пожалуйста, помогите ..

Ответы [ 2 ]

2 голосов
/ 01 июля 2009

Я подозреваю, что BinaryToString возвращает не только символы ASCII (на самом деле текущая кодовая страница OEM), но также и другие символы в диапазоне Unicode, которые находятся за пределами набора кодовых страниц OEM.

Что именно делает BinaryToString?

0 голосов
/ 26 ноября 2013

После неоправданно долгого времени, связанного с этой же проблемой, не имеющего для меня никакого смысла и не связанного с Unicode, я наконец-то заставил его работать:

Set oFile = oFS.CreateTextFile(sPath & FileName, 8)

Эта страница была полезна для меня: http://ns7.webmasters.com/caspdoc/html/vbscript_filesystemobject_object_opentextfile_method.htm

Илья Евдокимов

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...