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


I Love YaBB 2!

Сообщений: 13
Зарегистрирован: 19. Сентября 2007
Отсечь имя файла от пути
21. Сентября 2007 :: 20:22
Печать  
Здравствуйте, Подскажите пожалуйста, как можно выделить имя из пути. Например, имеем D:\конфа\внешотчеты\отчет.ert, нужно получить отчет.ert. Пути всегда разные. Понимаю, что надо посимвольно перебрать строку, определиться с позицией последнего "\" дроби, да взять кусок строки с найденная позиция + 1 по конец строки, но не пойму как это сделать. Спасибо
ЗЫ. Если не в ту ветку, Извините
  
Наверх
 
IP записан
 
sedmin
1c++ developer
Отсутствует


I Hate Fat YaBB 2!

Сообщений: 862
Зарегистрирован: 24. Мая 2006
Re: Отсечь имя файла от пути
Ответ #1 - 21. Сентября 2007 :: 21:30
Печать  
Вот и я говорил, что у народа не получится. Надо метод переделывать.  Подмигивание

А может и в самом деле переделать?
  
Наверх
 
IP записан
 
artbear
1c++ developer
1c++ moderator
Отсутствует


Эх, дайте что-нибудь новенькое
да полезное потести

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Отсечь имя файла от пути
Ответ #2 - 22. Сентября 2007 :: 09:21
Печать  
Это не к 1С++, а к штатным возможностям 1С.
В любой типовой конфе можно найти необходимый код для этого.
Например, в моем классе Общие.ФайловаяСистема есть след. код
Код
Выбрать все
//	НайтиПоследнееВхождение(Стр,Что)
//
//	Параметры:
//		Стр - строка в которой производится поиск, передается по значению
//		Что - искомая строка
//
//	Возвращаемое значение:
//		число - позиция в строке
//
//	Описание:
//		Функция возвращает позицию в которой находится последнее вхождение
//		подстроки Что в строке Стр
//
Функция НайтиПоследнееВхождение(Знач Стр, Что) Экспорт
	Поз = 0;
	Пока 1 = 1 Цикл
		ЛокПоз = Найти(Стр, Что);
		Если ЛокПоз = 0 Тогда
			Возврат Поз;
		КонецЕсли;
		Поз = Поз + ЛокПоз;
		Стр = Сред(Стр, ЛокПоз + 1);
	КонецЦикла;
КонецФункции


//	ИмяФайла(ИмяФайла)
//
//	Параметры:
//		ИмяФайла - строка, полное имя файла, включая путь
//
//	Возвращаемое значение:
//		строка с наименованием и расширением файла
//
//	Описание:
//		из полного имени файла выделяет собственно наименование и расширение
//
Функция ИмяФайла(ИмяФайла) Экспорт
	Возврат Сред(ИмяФайла,НайтиПоследнееВхождение(ИмяФайла,"\")+1);
КонецФункции	// ИмяФайла


//	КаталогФайла(ИмяФайла)
//
//	Параметры:
//		ИмяФайла - строка, полное имя файла, включая путь
//
//	Возвращаемое значение:
//		строка с наименованием каталога, в котором находится файл
//
//	Описание:
//		 из полного имени файла выделяет путь, по которому следует искать файл
//
Функция КаталогФайла(ИмяФайла) Экспорт
	Возврат Лев(ИмяФайла, НайтиПоследнееВхождение(ИмяФайла, "\"));
КонецФункции
 

  

OpenConf developer :: http://openconf.1cpp.ru&&FormEx developer :: http://formex.dorex.ru&&1C++ active developer && tester :: www.1cpp.ru
Наверх
GTalkSkype/VoIPICQ  
IP записан
 
Arta
1c++ power user
Отсутствует



Сообщений: 2537
Местоположение: Нижний Новгород
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Отсечь имя файла от пути
Ответ #3 - 22. Сентября 2007 :: 21:22
Печать  
Код
Выбрать все
FSO=СоздатьОбъект("Scripting.FileSystemObject");
File=FSO.GetFile("C:\autoexec.bat");
Сообщить("Дата создания - "+File.DateCreated);
Сообщить("Дата последнего доступа - "+File.DateLastAccessed);
Сообщить("Дата последней модификации - "+File.DateLastModified);
Сообщить("Диск - "+File.Drive.DriveLetter);
Сообщить("Имя - "+File.Name);
Сообщить("Родительский каталог - "+File.ParentFolder.Path);
Сообщить("Путь - "+File.Path);
Сообщить("Короткое имя - "+File.ShortName);
Сообщить("Путь в формате 8.3 - "+File.ShortPath);
Сообщить("Размер - "+File.Size);
Сообщить("Тип файла - "+File.Type);
 


  
Наверх
 
IP записан
 
sashas09
Full Member
***
Отсутствует


I Love YaBB 2!

Сообщений: 148
Местоположение: Киев
Зарегистрирован: 26. Апреля 2007
Пол: Мужской
Re: Отсечь имя файла от пути
Ответ #4 - 24. Сентября 2007 :: 10:24
Печать  
Предложение Арты лучшее выглядит, если нет предвзятости к скриптам

а на предыдущий вариант - вопрос - а что мешает искать Первое вхождение, но с конца?
  
Наверх
ICQ  
IP записан
 
Arta
1c++ power user
Отсутствует



Сообщений: 2537
Местоположение: Нижний Новгород
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Отсечь имя файла от пути
Ответ #5 - 24. Сентября 2007 :: 10:36
Печать  
sashas09 писал(а) 24. Сентября 2007 :: 10:24:
Предложение Арты лучшее выглядит, если нет предвзятости к скриптам

Если ты это будешь делать в цикле, то это будет медленее чем на языке 1С.
  
Наверх
 
IP записан
 
artbear
1c++ developer
1c++ moderator
Отсутствует


Эх, дайте что-нибудь новенькое
да полезное потести

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Отсечь имя файла от пути
Ответ #6 - 24. Сентября 2007 :: 11:18
Печать  
sashas09 писал(а) 24. Сентября 2007 :: 10:24:
Предложение Арты лучшее выглядит, если нет предвзятости к скриптам

а на предыдущий вариант - вопрос - а что мешает искать Первое вхождение, но с конца?

-1 по обоим пунктам Печаль

1) Здесь идет обращение к атрибутам файла, что замедляет работу Улыбка В моем варианте работаем только со строками.
Но, естественно, и этот вариант имеет право на жизнь.

2) Попробуй сделать обратный поиск, я готов посмотреть.
Мой код работает уже не один год Улыбка
  

OpenConf developer :: http://openconf.1cpp.ru&&FormEx developer :: http://formex.dorex.ru&&1C++ active developer && tester :: www.1cpp.ru
Наверх
GTalkSkype/VoIPICQ  
IP записан
 
Переключение на Главную Страницу Страницы: 1
ОтправитьПечать