Visual Basic 6에서 생성 한 레거시 데이터베이스 파일에서 데이터를 읽어야합니다. 레거시 소프트웨어에서 Put 및 Put 함수에 매개 변수로 레코드 정렬을 전달합니다.C#으로 VB6 레코드 파일 (Put으로 쓰는)을 읽음
Type THE_TYPE
FIELD_1 As Single
FIELD_2 As String * 20
FIELD_3(1 To 50) As Single
FIELD_4(1 To 10) As String * 1
End Type
내 유형이 더 크고 더 복잡하지만 난 내 프로젝트에 THE_TYPE에 내가 가지고있는 서로 다른 정의를 넣어했습니다이 구조들은 아래와 같이 정의된다. Microsoft.VisualBasic 가져 오기를 사용하면 파일을 작성하는 데 사용 된 VB 함수와 유사한 VB 함수에 액세스 할 수 있으므로 FileSystem.OpenFile() 및 .CloseFile(); 지금은 마지막으로 포함 된 데이터를 읽을 필요가 원래의 기능 때문에이었다
Public RecordContent As THE_TYPE
[...]
Get #1, recordNumber, RecordContent
은 내가() Microsoft.VisualBasic.FileSystem.FileGet 같은 비슷한 사용할 수 있습니다 가정합니다. 질문 : 그렇다면 컨테이너를 정의하는 방법은 무엇입니까? 원래 VB6 유형 "THE_TYPE"과 비슷한 클래스를 사용하고 있습니까? .FileGet()을 호출하여이 객체를 올바르게 채우려면 어떻게해야합니까?
GSerg가 올바른 방향으로 지적했을 수도 있지만 '임의'와 '이진'의 '열기'모드간에 'Put'방식이 큰 차이가 있음을 알아 두십시오. http://msdn.microsoft.com/en-us/library/aa266212(v=VS.60).aspx 및 http://msdn.microsoft.com/en-us/library/aa266177(v=vs. 60) .aspx를 참조하십시오. 'String'과 배열 멤버가 모두 고정 된 크기라면 VB6 앱이 Open ... Binary 모드를 사용했는지 궁금 해서요. – rskar
랜덤 모드였습니다 – ccalboni
+1'Microsoft.VisualBasic'을 가져오고'FileSystem'을 사용합니다. 당신은 놀랄거야 [방법] (http://stackoverflow.com/questions/7290976/vb6-how-are-binary-files-encoded-using-put-statement) [자주] (http://stackoverflow.com/questions/8886096/converting-quick-basic-to-vb-net-random-access-files) 사람들은 그것들을 간과합니다! – MarkJ