IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code], либо быть опубликованы на нашем PasteBin в режиме вечного хранения.
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

 
 Ответить  Открыть новую тему 
> Курсор изменяет цифры числа, Интересное задание
сообщение
Сообщение #1


Профи
****

Группа: Пользователи
Сообщений: 559
Пол: Мужской
Реальное имя: Бруно

Репутация: -  10  +


Доброе время суток. Попалась интересная задачка. Допустим на экране выведено какое - то число (число может быть как целое так и дробное). Задание такое : передвигать под ним курсор, при этом имея возможность исправить любую из цифр, и что самое главное новое число потом будет обрабатываться, то есть программа должна его прочитать и записать под соответствующий тип. Какие идеи ?


--------------------
Цитата
Imagination is more important than knowledge.
Albert Einstein
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


Гость






Цитата
Какие идеи ?
Какие еще могут быть идеи, кроме

1) прямого доступа к видеопамяти для чтения любого символа с экрана
2) есть такая функция 08H прерывания 10H, которая читает символ из позиции, в которой находится курсор, без необходимости работы напрямую с видеопамятью...

Выбирай...
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3


Профи
****

Группа: Пользователи
Сообщений: 559
Пол: Мужской
Реальное имя: Бруно

Репутация: -  10  +


вы не могли бы описать как я могу получить это значение ? Какие - то мысли есть в голове, но вряд ли верные.

procedure getnumber;
var
regs : registers;
begin
regs.ax := $0800;
intr($10, regs);
n:= ???
end;


--------------------
Цитата
Imagination is more important than knowledge.
Albert Einstein
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #4


Гость






Я бы все-таки пользовался первым способом:
uses crt, dos;

type
{
описываем структуру, которую имеет видеопамять
(символ и затем - его атрибут: цвет фона, цвет текста, мигание)
}
R = record
ch: char; attr: byte;
end;

{
Это - массив наложенный на видеопямять,
поэтому ее содержимое можно читать из этого самого массива...

Для упрощения я сделал работу с экраном 25 строк * 80
столбцов и принял за основу цветной режим, но можно сделать
и универсальную функцию...
}
var
VMem: array[1 .. 25, 1 .. 80] of R
absolute $b800:$0000;
var
currx, curry: integer;
s: string;

begin
clrscr;
{ сначала пишем на чистый экран какое-то число }
writeln;
writeln(' 12345 ');

{
потом установим курсор под одну из цифр этого числа
и переместимся по нему вправо, пока не встретим пробел или нулевую позицию экрана.
в этом случае мы достигли начала числа ...
}
gotoxy(4, 2);
currx := wherex; curry := wherey;
while (currx >= 1) and (VMem[curry, currx].ch <> ' ') do dec(currx);
inc(currx, 1);

{ а теперь идем обратно и читаем его в строковую переменную: }
s := '';
while VMem[wherey, currx].ch <> ' ' do begin
s := s + VMem[wherey, currx].Ch;
inc(currx);
end;

{ Вот то число, которое было прочитано! }
gotoxy(10, 10);
writeln('s = ', s);
end.


Я надеюсь перевести строку в число через Val проблем не будет?

Точно так же не должно быть проблем и с перемещением курсора: пользуйся функциями wherex, wherey и gotoxy...

Работает только в Турбо Паскале, FPC даже не мучай - Absolute там не совмещает с адресом, только с другой переменной...
 К началу страницы 
+ Ответить 
сообщение
Сообщение #5


Профи
****

Группа: Пользователи
Сообщений: 559
Пол: Мужской
Реальное имя: Бруно

Репутация: -  10  +


огромное спасибо!!! пойду разбираться, если будут вопросы отпишусь!

Сообщение отредактировано: Tan -


--------------------
Цитата
Imagination is more important than knowledge.
Albert Einstein
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 5.08.2021 6:04
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name