이 사이트의 팁앤테크에서 '스트링그리드 엑셀로 빨리 출력하는법'을 보고 이용했는데,
Ole 타입에 대해서 이해가 안되어서요.
ArrV := VarArrayCreate([0, TopSGrid.Rows+2, 0,TopSGrid.Cols], varOlestr);
XL.Range[XL.Cells[3, 1], XL.Cells[TopSGrid.Rows+2, TopSGrid.Cols]].Value := ArrV;
이런식으로 할 경우 엑셀에서 숫자를 받을 경우 오류표시를 냅니다.
그런데 varVarient로 변경해서 할 경우 이상없이 엑셀에 출력되더군요.
VaroleStr과 VarVarient는 어떤 차이점이 있을까요?
속도면에서 VarOleStr이 빠르게 느껴지더군요. OleVareint에 대해서 이해가
부족해서 질문을 올립니다.
먼저 이 답변은 저의 짧은 지식으로 쓰는것이니 절대로 믿지 마시길 바랍니다.
vararraycreate
Range를 이용하여 배열의 형태로 값을 주욱 넣을수 있습니다.
이때 배열안에 각각의 요소에(칸에? element? 인덱스?)는 다른 자료형의 데이타들이 들어 갈수 있습니다.
어떤건 String, 어떤건 integer 어떤건 Float 근데..이런 배열은 만들수가 없으니..
variant 형의 배열을 만들어 주는거죠..간단히 만들어 주는 이함수가 VarArrayCreate 근데..
이 함수되에 파라미터가 하나 있죠..TVarType 이라는건데..
Variant형의 배열의 각요소의 타입을 정하는 거라네요..이게 언제 필요 할지는 모르겠지만.
여기서 헷갈리는 부분이 Variant 라는것 자체가 동적으로 형변환 되는 자료형일텐데...
Variant Array of String(VarOleStr) 이게 정말로 헷갈리네요.. 무슨 뜻일까......
그냥 넘어가기는 찝찝하니.. 대충 결론을 지어보면 결국엔 Variant형은 연산을 한다거나
이항을 할때 형변환을 해야 할것이고 그때 이데이타를 어떤 형으로 형변환을 해야 하느냐라는
부분에서 가이드를 해주시 위한 타입이 아닐까..String 이라고 해놓으면 나중에 형변환할때
고민할 필요 없이 Str이라고 판단해라 이럼 속도가 빠르지 않을까..
뭐 대충 이런 결론으로 마무리 지으렵니다.
써 놓고 보니 그럴듯 해 보이지만.. 개똥 이론이니 절대 믿지 마세요...