Имя: Пароль:
1C
 
Как выделить из <путь\ИмяФайла> Имя файла
0 Jeronimo
 
18.08.05
16:16
Как выделить из <Путь\ИмяФайла> Путь
1 SNT
 
18.08.05
16:19
У файлов как правило есть расширение, то бишь есть "точка", попробуй от нее плясать...<Путь\ИмяФайла> - строка?
2 Jeronimo
 
18.08.05
16:20
<Путь\ИмяФайла> - строка
не факт что будет точка
3 Wasya
 
18.08.05
16:20
Подробнее опиши задачу. Может там где ты брал <Путь\ИмяФайла>, можно взять просто ИмяФайла.
4 OFF
 
18.08.05
16:24
Найти позиции последнего слэша
кусок строки от первого символа до позиции последнего слэша = сабж
наверно
5 Rovan
 
гуру
18.08.05
16:24
(0) В кр. случае циклом бежим побуквенно с конца строки до первого "\"
6 OFF
 
18.08.05
16:25
Соврал :(
От последнего слеша + 1 и до конца
7 Jeronimo
 
18.08.05
16:25
в данном случае есть просто строка
неужели в 1С нет встроенной функции для решения такой задачи??
8 NS
 
18.08.05
16:29
(7) Назови язык, в котором есть....
9 ИвановИван
 
18.08.05
16:29
(7) лол, даже не лол а синдрома даунито храмосом
10 Jeronimo
 
18.08.05
16:31
(8,9) в ПХП такое есть
11 SNT
 
18.08.05
16:32
(4)... дык в этом задача и состоит- найти последний слэш!...все остальной ерунда- дело техники.
12 OFF
 
18.08.05
16:33
упссссс, а че надоть то?
В заголовке - "Имя", в "0" посте - "путь"
13 smaharbA
 
18.08.05
16:34
(8) Split(FileName,"\")
14 Jeronimo
 
18.08.05
16:34
(12) нужно выделить из строки имя и путь
15 OFF
 
18.08.05
16:35
(11) Проблема найти?
Смотри типовые, как ФИО работает
16 smaharbA
 
18.08.05
16:35
+(13) и для (9)
17 skunk
 
18.08.05
16:38
Как из длинного имени файла получить короткое?



Описание:
Нужно из диного имени файла получить короткое. То есть преобразовать строку ввида: "d:\developer\kill.ert", в строку "kill.ert"


Решение:
//*******************************************
// GetShortName(Name)
//
// Параметры:
//  Name     - Строка. Полное имя файла.
//
// Возвращаемое значение:
//  Строка. Короткое имя файла.
//
// Описание:
//  Функция извлекает из длинного имени файла
//  его короткое.
//
function GetShortName(Name)
    Answer = Name;
    // Получим длину переданной нам строки.
    LenName = strlen(Answer);
    // Установим указатель на последний символ.
    Pos = LenName;
    // Начнем искать самый последний слэш.
    // Если таковой имеется.
    Make = "yes";
    while Make = "yes" do
         // Посмотрим текущий символ.
         // Не слэш ли он.
         if mid(Answer, Pos, 1) = "\" then
              // Получим строку от слэша и до конца.
              // Это и есть короткое имя файла.
              Answer = right(Answer, LenName - Pos);
              // Выходим из цикла
              Make = "no";
         endif;
         // Уменьшим указатель на текущий символ.
         Pos = Pos - 1;
         // Если он равен нулю, то просмотрели все.
         // Слэша нет. Значит нам передали короткое имя.
         if Pos = 0 then
              // Выходим из цикла
              Make = "no";
         endif;
    enddo;
    return Answer;
endfunction
18 Jeronimo
 
18.08.05
16:40
skunk, спасибо
19 smaharbA
 
18.08.05
16:46
Функция ИмяФайлаИз(Файл)
   Если ПустоеЗначение(ФС.НайтиПервыйФайл(Файл))=1 Тогда
       Предупреждение("Неверно выбран файл!!!",10);
       СтатусВозврата(0);
       Возврат "Неверно выбран файл!!!";
   КонецЕсли;
   Попытка
       WshShell = CreateObject("WScript.Shell");
       scrptCtrl=createobject("MSScriptControl.ScriptControl");
       scrptCtrl.language="vbscript";
       СтрокаДействия="Function SplitVBS()
       |F=Split("""+Файл+""",""\"")
       |SplitVBS=F(Ubound(F))
       |End Function";
       scrptCtrl.addcode(СтрокаДействия);
       а=scrptCtrl.run("SplitVBS");
       Сообщить(а);
       Возврат а;
   Исключение
       Сообщить("Непонятки "+ОписаниеОшибки());
   КонецПопытки;
   
КонецФункции    // ИмяФайлаИз
20 smaharbA
 
18.08.05
16:52
(17)(18) можно еще проще
fso = CreateObject("Scripting.FileSystemObject");
GetAName = fso.GetFileName(ДлинноеИмяФайла);
Сообщить(GetAName);
21 SNT
 
18.08.05
16:52
(15) так почти на любой вопрос можно ответить по программированию в 1С:)
22 Jeronimo
 
18.08.05
16:52
(19) тоже вариант.
но вариант только на 1С кажется симпатичнее
23 Jeronimo
 
18.08.05
16:57
(20) smaharbA, опишите пожалуйста подробнее этот механизм. и как можно получить таким образом путь без имени файла
24 skunk
 
18.08.05
16:58
(20)если можно решить проблему на родном языке одинСи... зачем лезть в дебри...

а вдруг завтра MS из винды выкенет и fso... как выкидывает whs... что делать?
25 smaharbA
 
18.08.05
17:04
(24) а вба не выкинет, (23) можно это и в коммандной строке проделать, обычными коммандами системы... например dir /b ДлинноеИмяФайла (конечно если файл существует), можно и не для существующего файла сделать и в 1Сэ передать...
(24) согласен, что решать лучче средствами 1Сэ, но так бывает гибче, можно механизм отработать и так и так, при разных условиях...
А если завтра война? (с)
26 smaharbA
 
18.08.05
17:04
(23) а ты запиши это в 1Сэ и позырь...
27 Jeronimo
 
18.08.05
17:08
(26) я позырил. работает, спасибо. но здесь находится ИмяФайла, а если нужен Путь без имени?
28 Старый
 
18.08.05
17:12
(8,9) fnsplit, fnmerge в C++
29 Старый
 
18.08.05
17:16
//____________________________________________
Функция ВыделитьИмяФайла(Пимя)
   Рез = СтрЗаменить(Пимя,"\",РазделительСтрок);  
   Возврат СтрПолучитьСтроку(Рез, СтрКоличествоСтрок(Рез));
КонецФункции
30 smaharbA
 
18.08.05
17:20
(27) блин да ты чего Путь=Средн(ПолноеИмяФайла,1,СтрДлина(ПолноеИмяФайла)-СтрДлина(ИмяФайла)-1)
31 smaharbA
 
18.08.05
17:21
(29) хороший сплит... ;)
32 Старый
 
18.08.05
17:21
(29) ... Эх, кхе... кхе... Совсем старый стал...
в (0) невнимательно прочитал, нужен путь оказывается.
33 smaharbA
 
18.08.05
17:23
(32) дак там в (29) ему и путь и имя и фамилия ;)
34 Старый
 
18.08.05
17:23
(32)   А в теме то имя файла!
35 Jeronimo
 
18.08.05
17:24
(30, 32) интересовало нахождение и пути и имени
(29, 30) спасибо, это то что нужно
36 raykom
 
18.08.05
17:33
ФС.АтрибутыФайла(<ИмяФайла>, <РазмерФайла> , <АтрибутыФайла>, <ВремяСоздания>,

           <ВремяПоследнДоступа>, <ВремяПоследнЗаписи>, <РасширенноеИмяФайла>)
37 smaharbA
 
18.08.05
17:34
(36) когда файл существует...
38 raykom
 
18.08.05
17:35
Так назначить или определить?
39 raykom
 
18.08.05
17:37
А путь = строка путиФайла - АтрибутыФайла>ИмяФайла