Страница: 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()
Только теперь другой вопрос, как все это прочитать из структуры?