Форум программистов, компьютерный форум CyberForum.ru

Не выполняется программа проводника - C++

Восстановить пароль Регистрация
 
Sid1057
5 / 5 / 2
Регистрация: 22.02.2013
Сообщений: 174
25.06.2013, 14:37     Не выполняется программа проводника #1
Добрый день. Пишу программу проводник под DOS, начал с простого, вывод списка файлов из категории. В итоге программа не работает, в поисках багов оставил только одну функцию - вывод первого найденного файла и для "вылова" багов добавил "cout<<sometheng" после каждого этапа выполнения программы и вышло, что баг возникает при нахождении первого файла. Сейчас напишу код программы, приложу скриншот и код на asm, с которого по сути все и делал.
P.S. написать нужно именно на c++ без asm вставок, только с использованием dos.h.
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
#include <iostream.h>
#include <dos.h>
 
 
void main(){
 
char dta[64];
for(int i=0;i<64;i++){dta[i]=*"";}
char searchpath[4]={*"*",*".",*"*",0};
cout<<searchpath<<endl<<"DTA: "<<dta<<endl;
cout<<"1ah"<<endl;
_AH=(0x1a);
_DX=*dta;
geninterrupt(0x21);
 
cout<<"findfirst"<<endl;
_AH=(0x4e);
_CX=0;
_DX=*searchpath;
geninterrupt(0x21);
 
cout<<"New DTA: "<<dta<<endl<<"AX"<<_AX;
 
 
}
Миниатюры
Не выполняется программа проводника  
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Sid1057
5 / 5 / 2
Регистрация: 22.02.2013
Сообщений: 174
26.06.2013, 13:32  [ТС]     Не выполняется программа проводника #2
Кто-нибудь, отзовитесь

Добавлено через 3 часа 23 минуты
вы огорчаете леонида аркадьевича
AntonChik
1083 / 581 / 21
Регистрация: 11.11.2008
Сообщений: 1,544
26.06.2013, 13:57     Не выполняется программа проводника #3
не думаю что кому-то охота ставить какой-нибудь DosBox и пробовать ваш код)
+ если надо без asm вставок, то и напишите без них, а потом вопросы задавайте.
а вообще первой мыслью был вопрос с какой ФС считываете файлы?
Sid1057
5 / 5 / 2
Регистрация: 22.02.2013
Сообщений: 174
26.06.2013, 14:07  [ТС]     Не выполняется программа проводника #4
@AntonChik, NTFS, но единственное что мне необходимо это версии, почему после того, как я указал дта программа обрывается, ведь ничего не должно препятствовать выводу сообщения "find first"
Gepar
 Аватар для Gepar
1173 / 529 / 20
Регистрация: 01.07.2009
Сообщений: 3,508
26.06.2013, 14:55     Не выполняется программа проводника #5

Не по теме:

Цитата Сообщение от Sid1057 Посмотреть сообщение
Кто-нибудь, отзовитесь
Добавлено через 3 часа 23 минуты
вы огорчаете леонида аркадьевича
Какая жаль, нам аж стыдно стало, правда-правда.


На деле можно лишь посочувствовать вам за то что вас просят писать под DOS, вы поговорите с преподавателем, может он всё же согласиться что ушло время доса и даст добро на файл. менеджер уже под виндовс .
Sid1057
5 / 5 / 2
Регистрация: 22.02.2013
Сообщений: 174
26.06.2013, 17:10  [ТС]     Не выполняется программа проводника #6
@Gepar, это не преподаватель, личное желание обучаться с доса
Dr_Quake
Заблокирован
26.06.2013, 17:15     Не выполняется программа проводника #7
Так где проблема то? После findfirst в AH код ошибки.
Sid1057
5 / 5 / 2
Регистрация: 22.02.2013
Сообщений: 174
26.06.2013, 17:58  [ТС]     Не выполняется программа проводника #8
@Dr_Quake, а программа разве должна обрываться?

Добавлено через 30 секунд
ведь как минимум должен быть текст "DTA: "
Dr_Quake
Заблокирован
26.06.2013, 17:59     Не выполняется программа проводника #9
А что, ещё что-то должно быть кроме вывода new dta? В коде ничего нету, даже паузы. ЗАпусти в дебаггере - посмотри почему вылетает и как - ошибка перейдёт ему.
ForEveR
Модератор
Эксперт C++
 Аватар для ForEveR
7927 / 4709 / 318
Регистрация: 24.06.2010
Сообщений: 10,524
Завершенные тесты: 3
26.06.2013, 18:03     Не выполняется программа проводника #10
Цитата Сообщение от Sid1057 Посмотреть сообщение
это не преподаватель, личное желание обучаться с доса
Офигеть. А почему так слабо взяли? В 2013 году ХОТЕТЬ обучаться с доса - это ИМХО клиника...
Он же не используется НИГДЕ в современном мире (ну не будем считать компании, которым просто лень перейти на более современную ОС, хотя что-то в существование таких слабо верится).
Sid1057
5 / 5 / 2
Регистрация: 22.02.2013
Сообщений: 174
26.06.2013, 18:11  [ТС]     Не выполняется программа проводника #11
@Dr_Quake,
C++
1
cout<<"New DTA: "<<dta<<endl<<"AX"<<_AX;
Добавлено через 3 минуты
@ForEveR, смысл не в том, чтобы работать там, где это используется. Просто хочу попробовать написать софт сам для себя, так сказать повысить свою самооценку. К тому же, как мне кажется, так я лучше узнаю язык, устройство операционной системы, получу полезные и в первую очередь интересные для меня знания.

Добавлено через 1 минуту
@Dr_Quake, объявил переменную a и передал ей значение AH, ничего не пишет(как я сказал, программа просто прерывается после выполнения этой части кода)
ForEveR
Модератор
Эксперт C++
 Аватар для ForEveR
7927 / 4709 / 318
Регистрация: 24.06.2010
Сообщений: 10,524
Завершенные тесты: 3
26.06.2013, 18:14     Не выполняется программа проводника #12
Цитата Сообщение от Sid1057 Посмотреть сообщение
смысл не в том, чтобы работать там, где это используется. Просто хочу попробовать написать софт сам для себя, так сказать повысить свою самооценку. К тому же, как мне кажется, так я лучше узнаю язык, устройство операционной системы, получу полезные и в первую очередь интересные для меня знания.
Ну тогда и книги нужно читать, а не с бухты барахты кодить лезть...
Цитата Сообщение от Sid1057 Посмотреть сообщение
устройство операционной системы
Которое уже давным давно неактуально...
Sid1057
5 / 5 / 2
Регистрация: 22.02.2013
Сообщений: 174
26.06.2013, 18:20  [ТС]     Не выполняется программа проводника #13
Цитата Сообщение от ForEveR Посмотреть сообщение
Ну тогда и книги нужно читать, а не с бухты барахты кодить лезть...
нашел библиотеку фроловых, читаю), там был один из вариантов кода, как раз-таки для файлового менеджера, но мне захотелось написать свой, к тому же там многое скрыто за функциями, содержимое которых я не могу увидеть

Добавлено через 3 минуты
Цитата Сообщение от ForEveR Посмотреть сообщение
Которое уже давным давно неактуально...
но интересно и познавательно
AntonChik
1083 / 581 / 21
Регистрация: 11.11.2008
Сообщений: 1,544
27.06.2013, 05:47     Не выполняется программа проводника #14
а пробовали просто проверить файл на существование (открыть на чтение) ?
помнится оригинальные досовские оболочки не видели NTFS разделы, приходилось ставить доп.дрова
Dr_Quake
Заблокирован
27.06.2013, 11:07     Не выполняется программа проводника #15
@Sid1057, так что в ax в дебаггере после выполнения/невыполнения функции?
Sid1057
5 / 5 / 2
Регистрация: 22.02.2013
Сообщений: 174
27.06.2013, 11:50  [ТС]     Не выполняется программа проводника #16
@Dr_Quake, 002A
Dr_Quake
Заблокирован
27.06.2013, 13:05     Не выполняется программа проводника #17
http://stanislavs.org/helppc/dos_error_codes.html

Тебе к

http://stanislavs.org/helppc/int_21-59.html
Sid1057
5 / 5 / 2
Регистрация: 22.02.2013
Сообщений: 174
27.06.2013, 18:11  [ТС]     Не выполняется программа проводника #18
@Dr_Quake, спасибо, но там написано
27-31 Reserved
Добавлено через 2 часа 16 минут
@Dr_Quake, и кстати, когда пытаюсь проследить значение регистров дальше, дебаггер вылетает(turbodebugger)

Добавлено через 6 минут
@Dr_Quake, блин, нашел ошибку, сама по себе оказалась простая, но как исправить не знаю, честно

Добавлено через 1 минуту
в какой-то момент(до вызова прерывания) AH обнуляется, а следовательно вместо функции 4e вызывается 00(завершение программы), сейчас буду искать решение

Добавлено через 7 минут
Готово, ошибку устранил, хоть и не понял, почему она возникала(буду говорить что компилятор виноват). Дело было так, в дебаггере после cbw регистр ah обнулялся, поэтом в коде поменял
C++
1
2
3
4
_AH=(0x4e);
_CX=0;
_DX=*searchpath;
geninterrupt(0x21);
на
C++
1
2
3
4
_CX=0;
_DX=*searchpath;
_AH=(0x4e);
geninterrupt(0x21);
теперь, вроде работает(во всяком случае этот пример для отладки). Всем спасибо за помощь.

Добавлено через 2 часа 22 минуты
в AX 14703, а значит ошибка все еще есть
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
27.06.2013, 18:18     Не выполняется программа проводника
Еще ссылки по теме:

Поиск в ширину - Неправильно выполняется программа C++
C++ Задание на операторы цикла (подскажите, почему не выполняется программа)
Программа работает неправильно. Цикл не выполняется. Подскажите ошибку C++

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

Или воспользуйтесь поиском по форуму:
Dr_Quake
Заблокирован
27.06.2013, 18:18     Не выполняется программа проводника #19
Работай на асме, не извращайся, я в своё время начинал изучение досовской хрени через этот набор начинающего для DOS и A86/D86, он лучший на мой взгляд.
Вложения
Тип файла: rar INTRS.rar (185.9 Кб, 3 просмотров)
Yandex
Объявления
27.06.2013, 18:18     Не выполняется программа проводника
Ответ Создать тему
Опции темы

Текущее время: 15:43. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru