Как динамически получить имя файла в соответствии с расширением? - PullRequest
0 голосов
/ 05 февраля 2009

В качестве ответа на этот вопрос ....

Теперь я нашел ответ на этот вопрос комментарием пользователя j_random_hacker. Здесь Windows следует стандарту именования файлов 8.3, что означает, что Turbo C может читать только файлы с длиной имени 8 символов и расширением 3 символа. Таким образом, окна будут давать другое имя любому файлу, который не соответствует стандарту именования 8.3. Как и в моем случае, Windows давала HIBDS ~ 1.TTC для фактического имени файла HI.TTCN .

Теперь моя проблема в том, что я хочу взять это имя файла в качестве аргумента во время выполнения, как показано ниже

glc hi.ttcn

Здесь glc - мой файл .exe, который проверяет нарушения правил кодирования, а hi.ttcn - фактический файл TTCN, который нужно проверить. Итак, проблема в том, что, как сказано выше, windows дает другое имя hi.ttcn, поэтому моя программа не может открыть этот файл, говоря «Имя файла не существует», потому что я даю ту же строку аргумента «hi.ttcn» Еореп. Итак, как я могу получить выделенное для Windows имя файла во время выполнения для заданной строки аргумента (означает, что я хочу получить строку "HIBDS ~ 1.TTC", когда задано "HI.TTCN".)

Ответы [ 3 ]

3 голосов
/ 05 февраля 2009

Хорошо, вот страница с описанием функции Win32, которую вам нужно вызвать:

Функция GetShortPathName

Вам нужно будет #include <windows.h> наверху вашей программы и, вероятно, перепрыгнуть через кучу других обручей, чтобы заставить его скомпилироваться на таком старом компиляторе (может быть, Turbo C даже не поставляется с заголовками Windows?) Удачи!

2 голосов
/ 05 февраля 2009

Я верю, что это можно сделать, но это сложно, так как требует углубления в вызовы Win32 API. намного будет проще просто перекомпилировать с использованием современного компилятора - есть ли причина, почему это невозможно сделать?

Вот ссылки на два бесплатных высококачественных компилятора C / C ++, которые не будут иметь проблем с длинными именами файлов: Microsoft Visual C ++ Express Edition ; MinGW .

1 голос
/ 05 февраля 2009

Вы также можете использовать dir /x для получения коротких имен файлов из командной строки

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...