Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Как взять путь из _TCHAR* argv[]
|
|||
|---|---|---|---|
|
#18+
Здравствуйте, я знаю, что много статей написано и тем разобрано по этой теме, но разобраться все же я не могу полностью. Вот есть код маленькой программки. В настройках проекта стоит использовать юникод. Цель: необходимо в окошке сообщения получить путь до запускаемого файла. По факту выходит строка с какой то бредятиной. Я исхожу из того, что первым параметром будет полный путь до запускаемого файла, причем без имени файла (на каком то форуме так объясняли) #include <windows.h> #include <tchar.h> int main(int argc, _TCHAR* argv[]) { TCHAR* INSTALLDIR = argv[0]; MessageBox(NULL, INSTALLDIR, L"Proactive", MB_ICONINFORMATION | MB_OK); return 0; } Помогите разобраться с этой проблемой пожалуйта. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.11.2013, 19:05 |
|
||
|
Как взять путь из _TCHAR* argv[]
|
|||
|---|---|---|---|
|
#18+
xlamerЯ исхожу из того, что первым параметром будет полный путь до запускаемого файла, причем без имени файла (на каком то форуме так объясняли) Пойди на тот форум и плюнь в глаз тому, кто нёс такую чушь. Нулевым параметром идёт имя исполняемого файла. Будет оно с путём или без - зависит от совсем других факторов. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.11.2013, 19:12 |
|
||
|
Как взять путь из _TCHAR* argv[]
|
|||
|---|---|---|---|
|
#18+
Дважды обманули. Он и не первым и не вторым параметром идёт. Он вообще берётся из переменной окружения $PWD для Unix систем. Для Windows это возможно функция GetCurrentDirectory http://msdn.microsoft.com/en-us/library/windows/desktop/aa364934(v=vs.85).aspx или еще какой грязный хак. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.11.2013, 19:33 |
|
||
|
Как взять путь из _TCHAR* argv[]
|
|||
|---|---|---|---|
|
#18+
Тогда вопрос немного меняется. Есть код: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. Он работает при указании использовать многобайтную кодировку, то есть выдает путь в сообщении именно так, как мне нужно. Как сделать, чтобы этот код работал в под Юникод кодировкой? Знаю, что в tchar.h должны быть макросы для функций, применяющиеся здесь, но я не нашел их. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.11.2013, 19:40 |
|
||
|
Как взять путь из _TCHAR* argv[]
|
|||
|---|---|---|---|
|
#18+
А попробуй ради прикола #define _UNICODE ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.11.2013, 19:53 |
|
||
|
Как взять путь из _TCHAR* argv[]
|
|||
|---|---|---|---|
|
#18+
xlamer, Если у тебя UNICODE приложение, то какого фига ты везде работаешь с char ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.11.2013, 20:04 |
|
||
|
Как взять путь из _TCHAR* argv[]
|
|||
|---|---|---|---|
|
#18+
Я наверно не полностью объяснил. В настройках проекта уже изменен параметр Набор знаков на значение Использовать Юникод кодировку. Соответственно выдается куча ошибок: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. А функция GetCurrentDirectory, насколько я знаю, сообщает о текущей директории для программы, которая может быть любой, поэтому я ее не использую. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.11.2013, 20:06 |
|
||
|
Как взять путь из _TCHAR* argv[]
|
|||
|---|---|---|---|
|
#18+
Ты просто загляни в заголовочные файлы. Как определена функция. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.11.2013, 20:10 |
|
||
|
Как взять путь из _TCHAR* argv[]
|
|||
|---|---|---|---|
|
#18+
xlamer, Ну так странно что ты это тоже заметил, но спрашиваешь, почему же приложение, написанное не в юникоде, в юникоде таки не работает. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.11.2013, 20:15 |
|
||
|
Как взять путь из _TCHAR* argv[]
|
|||
|---|---|---|---|
|
#18+
Перед тем как создать тему я прочел вот эту статью . Но у меня не хватает знания и опыта в C++, чтобы нормально все это осуществить в конкретном примере. MasterZivно спрашиваешь, почему же приложение, написанное не в юникоде, в юникоде таки не работает Я понимаю, почему происходят ошибки и, где вы, MasterZiv, в предложении Как сделать, чтобы этот код работал в под Юникод кодировкой? увидели вопрос отчего же это все происходит? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.11.2013, 20:36 |
|
||
|
Как взять путь из _TCHAR* argv[]
|
|||
|---|---|---|---|
|
#18+
xlamer, Ответ очевиден — переписать все на использование юникод символов, или переписать на TCHAR . Все переменные char заменить на TCHAR, Все функции lstr* заменить на соответствующие _tcs* . ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.11.2013, 20:51 |
|
||
|
Как взять путь из _TCHAR* argv[]
|
|||
|---|---|---|---|
|
#18+
Переделал: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. Путь выводит, но потом сообщается следующая ошибка: Код: plaintext 1. И, как я понимаю, вместо L"Window" нужно поставить T"Window", но T никак не распознается. И еще вместо lstrcpyn здесь советуют воспользоваться StringCchCopy (buffer, src, sizeof (buffer)/sizeof (buffer [0]) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.11.2013, 02:45 |
|
||
|
Как взять путь из _TCHAR* argv[]
|
|||
|---|---|---|---|
|
#18+
xlamer, А lstrcpyn почему оставил? tcsncpy L"xxx" лучше заменять на _T("xxx"), но L"" работать должен. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.11.2013, 02:54 |
|
||
|
Как взять путь из _TCHAR* argv[]
|
|||
|---|---|---|---|
|
#18+
На tcsncpy выдает идентификатор не найден. Может надо что то еще подключить? Написал _tcsncpy, выдает то что на картинке. А потом опять Код: plaintext 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.11.2013, 03:36 |
|
||
|
Как взять путь из _TCHAR* argv[]
|
|||
|---|---|---|---|
|
#18+
И _T у меня необъявленный идентификатор. Я работаю в VS 2008, может это имеет значение. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.11.2013, 03:38 |
|
||
|
Как взять путь из _TCHAR* argv[]
|
|||
|---|---|---|---|
|
#18+
Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.11.2013, 07:19 |
|
||
|
Как взять путь из _TCHAR* argv[]
|
|||
|---|---|---|---|
|
#18+
xlamerНа tcsncpy выдает идентификатор не найден. Может надо что то еще подключить? Написал _tcsncpy, выдает то что на картинке. А потом опять Код: plaintext 1. По Generic-Text Mappings читать тут в общем, http://msdn.microsoft.com/en-us/library/vstudio/szdfzttz(v=vs.110).aspx и тут -- конкретно про _tcsncpy http://msdn.microsoft.com/en-us/library/vstudio/tsbaswba(v=vs.110).aspx ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.11.2013, 13:58 |
|
||
|
Как взять путь из _TCHAR* argv[]
|
|||
|---|---|---|---|
|
#18+
xlamer, ну чё, разобрался ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.11.2013, 16:32 |
|
||
|
|

start [/forum/topic.php?fid=57&msg=38480490&tid=2019847]: |
0ms |
get settings: |
8ms |
get forum list: |
12ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
165ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
41ms |
get tp. blocked users: |
1ms |
| others: | 298ms |
| total: | 541ms |

| 0 / 0 |
