Страница: 1 |
Страница: 1 |
Вопрос: dat файл
Добавлено: 28.07.09 22:07
Автор вопроса:
Maloi
Доброго времени суток, уважаемые.
Есть файл с расширением dat. Нужно открыть его и прочитать строку. Открываю, читаю, а там кракозябры. Пробовал в разных кодировках, не помогает. Подскажите как быть, пожалуйста.
Ответы
Всего ответов: 7
Номер ответа: 1
Автор ответа:
DesT
![]()
![]()
ICQ: 376533105
Вопросов: 1
Ответов: 24
Профиль | | #1
Добавлено: 28.07.09 23:53
это текстовый файл или бинарный?
Номер ответа: 2
Автор ответа:
Maloi
![]()
![]()
![]()
Вопросов: 20
Ответов: 28
Профиль | | #2
Добавлено: 29.07.09 07:55
бинарный, со структурой.
Номер ответа: 3
Автор ответа:
VβÐUηìt
![]()
![]()
![]()
Вопросов: 246
Ответов: 3333
Web-сайт:
Профиль | | #3
Добавлено: 29.07.09 09:41
Ты можешь показать код, которым ты сохраняешь его?
Номер ответа: 4
Автор ответа:
Maloi
![]()
![]()
![]()
Вопросов: 20
Ответов: 28
Профиль | | #4
Добавлено: 29.07.09 09:55
Кода нет, сохраняю его не я. Я его получаю уже в таком виде и мне нужно оттуда забрать инфу.
Номер ответа: 5
Автор ответа:
Starkiller
![]()
ICQ: 123123
Вопросов: 3
Ответов: 14
Web-сайт:
Профиль | | #5
Добавлено: 29.07.09 11:32
System.IO.BinaryReader юзаешь?
Номер ответа: 6
Автор ответа:
Maloi
![]()
![]()
![]()
Вопросов: 20
Ответов: 28
Профиль | | #6
Добавлено: 29.07.09 11:43
вот код. Вроде все должно работать, но выдает ошибку при записи в структуру
 
im fStream As Stream
 
im bStream As BinaryReader
 
im i As Integer, j As String, str As String, a As Integer
 
im fName As String
 
im fLen As Integer, b As Byte
 
im pr As Double
 
im handle As New GCHandle
 
im usStr = New ex 'Структура, определённая выше
fStream = New FileStream(fName, FileMode.Open, FileAccess.Read)
bStream = New BinaryReader(fStream, System.Text.Encoding.GetEncoding("UTF-8"
)
fLen = fStream.Length
 
im Arr(fLen) As Byte
a = Marshal.SizeOf(GetType(ex))
Arr = bStream.ReadBytes(fLen)
handle = handle.Alloc(Arr, GCHandleType.Pinned)
usStr = Marshal.PtrToStructure(handle.AddrOfPinnedObject, GetType(ex)) 'Здесь выдает ошибку 'В экземпляре объекта не задана сылка на объект'
handle.Free()
pr = usStr.fPrice
fStream.Close()
bStream.Close()
Номер ответа: 7
Автор ответа:
Maloi
![]()
![]()
![]()
Вопросов: 20
Ответов: 28
Профиль | | #7
Добавлено: 29.07.09 11:56
Поправил работает.
im fStream As Stream
im bStream As BinaryReader
im i As Integer, j As String, str As String, a As Integer
im fName As String
im fLen As Integer, b As Byte
im pr As Double
im usStr = New ex 'Структура, определённая выше
fStream = New FileStream(fName, FileMode.Open, FileAccess.Read)
bStream = New BinaryReader(fStream, System.Text.Encoding.GetEncoding("UTF-8"
)
fLen = fStream.Length
im Arr(fLen) As Byte
 
im handle As GCHandle = GCHandle.Alloc(Arr, GCHandleType.Pinned)
a = Marshal.SizeOf(GetType(ex))
Arr = bStream.ReadBytes(fLen)
usStr = Marshal.PtrToStructure(handle.AddrOfPinnedObject, GetType(ex))
handle.Free()
pr = usStr.fPrice
fStream.Close()
bStream.Close()
Только теперь другой вопрос, как все это прочитать из структуры?