Уважаемые эксперты!! Я понимаю,что уже надоел своими дурацкими вопросами.Но надежда только на ВАС !! Как мне объяснили данная прога не будет работать на компе если его адаптер LPT не держит двунаправленный режим ввода-вывода.Скажите ЧАЙНИКУ как изменить данный кусок проги чтоб работало.А если это невозможно то нельзя ли сделать аналог на другом порте например GAME. прога в приложении
Доброе время суток, anton! Если адаптер не держит двунаправленный режим, то никаким образом ты не сможешь получить состояние внешнего устройства. Так что опаньки. А чего именно ты пытаешься добиться? Может, через COM попробуешь? Ответ отправлен: 10.04.2003, 17:30 Отправитель: Ayl
Вопрос № 191
Привет всем Экспертам! Назрел такой вопрос (под Dos): как лучше устроить функцию выбора файла? Имеется в виду вывод на экран названий (отсортированных) ~20 файлов с возможностью просмотра вперед и назад. (Простите, если не очень понятно! :) ) Держать все имена в памяти? А если в каталоге оооочень много файлов... Записывать имена в файл? Может кто ни будь знает более эффективный способ? Буду очень признателен за информацию! С уважением Vitally.
Приветствую Вас, Vitally! Проще всего - сделать массив из записей, каждая запись описывает файл. Получится 12+3+4+3+2+1=25 байт. Итого сразу ты сможешь хранить инфу о 65535:25=2620 файлах. Если этого мало сделай массив ссылок на данную структуру, тогда макс число файлов ок. 16000. По моему достаточно...
Ответ отправлен: 13.04.2003, 12:07 Отправитель: Sensey Отвечает Ayl
Здравствуйте, Vitally! Естественно, держать все в памяти. Слишком много файлов в каталоге не будет. По крайней мере рассчитывай именно на это. Лучше всего использовать динамические структуры, в твоем случае скорее всего отсортированный двунаправленный список. Тогда у тебя не будет проблем с выводом имен файлов и движением по списку. Сколько это "съест" памяти? Ну, давай посчитаем. Допустим, один элемент каталога ты опишешь так: PDirectoryEntry = ^TDirectoryEntry; TDirectoryEntry = Record prev : PDirectoryEntry; next : PDirectoryEntry; fname : string[8]; fext : string[3]; end; Тогда структура займет: имя файла + расширение = 11 байт, 2 указателя - 8 байт. Итого - 19 байт. Память выделяется кусками по 8 байт, то есть структура с выравниванием займет 24 байта. Тогда в 1 сегмент (64К) влезет около 2730 элементов.
Если считать по максимуму, то во всю память влезет около 27000 элементов. Я не думаю, что в твоем каталоге будет столько файлов. К тому же, ИМХО, и у DOS'а есть ограничение на общее число файлов в каталоге. Даже если ты захочешь хранить в своей структуре всю информацию о записи в каталоге (32 байта), то вместе с указателями это даст тебе только 40 байт на структуру, т.е. более 16000 файлов в каталоге. Ответ отправлен: 14.04.2003, 14:12 Отправитель: Ayl
Форма отправки вопроса
Внимание!
Форма может работать некорректно в почтовых программах "Microsoft Outlook"
и "Microsoft Outlook Express". В программе The Bat!
подобные формы не работают вообще!
После нажатия на кнопку "Отправить", будет открыто второе окно. Заметьте,
что в некоторых браузерах могут стоять запреты на открытие других
окон, а также "чрезмерное" кэширование данных,
при этом факт отправки Вашего вопроса стоит под сомнением.
Мы рекомендуем открывать рассылку в программе Internet
Explorer 5.0+ или отправлять вопросы с сайта по адресу:
http://rusfaq.ru/cgi-bin/Message.cgi.