mid () = foo в VBS? - PullRequest
       25

mid () = foo в VBS?

0 голосов
/ 11 апреля 2011

В VBA и VB6 я могу назначить что-то для mid для примера mid(str,1,1)="A" в VBS, это не работает.Мне это нужно, потому что конкатенация строк чертовски медленная. Вот фактический код, который я взломал вместе очень быстро

Function fastXMLencode(str)
    Dim strlen
    strlen = Len(str)
    Dim buf
    Dim varptr
    Dim i
    Dim j
    Dim charlen
    varptr = 1
    buf = Space(strlen * 7)
    Dim char
    For i = 1 To strlen
        char = CStr(Asc(Mid(str, i, 1)))
        charlen = Len(char)
        Mid(buf, varptr, 2) = "&#"
        varptr = varptr + 2
        Mid(buf, varptr, charlen) = char
        varptr = varptr + charlen
        Mid(buf, varptr, 1) = ";"
        varptr = varptr + 1
    Next
    fastXMLencode = Trim(buf)
End Function

Как мне заставить это работать в VBS?

Ответы [ 3 ]

2 голосов
/ 11 апреля 2011

Официальный источник, явно заявляющий, что он недоступен в VBScript:

Visual Basic для приложений Функции, отсутствующие в VBScript :

Строки: строки фиксированной длины LSet, RSet Mid-оператор StrConv

VBA имеет как Mid Statement , так и Mid Function .VBScript имеет только функцию Mid.

Еще один вариант, который у вас есть, если вы застряли, делая это в VBScript, это делать вызовы API .Поскольку вам уже удобно работать непосредственно со строковым буфером, это может быть не слишком большим прыжком для вас.На этой странице вы должны начать: Строковые функции

Извините, похоже, вызовы API тоже отсутствуют: Страница сценариев Rube Goldberg Memorial Scripting: Прямые вызовы API Если вы не хотите писать обертку ActiveX для своих звонков, но сейчас мы начинаем выполнять огромную работу (и дополнительные требования к обслуживанию).

1 голос
/ 11 апреля 2011

Вы не можете этого сделать.Вам придется восстановить строку с нуля.

0 голосов
/ 11 апреля 2011

Это невозможно, mid(str,1,1) - это функция, которая просто возвращает число (str не передается «по ссылке» и не изменяется).

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