Переключение на Главную Страницу Страницы: 1 ОтправитьПечать
Обычная тема BinaryData не обрабатывает ошибку некорректного имени файла (число прочтений - 1291 )
sacred
YaBB Newbies
*
Отсутствует


1C++ rocks!

Сообщений: 10
Зарегистрирован: 27. Апреля 2012
Пол: Мужской
BinaryData не обрабатывает ошибку некорректного имени файла
20. Ноября 2019 :: 22:13
Печать  
Код (Pascal)
Выбрать все
Запись = СоздатьОбъект("BinaryData");
Запись.ПодключитьсяКФайлу("с:\                    log.txt", 2, 2);
 


Этот код отрабатывает без ошибок, но никакой файл не создаётся и ничего в него не записывается.
Хотелось бы иметь поведение как во встроенном объекте Текст, который на такое имя реагирует адекватно, вызывая исключение "Неверное имя файла!"
  
Наверх
 
IP записан
 
АЛьФ
FormEx developer
1c++ developer
Отсутствует



Сообщений: 1537
Местоположение: Санкт-Петербург
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: BinaryData не обрабатывает ошибку некорректного имени файла
Ответ #1 - 21. Ноября 2019 :: 07:38
Печать  
А что при этом возвращает метод ПодключитьсяКФайлу()?
  

FormEx developer
Наверх
www  
IP записан
 
trad
1c++ power user
1c++ donor
1c++ moderator
Отсутствует



Сообщений: 3046
Местоположение: Киров
Зарегистрирован: 23. Мая 2006
Пол: Мужской
Re: BinaryData не обрабатывает ошибку некорректного имени файла
Ответ #2 - 21. Ноября 2019 :: 07:40
Печать  
этот код конечно ничего не запишет, надо хоть строку записать и файл закрыть
А так, нормальное имя файла, с пробелами в начале. Создается и записывается
  

1&&2&&3
Наверх
 
IP записан
 
trad
1c++ power user
1c++ donor
1c++ moderator
Отсутствует



Сообщений: 3046
Местоположение: Киров
Зарегистрирован: 23. Мая 2006
Пол: Мужской
Re: BinaryData не обрабатывает ошибку некорректного имени файла
Ответ #3 - 21. Ноября 2019 :: 07:41
Печать  
//*******************************************
Процедура Сформировать()
     
     ИмяФайла = "c:\                    log.txt";
     
     Запись = СоздатьОбъект("BinaryData");
     Запись.ПодключитьсяКФайлу(ИмяФайла, 2, 2);
     Запись.ЗаписатьСтроку("1234");
     Запись.Закрыть();
     
     Сообщить("СуществуетФайл " + ФС.СуществуетФайл(ИмяФайла));
     
КонецПроцедуры



СуществуетФайл 1
  

1&&2&&3
Наверх
 
IP записан
 
sacred
YaBB Newbies
*
Отсутствует


1C++ rocks!

Сообщений: 10
Зарегистрирован: 27. Апреля 2012
Пол: Мужской
Re: BinaryData не обрабатывает ошибку некорректного имени файла
Ответ #4 - 21. Ноября 2019 :: 22:11
Печать  
Да, неудачно получилось.
В общем я имел в виду, что когда путь некорректен - то всё молча работает. Просто у меня там константа была нетиповая. Кстати странное. Когда я просто написал типа Константа.ЕёИмя+"log.txt" в качестве аргумента ПодключитьсяКФайлу вот тогда в результате вернулся 0. А вот если просто захардкодить эти 255+ символов, то всё работает. Но это уже какие-то глюки самой 1с.

Т.е. спасибо, с вашей помощью разобрался.

После вашего ответа, я заподозрил, что объект BinaryData имеет какой-то смысл в отсутствии файла.
То есть, насколько я понял, в него можно писать (и читать из) данные, вообще не имея в виду никакой файл.
Отсюда другой вопрос. Если в объект записать данных, а потом подключить его к файлу (не пустому), что в итоге должно произойти?
  
Наверх
 
IP записан
 
trad
1c++ power user
1c++ donor
1c++ moderator
Отсутствует



Сообщений: 3046
Местоположение: Киров
Зарегистрирован: 23. Мая 2006
Пол: Мужской
Re: BinaryData не обрабатывает ошибку некорректного имени файла
Ответ #5 - 22. Ноября 2019 :: 06:34
Печать  
при подключении к файлу, неважно, существующему или нет, пустому или нет, происходит инициализация объекта

т.е. в таком коде:
Запись = СоздатьОбъект("BinaryData");
Запись.ЗаписатьСтроку("1111"); //эта строка не имеет смысла
Запись.ПодключитьсяКФайлу(); //потому что внутри происходит неявный .Закрыть()
  

1&&2&&3
Наверх
 
IP записан
 
Переключение на Главную Страницу Страницы: 1
ОтправитьПечать