2012-12-13 2 views
0

Option Strict가 On 일 때 나타나는 이진 파일의 구조체 데이터 읽기 기능에 문제가 있습니다. 구조체 데이터 복사

Public Function arh_setup(ByVal rw As Boolean) As Integer 
    Dim retval As Integer = 0 
    Dim fnum As Integer = FreeFile() 
    Dim temp As ValueType = CType(New aSetup, ValueType) 

Try 
     FileOpen(fnum, setup_file, OpenMode.Binary, OpenAccess.ReadWrite, OpenShare.Shared, Len(asT)) 
     If rw Then 
      FilePut(fnum, asT, 1) 
     Else 
      FileGet(fnum, temp, 1) 
     End If 
     FileClose(fnum) 
    Catch ex As Exception 
     retval = -1 
    End Try 

' Now is question here 
' How to get data from temp to asT?? 
EDIT: 
Solution is asT = CType(temp, aSetup) 

    temp= Nothing   
    Return retval 
End Function 

AST 전역 (적절히) 데이터를 포함 읽혀질 온도 데이터를 입력해야 aSetup (구조)의 변수를 선언한다.

질문은 로컬 임시 변수에서 전역 asT 변수로 데이터를 복사하는 것이 좋습니다. 루프를 사용하지 않고 (바이트 단위로) 또는 그렇지 않으면 반복 할 수 없으면 어떻게해야합니까?

+1

VB6과 매우 비슷하므로 VB6이라고 할 수 있습니다. IO.File.ReadAllBytes와 같은 내장 .NET 메서드를 사용한 경우에는 문제가 존재하지 않습니다. – test

+0

불행히도, 우리는 "있는 그대로"의 상황을 가지고 있습니다. –

답변

1

시도 주조 :

또한
asT = CType(temp, aSetup) 

이 방법을 종료하기 전에 Nothing에 로컬 변수를 설정하지 마십시오, 그것은 완전히 무의미. VB6 호환성 메서드 대신 .NET의 FileStream을 사용해야 파일을 읽을 수 있습니다.

+0

컴파일러는 다음과 같이 설명합니다 : Option Strict On은 'System.ValueType'에서 'myProg.arh_Setup'으로의 암시 적 변환을 허용하지 않습니다. –

+1

@ user973238 :'arh_Setup'? 당신은 'asT = CType (temp, aSetup)'이라고 확신합니까? – Ryan

+0

죄송합니다, 예! asT = CType (temp, aSetup)이 작동했습니다! 너희들 대단히 고마워 !! –