저는 VB6 (그리고 어떤 형식 으로든 시각적 인 기본) 개발에 익숙하지 않고 문제를 보았습니다. 아래에 어휘 오류가있을 수 있습니다. 왜냐하면 내가 코드를 좀 더 읽기 쉽도록 형식화했기 때문입니다. 그러나 문제의 본질은 그대로 남아 있습니다. 다음은 코드입니다내 VB6 변형이 할당시기에 따라 달라지는 이유는 무엇입니까?
내 문제는 변수 scrWord 및 resWord에 할당 할 때 MsgBox 호출 (변수 scrWord 및 resWord를 참조하는 두 번째 집합)에 표시된 값이 서로 다릅니다. 위에 표시된 코드에서 주석 처리되지 않은 첫 번째 위치의 변수 scrWord 및 resWord에 할당하면 코드 하단의 메시지 상자에 관심이없는 문자열이 표시됩니다 (예 : 첫 번째 메시지 상자에서 "srcws : resColNum : #"와 같은 출력) 또는 가비지 데이터로 보이는 것. 이것은 이전 메시지 상자에서 사용 된 정적 문자열을 scrWord 변수에 할당했다는 것을 의미합니다. 이것은 결코 의도 된 행동이 아니며 나는 그것이 어떻게 일어나고 있는지 전혀 모른다.
반면에 위의 코드에서 변수 할당이 주석 처리 된 메시지 상자 바로 전에 할당이 수행되면 변수는 예상보다 다소 다른 값을 인쇄하지만 그렇지 않은 경우 정확하게 (일반적으로 두 변수가 정확히 같거나 하나가 숫자가 다른 알파 문자열이 될 것으로 예상되는 경우).
나는이 문제에 당황하고있다. 그리고 나는 Variant 데이터 형식을 반환하는 GetData 호출과 관련이 있다고 생각한다.
는 에반새로운 코드는 아래 게시, 감사합니다. 아직도 작동하지 않습니다.
Dim srcWord As Variant
Dim resWord As Variant
Do While (BinsCol.GetData(grouprownum, 1) = binfromnum And nogroupfound = True)
Dim groupmismatch As Boolean
groupmismatch = False
For j = 1 To FormHyst.GroupList.ListCount
srcWord = sourceWS.Columns(j).GetData(i, 1)
resWord = "hello, world"
MsgBox ("srcws:" & srcWord & vbNewLine &_
"resws:" & resWord & vbNewLine &_
"test:" & (resWord <> srcWord))
Next
Loop
이 새 코드에서는 srcWord와 resWord가 모두 "hello, world"로 표시됩니다.
여전히이 동작을 이해할 수 없습니다.
디버거로 코드를 실행 해 보았습니까? VB6 디버거는 꽤 괜찮습니다. 이렇게하면 MsgBox 호출을 뿌리는 것보다 예기치 않은 동작의 원인이 훨씬 잘 표시됩니다. – Tomalak
호스트 응용 프로그램을 확장하는 DLL을 작성하고 있습니다. VB6 디버거가 좋지만 호스트 응용 프로그램을 실행해야하는 경우 디버깅하는 방법이 확실하지 않습니다. 그렇지 않으면 "GetData"에 대한 호출에 대상이 없습니다. –
sourceWS 및 resultWS 개체 란 무엇입니까? Excel 워크 시트? –