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

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

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

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


Профи
****

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

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


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


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


Гость






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

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

Выбирай...
 К началу страницы 
+ Ответить 
Tan
сообщение 26.03.2007 20:54
Сообщение #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 
 К началу страницы 
+ Ответить 
volvo
сообщение 26.03.2007 21:41
Сообщение #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 там не совмещает с адресом, только с другой переменной...
 К началу страницы 
+ Ответить 
Tan
сообщение 26.03.2007 21:48
Сообщение #5


Профи
****

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

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


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

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


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

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

 



- Текстовая версия 20.07.2025 6:30
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"