Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/6: Рейтинг темы: голосов - 6, средняя оценка - 5.00
5 / 5 / 7
Регистрация: 22.02.2013
Сообщений: 174
1

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

25.06.2013, 14:37. Показов 1083. Ответов 18
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Добрый день. Пишу программу проводник под 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;
 
 
}
Миниатюры
Не выполняется программа проводника  
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
25.06.2013, 14:37
Ответы с готовыми решениями:

Долго загружается проводник, на иконку проводника, открывается надпись "Выполняется..." и так около 3-5 секунд
Буквально сегодня заметил неприятную проблему - стал долго загружаться проводник. Нажимаю на иконку...

Программа аналог ПРОВОДНИКА Win
Хочу написать программу, в которой было бы левое дерево как в проводнике. Нашел много примеров с...

Программа вроде проводника с использованием TreeView
Привет. Скажите, пожалуйста, как сделать так, чтобы в treeView и listview не отображались файлы,...

Программа, реализующая функциональность проводника Windows
Здравствуйте, уважаемые форумчане! Прошу у вас помощи в выполнении задания. Нужно создать...

18
5 / 5 / 7
Регистрация: 22.02.2013
Сообщений: 174
26.06.2013, 13:32  [ТС] 2
Кто-нибудь, отзовитесь

Добавлено через 3 часа 23 минуты
вы огорчаете леонида аркадьевича
2
1090 / 588 / 121
Регистрация: 11.11.2008
Сообщений: 1,544
26.06.2013, 13:57 3
не думаю что кому-то охота ставить какой-нибудь DosBox и пробовать ваш код)
+ если надо без asm вставок, то и напишите без них, а потом вопросы задавайте.
а вообще первой мыслью был вопрос с какой ФС считываете файлы?
0
5 / 5 / 7
Регистрация: 22.02.2013
Сообщений: 174
26.06.2013, 14:07  [ТС] 4
@AntonChik, NTFS, но единственное что мне необходимо это версии, почему после того, как я указал дта программа обрывается, ведь ничего не должно препятствовать выводу сообщения "find first"
0
1186 / 542 / 78
Регистрация: 01.07.2009
Сообщений: 3,517
26.06.2013, 14:55 5

Не по теме:

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


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

Добавлено через 30 секунд
ведь как минимум должен быть текст "DTA: "
0
Заблокирован
26.06.2013, 17:59 9
А что, ещё что-то должно быть кроме вывода new dta? В коде ничего нету, даже паузы. ЗАпусти в дебаггере - посмотри почему вылетает и как - ошибка перейдёт ему.
0
В астрале
Эксперт С++
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
26.06.2013, 18:03 10
Цитата Сообщение от Sid1057 Посмотреть сообщение
это не преподаватель, личное желание обучаться с доса
Офигеть. А почему так слабо взяли? В 2013 году ХОТЕТЬ обучаться с доса - это ИМХО клиника...
Он же не используется НИГДЕ в современном мире (ну не будем считать компании, которым просто лень перейти на более современную ОС, хотя что-то в существование таких слабо верится).
0
5 / 5 / 7
Регистрация: 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, ничего не пишет(как я сказал, программа просто прерывается после выполнения этой части кода)
0
В астрале
Эксперт С++
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
26.06.2013, 18:14 12
Цитата Сообщение от Sid1057 Посмотреть сообщение
смысл не в том, чтобы работать там, где это используется. Просто хочу попробовать написать софт сам для себя, так сказать повысить свою самооценку. К тому же, как мне кажется, так я лучше узнаю язык, устройство операционной системы, получу полезные и в первую очередь интересные для меня знания.
Ну тогда и книги нужно читать, а не с бухты барахты кодить лезть...
Цитата Сообщение от Sid1057 Посмотреть сообщение
устройство операционной системы
Которое уже давным давно неактуально...
0
5 / 5 / 7
Регистрация: 22.02.2013
Сообщений: 174
26.06.2013, 18:20  [ТС] 13
Цитата Сообщение от ForEveR Посмотреть сообщение
Ну тогда и книги нужно читать, а не с бухты барахты кодить лезть...
нашел библиотеку фроловых, читаю), там был один из вариантов кода, как раз-таки для файлового менеджера, но мне захотелось написать свой, к тому же там многое скрыто за функциями, содержимое которых я не могу увидеть

Добавлено через 3 минуты
Цитата Сообщение от ForEveR Посмотреть сообщение
Которое уже давным давно неактуально...
но интересно и познавательно
0
1090 / 588 / 121
Регистрация: 11.11.2008
Сообщений: 1,544
27.06.2013, 05:47 14
а пробовали просто проверить файл на существование (открыть на чтение) ?
помнится оригинальные досовские оболочки не видели NTFS разделы, приходилось ставить доп.дрова
0
Заблокирован
27.06.2013, 11:07 15
@Sid1057, так что в ax в дебаггере после выполнения/невыполнения функции?
0
5 / 5 / 7
Регистрация: 22.02.2013
Сообщений: 174
27.06.2013, 11:50  [ТС] 16
@Dr_Quake, 002A
0
5 / 5 / 7
Регистрация: 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, а значит ошибка все еще есть
0
Заблокирован
27.06.2013, 18:18 19
Работай на асме, не извращайся, я в своё время начинал изучение досовской хрени через этот набор начинающего для DOS и A86/D86, он лучший на мой взгляд.
Вложения
Тип файла: rar INTRS.rar (185.9 Кб, 5 просмотров)
0
27.06.2013, 18:18
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
27.06.2013, 18:18
Помогаю со студенческими работами здесь

Не выполняется программа
Есть разветвление: В качестве f(x) нужно использовать x^2 или e^x F(x) нужно запихнуть в...

Не выполняется программа
Здравствуйте! Я только только начал изучать java и почти сразу застопорился вот на чем: создаю файл...

Не выполняется программа
program LagrangeInterp_RegularInGrid_RegularOutGrid; { Интерполяция } procedure LagrangeInterp...

Не выполняется программа
var d, p, b:real; begin readln(p); d:=1; b:=10; while b&lt;=200 do begin b:=b/100*p; ...


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

Или воспользуйтесь поиском по форуму:
19
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru