Форум программистов, компьютерный форум, киберфорум
Visual C++
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.71/7: Рейтинг темы: голосов - 7, средняя оценка - 4.71
172 / 118 / 57
Регистрация: 08.01.2013
Сообщений: 664

Открытие файла по заданному пути, где запущена программа

05.09.2015, 19:24. Показов 1548. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
1)Программа должна понять, в какой директории она запущена(над этим долго голову ломал так не нашел решение), узнать путь и запихнуть в динамический массив, а в конце программы удалив массив. По аналогии как во 2

2)Программа считывает папку с файлом, который введет пользователь
Пример: Программа запущена в директории C:\Test\0001\One.exe. В этой же директории лежит папка "book1" с файлом inf12.dat. Полный путь файла C:\Test\0001\book1\inf12.dat.
Смысл в том, что пользователь вводит в консоль только "book1\inf12.dat"
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
int kstm, q;
char str[256];
setlocale(0, "rus");
printf("Введите папку с файлом\n");
cin >> str;
kstm = strlen(str);
printf("%d\n", kstm);
char* ptm = new char[kstm];
// с этого момента идут косяки, массив ptm становиться в 2 раза больше
// и вторую половину он забивает рандомными буквами
for (q = 0; q < kstm; q++)
{
    ptm[q] = str[q];
}
printf(ptm);
delete ptm;
system("pause");
return 0;
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
05.09.2015, 19:24
Ответы с готовыми решениями:

открытие файла по заданному пути c ShellExecuteA
здравствуйте. Есть вот такой код. Сейчас нас интересует часть которая начинается с else if а именно функция ShellExecuteA в этой части....

Drag&drop определенного типа файлов в директорию, где запущена программа
Подскажите, как реализовать drag&amp;drop определенного типа файлов в директорию, откуда запущена программа? Работаю в delphi xe8

Открытие файла по пути
мне надо открыть файл который выбирается пользователем в диалоговом окне, но путь сохраняется без двойных слэшев как принято в С++ , что...

5
Ушел с форума
Эксперт С++
 Аватар для Убежденный
16481 / 7444 / 1187
Регистрация: 02.05.2013
Сообщений: 11,616
Записей в блоге: 1
05.09.2015, 19:28
Цитата Сообщение от bloomder Посмотреть сообщение
Программа должна понять, в какой директории она запущена
Э-э...
Это тонкий момент. Есть понятие "текущая директория" - это каталог, из
которого была запущена программа (может измениться в процессе работы).
И есть понятие каталога, в котором программа физически размещается.
Вам первое нужно или второе ? Если первое, тогда зовем GetCurrentDirectory и все.
Если второе, тогда GetModuleFileName и обрезаем все, что находится за
последним слэшем.
0
172 / 118 / 57
Регистрация: 08.01.2013
Сообщений: 664
05.09.2015, 19:56  [ТС]
Смысл в том, когда будет уже готовая программа, когда копируешь exe'шник в другую директорию и при запуске с новой директории, чтобы она работала в той директории где запущенна то бишь в новой. Видимо второе нужно. Код можешь написать? Приложение консольное и в какой части кода нужно впихнуть?
0
 Аватар для Shvonder
46 / 35 / 24
Регистрация: 16.03.2015
Сообщений: 179
05.09.2015, 20:51
Убежденный, Рот-Фронт.
bloomder,
Нажми на кнопку.., но не советую
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
////////////////////////////////////////////////////////////////////////////////
// WinMain.cpp
 
#include <windows.h>
#define PATH_SEPARATOR TEXT("\\")
#define ARRAY_COUNT( array ) \
    ( sizeof(array) / sizeof((array)[0]) )
 
//////////////////////////////////////////////////////////////////////
// appBaseDir
 
const TCHAR* appBaseDir()
{
    int i;
    HINSTANCE hInstance=GetModuleHandle(NULL);
    static TCHAR Result[256]=TEXT("");
    if(!Result[0])
    {
#if UNICODE
        char cByte[256];
        GetModuleFileNameA(hInstance,cByte,ARRAY_COUNT(cByte));
        MultiByteToWideChar(CP_ACP,0,cByte,-1,Result,ARRAY_COUNT(Result));
#endif
        GetModuleFileName(hInstance,Result,ARRAY_COUNT(Result));        
        for( i=lstrlen(Result)-1; i>0; --i )
            if(Result[i-1]==PATH_SEPARATOR[0]||Result[i-1]=='/') break;
        Result[i]=0;
    }
    return Result;
}
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE, LPSTR, int)
{
    TCHAR HiBitch[1024];
    wsprintf(HiBitch,TEXT("You Suck... %s"),appBaseDir());
    MessageBox(NULL,HiBitch,TEXT("Di3 Bitch"),MB_OK|MB_ICONINFORMATION|MB_SETFOREGROUND|MB_TOPMOST);
    return 0;
}
 
////////////////////////////////////////////////////////////////////////////////
// <<eof>> WinMain.cpp
////////////////////////////////////////////////////////////////////////////////
0
Ушел с форума
Эксперт С++
 Аватар для Убежденный
16481 / 7444 / 1187
Регистрация: 02.05.2013
Сообщений: 11,616
Записей в блоге: 1
05.09.2015, 21:08
Цитата Сообщение от Shvonder Посмотреть сообщение
C++
1
2
3
4
5
#if UNICODE
    char cByte[256];
    GetModuleFileNameA(hInstance,cByte,ARRAY_COUNT(cByte));
    MultiByteToWideChar(CP_ACP,0,cByte,-1,Result,ARRAY_COUNT(Result));
#endif
Проще сразу GetModuleFileNameW
0
 Аватар для Shvonder
46 / 35 / 24
Регистрация: 16.03.2015
Сообщений: 179
05.09.2015, 21:54
Цитата Сообщение от Убежденный Посмотреть сообщение
Проще сразу
-- ни-чё, для сельской местности пойдёт; :-)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
05.09.2015, 21:54
Помогаю со студенческими работами здесь

Запись файла в каталог, откуда программа была запущена
Добрый день! Подскажите как это сделать. Разрабатываю программу, есть в ней куча диалогов (открыть, сохранить) для выбора файлов из...

открытие файла по пути её нахождения
1) есть файл, в формате .rar (или другого формата, тут без разницы) на компе в далёком пути его нахождения вида: ...

Программа не находит файл по заданному пути хотя он есть
Исключение FileNotFoundException FileStream ght = File.Open(string.Format(@&quot;C:\экс\{0}\{1}&quot;, Tematik, y), ...

Сохранение файла по заданному пользователем пути
У меня возникла проблема, я написал программу которая по локальной сети передает файлы и она работает нормаль то есть сервер сокет передает...

Проверка наличия файла по заданному пути
Здравствуйте. Подскажите, пожалуйста, как проверить наличие файла по заданному пути, чтобы не возникали ошибки при попытке его открытия?...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
SDL3 для Web (WebAssembly): Работа со звуком через SDL3_mixer
8Observer8 08.02.2026
Содержание блога Пошагово создадим проект для загрузки звукового файла и воспроизведения звука с помощью библиотеки SDL3_mixer. Звук будет воспроизводиться по клику мышки по холсту на Desktop и по. . .
SDL3 для Web (WebAssembly): Основы отладки веб-приложений на SDL3 по USB и Wi-Fi, запущенных в браузере мобильных устройств
8Observer8 07.02.2026
Содержание блога Браузер Chrome имеет средства для отладки мобильных веб-приложений по USB. В этой пошаговой инструкции ограничимся работой с консолью. Вывод в консоль - это часть процесса. . .
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru