컴퓨터2007.11.14 10:02
Scripting.Dictionary
 
데이터베이스를 사용하지 않고 원하는 데이터를 뽑아서 사용하기란 쉽지가 않습니다.
파일로 저장을 해서 읽어오고 저장하고 정리하고 읽어오고 저장하고 읽어오고 저장하고...

물론 배열로 만들면 기준이 되는 데이터를 처음부터 끝까지 반복해서 비교하면 원하는 결과가
나오기는 합니다.

하지만 데이터가 많이지고, 배열을 재정의하는 부분이 중간에라도 나온다면, 나중에 그 코드를 볼때의
느낌은 정말.. 깜깜합니다.
( 제가 만든것을 봐도 제가 하나하나 값을 찍어보고 구조를 판단해야 하더군요. 제가 요즘 부쩍
단기기억력상실이 심해져서요. )
 
우선 배열과 차이점을 꼽아보면 몇가지가 나옵니다.
1. 데이터의 검색 및 추가, 수정, 삭제가 쉽다.
2. 사용법이 간단하다.
3. 모든 데이터를 넣어 사용할수 있다.
  ( 배열조차 넣어서 사용할수 있습니다. 같은 Scripting.Dictionary 조차 넣어서 사용할수 있습니다.)
 
저는 배열의 대용으로 사용을 합니다.
왜냐하면 검색하기 위해 따로 함수를 만들지 않아도 되고, 정렬도 가능해서 여러모로 활용도가
높기 때문입니다.
 
 
다음과 같은 설정값을 가집니다.
속성
- Count : 현재 저장된 개체의 갯수를 반환합니다.
- Item("KeyValue") : KeyValue 라는 키를 이용해서 할당되어 있는 값을 반환합니다.
       키에 값이 없을경우 Null 값을 반환합니다.
- Key("ValueData") : ValueData 라는 값을 가지고 있는 키를 반환합니다.
- CompareMode : Dictionary 개체에서 문자열 키를 비교하는 모드를 설정하여 반환합니다.
 
메서드
- Add Key, Value : 키와 값을 추가합니다. 존재하는 키이면 오류가 발생합니다.
- Remove Key : 지정한 키와 할당되어 있는 키값을 제거합니다. 존재하지 않는 키이면 오류가 발생합니다.
- RemoveAll :  모든 키와 값을 제거합니다.
- Exists(Key) : 지정한 키가 존재하면 True 반환하고, 아니면 False 반환합니다.
- keys : 모든 키들을 배열로 반환합니다.
- Items: 모든 값들을 배열로 반환합니다.
 
 
소스를 보고 설명을 드리겠습니다.
 
'' InsertText   : 입력 되는 키값
' OutputText :  출력 값
1 : Dim objDic
2 : Dim InsertText
3 : Dim OutputText
 
4 : Set objDic =createObject("Scripting.Dictionary")
5 : objDic.Add "Zasfe", "code1"
6 : objDic.Item("Eseit") = "code2"
 
7 : InsertText = "Zasfe"
8 : OutputText = objDic.Item(InsertText)
9 : Wscript.Echo OutputText
10: For each aa in objDic.Keys
11:   wscript.echo aa&" "&objDic.item(aa)
12: Next
 
 
 
가장 간단히 값을 Dictionary개체에 입력하는 방법입니다.
위 코드는 sDic 라는 디렉토리 개체에서 Item값이 "InsertText" 라는 값을 갖는 키값을 반환합니다.
1~3 라인은 변수를 선언하는 부분이고, 4 라인은 Dictionary 개체를 선언하는 부분입니다.
5~6 라인은 Dictionary 개체에 값을 넣는 부분입니다. 2가지의 방법으로 가능합니다.
메서드를 이용한방법(5 라인)과 속성을 이용한 방법(6 라인)이다.
7~9 라인은 Key 값이 "Zasfe" 인 Item 값을 출력하는 부분입니다.
10~12 라인은 모든 키값을 배열로 받아와서 출력하는 방법입니다. 주로 어떤 값이 들어있는지 확인하는 방법으로
사용됩니다.

사용법은 생각보다 간단합니다.

다음은 위 코드의 실행결과 입니다.

Posted by Zasfe