|
0 / 0 / 0
Регистрация: 14.01.2011
Сообщений: 6
|
|
Текстовый редактор на QBASIC14.01.2011, 20:53. Показов 4536. Ответов 14
Метки нет (Все метки)
Нужен код простого текстового редактора на QBASIC.
Особого практического применения этоа программа (конечно) иметь не будет. Мне нужно понять принци построения этого типа программ. Я занимаюсь программированием как хобби и немного запутался - было много однообразной теории и мало практики. Пожалуйста помогите словом и файлом.
0
|
|
| 14.01.2011, 20:53 | |
|
Ответы с готовыми решениями:
14
Графический редактор на qbasic ,не могу сохранить файл
Текстовый редактор в C++ |
|
Кормпилятор
|
|
| 23.01.2011, 08:05 | |
|
Уважаемый Hunter1, если вы планируете писать текстовый редактор не в DOS, особого толку от советов не будет.
Во-первых, QBasic и весь DOS оперируют однобайтовой кодировкой ASCII, в Windows и Linux совершенно другие кодировки. Во-вторых, писать многооконные интерфейсы под DOS тяжеловато, т.е. самый простой вариант ограничиться однооконным. В-третьих, основную сложность представляют команды открытия и сохранения файлов, в системе DOS для этого используются функции системы, вызываемые через прерывания, создать меню file -> open не самая простая задача для QBasic, если в QuickBasic вы сможете накодить функции нахождения первого и последующих файлов через DTA на ассемблере(через *.qlb* библу), то в QBasic для этого вам потребуется написать всё в машинных кодах(стянуть код из отладчика не проблема). В-четвёртых, текстовый редактор подразумевает работу с мышью(прерывание 33H), в нём должны быть функции выделения, копирования, вырезания, удаления и вставки текста. Функции поиска и модификации также важны. В-пятых, за всё время существования ПК люди написали столько текстовых редакторов, что придумать что-то более удобное и оригинальное скорее всего нереально. Как же пишут редактор текста под DOS: 1) Процедуры скана директории в первую очередь. 2) Визуальную оболочку: окошко с курсором, определиться с максимальной шириной и высотой текста, завести память, работать непосредственно с буфером экрана(сегмент B800H). 3) Набить код для перемещения по тексту, вставке текста при печати символа и удаления символа. 4) Накодить функцию открытия файла и сохранения открытого файла. 5) Добить функционал программы (выделение, копирование и т.д.) - это достаточно тупая и рутинная работа. 6) Функцию сохранения в любой файл (save as) Перемещение по каталогам осуществлять через команду CD(предпочтительнее) или CHDIR. Также можно осуществить работу с промежуточным буфером в 64Кб, разбить файл на куски по 64 кб и работать с отдельным видимым в текущий момент куском(работа с большими файлами). Также есть некоторая вероятность, что 64 символов для возврата текущей директории может не хватить и придётся писать прогу для прямого взаимодействия с диском, или функцию обратного сканирования до корня диска(сохранение файла-ключа, команда "CD ..", далее скан директории, открытие директории поиск файла-ключа и т.д. и т.п.). Касательно кода - вы уж извините показать нечего, накодить такой редактор в QuickBasic для меня легче лёгкого, но тратить почти месяц на эту глупую рутинную работу совершенно влом.
1
|
|
|
0 / 0 / 0
Регистрация: 14.01.2011
Сообщений: 6
|
|
| 25.01.2011, 21:34 [ТС] | |
|
Я понял, что в вопросе допустил противоречие - самый простой редактор - это несколько строк кода, которые позволяют вводить строковые данные или удалять их с помощью кнопки backspace - всё! Грубо говоря на чёрном экране должны появляться белые буквы. Я так понимаю, нужно создать строковый массив и описать реакцию на нажатие управляющих клавиш. Если возможно, то, пожалуйста, покажите такой код.
Прошу прощения за неграмотность формулировок.
0
|
|
|
Кормпилятор
|
||||||
| 26.01.2011, 12:27 | ||||||
|
Не знаю насколько продуктивна моя помощь, сейчас люди думают, что покажи им пример и они так же смогут. На деле однако иначе.
Hunter1, задача это простейшая, любой средний кодер выполнит её с легкостью, вся проблема в том что это требует кучу времени, просто кучу. Я хочу сказать о том, что не умея программировать и не зная языка вы не сможете это написать даже по сотне примеров, говорю определённо точно. Вот вспомнил детство, написал вам небольшой кусок, вкуривайте:
1
|
||||||
|
Кормпилятор
|
|
| 26.01.2011, 12:31 | |
|
Извиняюсь, кодировка ASCII на сайте не пашет. Вот ловите архив:
2
|
|
|
0 / 0 / 0
Регистрация: 14.01.2011
Сообщений: 6
|
||||||
| 28.01.2011, 19:42 [ТС] | ||||||
|
Ещё раз большое спасибо, но в начале не совсем понял:
для чего в описании типа данных для массива название типа данных перемножается на какое-либо число? Я вот об этом:
0
|
||||||
| 28.01.2011, 20:05 | |
|
0
|
|
|
0 / 0 / 0
Регистрация: 14.01.2011
Сообщений: 6
|
|
| 28.01.2011, 21:56 [ТС] | |
|
А зачем тогда вообще есть QBASIC? Согласно Википедии он "довольно популярен для обучения программированию".
0
|
|
|
Просто прогер
1292 / 1079 / 13
Регистрация: 13.03.2009
Сообщений: 2,502
|
|
| 28.01.2011, 22:09 | |
|
Для обучения основам программирования, он подходит.
Не по теме: Но нужно понимать, что программирование под DOS и современные операционные системы (Windows, Linux и т. д.), различается.
0
|
|
|
0 / 0 / 0
Регистрация: 14.01.2011
Сообщений: 6
|
|
| 30.01.2011, 21:58 [ТС] | |
|
А поясните, пожалуйста, что такое триггер. Из электроники знаю, из программирования - конкретного определения данного понятия (как такового) не нашёл и сам не уловил. В коде, представленном выше он нужен для отрисовки? носит имя ReDraw% и имеет значение 1.
0
|
|
|
Просто прогер
1292 / 1079 / 13
Регистрация: 13.03.2009
Сообщений: 2,502
|
|||||||||||
| 30.01.2011, 22:39 | |||||||||||
|
Если кратко, то это типа сигнала что нужно выполнить что-либо, в данном случае, перерисовать область.
Пока изменений нет, то нет необходимости в перерисовке. Зачем выполнять то, в чем нет необходимости? Он устанавливается в следующих случаях
1
|
|||||||||||
|
Кормпилятор
|
|||||
| 31.01.2011, 23:15 | |||||
Это единственный способ, для использования памяти с точностью до байт и для хранения строк фиксированной длины(скрин смотрите). Умение шерстить в справке вам в будущем пригодится.
Не претендую на какую-либо правду, просто я привык так именовать некоторые переменные, выполняющие роль флагов, которые работают по определённому плану и влияющие на определённые события в программе.
![]() TurboPascal это интегрированная среда разработки, основанная на диалекте PASCAL, кроме текстового редактора она включает встроенный многофункциональный компилятор, линкер и кучу тулзов. Написать в одиночку ничего подобного вы не сможете за 20 лет жизни, если только вы не Альберт Эйнштейн. Я не занижаю ваши способности, просто пытаюсь намекнуть, что это вам не по силам, если вы вдруг собрались писать компилятор, встроенный в текстовый редактор.
0
|
|||||
|
Просто прогер
1292 / 1079 / 13
Регистрация: 13.03.2009
Сообщений: 2,502
|
||
| 01.02.2011, 00:25 | ||
|
0
|
||
|
Кормпилятор
|
||
| 01.02.2011, 02:03 | ||
0
|
||
|
0 / 0 / 0
Регистрация: 14.01.2011
Сообщений: 6
|
|
| 01.02.2011, 19:05 [ТС] | |
|
ТР - это текствый редактор
0
|
|
| 01.02.2011, 19:05 | |
|
Помогаю со студенческими работами здесь
15
Текстовый редактор Текстовый редактор Текстовый редактор Текстовый редактор Текстовый редактор Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Символьное дифференцирование
igorrr37 13.02.2026
/ *
Логарифм записывается как: (x-2)log(x^2+2) - означает логарифм (x^2+2) по основанию (x-2).
Унарный минус обозначается как !
*/
#include <iostream>
#include <stack>
#include <cctype>. . .
|
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
|
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу,
и светлой Луне.
В мире
покоя нет
и люди
не могут жить в тишине.
А жить им немного лет.
|
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила»
«Время-Деньги»
«Деньги -Пуля»
|
|
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога
Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
|
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога
Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
|
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога
Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
|
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
|