2011-04-11 4 views
0

VBA 및 VB6에서는 VBS에서 mid (예 : mid(str,1,1)="A")을 할당 할 수 있습니다. 문자열 연결이 빌어 먹을이기 때문에 여기 을 느리게 '이 필요 는 VBS에서 mid() = foo?

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에서 일을 얻을 수있는 진짜 빨리 내가 ​​함께 해킹 실제 코드는?

답변

2
는 VBScript로 사용할 수없는 명시 적으로 진술

신뢰할 수있는 소스 :

Visual Basic for Applications Features Not In VBScript :

문자열 : 고정 길이 문자열 LSet, RSET 중간 문을 StrConv

VBA가있다 모두 중간 명세서 및 중간 기능. VBScript에는 Mid 기능 만 있습니다.

VBScript에서이 작업을 수행하는 경우 다른 옵션은 인 입니다. 문자열 버퍼로 직접 작업하는 것이 이미 편안하기 때문에 이것은 당신에게 큰 도약이 아닐 수도 있습니다. 이 페이지는 시작할 수 있어야합니다 String Functions

죄송합니다, 너무, 밖으로 API 호출과 같습니다 Rube Goldberg Memorial Scripting Page: Direct API Calls 당신은 당신의 전화에있는 ActiveX 래퍼를 쓰고 싶어하지 않는,하지만 우리가 엄청 많이 들어가기 시작하고 작업 (및 추가 유지 관리 요구 사항)이 필요합니다.

+1

이 문서는 당신에게 흥미로울 것입니다. [왜 문자열이 느려지는지] – mwolfe02

+0

슬프게도 VBS가 붙어 있습니다. 나는 실제로 문제를 만든 몇 명의 캐릭터를 대신하여 이제는 충분히 빠르다. 누군가가 새로운 문자를 사용하자마자 나는 다시 재미있을 것이다. 나는 대체 목록에 없다. – lawl0r

1

당신은 그렇게 할 수 없습니다. 문자열을 처음부터 다시 작성해야합니다.

+0

나는 이것을 mwolfe02의 답변과 함께 받아들입니다. 나는 내가 중반에 그것을 할 수 없다는 것을 알고 있었지만 나는 문자열을 수정하는 다른 방법이 있기를 희망했다. – lawl0r

0

이것은 불가능합니다. mid(str,1,1)은 숫자 만 반환하는 함수입니다 (str은 '참조로 전달되지 않으며 변경되지 않습니다.).

+0

나는 그것이 의미가 없다는 것을 안다. 그러나 진지하게, VBA로, 적어도 그것을 Excel에서 실행하려고 할 수있다. – lawl0r

관련 문제