wsanchez
asked on
Reading records in a binary file
I get an error in my Get statement when I try to compile my program. My program is supposed to read a record from a binary file. The error says:
Can't Get or Put an object reference variable or a variable of user-defined type containing an object reference
I don't see or I can't identify any object reference in my user-defined type. The following is the code:
Enum TCategory
DFAULT
NOUN
PRO
ADVERB
ADJECTIVE
VRB
ARTICLE
INDEF_ART
CONJ
PREPOSITION
SUFFIX
PREFIX
End Enum
Type TMeaning
TWord As String * 50
Category As TCategory
Attrib1 As Integer
End Type
Type TElement
Word As String * 20
Meaning0 As TMeaning
Meaning1 As TMeaning
Meaning2 As TMeaning
Meaning3 As TMeaning
Meaning4 As TMeaning
Meaning5 As TMeaning
Meaning6 As TMeaning
Meaning7 As TMeaning
Meaning8 As TMeaning
Meaning9 As TMeaning
Meaning10 As TMeaning
Meaning11 As TMeaning
Meaning12 As TMeaning
Meaning13 As TMeaning
Meaning14 As TMeaning
Meaning15 As TMeaning
Meaning16 As TMeaning
Meaning17 As TMeaning
Meaning18 As TMeaning
Meaning19 As TMeaning
End Type
Dim LookForElement As TElement, MaxSize, RecordNumber
Open FileName For Binary Access Read Lock Read As #1 Len = Len(LookForElement)
...
RecordNumber = 1
...
Seek #1, RecordNumber
Get #1, , LookForElement ' THIS IS WHERE I GET THE ERROR
...
What's wrong with my code?
Can't Get or Put an object reference variable or a variable of user-defined type containing an object reference
I don't see or I can't identify any object reference in my user-defined type. The following is the code:
Enum TCategory
DFAULT
NOUN
PRO
ADVERB
ADJECTIVE
VRB
ARTICLE
INDEF_ART
CONJ
PREPOSITION
SUFFIX
PREFIX
End Enum
Type TMeaning
TWord As String * 50
Category As TCategory
Attrib1 As Integer
End Type
Type TElement
Word As String * 20
Meaning0 As TMeaning
Meaning1 As TMeaning
Meaning2 As TMeaning
Meaning3 As TMeaning
Meaning4 As TMeaning
Meaning5 As TMeaning
Meaning6 As TMeaning
Meaning7 As TMeaning
Meaning8 As TMeaning
Meaning9 As TMeaning
Meaning10 As TMeaning
Meaning11 As TMeaning
Meaning12 As TMeaning
Meaning13 As TMeaning
Meaning14 As TMeaning
Meaning15 As TMeaning
Meaning16 As TMeaning
Meaning17 As TMeaning
Meaning18 As TMeaning
Meaning19 As TMeaning
End Type
Dim LookForElement As TElement, MaxSize, RecordNumber
Open FileName For Binary Access Read Lock Read As #1 Len = Len(LookForElement)
...
RecordNumber = 1
...
Seek #1, RecordNumber
Get #1, , LookForElement ' THIS IS WHERE I GET THE ERROR
...
What's wrong with my code?
ASKER
Adjusted points to 30
ASKER
thank you for the suggestion, swilt, but I believe the get statement can handle user-defined types. There is an example of the get statement using a user-defined type in the VB Help. My problem is why it doesn't work for my code.
ASKER CERTIFIED SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
Dim LookForElement As TElement, MaxSize, RecordNumber
Dim sBuf As String
Open "C:\Temp.bin" For Binary Access Read Lock Read As #1 Len = Len(LookForElement)
...
RecordNumber = 1
...
Seek #1, RecordNumber
Get #1, , sBuf
But then you have to chop up sBuf into LookForElement