gvg |
Отправлено: 05.12.2006, 09:28 |
|
Машинист паровоза
Группа: Участник
Сообщений: 222
|
Кто знает, есть ли функция, позволяющая получить имя исходя из исходного имени и маски. Например, по команде:
copy 12345678.abc ??90.?
получаем файл 1290.a
Как получить новое имя в программе? Поискал, что-то не нашел... |
|
AVC |
Отправлено: 05.12.2006, 10:16 |
|
Ветеран
Группа: Модератор
Сообщений: 1583
|
Новое в смысле сгенерировать такое имя, которого нет в целевом каталоге? Перебор и проверка. |
|
gvg |
Отправлено: 05.12.2006, 10:25 |
|
Машинист паровоза
Группа: Участник
Сообщений: 222
|
Да нет, получить имя по указанным правилам... Ни хрена ничего не нахожу по этой теме вообще, кроме TMask и MatchedMask. Но это не то |
|
Grigoriy |
Отправлено: 06.12.2006, 03:30 |
|
Мастер участка
Группа: Участник
Сообщений: 381
|
Дружище, какие правила нужны ?
Их можно придумать неограниченное количество...
|
|
gvg |
Отправлено: 06.12.2006, 10:59 |
|
Машинист паровоза
Группа: Участник
Сообщений: 222
|
Придумать можно что угодно, это верно. Но есть правила подстановки символов '*' и '?' для именования файлов, уже придуманные и реализованные в операционной системе. А вот функции, позволяющей воспользоваться этими правилами, увы, вроде как и нет... |
|
olegenty |
Отправлено: 06.12.2006, 15:00 |
|
Ветеран
Группа: Модератор
Сообщений: 2412
|
RTFM
FindFirstFile, FindNextFile, FindClose
|
|
gvg |
Отправлено: 06.12.2006, 17:25 |
|
Машинист паровоза
Группа: Участник
Сообщений: 222
|
QUOTE (olegenty @ 06.12.2006, 15:00) | RTFM
FindFirstFile, FindNextFile, FindClose |
Вы прочитали вопрос? Мне файл не нужно искать по маске. Его нет. Мне его по маске записать нужно исходя из имеющегося имени.
Имеем:
имя 12345678.abc
маска ??90.?
получаем 1290.a
Вопрос — а чем это получить? |
|
olegenty |
Отправлено: 06.12.2006, 17:42 |
|
Ветеран
Группа: Модератор
Сообщений: 2412
|
пока не понял, почему ты получил именно 1290.а, а, например, не 0090.0?
в любом случае, сначала ты проверяешь по маске, что имеешь, а потом, если ничего не имеешь, исходя из СОБСТВЕННЫХ правил генерируешь имя, например, применяя посимвольный инкремент.
|
|
gvg |
Отправлено: 06.12.2006, 17:54 |
|
Машинист паровоза
Группа: Участник
Сообщений: 222
|
QUOTE (olegenty @ 06.12.2006, 17:42) | пока не понял, почему ты получил именно 1290.а, а, например, не 0090.0?
в любом случае, сначала ты проверяешь по маске, что имеешь, а потом, если ничего не имеешь, исходя из СОБСТВЕННЫХ правил генерируешь имя, например, применяя посимвольный инкремент. |
Получил по правилам ОС. Выполни команду в командной строке
copy 12345678.abc ??90.?
и получишь результат (при условии что 12345678.abc существует). И СОБСТВЕННЫХ правил мне не нужно. Нужна функция, следующая правилам ОС. А пока вижу, что не многие теперь знают про само существование этих правил |
|
AVC |
Отправлено: 06.12.2006, 18:35 |
|
Ветеран
Группа: Модератор
Сообщений: 1583
|
QUOTE |
А пока вижу, что не многие теперь знают про само существование этих правил
|
Тут вы заблуждаетесь. Просто за то время что вы ищите готовые функции (я их тоже не встречал, правда и не искал) можно написать нужную именно вам их реализацию. |
|
gvg |
Отправлено: 06.12.2006, 20:03 |
|
Машинист паровоза
Группа: Участник
Сообщений: 222
|
QUOTE | Тут вы заблуждаетесь. | Сужу по ответам...
QUOTE | Просто за то время что вы ищите готовые функции (я их тоже не встречал, правда и не искал) можно написать нужную именно вам их реализацию. | Старый, наверное, стал — лень заела. Но, по-всей видимости, придется. Тем более, хотя этот вопрос поднимался другими на многих форумах, никто ответа не дал. Нет такой функции — вот что странно! (вроде под Линукс есть, но исходников не нашел) |
|
AVC |
Отправлено: 07.12.2006, 09:12 |
|
Ветеран
Группа: Модератор
Сообщений: 1583
|
QUOTE (gvg @ 06.12.2006, 19:03) | вроде под Линукс есть, но исходников не нашел |
Я видел реализацию в системе имитации новеловской сети на линуксе, кажется называется марс. Это около 20 срок кода которые проверяют подходит ли текущая строка под маску. Применялась при необходимости обрабатывать группу файлов по маске. Из за различных кодировок русского в новеле и линуксе именно этот кусок порождал ошибки.
К сожалению найти у себя не смог — исходник затерялся на просторах локальной сети. |
|