제목은 저렇지만

씨발 한참동안 에러 찾느라고 개고생한 부분임.


좆도 쓸모없는 이유는 "VB6"이기 때문.

VB6인것도 그런데, 이게 VB6 DLL Addin에서만 발생하기 때문.



예전에 만들어뒀던 Addin 하나 있고,

그걸 VB6로 돌려보는데

하다보면 자꾸


-------------------------------------

'10' 런타임 오류가 발생하였습니다.:

이 배열은 고정되었거나 일시적인 잠금 상태입니다.

-------------------------------------


이게 뜨더라.


뭔가 싶어서 한참 뜯어봤는데,

젼역변수 배열있고

for~~~

  With 배열(i)

    if ~~~ then exit for

  end with

next


erase 배열


이 구조에서 erase할때 발생함.

(erase는 어디서 해도 마찬거지임. 붙여서하는게 문제가 아니라 end with 안하고 탈출하는게 문제.)


저거 With 묶음이 제대로 끝나기 전에 exit for(break에 해당)를 걸면

바로 에러는 안생기는데 배열이 잠기는 부분이 생김.

그래서 erase만 하면 에러나면서 다운됨.


이걸 개선하려면


for~~~

  With 배열(i)

    if ~~~ then bool변수 = true

  end with

  if bool변수 then exit for

next


이렇게 해야됨.



문제는 이게

"일반 프로젝트"에서는 재현안됨.

DLL에서만 재현되는거 같음.

vb.net 도 되지 않을까 싶어

addin이나 dll 만들어서 해볼랬는데

귀찮아서 때려침.

(물론 일반폼은 동일하게 멀쩡함)


아주 제한적인 쓸모없는 잡지식이지만

앞으로 세계에서 1명 정도는 같은 일 겪을놈 있지 않을까 해서

그때 도움되라고 끄적여본다.

(씨발 아무리 검색해도 이런거 겪었다는 놈이 없더라고.)

(10 runtime 에러는 주로 정적배열에서만 발생하는 걸로 설명되는데, 나는 정적배열이 없어서 도무지 찾을수가 없었음.)

(그러고보니 파이썬 with문은 어떻지? 비슷한 문제 있던가? 이치적으로 비슷한 문제가 있어야할거 같은데?)



키워드


End With

Exit For

10 runtime error