Программная работа с дисками

Модераторы: Hawk, Romeo, Absurd, DeeJayC, WinMain

Ответить
Den
Сообщения: 62
Зарегистрирован: 09 сен 2004, 15:10

Доброе время суток! С наступившим …!!!

Следующий исходник:

Код: Выделить всё

BOOL CTreb::OnInitDialog() 
{
       CDialog::OnInitDialog();
	
       // TODO: Add extra initialization here
       CStdioFile f_SemSO;

       TCHAR Path[2]; 
       GetModuleFileName(AfxGetInstanceHandle(), Path, sizeof(Path)/sizeof(TCHAR));

       char* name = Path;
       strcat(name, "\\\\InIn_1\\\\SemNet\\\\SemSO.txt");
       char* pFileName;
       pFileName = name;

      if( !f_SemSO.Open( pFileName, CFile::modeRead) )
     {
       ………………………………….	
      }
…………………………………………..
Проблема в том, что необходимо программным путем получить диск, на котором исходник, а именно – ‘С:’ (если на диске С). Получить в Path, присвоить name. Затем через ф-ю strcat(name, "\\\\InIn_1\\\\SemNet\\\\SemSO.txt") получить в name С:\\InIn_1\\SemNet\\SemSO.txt для работы с файлом SemSO.txt (или D: … , если на диске D и т.д.). Но получаю С:+++++\\InIn_1\\SemNet\\SemSO.txt (крестики обозначают абракадабру). Как убрать ее? Или, что по др. можно сделать? Пожалуйста, если не затруднит, сбросьте исходник.
Надеюсь, объяснил не очень коряво!

С уважением, Den!
Аватара пользователя
WinMain
Сообщения: 929
Зарегистрирован: 14 янв 2005, 10:30
Откуда: Москва
Контактная информация:

Код: Выделить всё

TCHAR Path[2]; 
       GetModuleFileName(AfxGetInstanceHandle(), Path, sizeof(Path)/sizeof(TCHAR));
В конце строки нужно ставить нулевой символ.
Path[1] = '0';

А вообще для этого есть готовые функции стандартной библиотеки С/С++ и Win32API.
Den
Сообщения: 62
Зарегистрирован: 09 сен 2004, 15:10

Спасибо! Действительно, выход не сложен.
Ответить