2010-08-10 2 views
3

필자가 작성한 많은 스크립트는 동적으로 크기가 큰 배열을 만드는 데 달려 있습니다. VBScript의 배열은 크기를 조정할 때마다 Redim 배열에 있어야하므로이 작업을 매우 힘든 작업으로 만듭니다. 이 문제를 해결하기 위해 쉼표로 구분 된 문자열을 만들고 Split(...)을 사용하여 1D 배열을 만들었습니다. 이 기능이 환상적으로 작동하는 동안 VBScript가이 문제를보다 효율적으로 처리 할 수 ​​있는지 궁금해했습니다. 그래서 StackOverflow를 요청합니다. 거기 있어요?Split()을 사용하여 VBScript의 동적 배열. 더 좋은 방법이 있습니까?

면책 조항 : 나는 VBScript를 꽤 이하의 스크립트 언어는 것을 충분히 알고 있어요,하지만 파이썬은 서버 자동화를위한 번거 로움을 조금입니다 추가 소프트웨어를 필요로하고, PowerShell을 아직 핵심 구성 요소가 아닙니다. 나는 그들 모두를 배우고있다!

+0

당신이 제트 질의 및/또는 연결이 끊긴 된 레코드 봤어

Set dic = CreateObject("Scripting.Dictionary") dic.Add "Item1", "" dic.Add "Item2", "" dic.Add "Item3", "" msgbox Join(dic.Keys, "," & vbNewLine) 

감사합니다, ? Jet는 Windows와 함께 설치됩니다. – Fionnuala

+0

@Remou : 예, 있습니다. 대부분의 경우 훨씬 더 많은 기능을 제공하는 코드가 훨씬 많습니다. 정렬이나 2D 배열 (예 : 행/열)이 필요한 경우이를 사용할 것입니다. –

답변

5

대개 해결책은 새 항목을 추가 할 때마다 배열의 크기를 조정하는 것입니다. 그런 식으로 최종 배열에는 사용되지 않은 항목이 절대 없을 것입니다.

ReDim aArray(-1) 

For i = 1 To 10 
    ReDim Preserve aArray(UBound(aArray) + 1) 
    aArray(UBound(aArray)) = i 
Next 

MsgBox Join(aArray, "," & vbNewLine) 
카를로스에 의해 제안 된

다른 솔루션은 아마 청소기 솔루션입니다 사전 개체를 사용하는 것입니다 : 마치에이

1

Dictionary 개체는 어떻습니까?

+0

나는 그것을 제안하려고했다. 그것은 많은 문제에 대한 해답 인 것 같습니다. – Tester101

+0

k/v 쌍을 원할 때 사전을 사용합니다. 제가 언급 한 문제는 1D 어레이가 필요할 때를위한 것입니다. –

+0

확실히 1D 배열처럼 사용할 수 있습니다. – aphoria

관련 문제