|
v7: BinaryData.ReadString() проблема с чтением данных | ☑ | ||
---|---|---|---|---|
0
andrewks
02.09.11
✎
08:57
|
решил я тут заюзать класс BinaryData (1С++) для чтения данных. но вот незадача - не получается считывать данные ни через ReadString, ни через ReadData, возвращает всегда резалт = 0. вот пример тестового кода:
Перем ТекСтр; Если ЗагрузитьКомпоненту()<>1 Тогда Возврат; КонецЕсли; ИмяФайла1="D:\text1.txt"; ИмяФайла2="D:\text2.txt"; Попытка SF=СоздатьОбъект("BinaryData"); Исключение Сообщить("Не удалось создать класс BinaryData","!"); КонецПопытки; Если SF.LoadFromFile(ИмяФайла1,0)=1 Тогда Сообщить("Файл "+ИмяФайла1+" успешно прочитан."); Сообщить("Объём данных: "+SF.Size()+" байт"); //Рез=SF.ReadString(ТекСтр); Рез=SF.ПрочитатьСтроку(ТекСтр); Сообщить("Рез = "+Рез+", ТекСтр = "+ТекСтр); КонецЕсли; SF.WriteString("Это новая строка!",0); Если SF.SaveToFile(ИмяФайла2,0)=1 Тогда Сообщить("Файл "+ИмяФайла2+" успешно записан."); Сообщить("Объём данных: "+SF.Size()+" байт"); КонецЕсли; резалт: Файл D:\text1.txt успешно прочитан. Объём данных: 1067 байт Рез = 0, ТекСтр = Файл D:\text2.txt успешно записан. Объём данных: 1086 байт т.е. данные он считывает нормально, строку дописывает, в файл сохраняет нормуль, строка дописанная есть. а что не так с чтением? |
|||
1
andrewks
02.09.11
✎
08:59
|
забыл:
пробовал на разных версиях 1с++ (и на стабильной 2.5, и на дэвел 3.2.3), всё едино |
|||
2
1Сергей
02.09.11
✎
09:00
|
не вижу кода с ReadText()
|
|||
3
andrewks
02.09.11
✎
09:01
|
(2) Рез=SF.ReadString(ТекСтр);
|
|||
4
andrewks
02.09.11
✎
09:02
|
(2) сорри, ошибся в названии метода. исправил топик.
|
|||
5
1Сергей
02.09.11
✎
09:07
|
попробуй
Рез=SF.ReadString(ТекСтр,0); |
|||
6
andrewks
02.09.11
✎
09:09
|
(5) да уж по всякому пробовал, и так, и ReadData, всегда возвращает резалт = 0, и в данных пустота
|
|||
7
andrewks
02.09.11
✎
09:10
|
и на разных компах/осях пробовал. итог один
|
|||
8
Ёпрст
02.09.11
✎
09:12
|
(0)
ПрочитатьСтроку(<?>) Синтаксис: ПрочитатьСтроку(<strData>,<nLen>) Назначение: функция читает строку из данных объекта. Параметры: <strData> строка, для приема прочитанных данных. <nLen> режим чтения или длина; 0 - чтение строки, с терминатором CR LF, при этом чтение может завершиться, если встретится байт со значением 0; текущая позиция внутреннего указателя будет всегда за терминатором; также может произойти чтение до конца данных, при этом в strData будет прочитанная строка, и функция вернет 1 (0 функция вернет при следующем вызове). Иначе - чтение строки указанной длины. Если данных не достаточно или на этой длине встречается байт со значением 0, происходит исключение. По умолчанию 0. Возвращаемое значение 1 - строка прочитана, 0 - достигнут конец файла. |
|||
9
andrewks
02.09.11
✎
09:13
|
(8) прочитал уже это до дыр.
проблема в том, что не пашет |
|||
10
1Сергей
02.09.11
✎
09:16
|
(9) последнюю строчку прочти :)
|
|||
11
andrewks
02.09.11
✎
09:17
|
(10) "Объём данных: 1067 байт "
данные есть! |
|||
12
Ёпрст
02.09.11
✎
09:17
|
(9) после загрузки файла сделай
SF.Перейти(0,0) |
|||
13
1Сергей
02.09.11
✎
09:19
|
(11) не тупи
//Рез=SF.ReadString(ТекСтр); SF.ReadString(ТекСтр); |
|||
14
1Сергей
02.09.11
✎
09:20
|
(13)-1
|
|||
15
1Сергей
02.09.11
✎
09:20
|
(13) сам не тупи :)
|
|||
16
andrewks
02.09.11
✎
09:21
|
(12) пля.... и чё бы в документации это не отразить, что после загрузки указатель в конец прыгает.
действительно, в этом трабл был. кстати, у них в описалове ещё и Encoding врёт. все значения указаны +1 (т.е. написано, что 1 - ANSI (по умолчанию), а на самом деле ANSI - 0) |
|||
17
andrewks
02.09.11
✎
09:22
|
всем спасибо, особенно Ёпрст3
|
|||
18
1Сергей
02.09.11
✎
09:22
|
(16) это у тебя СП кто-то спёр и неправильный подсунул.
У меня: Кодировка (чтение/запись) - Число Содержит текущую кодировку, в которой будет происходить чтение и запись строк. 0 - ANSI (по умолчанию); 1 - OEM; 2 - UTF-16(LE); 3 - UTF-8. |
|||
19
andrewks
02.09.11
✎
09:23
|
(18) я онлайн пользуюсь:
http://www.1cpp.ru/docum/icpp/html/BinaryData.html#encoding ниавно думаю ,что там версия посвежее и более правильная ))) |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |