Модераторы: Daevaorn

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> chdir.exe, смена диска и путя 
:(
    Опции темы
Знак
Дата 3.6.2005, 12:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 135
Регистрация: 29.4.2005

Репутация: -5
Всего: нет



Сталкнулся с проблемкой
С++ никак нехочет менять диск под досом ну нивкакую!!
Под оболочкой С++ по умолчанию всё верно .. меняет дисковод и С и D ...
А в DOS только на A и B ... Хоть ты тресни.
Что делать непойму..
Замысел был сл. В коммандную строку вписываешь ...
chdir.exe C:
или
myprog.exe f:

Ну и переходишь на диск..
А тут еще и int в char непереводятся..

МОжет кто облегчит мои страдания и кинет текст проги..?

Вот моя прога недоделана переделана... smile

smile
Код

#include <stdio.h>
#include <direct.h>
#include <conio.h>
#include <stdlib.h>

int main(int re)
{
      int i,n, result;

//    clrscr();
//   re[1]='\h';
//   re=3;
//   n = atoi(re);

    result=re+64;
    printf("%d \n",re);
    if (!re)
    {printf("Инструкция \n");}
    else{

  if ( _chdrive(re) == 0)
    printf("Успешно изменён текущий Диск на %c \n", result);
  else
    printf("Невозможно изменить текущий Диск на %c \n", result);
  return 0;
  }
}

--------------------
Ищу 2 файлаowl.tchwindows.tch 
PM MAIL   Вверх
Дрон
Дата 3.6.2005, 12:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Java-ненавистник :)
****


Профиль
Группа: Участник Клуба
Сообщений: 3179
Регистрация: 29.12.2002
Где: Санкт-Петербург

Репутация: 10
Всего: 93



Во первых, не стоит называть прогу chdir.exe, т.к. есть встроенная команда chdir.
Во вторых, main не принимает аргумент типа int, посмотри документацию.


--------------------
Да. Именно так.
PM   Вверх
bel_nikita
Дата 3.6.2005, 12:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Эксперт
Сообщений: 2304
Регистрация: 12.10.2003
Где: Поезд №21/22 ( ст . Прага )

Репутация: 21
Всего: 47



вместо int main(int re) надо main( int argc, char *argv[ ], char *envp[ ] )


--------------------
user posted image — регистрация доменов от 150 руб.
PM MAIL WWW ICQ   Вверх
Дрон
Дата 3.6.2005, 12:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Java-ненавистник :)
****


Профиль
Группа: Участник Клуба
Сообщений: 3179
Регистрация: 29.12.2002
Где: Санкт-Петербург

Репутация: 10
Всего: 93



bel_nikita
Точно smile
Только последний параметр не обязателен и тут не нужен.

Знак
При этом в argc будет число, указывающее на количество переданных параметров+1 (т.к. всегда есть хотя один параметр -- само имя программы).
В argv будет массив строк, содержащий эти параметры.


--------------------
Да. Именно так.
PM   Вверх
jorkug
Дата 4.6.2005, 03:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 97
Регистрация: 21.3.2005

Репутация: нет
Всего: 1



Знак
_chdrive меняет лишь свою текущую рабочую директорию
Цитата(MSDN)

Remarks
The _chdrive function changes the current working drive to the drive specified by drive. This function changes only the working drive;


Это сообщение отредактировал(а) jorkug - 4.6.2005, 03:35
PM MAIL   Вверх
Знак
Дата 4.6.2005, 08:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 135
Регистрация: 29.4.2005

Репутация: -5
Всего: нет



Цитата(jorkug @ 4.6.2005, 03:33)
Знак
_chdrive меняет лишь свою текущую рабочую директорию
Цитата(MSDN)

Remarks
The _chdrive function changes the current working drive to the drive specified by drive. This function changes only the working drive;

Нет не только он и диск менял тоже, а вот после компиляции
только А и В переходил... smile


Непонятно че делать
--------------------
Ищу 2 файлаowl.tchwindows.tch 
PM MAIL   Вверх
Знак
Дата 6.6.2005, 17:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 135
Регистрация: 29.4.2005

Репутация: -5
Всего: нет



За всей кривостью С++

просьба киндануть ссылку на работающий код по смене Дерева
и диска.. smile
--------------------
Ищу 2 файлаowl.tchwindows.tch 
PM MAIL   Вверх
ManiaK
Дата 7.6.2005, 11:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Homo Sapience
***


Профиль
Группа: Комодератор
Сообщений: 1145
Регистрация: 3.8.2004
Где: ИУ5-93

Репутация: 5
Всего: 29



Цитата
За всей кривостью С++

Си++ - самый "логичный" для машин язык после асма и Си. Все его уродства - это уродства машин в первую очередь.

Скорее всего раньше у тебя запускалась прога не твоя, а та, что в винде изначально заложена.
В Win, насколько понимаю, можно сделать нечто вроде:
Код

WinExec("C:");
WinExec("cd AnyFolder");

Думаю и в DOS есть что-то вроде этого, только времени искать нет smile
PM MAIL WWW   Вверх
Crait
Дата 8.6.2005, 02:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 244
Регистрация: 20.2.2003

Репутация: нет
Всего: 1



setdisk()
PM MAIL   Вверх
Знак
Дата 8.6.2005, 19:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 135
Регистрация: 29.4.2005

Репутация: -5
Всего: нет



Все понимаю только для убедительности КОД кинуть надо

А про кривость языка и так понятно

я под ДОСОМ кодировал...
Во как

И там же кампилил
описалова мало примерчик киньте.....

Вроде все просто!?? smile

Я ведь и свой код положил и не жилил

проверьте ошибки чтоли!!

Это сообщение отредактировал(а) Знак - 8.6.2005, 19:05
--------------------
Ищу 2 файлаowl.tchwindows.tch 
PM MAIL   Вверх
Crait
Дата 8.6.2005, 20:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 244
Регистрация: 20.2.2003

Репутация: нет
Всего: 1



Это типа я код зажиливаю ?
Ну ладна, держи, от сердца отрываю :
Код


#include <stdio.h>
#include <dir.h>

int main(void)
{
   int save, disk, disks;

   /* save original drive */
   save = getdisk();

   /* print number of logic drives */
   disks = setdisk(save);
   printf("%d logical drives on the system\n\n", disks);

   /* print the drive letters available */
   printf("Available drives:\n");

   for (disk = 0; disk < 26; ++disk)
   {
      setdisk(disk);

      if (disk == getdisk())
         printf("%c: drive is available\n", disk + 'a');
   }

   setdisk(save);

   return 0;
}

Это из help'а, называецца setdisk example.
PM MAIL   Вверх
Знак
Дата 10.6.2005, 14:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 135
Регистрация: 29.4.2005

Репутация: -5
Всего: нет




поправьте пргу как правильно передать переменную
из командной строки?
smile

Код


#include <stdio.h>
#include <dir.h>

int main( int argc, char *argv[ ] )
{

   int save, disks;

      /* save original drive */
         save = getdisk();

        /* print number of logic drives */
//     disks = setdisk(save);
//    printf("%d logical drives on the system\n\n", disks);

         /* print the drive letters available */
//          printf("Available drives:\n");

//     for (int disk = 0; disk < 26; disk++)
//    {
//      setdisk(disk);
//    if (disk == getdisk())
//    {
//    printf("%c: drive is available\n", disk + 'a');
//    }
//    setdisk(save);
//    }

//    if (!argc) {
//       setdisk(save);}
//       else {

//      и вот здесь не пашет не руля...
//      через Run\Arguments\Programm Arguments 
//    передавалось значение int от 0 до ..

         setdisk(argc);

         printf("вы перешли на диск %c \n", argc+'a');
//       }
//          return 0;
        }



--------------------
Ищу 2 файлаowl.tchwindows.tch 
PM MAIL   Вверх
oper54
Дата 10.6.2005, 15:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 217
Регистрация: 13.5.2005

Репутация: 1
Всего: 1



Переход по драйверам
Код

 ...
 int drv((int)argv[1]-'a');
 
 setdisk(drv);
 printf("вы перешли на диск %c \n", argv[1]);
 ...

PM MAIL   Вверх
Crait
Дата 11.6.2005, 14:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 244
Регистрация: 20.2.2003

Репутация: нет
Всего: 1



setdisk(tolower(*(argv[1]))- 'a');
PM MAIL   Вверх
Знак
Дата 11.6.2005, 14:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 135
Регистрация: 29.4.2005

Репутация: -5
Всего: нет



Код


#include <dir.h>

int main( int argc, char *argv[ ] )
{

    int save, disks;

        /* save original drive */
        save = getdisk();
    if (argc!=2) {printf("No enter in stream")}

         setdisk(atoi(argv[1]));

         printf("вы перешли на диск %c \n", argc+'a');

        }



Вот переделал!
Используйте и благодарите за всё "ЗНАКА".

ТОлько для ввода надо использовать цифры а не буквы. smile

--------------------
Ищу 2 файлаowl.tchwindows.tch 
PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0954 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.